How to prepare for embedded programming interview

posted in: How to Articles | 0

Most of the time when people are scheduled to face embedded programming job interview in near future, people keep on searching over internet for good interview questions and sometime desperately for answers ;-).

This approach might help you up to some extent, but if you are destined to face good interview panel (which is almost always the case with reputed employer) then they will test depth of your knowledge in all the area where your next job demands your contribution.

There is no any fix list for the topics to be prepared for your embedded programming interview, however to be prepared well to face an interview, one should cover at least topics mentioned in this article.

Ultimately, if you are prepared well for your interview then you will not be alone when you face the interview, but your confidence will be with you and that can really help you to get hired. Good Luck!!

 

1. Programming Language (C/C++, assembly etc.)

Make sure you walk through concepts of programming language you have used. Regardless of how many years of experience you have, interviewer might want to test your programming skill. If you fail to answer basic question(s) about the language you claim to be champion of, then interviewer may decide to wind up your interview quickly. Correct approach is to be well prepared. You can refer to Embedded C for some good embedded C programming interview questions.

 

2. Domain knowledge

There are n number of domains (medical, automotive, consumer electronics, networking etc.) for which embedded software engineers are required, while some jobs expect engineer to have in depth domain knowledge and some just don't. To be on safer side you should be prepared with good knowledge of domain you are currently working in. If domain for your current job and future job are not same, then if possible it is better to have some general idea about the domain for your future job.

 

3. Microprocessor/ Microcontroller

In embedded programming, every single execution cycle of Microprocessor saved or every single byte of memory saved makes a difference. To be able to meet these expectations to write most optimized embedded programs, it is necessary that you very well understand architecture of target (Microprocessor/ Microcontroller) in use. For embedded interviews your basic concepts of Microprocessor should be very clear. Also, try to remember loosely processor configuration (RAM, ROM size etc.) used by you recently. You can refer to Microcontroller for some good interview questions.

 

4. RTOS

Regardless of which embedded OS you worked on, basic concepts of embedded OS are same and should be very clear to you. Even if you have not worked on any RTOS, it is worth understanding RTOS concepts as somewhere down the line you are certainly going to use it. For beginners, It is good to go through basic concepts before interview, one good link to refer is http://www.freertos.org/.

 

5. Protocols

In embedded systems for data/information exchange between your target and external device/peripheral/network it requires to use protocol. Most often interviewer asks limitations of protocol used, comparison between various similar protocols and reason for selection of specific protocol in your project. Some examples are I2C, SPI, MODBUS, UDS, TCP, CAN, Bluetooth, Zigbee etc.
Some interviewer might ask you to explain one specific protocol in detail, generally to test your presentation skill along with in depth understanding of protocol.

 

6. Peripheral/Device Drivers

In embedded projects, drivers for devices to be interfaced to your target is generally obtained as below.

  • Provided by a manufacturer
  • Re-used from other projects in your organization
  • Find driver for matching/similar device and modify it as per your device
  • Develop from scratch

Even If drivers are not developed by you, it is important and interviewer expects that you have knowledge of internal working of these drivers, how to use it, how to test it, compatibility with different devices or processor. Sometime interviewers may ask you to explain how to write device driver or steps to add a new third-party device driver to your existing embedded software.

 

7. Tools

In embedded system project, different tools are used for different purpose as below:

  • requirement management
  • configuration management
  • development duration and cost estimation
  • design
  • coding
  • compilation
  • unit testing/module testing
  • debugging
  • static and dynamic code analysis
  • code review
  • Integration testing/functional testing
  • defect tracking

Interviewers are always keen to know tools used by you and your expertise in using them. Sometimes interviewers also ask you to specify version of the tool you are using, this is generally

to check whether you are really using the tool or tool version you are using is very old.

 

8. SDLC Process

If you are not a fresher, interviewer will expect you to have detailed knowledge of each phase of SDLC (software development life cycle). You should have knowledge of process model used for SDLC. Below is one of useful links for a quick overview.
https://www.tutorialspoint.com/sdlc/sdlc_overview.htm

 

9. Projects

Many people flood in their resume with number of small/large projects executed by them. It is important that you brush up through all the projects you have mentioned in your resume. Generally, all good interviewers ask questions about project(s) you have executed. It will help interviewer to judge below things about you.

  • Your knowledge about overall project and its high-level architecture
  • Your project presentation skill
  • Your project role and technical contribution
  • Your ability to work with different size of project and team
  • Your understanding of project development, delivery and customer support process
  • Challenges faced by you and your approach to tackle it
  • Your learning from project
  • Your achievements (if any) to help project succeed.

 

10. Testing

While testing is already part of SDLC, it is worth mentioning it separately here to make sure you don't get stumped in an interview when asked basic questions about it. You should be aware of different types of testing performed in project, when and by whom, it could be black box or white box testing, manual or automated testing, module or integration testing. Below is one of useful links for a quick reference.
https://www.tutorialspoint.com/software_engineering/software_testing_overview.htm

 

At the end, remember it is just an interview 😊, WISH U ALL THE BEST.