
Ask HN: What does it take to get a job at Google? - rayalez
What kind of things a person should be able to do to get a job at Google? Do you have to be a genius or can a normal competent programmer find his way there? Is it possible to do for a self-taught programmer or do you need a CS degree? What sort of stuff do you need to have in your portfolio? How does the application process look like? Can you share some experience&#x2F;advice?
======
joshvm
What killed me was speed.

I didn't think the questions were particularly difficult. Certainly they were
(mostly) all solvable in about 20 minutes and the code shouldn't take more
than one whiteboard-height. Use this knowledge to your advantage: you're not
going to get a super complicated algorithm that will take lines and lines of
code. The problems were also pretty interesting, they weren't textbook crap
like "Go through a binary tree in some order". Lots of the questions are
online, and you may as well practice using what people have leaked. At least
two problems came up in my interview that I'd seen before (one was even
mentioned in a Google talk about interviewing technique).

Being concise and correct matters, maybe this was easier because I coded in
Python and there's less boilerplate.

My feedback was that they had no problem with my problem solving skills or
communication, but that I was simply too slow converting ideas to code. The
best interviews were the ones where I finished early and we went on to chat
about other problems in a more casual manner.

Similarly test the crap out of your solutions.

1) Make sure you understand what you're being asked to do. Whiteboard a test
example without any code at all.

2) Discuss your approach and mention any big O problems (e.g. "I could brute
force this by searching all the pairs, but that would be O(N^2)"). Settle on a
solution that your interviewer approves of, _then_ start coding.

3) Test your code again with known input/outputs. You should be comfortable
using your brain as a REPL.

Otherwise have fun - enjoy the office tour, the free food and drink and the
problems. They're all friendly, smart people.

Would I work there? I don't know. If you're good, you can soar in Google. If
you're not pro-active, you can rot in a boring department forever. What
concerned me is that they couldn't guarantee what job I'd be doing when I
started, even though I'd explicitly applied for a niche computer vision role
that I was well suited for (PhD level).

------
pinewurst
Also recognize that getting in there may not be what you really want, despite
reasonable compensation and having them on your resume. Aspirants are, more
often than not, hired into a candidate pool and don't know what they'll be
working on at interview time. If being a Googler is worth years of working on
crufty ad sales dashboards, then have at it.

~~~
shaftway
I totally agree, and this was the scariest part when I was hired. But you do
have some choice in the matter, and you are expected to stay in your first
role for 18 months. I was hired into a "crufty ad department" and made my move
after 18 months into a department I love.

------
rayalazgoogle
Google is famously more selective than Harvard (both places have self-selected
applicant pools, but Harvard admits 5% while Google has "millions" of
applications and only tens of thousands of programmers hired over multiple
years). However, by a similar argument it is less selective than Major League
Baseball.

