[NDA] | Microsoft | Amazon | Senior Software Engineer (Embedded Software) | India | Offers

I haven't come accross any interview experience of embedded software engineer positions in FAANGM. Here I am sharing my own experience.

I am a embedded software developer with ~10 years of experience, B.Tech(ECE) from IIIT-Allahabad. I have worked in Qualcomm and Samsung Semiconductor before.

In middle of my career, I thought about changing domains to get into full stack dev roles. Used to start leedcode (mostly easy and mediums), was doing for sometime, then leaving it in between.

Y-2015, I did 270 problems and then left. Y-2017, I did 330 problems in different session and then again left. Y-2019, I did some 460 problems and left. I once attempted a Amazon interview for SDE2 before [REJECT after 5 rounds in Y-2015, Design skills were not upto the mark]. I wasn't consistent enough and sometime had doubts on switching domain after 5-6+ years of embedded experience. Also, coming from ECE background I was more interested in embedded software and firmware roles.

Then came Y-2020, many big core software companies now opening embedded teams in here in India. Starting Feb 2020, I could give lot of time coding late nights after office work. Due to lockdown could save lot of time and did the office work efficiently. I could maintain a 4 month continuous streak of solving problems on Leetcode.

This time I crossed 1000+ problems over period of 7-8 months. Took premium for solving company wise problems, and it turned out to be a good investment. Mostly solved mediums (~600) and easy (~350). Many of the problems I was solving for 2nd time. I attended weekly/biweekly contents and got some confidence from there as my contest rating improved to close to ~1700.

Then came in the luck where I got calls from embedded software teams in Microsoft and Amazon when I was in peak of my practice and flow. I could get through the interview process for both and got offers from both the companies.

Microsoft and Amazon both had 5-6 rounds of interview and it was wonderful interviewing with them for embedded roles. First 3 rounds are like general coding rounds like FAANGM. Other were either based on embedded domain specific, operating system, linux kernel and embedded design problems. There were behavioral and LP questions as well.

What I felt is strong programming and DSA skills is must, even for embedded software enginners. I have seen lot of embedded software guys ignoring and not focussing much on improving programming skills.

I think most important thing to be consistent, focussed and always be ready for the opportunity to grab with both hands when it comes up. I don't believe in crash course of learning programming, data structures and algorithms. Its a continuous process and we have to keep learning and improving day by day.

Below is the interview pattern for embedded roles in Microsoft and Amazon. Won't be disclosing exact set of questions.

Microsoft Interview:

  1. Phone: Discussion with HM about Work experience
  2. Round1: Embedded software, OS concepts, DS/ALGO coding problem. [LC medium]
  3. Round2: 2 DS/ALGO coding problems [LC medium]
  4. Round3: Behavioral, Embedded C/OOPS/OS/Linux Kernel concepts
  5. Round4: Behavioral, DS/ALGO coding [LC medium]
  6. Round5: Behavioral, System Design, System wide debug/bring-up

Amazon Interview:

  1. Round1: LP, DS/ALGO coding problem. [LC medium]
  2. Round2: LP, 2 DS/ALGO coding problem [LC medium]
  3. Round3: All LP, Domain experience
  4. Round4: Embedded Design
  5. Round5: LP, DS/ALGO coding problem [LC medium]
  6. Round6: LP, and work experience, embedded systems

List down topics which embedded software guys should focus upon apart from DS-Algorithms:

Operating systems/Computer Architecture:

  1. Process and Threads
  2. Process Scheduling
  3. Synchronization mechanisms (mutex/spinlock/semaphore)
  4. Memory Management (Virtual memory/paging/translation)
  5. Producer and Consumer Problem
  6. Caching (cache coherency/cache line)
  7. Memory mapped IO/ IO Mapped IO

Linux Kernel concepts:

  1. Buffer sharing: DMA Buf & ION
  2. Wait events/Wait queues
  3. ISR handling (Top half/Bottom half)
  4. Bottom Half - Tasklet/Workqueue/SoftIRQ
  5. Platform driver
  6. Driver probe (Module init, driver register, compatibility string)
  7. Device Tree (Device nodes and parsing)
  8. Clocks/Regulators/GPIO/Pinctrl
  9. IOMMU/MMU
  10. Timer Library
  11. IOCTL, notify dirent
  12. kmalloc/vmalloc
  13. kmap/mmap/ioremap
  14. sysfs/debugfs/procfs

PS: I will be joining Microsoft.

Thanks Leetcode Team and amazing Leetcode community!

Comments (41)