System design for embedded positions (FAANG)

I have about a decade of experience in the software industry working primarily on embedded-type roles and I have a on-site (virtual) interview coming up with a FAANG company. I cleared the initial screening round where I was asked a coding question. I am somewhat comfortable with coding questions now after grinding LeetCode for a few months. However, the system design portion is a bit of a mystery to me. I am hoping that I will get some feedback on what exactly to prepare for the interview as far as system design is concerned.

Most of the online resources on system design include questions like designing Uber, Netflix, rate limiters, notification systems etc. I don't really have much experience with networking, databases and things of that nature as the roles that I have worked on have involved stuff at a much lower level like the kernel, audio sub-systems, video processing, bootloaders etc. I am going to broadly categorize these positions as 'embedded work'. The position that I am applying for is in a team which does similar work. So, I have the following questions on system design for such positions -

  1. Are the system design questions generally specific to the role that I am applying for? In other words, if I am applying to a team which works on Bluetooth (for example), can I still be asked to design Uber, Netflix, rate limiters etc? I have zero work experience on distributed systems, microservices, databases and things of that nature. I have primarily worked on embedded and other low-level stuff where things don't scale as quickly and efficiently as the distributed systems world.
  2. Even in the embedded domain, work is extremely specific to the domain that you work on. For example, someone working on display drivers won't have much of an idea about wireless receivers and vice versa (unless they have specific experience in both). Embedded work is very domain-specific and most of the experienced people typically have in-depth knowledge of their domain. Depth of knowledge is highly valued and essential. In system design, it appears that breadth of knowledge is important. So, for embedded positions, is it important to have superficial knowledge of just about everything else? If so, what would be a good place to start preparing for gaining such knowledge at short notice?

I would greatly appreciate feedback as the team that I am applying for does not work on the same underlying technologies that I have worked on in the past and I have never been asked system design questions previously while applying for embedded positions.

Comments (2)