Hi all, I recently got offer from Facebook, Bytedance(TikTok), Goldman Sachs, Linkedin, Rakuten Viki. I used a unique technique for system design practice and found it very effective. I call this technique, interviewing myself :). Here are details - Make a list of questions you want to practice or should practice :). - I made a list of around 25 questions (including grokking) - practice 3-4 questions daily, or according to your plan and interview date, finish all practice at least 3 days prior to your actual interview so that you can have time to quickly walk through it again. Steps -- 1. start by reading question title only (eg. design Facebook messager) 2. spend around 8-10 minutes requirement clarification, note down what functionality a messager should or can have. 3. spend ~2 minutes for core functionality you want to have at the first version(v0) 4. capacity estimation (8-10 minutes) 4.1 - users, active users (daily, monthly, etc). 4.2 - number of records and storage (like 2 B messages each day) 4.3 - network 4.4 - cache (apply rule 20-80), not always necessary to mention cache in the beginning. Now, these steps will make clear which direction your interviewer(remember you are interviewing yourself) wants to focus on and which part could be bottleneck(DB, service, response time, CAP etc) 5. start designing components of your system keep talking to the interviewer(constantly talk to yourself). 5.1 Service: HA, HTTP/TCP, stateless/stateful, Behind LB or Behind proxy, internal or external. pros, and cons of each. 5.2 Database (CAP): which DB you will use and why, why partitioning, how partitioning. pros and cons of each database you select. 5.3 Cache: where cache and why, which cache, expiry mechanism, etc. 5.4 internal service communication(peer 2 peer, over TCP, grpc etc) and separation of concern, microservices architecture. Note:: Next step-6 you can do before 5th step (compare your thoughts with grokking or any existing solution or friends) 6. Now go to grokking/any solution and compare at each step 6.1 -> (step-2) what all requirements you missed to notice. 6.2 -> (step-3) what core requirements you selected and what grokking solution is focused on. 6.3 -> (step-4) how you estimated and how grokking solution estimated capacity. this part is very critical, sometimes estimation parameters could be very helpful in the estimation of everything. eg. designing youtube if you choose users or number of videos it's hard to estimate network bandwidth but if you choose the total watched minute daily like 100M minute watched daily it becomes easy. 6.4 -> compare your overall system. 7. Note down all the good and bad things in your design and remember that for next practice(for me capacity estimation was mostly time-consuming and confusing) 8. Find out your overall strength and weakness (for me capacity estimation was weakness sometimes I avoided, sometimes I forgot, sometimes I did partial estimation) 9. Improve your weakness in the next practice question. The above approach is a kind of framework or methodology, it's not The System Design Primer. I thought of writing this because I saw recently many talented individuals are interviewing unexpectedly due to unexpected circumstances. I tried my best to explain, please dm me for any further help. open to give a referral. open to have call over weekends for discussion or particularly questions sharing. Edit-1 please ignore english mistakes 😀 Edit-2 Currently I am not working with Flipkart. My referral means I can pass your profile to my company or to my close friends or to a known recruiter. About my offers Facebook - London - Infrastructure team Linkedin - Dublin - AI Infrastructure team Goldman Sachs - Singapore - Application infrastructure team Bytedance (TikTok) - Singapore - Ads network team. Rakuten Viki - Singapore - platform engneer. Infrastructure team is kind of coincidence for me 😀. Edit 3 - My list of questions, feel free to comment and contribute. https://tinyurl.com/ybnnmy5b Edit 4 - The System Design Primer https://github.com/donnemartin/system-design-primer #offer #career #tech #layoffs #layoff #facebook #interview #systemdesign #bytedance #goldman #help #preparation
Really appreciate this! Super helpful!
Interested
We need more people like you on blind. Thanks for helping the community
Nice
LinkedIn still hiring?
This is really awesome. Thanks for sharing
I am not convinced the capacity estimation tells you anything useful. Only the number of users metrics seems useful here.
Let me give you more details 4.2 - number of records and storage (like 2 B messages each day) ---- sometimes the number of users could be the same for two system but each user could be generating lots of new DB records. eg. in case of chat application with 500 million users will generate a lot more DB records compare to 500 million users in e-commerce placing orders. Hence DB for chat is more write-intensive than DB in order system. write and read intensity guides you to choose correct DB. 4.3 - network - every problem we have to think differently and find a variable that gives us easy way to find incoming traffic and outgoing data. 4.4 - cache: I think already explained. let me know if you still don't agree, nothing is universal correct in system design interview we can always discuss and make it more useful.
Have you gone through the book also? - Designing Data-Intensive Applications
Good stuff 👌, curious how did u apply and how did u manage to parallelize everything
Actually I first got a job where I can go but least preferred, after that prepared well for 3 weeks meanwhile completed phone screen for all. Once prepared scheduled back to back within two weeks. FB approached by HR LinkedIn got referral Bytedance applied directly GS got referral Viki Reached out to HR
Congrats n atb. Can I dm u. Targeting similar APAC region companies
You the real mvp
What does MVP mean?
@Verizon minimum viable product