Interview Prep for Firmware Dev Roles

suraj thite
5 min readFeb 16, 2021

--

If you are looking forward to pursue a career as a Firmware Developer at the most sought organizations, then you are at the right place my friend. I was also in the same situation back in Fall 2020, going through the job application phase and getting an edge over the interview process by perpetual introspection of the interview process.

The foremost thing I want to quote that

Ups and downs in life are very important to keep us going because a straight line even in an ECG means we are not alive ”. — Ratan Tata.

Everyone has a plan for celebration after success , but nobody talks about managing one’s failures. A true experience is gained by learning from failures and overcoming them. An rejection in the hiring process should not demotivate you in any way since its a part of the hiring process and there are thousands of applicants competing for a single role in a particular organization.

Assuming your resume is getting picked up and you are getting interview calls. If that’s not the case , then consider spending more time tweaking around your resume. Lot of companies follow 1–4/5/6 rule wherein the first is the initial screening round (45 mins) wherein the team lead (mostly) determines the candidacy for the development role. Also some organizations add an coding interview round as a buffer between initial screening and onsite round.

The onsite round (45 mins x 4–6) is an repetition of the initial screening in order to avoid false positives and getting an opinion from all the team members about your candidacy for the role. All the 4,5,6 rounds can be scheduled in a day wherein you might be traveling to the onsite location or giving an virtual onsite interview. The onsite interviews checks your patience and how do you manage stress in the sixth interview post completion of the first 5 rounds for the day. From my experience the all the interviews will be revolving around the major topics as below :

  1. Tell me something about yourself, Explain one of your academic projects along with the problems you have faced and how did you overcome those problems. ( Having a standard template for these types of questions helps!) (5–10 mins)
  2. Explore every inch of your resume and try to have a good understanding of various concepts / technologies you have used in those projects and alternatives for the same. (5 mins)
  3. Some basics w.r.t. C Programming i.e. auto, static, extern , register, const , volatile, structures, padding and packing of structures, union, memory segments, stack v/s heap, compilation pipeline, macro vs inline, pointers , call stack, Stack overflow and how to manage it, double pointers, Segmentation fault, debugging techniques, deep copy and shallow copy of a structure , Function pointers. Apart from conceptual understanding also having various case scenarios can turn out to be advantageous. (5–10 mins)
  4. Few Computer Systems Architecture Concepts such as Pipelining, Avoiding stalls in a pipeline , ARM Architecture, TLBs, Caches , Exceptions v/s interrupts , Out of Order Execution, Precise exception Handling, Multi Core Architectures and issues. I recommend going through Computer Architecture course by Prof. Onar Motlu.(https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq). (5 mins)
  5. Operating systems concepts such as Process Management (Process v/s Threads, Kernel Space and User Space, Context switching, System calls, Scheduling Policies, Interrupts (Top and Bottom halves)) Virtual memory(Paging , TLBs, VIPT Cache, Page Replacement Policies, Page Faults) and Concurrency(Semaphores , Mutexes, Spinlock, Data Races, Priority Inversion, Mutual Exclusion, Deadlocks and its prevention , Producer Consumer Problem and its solution using Semaphores). I recommend going through the Operating systems 3 easy pieces book (https://pages.cs.wisc.edu/~remzi/OSTEP/). (5 mins)
  6. Programming questions : Bit Manipulations (https://medium.com/techie-delight/bit-manipulation-interview-questions-and-practice-problems-27c0e71412e7) , Linked Lists (Addition , Deletion , Reverse, Delete Duplicates , Finding Middle, Delete nth node from the end) , Arrays , Strings , Binary Search Trees ( Add, Delete, Search, Traversal, Find height) , Hash Maps. Try solving the Easy and Medium Questions from the Leetcode. The questions related to the data structures are pretty much standard but arrays and strings requires understanding of various algorithms to solve any problems. Some questions w.r.t. memories i.e. Implementation of dynamically allocated 2 D array , Aligned Malloc and free implementation, Stack, Queue, Determine endianness of a system, Determining the direction of stack, atoi, itoa, mutex , memcopy(along with its optimization) and memmove implementations can also pop out. I would suggest practice 5–10 new questions daily inorder to get a grip over programming. (30 mins)
  7. Questions w.r.t. embedded systems design i.e. Interrupts at bare metal level, How to write ISR, Circular buffer implementation , Double buffering techniques, I2C/SPI/ UART Difference and use cases, Polling v/s Interrupts (Pro’s and Cons),reentrant functions, boot process, memory segments in embedded system , whether you will use stack or heap in embedded system, Hard and Soft Real Time Systems, Designing a systems without a lock in bare metal, Volatile keyword, Are interrupt pending flags updated when CPU disables interrupts ?. Some technology specific questions depending upon the team can also be expected. Having a bit knowledge over the domain that the team is working upon can give you an edge. (5–15 mins)
  8. Expect to receive a snippet of code and point out the mistakes by analyzing the logic built around the code. Also you may be asked to write test cases for checking and managing boundary , overflow, underflow, rollover ,divide by zero, De refencing a NULL pointer, negative values etc.
  9. Some behavioral questions such as working in a team environment, managing failures, communicating between the teams, how to handle clashes, building trust within a team members etc. You should be a able to answer these questions swiftly. (10–15 mins).
  10. Some basic questions w.r.t. probability, analytical and critical thinking skills.

Try following couple of blow mentioned blogs :

Also try subscribing to these you tube channels where in you can learn more about embedded stuff.

Having a curious mind and enjoying the learning process rather than grinding over it will create an interest in the Firmware Development for a long term. After all learning is a lifelong process.

Apart from the abovementioned topics, try to make the interaction as friendly as possible. Giving mock interviews with the help of your collogues will help you in building up your confidence while giving answers during the interview.

Avoid getting nervous or anxious a day before the interview. Practice meditation and taking deep breaths while diverting your mind from the outcome of the interview process and focus on giving your 100% irrespective of the outcome. Also remember about your unawareness to the interviewer and its your chance to sell your skills as a platter to the organization.

At last Dr. Robert Schuller has rightly said that

“Tough Times Never Last but Tough People Do”

“All the best for your interviews and hope you land at your dream company because dreams do come true !! “

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response