https://docs.google.com/document/d/1yBlP1CHDUH5gxp0wspMzOOMV9iYvjfRQ-JJDe8w0coI/edit
C++ What is static?
What is volatile?
What types of issues can arise if you forget the volatile keyword?
How does an interrupt work?
What programming practices should typically be avoided in embedded systems, and why?
Transmission protocols Compare and contrast I2C, UART, and SPI
How does an ADC work? How about a DAC?
Compare and contrast Mutex and Semaphores A mutex is a binary semaphore, i.e. a semaphore initiated with counter at 1. Mutex for mutually exclusive access, semaphores to manage wait queues. These are the main differences and similarities in a nutshell.
Data Structures and Algorithms Linked List algorithm questions
String manipulation algorithm questions
Bit manipulation algorithm questions
Tell me about a hardware issue you debugged.
Why would you use an RTOS?
How does an OS manage memory?
What is spinlock? When and how do you use it?
-
What is a cache? Why do we need a CPU cache? Cache policies, associativity, ways, cache coherence.
-
High speed buses/interfaces and signal integrity.
-
MMU & IOMMU. TLB, ASID, page tables, then come questions on memory spaces for a process.
-
SoC boot up process. Linux kernel boot up, initrd, initramfs, boot loaders.
-
File systems and flash. Wear levelling.
-
Polling vs interrupts? When to use each?
-
What would happen if we have unstable DDR or CPU core power supply? How would you debug it
-
What is the most common issue you dealt with on embedded system? What is a race condition, priority inversion, starvation, memory corruption, etc
-
How would you debug
(like memory corruption). -
How would you implement a scheduling system that calls a function on a set period? I further asked how to make it modular and how they would handle an arbitrary number of functions. What resources do you need to do that, what kind of data structures would you use?
-
Describe a serial interface in detail (like SPI). Starting at the PHY and working your way up. How does that serial interface compare to others? What are the advantages and disadvantages of each? If you had specific-problem with that bus what would you suspect is the problem?
-
Non-tricky C questions: You have an array of chars, cast the list to shorts and print it out. How would you toggle two bits in a register at a given address? How could you determine the endianness of your hardware?
I switch the questions up and try to target specific things you have on your resume. If you’ve listed any specific serial protocol I will expect an accurate and detailed explanation of it, not just “I had a library that did i2c and used it.” If you list specific devices, I will ask you what you like and dislike about them.