One: Introduction
At first glance, I knew I was looking for a job. My main goal is to work on driver development, and while the path to mastering Linux is still long, I recently went through interviews with four companies related to drivers. Out of those, only one company (Shenzhen Zhongwei Technology Co., Ltd.) impressed me—either through a phone interview or by asking questions that were not too difficult. The questions were familiar to those who have studied technical books, but I couldn't answer them fully, which is why I'm writing this. I hope it will help me understand these topics better and avoid being caught off guard in the future.
The other three companies didn’t even ask about drivers. I wonder what they were focusing on? Asking technical questions can reflect the depth of someone’s knowledge. It's tough to be a driver developer, but I'm determined to keep pushing forward!
Two: Common Linux Kernel Interview Questions (from easy to hard)
Simple Questions:
1. What is the difference between kernel space and user space in Linux? How do processes communicate between user and kernel space?
2. How is memory partitioned in Linux? What are virtual addresses, physical addresses, and how do they translate? What is high memory?
3. How does Linux handle interrupts? What’s the difference between tasklets and workqueues, and how are they implemented at the lower level? Why is there a distinction between the top half and bottom half of an interrupt handler?
4. What is the process of handling an interrupt in Linux? When is an interrupt handler executed?
5. What synchronization mechanisms are used in Linux? What’s the difference between spinlocks and semaphores?
6. Can you explain the RCU (Read-Copy-Update) mechanism in Linux?
7. How do softirqs work in Linux? (March 11, 2014)
8. What atomic operations are supported in Linux? (March 22, 2014)
9. How is the address space divided in a MIPS CPU? How do you access specific device registers in U-Boot? (March 22, 2014)
I've been busy lately (due to a recent job change), otherwise I would have written more. But now I’m taking time to organize my thoughts.
These questions are essential for real-world work. Understanding theory helps you make better decisions when coding—knowing what to use and what to avoid.
Complex Questions:
1. How does Linux implement netfilter? How are packets processed (e.g., filtering, NAT), and where are the HOOK points located?
2. What is the process of a system call in Linux? For example, how does the read() function work from user space to kernel space?
3. Can you explain the Linux kernel startup process at the source code level?
4. How does the Linux scheduler work?
5. What is your understanding of the Linux network stack?
Three: Written Test Questions
1. Binary search
2. Conversion and comparison of sizes
3. Sum of the outermost elements of a 2D array
4. Check specific bit positions (0 and 1)
5. Swap the first and last characters of a string (string reversal)
If you’ve encountered any other topics during your interviews, feel free to leave a message. I’ll collect all the questions and turn them into a resource to challenge future interviewers!
Under the time constraints, I’ve recently organized the above questions and learned them on my own. I hope others won’t have to search for knowledge everywhere anymore.
Liquid Level SensorÂ
Liquid Level Sensor,Liquid Pressure Sensor,Liquid Nitrogen Level Sensor,Liquid Nitrogen Temperature Sensor
Xiaogan Yueneng Electronic Technology Co., Ltd. , https://www.xgsensor.com