#hardware #interview #semiconductor
I need some advice on how should I be preparing for system design interviews for firmware/embedded roles. Maybe we can use this post to list any design questions faced by embedded or firmware engineers on their respective interviews.
The only design question I was asked in my past interview was how would a firmware stack look like while interfacing a dma controller.
Suggestions are welcome for any material out there which I can refer for design questions.
TC 200k
Want to see the real deal?
More inside scoop? View in App
More inside scoop? View in App
blind
SUPPORT
FOLLOW US
DOWNLOAD THE APP:
FOLLOWING
Industries
Job Groups
- Software Engineering
- Product Management
- Information Technology
- Data Science & Analytics
- Management Consulting
- Hardware Engineering
- Design
- Sales
- Security
- Investment Banking & Sell Side
- Marketing
- Private Equity & Buy Side
- Corporate Finance
- Supply Chain
- Business Development
- Human Resources
- Operations
- Legal
- Admin
- Customer Service
- Communications
Return to Office
Work From Home
COVID-19
Layoffs
Investments & Money
Work Visa
Housing
Referrals
Job Openings
Startups
Office Life
Mental Health
HR Issues
Blockchain & Crypto
Fitness & Nutrition
Travel
Health Care & Insurance
Tax
Hobbies & Entertainment
Working Parents
Food & Dining
IPO
Side Jobs
Show more
SUPPORT
FOLLOW US
DOWNLOAD THE APP:
comments
Sometimes, the interviewer will ask you how to design a product and sometimes he or she will ask you to design an interface or protocol. However, the basic approach to answering any embedded system design question should be as follows:
1. Understand the problem statement really well. Ask clarifying questions to the interviewer. More often than not, candidates fail system design interviews because of not knowing what the interviewer expects.
2. If you are asked to design an electronic toaster, design the basic functionality of the toaster first, before thinking of what IOT interface the toaster needs. Simplicity is the key.
3. Define all the blocks the system might need. The ones I am talking about are the component blocks that are absolutely needed. For example, if you are designing a basic computer motherboard, you will need a DRAM and an SRAM and some sort of interface to the CPU.
4. Think about the peripheral blocks that the product might need if applicable, like UART, or SPI etc.
5. Once you are convinced that you have all the basic building blocks of your system, explain to the interviewer how the system would work and its flow.
6. First think through the basic design and only then think of system optimization. For example, only when you think that the CPU should not be kept busy all the time, add the DMA block. But this is only an optimization that should be added later. Stick to the basics first. To many details will clutter your design so don't add them in the beginning.
7. Think of power optimizations the system might need.
Last and most importantly, think in this order:
1. First make it Functional. i.e. it should work.
2. Then make fast, think about performance.
3. Lastly, think about scalability.
For system design in ESE, I highly recommend Elicia White's book : Making Embedded Systems.