The interview that I attended for Xilinx India Technology Services Pvt Ltd. for a Senior Engineer post and the requirement was for Linux Device Driver Developer.
There were a total 5 rounds of technical interview questions all related to Linux Device Driver and Operating system concepts and 1 HR round. All technical rounds were full of technical questions only and there were no such problem solving questions I encountered.
In my opinion it was not that tough to crack this interview if you have 2- 3 years of device driver development experience, and it was an average experience.
Following are the Xilinx Interview Questions for a Linux device driver developer post:
Round #1 of Xilinx interview questions
The first round was basic C questions and some of the Linux kernel questions.
Q1: How comfortable are you in C and data structures?
Q2: What is structure padding?
Q3: Write a program to detect if a system is little-endian or big-endian?
Q4: Can you write a program to convert big-endian to little-endian?
Q5: Why do we use copy_to_user() in kernel programs?
Q6: Why volatile keyword is used?
Round #2 of Xilinx interview questions
This was a short round and contain some generic and some specific questions to topics I have worked on my career.
Q1: Why do you want to change your job?
Q2: Have you notified your manager about your problems?
Q3: How a particular driver is called or loaded for a device?
Q4: Explain basic driver architecture.
Q5: How did you design your driver?
Q6: What is static and dynamic module linking in Linux kernel?
Q7: How an interrupt from your device propagates to the IRQ handler that you registered?
Round #3 of Xilinx interview questions
The interviewer was keep on questioning me on my understanding of complete system hierarchy and where do my driver sits in the system.
This was really an interesting round.
Q1: In which domain you worked?
Q2: What is SCSI?
Q3: How do data transfer happen in between the system and your controller?
Q4: Who initiates the data transfer?
Q5: How your driver is invoked by the system?
Q6: Can you explain the complete I/O propagation path?
Q7: What is PCI SR-IOV?
Q8: How did you implement SR-IOV in your driver?
Q9: How did you detect from your driver that you are dealing with a physical function or a virtual function?
Q10: What is Scatter/Gather?
Q11: Why do you need a Scatter/Gather?
Q12: Can you write a C program to remove a node from a single linked list?
Q13: What is little-endian and big-endian and how do you detect if your system is little-endian or big-endian? [Repeated question from Round #1]
Round #4 of Xilinx interview questions
This was again a short round. The interviewer just introduced himself and explained where I will be working if I will be selected.
As he was a Director of Hardware IP cores, so he just asked some of the basic questions from Linux device driver concepts.
Q1: How a an I/O propagates from an application to your driver? [Repeated question from Round #3]
Q2: How your driver is probed?
Round #5 of Xilinx interview questions
This was again a technical round with some of the questions repeated from other rounds.
Q1: Big-endian and little-endian? [Repeated question from Round #1 and #3]
Q2: How to convert a Big-endian DWORD to little-endian? [Repeated question from Round #1]
Q3: Have you worked in a multi-threaded environment?
Q4: What is synchronization in kernel?
Q5: What is sysfs in Linux?
Q6: Have you ever worked with kernel crash dumps?
Q7: What is NULL pointer de-referencing?
After this there was a final HR round. There were typical HR questions and nothing extra on this part. I hope this will give you some idea on where to concentrate before appearing for Xilinix interview.
Stay tuned for more Interview questions, tips and tricks and more device driver and web programming stuffs.