Live data from Hacker News

Google Tech Dev Guide

techdevguide.withgoogle.com

131–140 of 250 posts

Re: Google Tech Dev Guide

#131

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…

There are no “puzzles”, but problems to solve. I expect that things like this string search are entry level / new grad kind of question. Someone more senior with more experience should have different kind of problems to solve. I certainly didn’t have a bad experience when interviewing at Google and Facebook. One question were not very concrete, but it was interesting to walk through and solve. I didn’t just “know” the answer, I had to explore a few directions before getting the right one, but I’m sure that explaining my thought process, interacting with the interviewer, validating and debugging my algorithm in a principled way and fixing my bugs were all the elements they are looking to see.

Re: Google Tech Dev Guide

#132
post #111

Earlier 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…

Counteroffer: if you know that it's being asked in an interview, it's much easier to come up with a neat and elegant answer.

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

#133
post #5

Earlier 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

This isn't really true.

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

#134
post #111

Earlier 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 much more important to explain your thought process, work through the problem, and come up with any solution than it is to come up with the optimal solution in these interviews. I think that's what people who rail on standard coding interviews don't understand.

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

#135

Earlier 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)

Indeed, and even stranger arrangements. I know one professor who comes to work for us every summer (with hilarious HR boundary condition consequences every year).

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…

> 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. 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

#137

Earlier 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)

And I’m sure this is true of any large university with a competitive computer science program.

Re: Google Tech Dev Guide

#138

wtf is this? https://techdevguide.withgoogle.com/resources/former-coding-... ! What a shit interview question.

Why do you think so? It seems to me to be a reasonable question to ask that can be written in the time frame of a typical interview.

Re: Google Tech Dev Guide

#139
post #74
post #31

Earlier 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…

If you really want to compare science dicks... Read GEB in fourth grade. Started and ran a high school robotics club that repeatedly sent multiple teams to FTC national championships. Degree in computer science from a highly-ranked institution and I do mean CS, not software engineering; I focused on AI and CS theory. Published research as an undergraduate. NSF GRFP fellowship. Health issues and my professor's sudden death are why I didn't finish a PhD in Robotics.

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

#140

Earlier 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.…

Everything has gotten bulkier in Gmail, not just the JS, but th CSS, the DOM, the fonts, assets overall because Gmail is an app that’s over a decade old and features have mostly been added, not removed.

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.

Post reply on HN