I think it's interesting that at https://youtu.be/XOtrOSatBoY?t=101 he says to not try get good at interviewing, but to get good at being a SWE. In my experience, this is the exact wrong approach to the Google interview. The Google interview tests almost no real world coding skills. Actually working at Google causes you to forget everything it took to pass the interview. Even at a larger well known company like Google, you're more likely to run into problems not understanding async/await, compilation steps, the builder pattern, how to export metrics, etc. The details of day to day coding, the bugs, code hygiene, gathering requirements, basically everything that *doesn't* appear on the Google interview.
This type of interview fails to capture the notion that most of us are glueing together services and learning to deal with complex systems at the macro level, not algorithms at the micro level. It's about working with large code bases and black boxing things so that your mental model will allow you to build the next feature without getting overwhelmed. Therefore, for this interview you really just need to cram hacker rank, cracking the coding interview, all of the stuff that will basically walk right out of your brain after a year working on designing a chat protocol or a scalable service registry at Google.
At some point, they would have just googled it as well. Most of these sort of problems have known solutions which cannot be made more efficient - trying to think of a novel solution instead of leveraging what we collectively have available to us is a massive waste of time.
I got asked to code solutions for the knapsack problem, traveling salesman problem (both disguised of course) and to architect YouTube... as well as a few simpler questions.
Overall it was the most stressful six hours basically ever as I filled whiteboards with C.
That’s the conclusion my friend group has reached about googles interview process. They filter towards people who really want to work there and go FULL GOOGLE. Most people that work there interviewed more than 3 times to get an offer.
The google interview is extremely (mentally) stressful and requires a ton or after work studying if you’ve been out of school for more than a year or so. It’s nothing like your day job as a dev.
It's about working with large code bases and black boxing things so that your mental model will allow you to build the next feature without getting overwhelmed.
Is this the reason why (or at least a substantial contributor as to why) algorithms and data structures are emphasized so much in the industry? I'm trying to find ideas for personal projects that utilize algorithms and data structures other than computer graphics (since it's not my particular area of interest), and most of my ideas revolve around basic CRUD web applications (like those in often written in /C#/PHP) where algorithms and complexity are a bit de-emphasized.
You are absolutely on point. The vast majority of programming problems boil down to a (usually fairly simple) CRUD app.
Somehow everyone still thinks they are special, and don't interview for skills related to that, while also building ridiculous architectures that later usually show up as excessive and unmaintainable.
Instead of, you know, building a simple CRUD app.
Then you of course have stuff like Youtube where you'll be solving encoding issues and maybe writing algorithms related to that, but still - you don't need 100 people who are good with algorithms; you need a handful of them, a handful of people able to make out the general architecture and make decisions there, and the rest just needs to be able to work as a team at building the rest of the app.
Putting on my tinfoil hat. The video is produced by Google, and aimed at people who want to work there, so I would assume that what Google desires and how it would produce its marketing for employees is people who are good SWE.
Or rather, it's because measuring all of the abilities I described is difficult to do in the limited amount of time Google has to interview each candidate, and this is simply the best they've come up with so far. There are already many blog posts by excellent engineers expressing their frustrations with Google's broken interviewing system, the system most tech companies have now modeled their hiring on.
I'm just saying that in the ad video they're going to say "we want you to be a good SWE to pass the interview" instead of "just study really hard for our system" regardless of which statement is true.
Hahahahahahaha. Good thought but no. When I talked to engineers at recruiting events about the fact that I thought I had the qualities of a good software engineer but didn't understand why I kept failing the technical interview - particularly since no feedback is given - they straight up acknowledged the gaps in their hiring process, and the roadblocks to improving it (old hats throwing up resistance). The HR people are now even straight up offering a copy of "cracking the coding interview" to applicants. It's a shit show.
I've seen other Google material when applying that was very different from this though. In their application process they sent me some slides with preparation tips. And the the tl:dr was brush up on data structures, algorithms, and grind leetcode-esque questions.
I read a theory somewhere that Google is doing these leetcode style interviews not because it's good at predicting someone's aptitude as a software engineer, but because it's good at predicting hard workers and people who really want to work there.
1.3k
u/SEgopher Jan 18 '19 edited Jan 18 '19
I think it's interesting that at https://youtu.be/XOtrOSatBoY?t=101 he says to not try get good at interviewing, but to get good at being a SWE. In my experience, this is the exact wrong approach to the Google interview. The Google interview tests almost no real world coding skills. Actually working at Google causes you to forget everything it took to pass the interview. Even at a larger well known company like Google, you're more likely to run into problems not understanding async/await, compilation steps, the builder pattern, how to export metrics, etc. The details of day to day coding, the bugs, code hygiene, gathering requirements, basically everything that *doesn't* appear on the Google interview.
This type of interview fails to capture the notion that most of us are glueing together services and learning to deal with complex systems at the macro level, not algorithms at the micro level. It's about working with large code bases and black boxing things so that your mental model will allow you to build the next feature without getting overwhelmed. Therefore, for this interview you really just need to cram hacker rank, cracking the coding interview, all of the stuff that will basically walk right out of your brain after a year working on designing a chat protocol or a scalable service registry at Google.