Escolar Documentos
Profissional Documentos
Cultura Documentos
org
Images haven’t loaded yet. Please exit printing, wait for images to load, and try to
Rohan Dasika Follow
5G engineer || Smart City enthusiastprint again.
|| UMich '18
Nov 26, 2017 · 9 min read
There is some helpful material on the Internet and some content for
software interview prep does carry over. But in general, I wasn’t able to
nd a comprehensive guide to get me started.
Recruiting and doing interview prep for embedded software over the
last 4 months taught me a great deal about how to approach the
process. I recently received o ers from a few big tech companies. In this
post, I’ll be sharing some insights I gained along the way.
I’ll be dividing this post into a couple sections, so feel free to jump
around! There are already tons of content on smart ways to recruit, so
I’m not going to go into how to get interviews here.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 1/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Picking a language
As a standard, embedded software development is mostly done in C,
although C++ is becoming more popular recently. If you’ve taken any
computer architecture or embedded systems courses, you’ve probably
used one or the other. Make sure you know which language the
company you’re interviewing with uses. If you’re more familiar with
C++ but they use C, be upfront about that — if you know one, you’ll be
able to switch between the two fairly easily.
Since I’m most familiar with C++, companies have allowed me to write
code in C++. If necessary, they helped me transition that code to C.
For the most part, it doesn’t really make a di erence. This is unless
you’re working with some speci c C++ standard library functions and
containers.
You deal with lower level code and hardware in embedded software
roles. But from a programming standpoint, your data structures and
algorithms are still highly relevant. Similar to software interviews,
there are tons of resources to help you prepare for the basics! Doing a
few problems from each section in Cracking the Coding Interview was
a good starting point.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 2/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
• Pointers
• Arrays
• Linked Lists
The following topics aren’t really tested, but be familiar with them
conceptually. Know how they work, their complexities, and how to
solve them at a basic level.
• Recursion
• Trees
• Heaps
• Hashing
• Sorting
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 3/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Bit manipulation!!
Know this like the back of your hand.
Computer architecture
A close second to bit manipulation.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 4/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Operating Systems
Depending on the company and the role, operating systems can be a
very important topic. You won’t be asked to implement any of these, but
know how things work at a conceptual level!
• Critical sections
Communication Protocols
Know the bene ts and tradeo s of using the following protocols:
• UART
• SPI
• I2C
Based on your previous experiences, the role you’re applying for, and
the company, you may be asked about others as well. Typically,
companies don’t expect you to know about these speci c protocols and
will train you on the job. But having a basic understanding can always
help wow the interviewer!
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 5/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Hardware Fundamentals
Hardware isn’t tested a whole lot for embedded software, but
depending on the role, your level of interaction may vary. Check the job
descriptions and talk to people who work there for a better idea!
• Watchdog timers
• Timers in general
• Details about any peripherals you may have used in your projects
(accelerometers, any sensors, LiDAR, motors, etc)
Practicing
Practice is key — there’s really no way around that. Make sure to
dedicate at least 2 hours a day for interview prep, not including
applying for jobs and reaching out to recruiters.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 6/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
A general tip for reviewing — speak out loud. It’ll help you remember
them better and it’s good practice for when you interview.
At the interview
You made it — great job!
Take a deep breath. It’s time to put all your hard work to good use.
Usually, you and the interviewer will go through a few conceptual
questions. You will also discuss your previous experiences and projects.
Make sure you’re able to answer questions about your contributions
and various challenges you faced in detail.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 7/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Take a second and repeat the question back to the interviewer, just to
make sure you both are on the same page. And if there are any
misunderstandings, the interviewer can always repeat and clarify any
doubts.
• Is it sorted?
Then, walk through your algorithm. Start o with the most basic,
brute-force approach. It can be super ine cient and mention that
you’re using this as a starting point. Explain the time and memory
complexities and why it’s a poor solution.
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 8/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
From there, it’s time to optimize. Generally look for places where you
might be storing unnecessary amounts of data or repeating sections of
code. For embedded applications, memory is important! Instead of
using an array or vector, consider using a bitset. If you’re just dealing
with values between 0 and 31, toggle bits in an integer! This is where
bit manipulation comes in handy.
Writing code
Reading others’ code isn’t always the most enjoyable thing. Make the
job a little easier for your interviewer by using good style. That doesn’t
mean that you have to put down every semicolon or bracket, but indent
well and use meaningful variable names. Try to write neatly and use
the whiteboard space well.
While you’re writing code, keep checking against the algorithm you’ve
devised. Similar to the brainstorming phase, think out loud. Provide
verbal comments to your code. At each step, explain what you’re
checking, what you hope to achieve, and any design decisions you
make.
After you’re done writing code, don’t say you’re done yet. Take a step
back and analyze your code from a high-level perspective. Check the
inputs, the outputs, and your logic for any bugs. Be sure to spot any o -
by-one errors! Then, walk through the code with a few test cases. If
there are any issues that you see, review and rework your code as
necessary.
Final Thoughts
The nature of embedded software interviews is heavily dependent on
the company and the work they prioritize. Companies working on a
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 9/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
Interviews are tough, but preparing well and working hard now can
help you land a job you love :)
I hope this article helped, and wish you the best of luck!
. . .
If you enjoyed this article, please don’t forget to leave a 👏. You can also
follow me on Twitter or Quora:)
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 10/11
9/4/2018 How to land your dream embedded software job – freeCodeCamp.org
https://medium.freecodecamp.org/how-to-landing-your-embedded-software-dream-job-4ff9674bf1c4 11/11