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 CMD_MAX 32
static char cmd[CMD_MAX];
static uint8_t pos;
void on_rx_char(char c)
{
if (c == '\r') {
cmd[pos] = '\0';
handle_command(cmd);
pos = 0;
} else {
cmd[pos++] = c;
}
}
void handle_command(char *s)
{
if (strncmp(s, "SET ", 4) == 0) {
int v = atoi(s + 4);
set_brightness(v);
}
}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.
InfineonChipmaker · India hiring: MediumMicrochipChipmaker · India hiring: HighSchneider ElectricIndustrial · India hiring: HighSiemensIndustrial · India hiring: HighABBIndustrial · India hiring: MediumAmazon devices (Lab126, Kuiper)Consumer devices · India hiring: MediumAptivAutomotive supplier · India hiring: MediumArmChipmaker · India hiring: Medium
Related challenges
Casting a byte stream to a structMemory & C · Medium · 4 bugs · ~6 minTLV provisioning parserProtocols · Hard · 4 bugs · ~7 minBuilding a framed packetProtocols · Medium · 3 bugs · ~6 minRS-485 Modbus RTU linkProtocols · Medium · 3 bugs · ~5 minBLE characteristic write handlerProtocols · Medium · 4 bugs · ~6 minWi-Fi reconnect handlerProtocols · 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