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.
#define NAME_LEN 16
const char *fmt_temp(int16_t t_dC)
{
char buf[16];
snprintf(buf, sizeof buf, "%d.%d C", t_dC / 10, t_dC % 10);
return buf;
}
void show_temp(void)
{
lcd_print(fmt_temp(read_temp_dC()));
}
void set_zone_name(char dst[NAME_LEN], const char *src)
{
strncpy(dst, src, NAME_LEN);
}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.
Acsia TechnologiesEngineering services · India hiring: MediumAppleConsumer devices · India hiring: LowArmChipmaker · India hiring: MediumAther EnergyEV OEM · India hiring: MediumBoschAutomotive supplier · India hiring: HighDensoAutomotive supplier · India hiring: MediumGarminConsumer devices · India hiring: LowHarmanAutomotive supplier · India hiring: High
Related challenges
Casting a byte stream to a structMemory & C · Medium · 4 bugs · ~6 minInteger promotion trapsMemory & C · Medium · 3 bugs · ~5 minArray helpers with memcpyMemory & C · Warm-up · 3 bugs · ~4 minHeap use in a message handlerMemory & C · Medium · 3 bugs · ~5 minRegister access macrosMemory & C · Warm-up · 3 bugs · ~4 minPacking a log recordMemory & C · Medium · 3 bugs · ~6 min
Flag the lines, say what breaks, then fix it and build it with clang in your browser.
Find the bugs