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 SRAM_BASE ((uint32_t *)0x60000000u)
#define SRAM_WORDS (16u * 1024u / 4u)
bool sram_test(void)
{
uint32_t *p = SRAM_BASE;
for (uint32_t i = 0; i < SRAM_WORDS; i++) {
p[i] = 0xA5A5A5A5u;
if (p[i] != 0xA5A5A5A5u) return false;
}
for (uint32_t i = 0; i < SRAM_WORDS; i++) {
p[i] = 0x5A5A5A5Au;
if (p[i] != 0x5A5A5A5Au) 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.
ArmChipmaker · India hiring: MediumBoschAutomotive supplier · India hiring: HighSTMicroelectronicsChipmaker · India hiring: MediumTeslaAutomotive OEM · India hiring: LowAMD IndiaChipmaker · India hiring: MediumAppleConsumer devices · India hiring: LowCapgemini EngineeringEngineering services · India hiring: HighContinentalAutomotive supplier · India hiring: High
Related challenges
Flag the lines, say what breaks, then fix it and build it with clang in your browser.
Find the bugs