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 int retries;
static void wifi_event(void *arg, esp_event_base_t base,
int32_t id, void *data)
{
if (base == WIFI_EVENT && id == WIFI_EVENT_STA_DISCONNECTED) {
if (retries < 5) {
vTaskDelay(pdMS_TO_TICKS(1000));
esp_wifi_connect();
retries++;
}
} else if (base == IP_EVENT && id == IP_EVENT_STA_GOT_IP) {
mqtt_start();
}
}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.
EspressifChipmaker · India hiring: MediumGarminConsumer devices · India hiring: LowNordic SemiconductorChipmaker · India hiring: LowQualcommChipmaker · India hiring: HighAmazon devices (Lab126, Kuiper)Consumer devices · India hiring: MediumAppleConsumer devices · India hiring: LowAther EnergyEV OEM · India hiring: MediumEmbitelEngineering services · 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 minBLE characteristic write handlerProtocols · Medium · 4 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