# 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.*
