# Embedded Systems Interview Questions Embedded interviews focus on low-level programming, hardware interaction, and constraints that desktop developers rarely face. **C fundamentals.** - Pointers, pointer arithmetic, and arrays. - `volatile` for memory that can change outside the program's control, such as hardware registers or variables shared with interrupts. - `const` and its placement. - Bit manipulation for setting, clearing, and toggling register bits. - Fixed-width integer types and endianness. **Interrupts.** - Keep interrupt service routines short; defer work to the main loop or a task. - Protect shared data with critical sections or atomic operations. - Understand interrupt priorities and latency. **Memory.** - Stack versus heap; many embedded systems avoid dynamic allocation entirely to prevent fragmentation. - Memory-mapped I/O. - Understanding linker sections: code, initialized data, uninitialized data. **Real-time operating systems.** Tasks, priorities, semaphores, mutexes, and priority inversion (and priority inheritance as a solution). **Communication protocols.** UART, SPI, and I2C: their differences in wiring, speed, and addressing. **Debugging.** Oscilloscopes, logic analyzers, debug probes, and careful logging when resources are tight. **Power management.** Sleep modes and wake-up sources for battery-powered devices. **Common interview task.** Write a function to reverse bits, implement a ring buffer, or debounce a button. Practicing explanations of volatile and interrupts with [this interview prep tool](https://www.ai-interviewcopilot.com/) helps you answer these fundamentals clearly. *Written by the AI Interview Copilot team.*