Google hires self-taught programmers. But the median autodidact has low
ability compared to the median formally-educated computer scientist. Google
cares less about credentials than they used to, and even in the early days
they were willing [[http://www.codersatwork.com/jamie-
zawinski.html](http://www.codersatwork.com/jamie-zawinski.html)] to hire jwz-
caliber self-taught programmers. But your interview performance must be on par
with traditionally educated candidates. You must be able to write plausible
code in 45 minutes to solve a challenging problem that can be described in 2
minutes. That essentially requires that you are familiar with fundamental
algorithms and data structures (or that you are a genius who can reinvent
these on-the-fly) and some popular programming language.

The portfolio doesn't matter very much. The hiring committee will expect if
you are young that you are capable of contributing in some way immediately and
show promise for doing much more in the future. If you are older they will
expect that you have a track record of exceptional accomplishment that they
can expect you will extend at Google.

For info about the process, see
[https://www.google.com/about/careers/](https://www.google.com/about/careers/).
It's going to be (1) submit your application (2) do phone screens (3) do
onsite interviews (4) review offer.

The penalty for trying too early is that it will take some of your time to do
interviews and you won't be able to try again for a whole year. So you should
put some effort into it if you seriously want to work at Google, but you
should not dedicate years of your life to taking a single shot at it because
you can and many do successfully reapply after rejection.

~~~
nostrademons
There is a limit though - I think it was 3 lifetime rejections before HR stops
considering you as a candidate. So don't be shy about re-applying if your
circumstances have changed, but also don't "scattershot" apply to Google if
you think there's no chance at all of getting in.

~~~
ekr
Does it count as a rejection if they don't even call you back for an
interview/ i.e. all you get back is an automated reply?

~~~
yolesaber
No. It only counts if you fail the subsequent callback interviews. Google
takes a long time to respond. I applied right after I graduated and didn't
hear back from then until two years later.

------
codeonfire
Google is just another big company at this point. They want early career
people because everybody there thinks that he/she is the expert.

------
baccheion
If you want to work there so desperately, then read "Cracking the Coding
Interview." Past that, it's about getting a response from a recruiter or
getting someone who works there to refer you. Once that's done, you should
perhaps look into other (better) companies. You can use sites like Glassdoor,
Comparably, and Paysa to get insight into what it's actually like at these
companies (ie, you may hear something you don't like).

------
thalesfc
I think this link [http://steve-yegge.blogspot.com/2008/03/get-that-job-at-
goog...](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)
is by far the best advice you can find out there.

~~~
thalesfc
I also want to add my 2 cents on that. I am terrible at white-board/ phone
interviews but recently I think I was able to crack at it, and here are my
thoughts about it:

\- go to the root of the problem, run some examples by hand and try to think
as a computer. e.g., I was at apple interview and there was this trick
question that could be solved using a modified version of binary search. When
I ran some example I kept asking myself "if I know that this element in the
middle of the matrix is smaller (or larger) than X, what does that mean?"

\- be very comfortable about big O notation. If necessary, be ready to present
some formula.

\- show that you can do the brute force solution. Sometimes the brute force
solution seems very stupid (e.g., enumerate all possible subsets and find the
best one), but you need to say it!

\- most of all, be confident, but not arrogant. It is not the end of the world
to not know something, but it is important to show what you do know!

~~~
fspear
Can you suggest any resources to freshen up on big o notation and fundamental
data structures & algorithms that are not academically dense (i.e CLRS)?

I'm currently working through Cracking the coding interview & Elements of
programming interviews but I really need to revisit the fundamentals,
specially recurrence relations and calculating the order of complexity for an
algorithm but I can't find any resources that are not too academically
verbose, I have a really hard time reading mathematical notation.

~~~
thalesfc
This is my personal recommendation, please notice that I have read
"Introduction to Algorithm by Cormen" about 4 years ago, so for me everything
was more a catch up than really learning:

\- Skiena algorithm book: [https://www.amazon.com/Algorithm-Design-Manual-
Steve-Skiena/...](https://www.amazon.com/Algorithm-Design-Manual-Steve-
Skiena/dp/0387948600/ref=nav_signin?s=books&ie=UTF8&qid=1471460903&sr=1-5&keywords=the+algorithm+design+manual&)

for this book one can focuses on the first 7 chapters (revision)

\- Leet code editorial solutions
[https://leetcode.com/articles/](https://leetcode.com/articles/) . They
provide with the solution and complexity analysis of a few problems. I suggest
you try to solve and give your complexity analysis then compare it with the
"official" one.

------
awaythrow101
Search for Google Foobar if you're interested in an alternative way to get in
contact with a Google recruiter. I was essentially blackholed until I went
through Foobar (understandably so since I lack a CS degree; note that this
means they may be interested without one). Be aware that they may take upwards
of a year to contact you though.

------
w3clan
Be good in algorithm. If you can do same work in most efficient and effective
way than any one else in this earth. You will be part of google.

Also, google has many other job opportunity than programmer. Try them out, if
you are too much google lover.

