News for hackers. Stuff that matters.
Re:Google Interview University – Plan for studying to become... by dragonwriter on Thursday October 06, 2016 @11:53AM (#12653474)
> In the real world, you use a well-tested premade off the shelf library to traverse a DAG or implement a red/black tree.

Unless, you know, you are implementing the standard library for a new language, so that there is no such "off the shelf library" available. Which its not been completely unknown for Google software engineers to do.

"Off the shelf libraries" aren't things that are handed down on stone tablets to the prophet on a mountaintop, they are things that are created by software engineers.

In any case, understanding which algorithms and data structures to use, even if you are using a pre-made library, and the impacts of that decision requires an understanding of the algorithms and data structures similar to that which is needed to implement them (it doesn't strictly require the ability to implement, but ability to implement isn't an unreasonable way of filtering for the requisite knowledge.)

Re:Google Interview University – Plan for studying to become... by Periodic on Thursday October 06, 2016 @12:27PM (#12653762)
When I worked at Google Search Infrastructure (not any ML stuff) I actually built a performant, persistent red-black tree implementation in C++ for creating persistent sorted lists with good insert and delete characteristics. It's was a pretty niche need, but we had it and the existing libraries we could find didn't cover it. We needed it for doing some speculative programing where we were doing some constraint solving and were using a greedy-ish algorithm to explore the constraint space. Arbitrarily solving the constraints was theoretically and practically impossible in a performant way, so we settled for a greedy exploration of the search space but we needed a way to back out of failing lines of exploration.

So, yeah, we needed engineers who were strongly familiar with the theory of how hard things are to solve and knew a lot about different types of data structures. We were in a space the existing libraries didn't really cover.

Maybe not all engineers need these skills, but it was valuable that our team all had them and were thus able to have deep design discussions about it.

The skill that's lacking the most at Google is project management, which is not necessarily a skill that every engineer needs.

Re:Google Interview University – Plan for studying to become... by kabouseng on Friday October 07, 2016 @05:13AM (#12659199)
I would argue the exact opposite, more engineers need basic project management knowledge than algorithm knowledge, perhaps even at Google.
Re:Google Interview University – Plan for studying to become... by lawn on Thursday October 06, 2016 @12:33PM (#12653809)
There is another point to this: You shouldn't have all in your head. If you're actually going to implement a standard library for a new language it's reasonable that you spend some time and energy on researching and looking stuff up.

I don't see how being able to recite trivia questions from memory is a good indicator even for implementing a standard library.

Having a rudimentary understanding of algorithms and data structures is useful but in many cases it's also something you could look up.

Re:Google Interview University – Plan for studying to become... by pjlegato on Thursday October 06, 2016 @12:39PM (#12653859)
Well said. If I ever did actually have to implement a red/black tree or a TCP stack for my job as a software engineer (which has somehow never come up yet), I wouldn't do it by standing at a whiteboard racking my brain for the details, and I certainly wouldn't set a one-hour timer. I'd pick up a book or read some reputable websites to refresh my memory first, and I'd take my time writing it, since it'd have to be an important corner case to necessitate rewriting something complex that's already pretty well implemented.
Re:Google Interview University – Plan for studying to become... by nostrademons on Thursday October 06, 2016 @06:30PM (#12656667)
The real use-case for algorithm knowledge at Google isn't implementing standard libraries, it's in distributed computing. Okay, you know how to implement a shortest-path algorithm. Do you know how to implement a shortest-path algorithm when the data is spread over 10,000 computers? How about when paths become blocked by traffic jams or accidents? Could you adapt it so you can update that shortest-path in real-time as weights changed?

In these cases, most of your head-space is focused on the problem, which isn't written down anywhere other than PM's requirements doc. It's pretty critical that you understand the algorithm really well, because if you have to look it up you're going to have to unload all the messy problem-domain stuff that's in your brain.

Re:Google Interview University – Plan for studying to become... by manigandham on Friday October 07, 2016 @05:31PM (#12664061)
Distributed storage/compute is a different problem/abstraction from an adaptive shortest-path algorithm.

Also, you can learn the algorithm first then figure out the problem. No need to do it on the fly, although sometimes that can help too.

Re:Google Interview University – Plan for studying to become... by solipsism on Thursday October 06, 2016 @12:57PM (#12654014)
You seem to think you'd lose points in a Google interview for not knowing some specific concept. That's not how it works. Interviewers want to know how your brain works, even when presented with something you don't already know.
Re:Google Interview University – Plan for studying to become... by pjlegato on Thursday October 06, 2016 @01:20PM (#12654229)
I admit I have never interviewed at Google. I have interviewed at a number of companies that use the "CS trivia" style interview process. I got some of these jobs and didn't get others.

In the cases where I didn't get the job, I naturally asked why. Despite repeatedly having assured me that they just wanted to know how my brain works and not whether I'd memorized specific concepts, I am usually flat-out told the rejection was because I had implemented some minor detail of algorithm X incorrectly; that my implementation failed in some corner case.

I've also passed and worked at companies which do CS trivia style interviews. When they later interviewed other candidates while I was there, I sometimes observed how the people conducting the interview would first study algorithms and data structures for hours on Wikipedia prior to going in -- because they themselves can't recite any of that without preloading.

Maybe Google works differently; I don't know. At most places, the "CS trivia" style interview seems to primarily serve as a vehicle for bolstering the egos of the people conducting the interview -- they get to feel superior and ding people for not knowing the gotchas of algorithm X.

Re:Google Interview University – Plan for studying to become... by xiphias on Friday October 07, 2016 @03:17AM (#12658778)
I'm working on Google ads where a ,,minor detail'' in an algorithm implementation can easily cost $50000/day loss. It also means that the experiment has to be stopped, everything fixed, tested, approved again, which can easily take a month to get correctly, so a lot of time is lost. I'm not saying the interviewing system is perfect, but getting edge cases right in a big system is critical.
Re:Google Interview University – Plan for studying to become... by kayge on Friday October 07, 2016 @12:39PM (#12661980)
When you're working on getting those edge cases right, are you allowed to use a book or a computer for reference? :)
Re:Google Interview University – Plan for studying to become... by alexgorbatchev on Friday October 07, 2016 @03:10PM (#12663176)
That's where peer-review comes in. Hopefully you aren't committing to master all by yourself these kind of changes.
Re:Google Interview University – Plan for studying to become... by umbs on Thursday October 06, 2016 @01:57PM (#12654551)
From my experience, I agree with this. I interviewed at Google in 2014. I prepared extensively. However, I bombed the interview. The interviewers genuinely wanted to see how I think. I am not brightest guy around and couldn't provide great insights in my solutions. I got same feedback from recruiter.

Just came here to say that from my limited experience, I concur with this comment. Google also has improved their feedback loop after the interview, which I find severely lacking in other companies with similar interviewing styles.

Re:Google Interview University – Plan for studying to become... by alexgorbatchev on Friday October 07, 2016 @03:12PM (#12663188)
> I wouldn't do it by standing at a whiteboard racking my brain for the details, and I certainly wouldn't set a one-hour timer.

That...

Re:Google Interview University – Plan for studying to become... by morgante on Thursday October 06, 2016 @01:22PM (#12654249)
> Unless, you know, you are implementing the standard library for a new language, so that there is no such "off the shelf library" available.

The ability to write down a complex algorithm on the whiteboard without any references is not a very good proxy for being able to implement the algorithm in a standard library.

It vastly over-selects for people who are good at memorization.

I know how to use these algorithms and data structures, and in fact do use many of them regularly. I can even implement them myself when I need to. But I certainly don't go to implement them without access to any references—if you're writing a standard library and don't consult references when doing so, then that's a bigger indication of you being a bad engineer than a good one.

It's really just an elaborate signaling ratio that you're willing to devote lots of time to studying. I personally don't think Google is such a mythically fantastic employer that I would spend tons of time studying just to get a job — and that's probably the point.

Re:Google Interview University – Plan for studying to become... by blub on Thursday October 06, 2016 @11:59AM (#12653524)
Let's be frank, most google engineers don't create new programming languages or work on library infrastructure.

The only common topic they all work on is selling our eyeballs and collecting our data. Interviewing for that would make more sense than the algo stuff.

P.S: there's a difference between knowing typical algorithms needed to solve a class of problems and studying to implement them on a whiteboard.

Re:Google Interview University – Plan for studying to become... by dragonwriter on Thursday October 06, 2016 @12:06PM (#12653586)
> there's a difference between knowing typical algorithms needed to solve a class of problems and studying to implement them on a whiteboard.

I'm not sure that's all that true; even if you haven't specifically studied to implement the particular algorithm, if you are familiar with the concept of the algorithm and proficient in the implementation language, then coming up with some kind of cut of an implementation isn't an unreasonable request. (Now, if the evaluation of the quality of the implementation is unreasonable for the context in which it was requested, that's a problem, but if its used to judge understanding of the concept, if potential problems in the implementation are the focus of probing questions to determine understanding rather than straight rejection, etc., I don't necessarily see a problem.)

Re:Google Interview University – Plan for studying to become... by pjlegato on Thursday October 06, 2016 @12:30PM (#12653786)
Yes, that is true. A tiny percentage of Google engineers build new languages. If you're hiring someone to write a compiler, say, then it is absolutely appropriate to ask interview questions about compiler design.

The point is that that is not how these interviews work at all. They test for the ability to memorize and regurgitate on demand a standardized and generic set of "CS fundamentals" based on the curriculum of elite CS schools -- nothing more.

For almost all jobs, even at Google, almost all of that knowledge is never used at all. Even at Google, most coding jobs are unglamorous CRUD. You just don't hear about them in blog posts because it's far more compelling to write up their cool new programming language project.

Re:Google Interview University – Plan for studying to become... by Morgawr on Thursday October 06, 2016 @12:48PM (#12653939)
>For almost all jobs, even at Google, almost all of that knowledge is never used at all. Even at Google, most coding jobs are unglamorous CRUD. You just don't hear about them in blog posts because it's far more compelling to write up their cool new programming language project.

I'm curious about this statement, you say this but... have you ever worked at Google? I'm genuinely interested, not trying to discredit you. It's a bold statement to make if you don't have direct experience on the job.

Re:Google Interview University – Plan for studying to become... by oneloop on Thursday October 06, 2016 @01:39PM (#12654399)
Morgawr I suggest you go around this thread and read that guy's comments. You'll notice that they're all in the direction of "other people merits aren't such a big deal". His implication that passing an interview at google is just memorizing trivia

> I don't have months to study fulltime to cram for the CS trivia challenge

His implication that the reason why he didn't get into google isn't because he's not smart or knowledgeable enough, but because he didn't go to a prestigious school

> No, I don't work there. I didn't study CS in school (much less attend the elite CS schools they are selecting for)

The implication that maths is somehow less important than nebulous concepts like "shipping code within budget"

> "CS trivia" interviews select for people who know the mathematics of computer science, not for people who know how to ship robust software systems on time and within budget.

That interviews are processes which dumb people pass, unlike him

> Their interview doesn't select for "ability to figure things out" at all. It selects for "ability to memorize and regurgitate academic CS curriculum on demand."

And then the comments through which I came to know this guy: when someone makes a good point, he replies that "correlation doesn't imply causation", and then when asked a simple question, instead of answering the question his answer is "I have X credentials, therefore I know the answer very well":

> I have a philosophy degree, and I can say with some confidence that I understand that particular catchphrase pretty profoundly. Not everyone who happens to disagree with you is merely an ignorant barbarian in need of enlightenment. See Karl Popper's theory of critical rationalism to answer your questions about causation.

You see, checking boxes (like getting credentials and academic knowledge) is very important, but only the boxes he's checked.

I'm haven't enjoyed a thread this much in a very long time.

Re:Google Interview University – Plan for studying to become... by pjlegato on Thursday October 06, 2016 @01:02PM (#12654055)
No, I don't work there. I didn't study CS in school (much less attend the elite CS schools they are selecting for) and I don't have months to study fulltime to cram for the CS trivia challenge that you need to do to get through the door at Google. Fortunately, there are plenty of other jobs for software engineers.

I admit it is based on hearsay -- I know a number of people who work there. They say things along the lines of, "The pay is great and the benefits are generous, but the actual work is more or less the same as any other tech company." They tell me about their projects, and it's true. It's mostly CRUD.

Re:Google Interview University – Plan for studying to become... by poikniok on Friday October 07, 2016 @01:13AM (#12658339)
Trust me with your attitude Google isn't missing you either. Maybe one day you will appreciate fundamental CS knowledge as more than some "trivia" to study.