Please don't poison the well with "I did 5 questions and got L5 at google".
I'm on month 2 of LC with about 50 questions complete. However, I don't think I'm prepared for an interview. At what number did you begin feeling confident in your ability to solve within 30 mins.
Bonus points if you've got any tips to help with avoiding silly mistakes like out of bounds indexing and off-by-one logic errors.
comments
1. C = Clarify requirements/features. Ask questions regarding inputs and outputs and what you need to actually do programatically. Make sure you know the question being asked, restate it in your own words and ask the interviewer if what you said makes sense.
2. L = Load estimation. Do the math on how much load/bandwidth/data/etc you'll need per component and talk this out with your interviewer to know if you're on the right track.
3. A = API. Discuss the policies and API you intend to have in place and how you would implement them.
4. D = Data schema. Draw/write out the classes/db-tables that you plan to use/implement and explain how they related and how they're necessary, etc.
5. H = High level architecture. Draw out, at a very high level, the components you need. Datastores, load balancers, servers, etc. There is no need to dive into detail at this stage unless they prod you for it, in the interest of time.
6. D = Detailed component design. Now it's time to drill into each component (ask your interviewer if there is any component they would like to drill into, so that you arent drilling randomly) and hash out specifics.
7. S = Scale/Single points of failure/etc. Now, it's time to identify how you'd make your system better, identify the single points of failure and how you'd remedy them, how you might partition data for parallelism etc. Your interviewer will likely ask you this regardless but taking the initiative to answer preemptively is a good signal.
So that's the meta-"how to do the system design interview." For practice, the best is, of course, real life experience in doing architecture and system design/implementation, but after that "grokking the system design interview" on educative.io is good. And I youtube'd some examples as well. (there is also "system design primer" - I've heard it spoken about in good regard, but I have no personal experience with it)
In my case, I had previous experience in this area so learning the meta of "how to go about the system design interview and what they're looking for" was more important.
EDIT: Also important to know is that they sys design interviews are super-conversational. Just imagine you're designing a real system with your team. There would be a ton of back and forth, so try to mirror that with your interviewer by pretending he's a teammate that you're hashing ideas with. You should be driving the discussion but pinging off them constantly to see if you're on the right track. A good split of who talks is 70-80% you, 20-30% them.
Like what were the intervals like?
Also, do companies ever ask about your personal projects listed on your resume when you interview?