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.
void log_send(const char *fmt, ...)
{
char buf[128];
va_list ap;
va_start(ap, fmt);
vsnprintf(buf, sizeof buf, fmt, ap);
va_end(ap);
HAL_UART_Transmit_DMA(&huart2, (uint8_t *)buf, strlen(buf));
}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.
AppleConsumer devices · India hiring: LowMeta Reality LabsConsumer devices · India hiring: LowQualcommChipmaker · India hiring: HighAMD IndiaChipmaker · India hiring: MediumAnalog DevicesChipmaker · India hiring: MediumAptivAutomotive supplier · India hiring: MediumArmChipmaker · India hiring: MediumContinentalAutomotive supplier · India hiring: High
Related challenges
ADC with circular DMADMA & graphics · Hard · 3 bugs · ~7 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