The code
Embedded C for Cortex-M. It compiles. There are 3 real bugs in it: the kind that pass a bench test and fail in the field.
static uint16_t fb[2][320 * 240];
static int draw_idx = 0;
/* Called by the app after drawing into fb[draw_idx] */
void frame_done(void)
{
LTDC_Layer1->CFBAR = (uint32_t)fb[draw_idx];
LTDC->SRCR = LTDC_SRCR_IMR;
draw_idx ^= 1;
memset(fb[draw_idx], 0, sizeof fb[0]);
}What an interviewer expects
- Point to each line you'd stop in a code review.
- Say what actually breaks: the failure mode, not just the rule it violates.
- Fix it, then defend the fix when asked the follow-up.
The bugs, reference fixes and the follow-up question are in the practice app, after you've tried it.
Companies that test this
Matched on the skills each company's embedded roles emphasise.
MediaTekChipmaker · India hiring: MediumMeta Reality LabsConsumer devices · India hiring: LowNVIDIAChipmaker · India hiring: MediumSamsungConsumer devices · India hiring: HighThundersoftEngineering services · India hiring: MediumValeoAutomotive supplier · India hiring: HighAcsia TechnologiesEngineering services · India hiring: MediumAMD IndiaChipmaker · India hiring: Medium
Related challenges
ADC with circular DMADMA & graphics · Hard · 3 bugs · ~7 minLogging over UART with DMADMA & graphics · Medium · 3 bugs · ~5 minLVGL flush callback with DMA2DDMA & graphics · Medium · 3 bugs · ~5 minTouch controller interruptDMA & graphics · Medium · 4 bugs · ~6 minSPI DMA on a cached coreDMA & graphics · Hard · 3 bugs · ~7 min
Flag the lines, say what breaks, then fix it and build it with clang in your browser.
Find the bugs