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.
typedef struct {
uint32_t magic;
uint32_t length;
uint8_t sha256[32];
uint8_t sig[64];
} img_hdr_t;
bool image_ok(const img_hdr_t *h, const uint8_t *body)
{
uint8_t digest[32];
if (h->magic != IMG_MAGIC) return false;
sha256(body, h->length, digest);
if (memcmp(digest, h->sha256, 32) != 0) return false;
if (ecdsa_verify(PUBKEY, h->sha256, h->sig)) return false;
return true;
}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: MediumNXP SemiconductorsChipmaker · India hiring: HighSiemensIndustrial · India hiring: HighABBIndustrial · India hiring: MediumAcsia TechnologiesEngineering services · India hiring: MediumAmazon devices (Lab126, Kuiper)Consumer devices · India hiring: MediumAptivAutomotive supplier · India hiring: MediumArmChipmaker · India hiring: Medium
Related challenges
Bootloader jump to applicationBoot & OTA · Hard · 3 bugs · ~6 minSwitching 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 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