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 adc_buf[64];
uint16_t g_avg; /* read by the main loop */
void start_sampling(void)
{
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adc_buf, 64);
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *h)
{
uint32_t sum = 0;
for (int i = 0; i < 64; i++) sum += adc_buf[i];
g_avg = sum / 64;
}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.
AMD IndiaChipmaker · India hiring: MediumAnalog DevicesChipmaker · India hiring: MediumHCLTech ER&DEngineering services · India hiring: HighIntel IndiaChipmaker · India hiring: HighMistral SolutionsEngineering services · India hiring: MediumQualcommChipmaker · India hiring: HighTexas InstrumentsChipmaker · India hiring: HighABBIndustrial · India hiring: Medium
Related challenges
Logging over UART with DMADMA & graphics · Medium · 3 bugs · ~5 minLTDC double bufferingDMA & graphics · Hard · 3 bugs · ~7 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