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 rs485_send(const uint8_t *d, size_t n)
{
gpio_write(DE_PIN, 1);
for (size_t i = 0; i < n; i++) {
while (!(USART1->ISR & USART_ISR_TXE)) {}
USART1->TDR = d[i];
}
gpio_write(DE_PIN, 0);
}
static uint8_t rx[64];
static size_t rx_len;
void on_byte(uint8_t b)
{
rx[rx_len++] = b;
if (rx_len >= 8) {
modbus_handle(rx, rx_len);
rx_len = 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.
ABBIndustrial · India hiring: MediumAptivAutomotive supplier · India hiring: MediumAther EnergyEV OEM · India hiring: MediumBoschAutomotive supplier · India hiring: HighCapgemini EngineeringEngineering services · India hiring: HighContinentalAutomotive supplier · India hiring: HighCyientEngineering services · India hiring: MediumDensoAutomotive supplier · 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 minBLE characteristic write handlerProtocols · Medium · 4 bugs · ~6 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