Preparing for An Embedded Systems Interview — Part II

Preplaced
Preplaced
Published in
6 min readJul 9, 2019

This blog is a continuation to part I. Following is the thorough strategy and guidance for preparing the operating system and systems programming — considered as among the most important tools of any embedded system engineer. The strategy and resources guides the readers for a long term path and is not a quick tutorial on cracking the interview.

Operating Systems

List of some of the most important concepts that you should not skip while preparing for an operating system interview:

— While each of the topics can be covered in advance, topics marked as advance are generally for profiles expecting experienced candidates. Freshers can feel free to skip advance topics.

  1. Process & Thread Management
  2. User space & Kernel Space
  3. Concurrency & Synchronization (Semaphores, Mutex , Spinlocks)
  4. CPU scheduling
  5. Memory Management
  6. Files & I/O systems
  7. Security Models (Advance)
  8. Distributed Systems (Advance)
  9. Heterogeneous and Parallel Computing (Advance)
  10. Real time Operating Systems

Below is the list of some great resources that can help you prepare for above topics and probably become the next Linus Torvalds!

— Only the books and resources that we feel best are mentioned and described here. There are tons of other resources available, a link to some of which is available at the end.

Books

There are quite a few famous books on operating systems. You might have most likely have heard of the Dinosaur Book (Operating System Concepts by Silberschatz, Galvin and Gagne) and Modern Operating System by Andrew Tanenbaum.

Though these are great books and you would most definitely want to read one of these ,it is highly recommended that you read the below book. Believe me, you won’t regret a single minute spent reading this book!

  1. Operating Systems: Three easy pieces by Arpaci-Dusseau

The title is obviously an homage to one of the greatest sets of lecture notes ever created, by one and only Richard Feynman on the topic of Physics.His quotes on teaching tells it all,

“I think it’s much more interesting to live not knowing than to have answers which might be wrong.”

“If you can’t explain it to a six year old, you don’t really understand it.”

The book perfectly follows this principles of simplicity and goes to the root cause to understand the concepts. Never before, reading operating systems seemed so easy and fun. It feels as if you are reading a novel and you are able to learn complete OS just while having a quick little chat with the prof.

The website link provided even points to projects and some great exercises to solve. Time being most critical resource while preparing for interviews, this book will definitely be great help for its easy readability and quick finish qualities.

No matter what is your expertise level, it is highly recommended book to read. It would definitely resolve the burden of misunderstandings you might be carrying for so long!

2. Linux Kernel Development by Robert Love

3. Linux Device Drivers

Operating Systems books cover most of theoretical concepts. Though these concepts are applicable today as well, modern operating systems like Linux, Windows, iOS have come a long way. Reading on this operating systems would help you in understanding how the theory is actually implemented. As Linux is completely open source, it is quite easy to get support on.

Above mentioned books are one of the most famous books available on Linux Kernel. Though quite outdated in terms of Kernel version it covers, they are great in understanding modern day OS concepts. It is highly recommended to at least go through 1st book by Robert Love after completing a generic operating system book to get a real hands-on experience of what real OS can look like.

Online Lectures

I am not the guy who likes to read books

Many of us might fall in the above category. Reading books might feel like a nightmare. Thankfully, there are lot of online video resource available.Below are some highly recommended lecture series!:

  1. Virtual Memory by David Black-Schaffer

Merely searching for operating systems courses will give you lots of great courses and material, more than enough for your preparation. Many of these are present in the courses collection link provided in the end. But Still, One series that we would definitely want to recommend and not want you to miss out on is the above lecture series on Virtual Memory

Virtual memory or virtualization in general is one of the most outstanding solutions that operating system has given to the world. Making life of millions of programmers easy is just a minor part of its contributions. It is one of those concepts of operating systems that is usually misunderstood and often screwed by most in interviews.

The above lectures are broken down in series of short videos. Starting with why virtual memory is really needed, it covers advance concepts in a most simplistic manner possible. If you only have few hours before an OS interview, this is the best you can spend on!

Apart from this, there are some great lectures available on concurrency and synchronization principles on Youtube. We would highly recommend everyone to prepare these ( semaphores,mutex,spinlock) before any operating system interview. Also, quite a lot of amazing assignments from top colleges are available to wet your appetite while also making your concepts strong and unbreakable.

Extra Marks for Extra Reading!

Apart from the points mentioned, a thing that would really set you apart in an interview would be your experience on working with actual operating systems out there running on devices. This allows you to remain up to date with advances going on in the field and also contribute towards it. Linux, being open source is a great place to start with.

Reading good quality research papers is also an additional jewel to your crown. What can be a better research than actually modifying OS code running in millions of devices around you! Yes that is correct, you can contribute towards Linux by submitting your own patches to it. To start with, you can join kernel newbies mailing lists (you can ask relevant doubts here) and mainline LKML for specific topics of your interest.

Few patches in linux kernel might even be enough for your interviewer to skip taking your interview! Code speaks louder than words in your resume!

Systems Programming

One of the most important though rarely prepared for is the systems programming topic. You can be very good at programming and data structures, and be completely wasteful at system programming at the same time.

Systems Programming basically includes building up systems keeping in mind the underlying constraints associated with it. These constraints include limited memory (128 KB might be too much for a system!), power limitations, limited clock cycles, response time of the system ( some systems need to be real time, doesn’t go well with delay in response). Such constraints make working with embedded systems really challenging and fun! (Now you know why embedded systems engineer get paid and looked after for so much!)

It is correct that becoming good at systems programming needs quite a lot of concepts, but quite a lot of it comes through sheer experience. Even after completing all the topics mentioned above, you will have to sit and really dig into systems.

Start with famous development boards( raspberry pi, beagle board, Arduino), dig up the datasheets, tool chains and make some cool fun projects. Not only will these help you in making a strong impressive resume, but also help in better realizing the concepts and theory you learnt.

Don’t Get Lost

There are tons of courses and material available online for each of the above mentioned topics, but don’t waste your time trying to explore everything. Select few of them and stick to specific courses and books that suit your style of learning.

A collection of significant number of well known courses from top colleges is mentioned here. Although not compiled by any of us, but recommending you guys to refer as it is quite good and a noteworthy collection!

This blog post is contributed by Sahil Maniyar, a System software architect at Qualcomm.

Preparing for an interview?

Prepare better with free mock interviews from professionals working in top companies ! Visit Preplaced to get your first mock interview and more of such insightful blogs for free!

--

--

Preplaced
Preplaced

Preplaced is a personalised 1:1 mentor-led interview preparation platform that operates with one and only goal: getting people placed in their dream companies.