The code
Embedded C for Cortex-M. It compiles. There are 4 real bugs in it: the kind that pass a bench test and fail in the field.
typedef struct {
uint16_t interval_ms;
uint8_t tx_power;
uint8_t flags;
} cfg_t;
static char dev_name[20];
static cfg_t cfg;
int on_gatt_write(uint16_t handle, const uint8_t *data, uint16_t len)
{
switch (handle) {
case HANDLE_NAME:
memcpy(dev_name, data, len);
dev_name[len] = '\0';
break;
case HANDLE_CONFIG:
cfg = *(const cfg_t *)data;
flash_save_cfg(&cfg);
break;
}
return 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.
Amazon devices (Lab126, Kuiper)Consumer devices · India hiring: MediumEspressifChipmaker · India hiring: MediumGoogle (Pixel, Nest, Fitbit)Consumer devices · India hiring: LowHarmanAutomotive supplier · India hiring: HighNordic SemiconductorChipmaker · India hiring: LowSilicon LabsChipmaker · India hiring: MediumArmChipmaker · India hiring: MediumAther EnergyEV OEM · India hiring: Medium
Related challenges
Serial command parserProtocols · Warm-up · 3 bugs · ~4 minTLV provisioning parserProtocols · Hard · 4 bugs · ~7 minBuilding a framed packetProtocols · Medium · 3 bugs · ~6 minRS-485 Modbus RTU linkProtocols · Medium · 3 bugs · ~5 minWi-Fi reconnect handlerProtocols · Medium · 3 bugs · ~6 minCAN receive filter and handlerProtocols · Medium · 3 bugs · ~7 min
Flag the lines, say what breaks, then fix it and build it with clang in your browser.
Find the bugs