Cracking the (embedded) Coding Interview
You never forget the day you land your first job.
The thrill of receiving that call from your recruiter to tell you that you bagged your dream role! The relief when you finally see the offer letter you’ve been working towards for years. The pride in your parents' voices when you call home and say “Hey look Ma, I’ve made it!”
But before that, there’s the grueling screening process to get through. Tech interviews often last up to three months and companies can have five to seven rounds of vetting a candidate before they make a decision.
So how do you prepare for these interviews? A quick Google search reveals nearly thousands of articles and courses by “experts'' claiming that they guarantee you WILL get the job. Well, I’m not an expert. I don’t have a course. However, I did go through this very interview process three months ago and I came out on the other side. So here are the tips and tricks I used to land the job of my dreams (or at least survive the job hunt season).
Behavioral interviews are pretty similar across the board. Just be honest and be yourself (a charming, funny, PG-13 version of yourself) and you should be fine. This round tests your people skills more than anything. Focus on making a connection with your interviewer. If you get them to root for you, your chances of getting the job increase tenfold.
Practice what you’d want to say beforehand so your answers have more content than filler words. You can record yourself or rehearse your answers with a friend. Since most interviews are now online, have a mock interview on a Zoom call so you can eliminate any weird quirks (like staring at yourself on screen — something I’m particularly fond of doing) before the actual interview.
These are some common questions asked during behavioral interviews. Use the STAR method and try to answer each question in about 3-4 sentences.
Here's a list of the questions I used to prepare for the behavioral round: Behavioral Interview Practice Questions
Technical interviews… the final boss of software engineering interviews. People spend months, even years, preparing for this round. And it’s even harder for us embedded software engineers.
The issue with technical interviews for embedded software positions is that there’s no clear cut syllabus. We can’t simply grind Leetcode 75 like our software engineering peers. Nevertheless, here’s a handy playbook to help you crack the (embedded) coding interview.
Wait what? You just said we wouldn’t have to do Leetcode!
Well, there’s good news and bad news. The bad news is that like every software engineering interview on the face of this planet, embedded software interviews also test Data Structures and Algorithms (DSA). This is particularly important because resource starved systems often require the programmer to implement and build these structures themselves. And the best way to prepare for these kinds of problems is by using Leetcode.
Leetcode is overwhelming. With over 2500 problems, it’s hard to know where to even start. This is where the good news kicks in — you don’t have to do all the problems (at least not right away). The platforms you’ll be writing software for don’t usually support complex data structures like trees and graphs. Focus on arrays, strings and bit manipulation to ace the coding round.
Try CodeSignal for a fun twist on the same DSA problems. The coding challenges are laid out like an arcade game so you solve each one to unlock the next level. Many companies also use CodeSignal for their online assessments so be sure to assess yourself using their mock interviews once you’re done practicing. HackerRank is another useful tool to check out too.
Don’t do what I did: I decided to be different and spent my first month Leetcoding in C. Worst idea ever! It took me twice the amount of time and ten times the effort (though I did learn the importance of choosing the right tool to solve a problem and became pretty decent at C). My suggestion is to stick to Python. It’s easier and is a better tool to solve these problems.
Embedded systems theory
What’s the difference between SPI and I2C? When do you declare something to be static?
Leetcode is a great way to assess your coding ability (or is it? There’s a pretty big debate on this topic…) But there’s no real way of evaluating your embedded software skills which is why interviewers usually test your theoretical knowledge on embedded systems. Microcontroller architecture, C syntax, communication protocols, operating systems and object orientation are all fair game for this interview round. Here are my favorite resources to help you brush up your theory:
- Aticleworld : They’re a great way to get into the nuances of C syntax and brush up on the nitty gritty details you probably forgot after your intro level C programming class. They even have a section dedicated to embedded C questions.
- This article by RMB consulting: Some of these questions are pretty trivial but there have been interviewees who have been asked these exact questions.
- theEmbeddedNewTestament github repo: This was quite honestly my Bible when I was job hunting. It’s an excellent compilation of both coding and theoretical information and is very well organized. It can be a lot of information to digest, so work your way through it slowly.
- Embedded Interview Questions: This shared doc has everything you’d need and more. It’s a great point to start your interview prep.
- Jacob Sorber’s youtube channel: His videos provide a high level understanding of quintessential embedded concepts.
- EmbeddedRelated: Shameless plug, but EmbeddedRelated has great content to help you brush up your problem solving skills. There’s a myriad of blog posts, quizzes, tutorials and even courses to help you land the role of your dreams.
So there you have it! A free, pocket sized Cracking The (embedded) Coding Interview (copyright infringement not intended) to get the offer letters rolling in.
A small side note: I read somewhere that there’s no such thing as a dream job; I think that’s partially true. There are people you can dream of working with and technologies and products you can dream of working on — but I agree with the author of the quote in that there’s no such thing as a dream company. The job market this year is really, really tough; A lot of the major players have recruitment freezes, so if you don’t land a 200K, WFH, MAANG job, don’t get discouraged. Your “dream” first job is a place for you to be mentored and to learn to contribute. A place that you’re excited to go to and people you can’t wait to work with. If you go into the job market looking for just this — trust me — you will land the job of your dreams.
To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.
Please login (on the right) if you already have an account on this platform.
Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: