How do you choose a microcontroller for a new product?
What the interviewer wants to hear
- Requirements: performance, memory, peripherals, I/O count
- Power consumption and low-power modes
- Connectivity and security features
- Cost at volume, supply chain and long-term availability
- Ecosystem: toolchain, SDK, RTOS support, community
- Certifications and headroom for future features
Model answer
I start from the requirements: what processing is needed, such as control loops, DSP or a small ML model; how much flash and RAM the firmware and stacks will need, with 30 to 50% headroom for future features and updates; which peripherals and how many pins, such as ADC resolution, CAN, USB, timers for motor control or a display interface. Power matters for battery devices, so I compare sleep current and wake-up time. If the product is connected, I look at integrated radios like BLE or Wi-Fi and security features: secure boot, crypto accelerators, TrustZone and a secure key store. Then business factors: unit cost at our volume, supply chain risk, which we learned from the 2021 to 2023 chip shortage, long-term availability guarantees, and pin-compatible alternatives. Finally, ecosystem: quality of the SDK, Zephyr or FreeRTOS support, debugger tools, documentation and community, plus any needed certifications like automotive AEC-Q100 or functional safety.
Can you answer it under time pressure?
Take a timed hard round and get scored on every answer.
More hard Embedded Systems Engineer questions
- Design the firmware for a battery-powered sensor that must run for 5 years on a coin cell and report data every 15 minutes.
- How would you secure an IoT device's firmware against tampering and cloning?
- How do you make sure a real-time system always meets its deadlines?
- How do you build a strong automated testing strategy for embedded firmware?
- Design a secure, fail-safe over-the-air firmware update system for a fleet of IoT devices.
- You receive the first prototype of a new custom board. How do you bring it up?
- What changes when you write firmware for a safety-critical product, such as automotive or medical?
- How do you safely share data between interrupt handlers and tasks while keeping interrupt latency low?
- A variable is randomly overwritten in devices running in the field, but you cannot reproduce it on your desk. How do you find the cause?