I have been putting off a Google interview for a whole year now. I have real experience building Cluster Filesystems, Distributed Caches, TCP/IP Control plane software and low latency Ad platform for more than a decade. Sounds good on paper, but I can guarantee I cannot solve most of these puzzles without actually solving them beforehand. Why? Because I do not have cycles or time to solve these on my own. I have a sy…
Google Tech Dev Guide
131–140 of 250 posts
Re: Google Tech Dev Guide
#132Earlier quoted context omitted.
It would be interesting to know how much time and practice it took the inventors of many of these algorithms, to actually create them. When you think about it... that's basically what candidates are being asked to accomplish in these kinds of interviews, unless they have the algorithm (or a very similar one) memorized already. Would we be surprised to learn that most of the smart guys behind these algorithms probably…
Good point! I ran into this case studying for interviews a while ago. The "maximum subarray problem"[1] is a common interview question, you are generally expected to be able to come up with the O(n) solution. Well has a great passage about the origins of the problem and how multiple excellent algorithmists could not improve on a O(n^2) run time[2]: > Grenander observed that the cubic time of Algorithm 1 was prohibiti…
The test-taker within me pattern-matches this problem to "interview question with a single-pass linear-time constant-space algorithm". Single-pass constant-space algorithms are so heavily constrained that they're much easier to find. The big hurdle for the maximum subarray problem is knowing that a single-pass constant-space algorithm exists; finding it under those conditions is not that hard. The original inventors of the algorithms you mention had a much harder job than an interview candidate does: they did not know what optimum to aim for.
Re: Google Tech Dev Guide
#133Earlier quoted context omitted.
That's certainly your opinion, but the subsequence problem is a very general, abstract question that offers the candidate a number of ways to arrive a progressively better solution by following their intuitions. It's not the greatest interview question, but it's certainly not the worst. This website appears to be for people who already know how to code, and offers many different paths as well.
Yes but Google wants the right answer, regardless of the way you think and regardless of the fact that you came up with a proof for P=NP on the interview
I've asked a few different interview questions in my time, and the number of candidates who have gotten the "optimal" solution currently sits at 0, to any of the questions.
Despite this, I've suggested that we hire some of those "wrong" answer candidates. And given the interview feedback I've seen, I'm not the only one like this.
Re: Google Tech Dev Guide
#134Earlier quoted context omitted.
It would be interesting to know how much time and practice it took the inventors of many of these algorithms, to actually create them. When you think about it... that's basically what candidates are being asked to accomplish in these kinds of interviews, unless they have the algorithm (or a very similar one) memorized already. Would we be surprised to learn that most of the smart guys behind these algorithms probably…
Good point! I ran into this case studying for interviews a while ago. The "maximum subarray problem"[1] is a common interview question, you are generally expected to be able to come up with the O(n) solution. Well has a great passage about the origins of the problem and how multiple excellent algorithmists could not improve on a O(n^2) run time[2]: > Grenander observed that the cubic time of Algorithm 1 was prohibiti…
It's not about memorizing the answer to algorithm puzzles. In fact - if a candidate seems to know a problem by heart, that interviewer's feedback will often be discarded. It's about putting the candidate in a position where they have to think through a problem critically and seeing what trade-offs they make, what constraints they assume, and how they communicate their intent.
I have recommended hires for candidates who don't find the canonical solution many times.
Re: Google Tech Dev Guide
#135Earlier quoted context omitted.
Google employs a non-trivial number of former university faculty as engineers...
And a nontrivial number of current university faculty. (Fei-Fei Li recently left, as a notable example, and I can name 3-4 profs from my alma mater who are also employed at Google in various capacities)
Re: Google Tech Dev Guide
#136"Given a string S and a set of words D, find the longest word in D that is a subsequence of S." Found under "Foundations of programming" -- this is exactly the type of problem I'd expect as question one under this section. When it's made by Googlers, that is. I make a lot of cool stuff day to day, and usually that requires a lot of code and knowledge about programming and topics that are rather advanced (currently I'…
(Disclaimer: I work at Google). This is going to sound like a humble-brag, but it isn't, I'm trying to give some life advice based on my experience: I have used "CS" algorithmic thinking on multiple projects, I've even used facets of abstract algebra and number theory from my Math degree to further my career and it lifted me out of poverty. Here's an example. A few years ago, I was researching ways to crunch down the…
That sounds really cool, and even though I couldn't understand the technical details I understood the gist of it. But, because there is a "but", the issue with tech- and algorithm-focused companies like Google is that they don't look at the grander scheme of things, the same way as some other less tech-focused companies/people would have.
To go back to your example, that solution meant that Google could "serve" even more JS code to clients' browsers, and as I assume other googlers came out with different but related solutions that meant that even more and more JS code would "make it" to Google's web products. That's how we got to things like the latest GMail interface, which is a mess in terms of JavaScript, because Google just couldn't say at any one point: "No more JS!" presumably because it was getting easier and easier to "input" JS into that thing. All of this could have been prevented if at any one point a Google higher-up would have said "YAGNI!" or "KISS!", which are also very valid programming principles but which I didn't notice as being emphasized on this Google Tech Dev Guide page.
Re: Google Tech Dev Guide
#137Earlier quoted context omitted.
Google employs a non-trivial number of former university faculty as engineers...
And a nontrivial number of current university faculty. (Fei-Fei Li recently left, as a notable example, and I can name 3-4 profs from my alma mater who are also employed at Google in various capacities)
Re: Google Tech Dev Guide
#138wtf is this? https://techdevguide.withgoogle.com/resources/former-coding-... ! What a shit interview question.
Re: Google Tech Dev Guide
#139Earlier quoted context omitted.
Funny, I use this kind of thing all the time when I'm programming. I wrote a comment citing the pigeonhole principal to justify a test case not thirty minutes ago. And I'm not even doing anything wizardly or revolutionary, just improving some concurrency code in a random worker binary. As for your comment about "diversity of thought": These problems seem sterile when they're presented in the most general possible for…
To offer an alternative viewpoint: I have a degree in pure mathematics from a highly ranked institution. I published research as an undergraduate. I went to multiple REUs. I participated in the Putnam and similar competitions. I read CLRS in 9th grade and didn't even bother taking an algorithms course in college. But even I find that these sorts of questions are more gatekeeping than anything else. That's not a persp…
I agree that software interviews are fundamentally broken. I agree that the "traditional" tech interview is optimized to minimize false positives and that this feels unfair. I agree that small companies can do a slightly better job, mostly because there's a chance for a small team to have zero bad eggs and because they're more likely they send architects to interview interns. But small companies also give some of the worst interviews because they don't have enough good people to suppress the assholes. I've also heard of small companies going bad because they accidentally hired an asshole who then contributed to more hiring errors. I haven't heard of a single company that can believably claim to have a solution that is scalable, error-tolerant, and not slightly distasteful. Honestly, if your company can consistently hire good people at scale, what are you still doing writing software? Go do that for Microsoft or IBM or Google and collect your blank check.
I worked in Atlanta for a few years; the demand for software engineers was maybe just a tiny bit elevated. The company I was at laid off its entire ATL R&D office due to an amazing communications fuckup at the C-level, >50 software engineers with zero warning. Recruiters were calling peoples' cell phone before the meeting was over, most people were getting an offer from every interview. Aaaand every single offer was a ninety-day contract-to-hire. Ultimate accuracy, right? Time to settle in and ramp up, time to see you at your best, etc. Yeah, turns out that most places can't really evaluate the quality of software engineers they've had for years, much less after ninety days. Politics, discrimination, "forceful personalities", the difference between productivity and churn, blah blah blah blah blah. Plus those ninety-day contracts can be flat-out abusive if not handled well, subpar pay and benefits and so on.
On "deep thinkers" - Yes, there are people that can do magical things when given time. But I've never met such a person who wasn't also damned good all around. The fantastic mentors and master engineers and world-class professors all did magical work partially because they could blow through the chaff to expose and then engage the important parts. They got better when they had time, but I wouldn't have said they'd ever be at a disadvantage due to time pressure. But I suspect that that's not actually who you're thinking of here. Rather, I've met a bunch of brilliant people with crippling anxiety and stress disorders. Them? Yes, they are absolutely at a disadvantage in the traditional software interview. They're also spectacularly disadvantaged in interviews in every other field, ranging from fast food burger-flipper to professor, and in every other test-type setup you can think of. Like you said, you need to give them some space and maybe a couple weeks to relax. They are why I don't like interviews in general, same way I dislike standardized testing and such. I'm just not sure what would be better. Certainly something where they have more time and less pressure, but you can't back off too far because then you run into contract-term abuse and unpaid-internships-as-interviews. :/
Edit: > many developers who wouldn't necessarily ace them in 40 minutes under tightly controlled conditions can nevertheless come up with perfect solutions in a normal work context, should the problem actually arise.
I'll note here - when I interviewed with Google, I did get an offer despite clearly flubbing a couple of their questions. I think that many people, when they're thinking about or imitating the Google interview, miss that they aren't looking for your answers. They're looking for your thinking. Flawlessly regurgitating the answer gives them no useful information about how you'll do "in real life". Same with producing an answer that you can't explain. Which exposes another subtlety that I think people miss; you must choose problems that wouldn't come up "in real life" because you can't go around giving huge advantages to people who are lucky enough to have actually encountered and addressed them. So you have to find questions that must be engaged with the way a real problem would be but are exotic enough that they wouldn't come up. Which I expect is also why you tend to see weird theory questions; it's a much broader solution space to sample from.
There's a reason that I started my comment by saying that I use that kind of thing all the time. :P
Re: Google Tech Dev Guide
#140Earlier quoted context omitted.
(Disclaimer: I work at Google). This is going to sound like a humble-brag, but it isn't, I'm trying to give some life advice based on my experience: I have used "CS" algorithmic thinking on multiple projects, I've even used facets of abstract algebra and number theory from my Math degree to further my career and it lifted me out of poverty. Here's an example. A few years ago, I was researching ways to crunch down the…
> The gist of that article is by using edit-distance/levenstein distance to 'cluster' JS code fragments, you can improve the efficiency of GZIP by bringing more code into its 32K window OR optimize the huffman codes it uses. However, edit-distance doesn't know anything about the LZ algorithm's mechanism. That sounds really cool, and even though I couldn't understand the technical details I understood the gist of it.…
This is the fate of all legacy software, OSes, native apps, they all eventually burst under their own weight, and are rewritten clean. Inbox was that dream :)
In particular, Gmail has been engineered to mostly be served as a single page app that functions offline as well. SPAs were a bad architectural trend now being somewhat reversed by code-split PWAs.
The same JS tools like Closure Compiler that enable large SPAs also enable efficient code splitting into tiny pieces (look at photos.google.com as an example)
A hammer is only as good as what you use to build. Web apps got native app envy after installables and app stores took off. I think we’ve woke up from that now and you’ll gradually see it improve.