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 jump_to_app(void)
{
uint32_t sp = *(uint32_t *)APP_BASE;
uint32_t reset = *(uint32_t *)(APP_BASE + 4);
if (reset == 0xFFFFFFFF) return;
void (*app)(void) = (void (*)(void))reset;
__set_MSP(sp);
app();
}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: MediumArmChipmaker · India hiring: MediumEspressifChipmaker · India hiring: MediumGoogle (Pixel, Nest, Fitbit)Consumer devices · India hiring: LowHarmanAutomotive supplier · India hiring: HighInfineonChipmaker · India hiring: MediumMicrochipChipmaker · India hiring: HighNordic SemiconductorChipmaker · India hiring: Low
Related challenges
Switching OTA slotsBoot & OTA · Medium · 3 bugs · ~5 minSaving settings to internal flashBoot & OTA · Medium · 3 bugs · ~5 minData retained across resetsBoot & OTA · Hard · 3 bugs · ~6 minBootloader image verificationBoot & OTA · Hard · 3 bugs · ~8 minSettings and calibration in one pageBoot & OTA · Medium · 4 bugs · ~7 minOTA chunk writerBoot & OTA · Hard · 3 bugs · ~8 min
Flag the lines, say what breaks, then fix it and build it with clang in your browser.
Find the bugs