4 ms·
Not my experience at all: ALL levels, besides maybe junior which kind of doesn't really exist in Big Tech, require system design, so I can't really relate to th
by brunooliv 3y ago
Not my experience at all: ALL levels, besides maybe junior which kind of doesn't really exist in Big Tech, require system design, so I can't really relate to this.
Algorithms are usually about specifics of what the company itself does, so expect graph traversals, networking, file system stuff etc, disguised as a puzzle depending on the company. Nobody will ask you about "generic algorithm questions" and actually the "topics" are quite narrow.
What I'd like to know and see written down is how you truly prepare for system design when you DON'T HAVE or CAN'T GET experience with large scale systems at your DAYJOB.
The chasm here is that when competition is other 20 engineers who just memorize things, even if their actual relevant skills are objectively worse than yours in practice, you'll never, ever get the job. It's a very tough game and I admit there is real skill in knowing how to game the system :) it is what it is.
PS: I know exceptions are everywhere but I'm sure that the quality of the ones who get in vs rejected will be basically the same. It's just a process optimized to minimize false positives, so, only the median will get in, really good ones will be rejected and only maybe a very small fraction of the ones who make it through will be "The real deal".
- Madmallard 3y agoIt's an impacted field. Read architecture books and learn system design from existing success stories and read through their thought process. Contribute to a large system open source. There isn't really anything you can otherwise do. Try to make large systems on your own projects.
- lambrospetrou 3y agoI totally agree that at higher levels System Design is required. That's why I have a whole section about System Design in the article. See https://www.lambrospetrou.com/articles/big-tech-software-interviews/#system-design https://www.lambrospetrou.com/articles/big-tech-software-int... I describe all the resources I read outside my day job's material. There are a lot of useful engineering blogs you can use, and with 1-2 books you can go very very far in learning the principles. Once you have the theory, then you just need to practice on brainstorming designs for any kind of app you want. Then, you can verify that with the real implementation, you can pretty much find information about any big-scale famous system online. Or you can do mock interviews with others, but I am not a fan of these personally. In my experience, reading, and then trying to come up with designs on your own for well-known products will make you ace these interviews after a few months. Also, during the interview there is no nearly enough time to verify that you have done in the past all the things you will mention. So, if you understand what you are saying, and your design makes sense, you will pass the interview, even if you haven't practiced these things in your day job.
- nvarsj 3y agoVery few people have real distributed systems experience. Maybe 1% of people who pass system design interviews have ever actually implemented or even worked on such a system. The nitty gritty of implementing a distributed system is orders of magnitude harder than the high level view of a sys design interview. What it means is you can just prep for system design like algo. The expectations are not that high. Learn the patterns and common technologies and how they are applied. It almost always comes down to databases and message queues, and the different versions of those. DDIA is the reference book for these interviews.
- deleted 3y ago[deleted]
- iwsk 3y agoWhat you do you mean by junior not existing in Big Tech? All the Big Tech companies I know regularly hire interns and new grads.
- brunooliv 3y agoInterns and new grads are different from "externally" applying to a "junior developer" role which just doesn't exist. It goes from there to medior
- jppittma 3y ago>PS: I know exceptions are everywhere but I'm sure that the quality of the ones who get in vs rejected will be basically the same. It's just a process optimized to minimize false positives, so, only the median will get in, really good ones will be rejected and only maybe a very small fraction of the ones who make it through will be "The real deal". This has not been my experience. I think the quality of the average engineer I've worked with at FAANG has been higher than elsewhere. For all it's problems, the system seems to at least kind of work.
- flashgordon 3y agoActually preparing for system designs is a game these days. I went from dreading them to being really confident with them. My day job had minimal interesting or challenging problems. I am also pretty analytical and quantitative in general (for example I think of system designs as applications of queuing theory) - so questions like "what is the firsts request that will fail and how" actually have theoretical grounding without needing exposure in a day job. Happy to share more. I don't won't to come across as an arrogant prick. I could share how embarrassing I failed at system designs but I could caution against thinking system designs are any magical. Happy to share my path (not easy but IL guarantee it is fun if you like numbers and a pen and paper). Also btw I am talking about preparation for system design interviews. There is still a huge diff between doing well in a 45 min interview and still take years (and tons of mistakes) to build a solid distributed system.
- cvhashim04 3y agoPlease do tell, I’m all ears
- flashgordon 3y agoDefinitely - want to DM me? my email is in my profile.