
Ask HN: How do I prepare for an interview for AMZ/GOOG/APL/FB? - creek567
Hi there,<p>I have a CS degree and I&#x27;ve been working as a software dev for about 2 years now for a smaller company doing backend stuff. I want to make the switch and get a job at one of the BIG 4 tech companies (Amazon, Apple, Google or FB).<p>Before I start applying I want to make sure I&#x27;m ready for the technical interview since I&#x27;ve heard the interviews are intense and I need several months to prepare for it. I&#x27;m up for the challenge and I want to do it, but I&#x27;m not sure where to start.<p>Where and how should I start getting ready for a technical interview? How much time would I need to be sufficiently prepared for one?<p>Thanks!<p>EDIT: Feel free to share links to Github repos, checklists and study plans, they are very helpful too!
======
joshuakcockrell
I've worked at Microsoft, Adobe, and Twitter over the past few years. I've
also received offers from (or interviewed with) Google, FB, Dropbox, Uber,
etc. I would recommend:

[https://www.pramp.com](https://www.pramp.com) \- 1 hr online interviews where
you interview someone and they interview you back. Go through ~20 of these to
get really comfortable solving problems while talking through them. They also
give you the optimal solution at the end. This will prepare you really well
for the initial technical phone screenings.

[https://leetcode.com/](https://leetcode.com/) \- collection of 700+ interview
coding challenges. You should be able to solve any random medium difficulty
question within 15 minutes if you want a shot at the companies you listed.
Keep doing a couple of these per day till you get really good.

"Elements of Programming Interviews" or "Cracking the Coding Interview" \-
Read through either one of these to get an overview of the interview process
and what companies expect.

Polish your resume - This is only important to get the interview. Once you are
interviewing onsite the resume doesn't matter much. Here is mine to give you
an example.
[http://joshcockrell.com/joshua_cockrell_resume.pdf](http://joshcockrell.com/joshua_cockrell_resume.pdf)
Feel free to send me yours if you want some feedback.

~~~
creek567
This sounds like a great advice!

Any specific tips on getting the most out of Leetcode?

For example. Should I do the questions on paper first, then the editor? Should
I have multiple solutions to each (n2 and nlogn) if it exists?

How do you guard against just memorizing the questions? I feel like if i can't
do a problem and look at the solution, then going back to it later will be
useless since I already have memorized the answer but not the methodology to
solve it.

Thanks!

~~~
joshuakcockrell
> How do you guard against just memorizing the questions?

I don't think you need to worry about this. A simple search for "binary
search" shows 20 different questions. If you can't do the 1st bst problem and
you look at the solution then that's okay! You have 19 more to try it on. Even
if you do all 20 then come back in a month and try them again. There's no way
you're going to be able to memorize that many variants. And that's just 2% of
their entire set of questions.

To really answer your question, I prefer to just hit the "random problem"
button and see if I can solve it in 15 minutes with an optimal solution. If I
struggle, then I just go read the solution (to understand how I should have
solved it) and try a couple related problems to make sure I'm not just
memorizing it and I actually understand the methodology behind solving it.

Good luck!

~~~
marktangotango
This is how I used solutions manuals to ace calc 1 and 2 in college. I went
through every problem in the book at least twice. Some people say 'don't read
the solutions' but it worked for me, going back and testing myself to make
sure I "got it" was the key.

------
tabeth
I disagree with most of the advice here. There's only one thing you need to be
able to do: buy the "Elements of Programming Interviews" and be able to solve
any problem in it within 30 minutes. Cracking the Coding Interview's questions
are way too easy. If you buy the book and study those questions you're just
going to be disappointed that the questions you actually get are much harder.

------
angarg12
A couple of years ago I was in your position.

I went through the whole process with Google and Amazon, just to get rejected
at the end. I prepared by cramming Cracking the code interview in 2 weeks and
reading classic algorithms books; it wasn't enough to meet the bar
(anecdotally I remember Google being much harder than Amazon).

Fast forward another couple of years and I got contacted by Microsoft and
Amazon recruiters, went through and got offers from both companies. Recently I
also got approached by a Google recruiter but I politely declined since I
recently started a new position.

What changed in those couple of years?

This time around I prepared by solving problems in leetcode and other
platforms a longer time. For about 2 months I spent almost all my free time
writing code out of the office.

But that's only half of the story. I noticed that as you apply to more senior
roles, the interviews focus more on behaviour and experience rather than
hardcore programming. I would say that the weight of these factors was between
2x and 2.5x this time around.

Finally, I myself changed during that time. I adopted an 'abundance mindset',
where opportunities are plentiful instead of single chances that we can't let
get away. Now I see interviews as two way streets where companies need you as
much as you need them. Lastly, when I go to an interview I don't see it as 'I
practiced x days for this interview', but as 'I have 10 years professional
experience, if that didn't prepared me for this job, no amount of cramming in
a few days will'. That doesn't even touch the

So my advice is to just relax, do your best and don't get discourage if you
are rejected. If your goal is to break in one of the big 4, continue accruing
experience and improving yourself and try next time, it will just get better.

P.S.: In my comment I don't mention luck, but personally I think that it also
plays a huge role in getting a job. One time recruiters from a company got in
touch with me; two years later they wouldn't even read my CV for the same
position. Get to the right position at the right time, and the right set of
people can be the difference between an offer or none. It's hard to come to
terms with the idea than something other than yourself can dictate your
future, but the sooner you do it, it will save you a lot of grief.

~~~
creek567
Right yeah, I see this preparation as longer term and not something I can do
in 2 weeks. Since I already have a job I enjoy, I'm not in a time or cash
crunch so I can take my time.

I hope that it takes me 3~4 months to be prepared, but I guess I never plan on
stopping practicing (doing LeetCode questions for example). I realize that
interviewing is a skill that needs to be kept sharp throughout ones career, so
even if I get rejected on the first try, I'll keep practicing and keep
applying!

Thanks for the advice!

~~~
pmulv
If you don't mind me asking, if you already have a job you enjoy, what's
driving you to the FAANG companies? I know there are a ton of valid answers to
this question but I'm curious anyway!

~~~
creek567
Don't mind it at all. I work remotely so I really enjoy my current job, but
this is why I'm thinking about going for FAANG:

1) My current company is a startup so things can go sour rather quickly. I
want to keep my interviewing skills sharp in case I need to switch jobs.

2) FAANG is great for a career advancement. I'll learn a ton working for the
best tech companies in the world and working with extremely smart people.
Interesting technical problems and also upwards mobility later on. Also
applying to any other job after that will be much easier as smaller companies
don't screen nearly as hard as the big ones for their software positions.

3) Great for networking. You meet tons of other smart people who know tons of
other smart people. In the Bay Area when you say you've worked for Google
doors open much easier and you gain other people's respect much faster.

4) Lastly, FAANG companies will pay more than what I'm currently making.

------
skylark
I currently work at Google and have received offers from Facebook and Amazon.
I don't have a CS degree.

Interview Cake should be your first stop - the questions are the closest to
what you'll actually see in a tech giant interview, so the effort to reward
ratio is good.

LeetCode is your bread and butter. With any remaining time, grind these
problems.

Cracking the Coding Interview is both too easy and too difficult, very few
questions hit the sweet spot. Read the section on behavioral questions though.
Elements of Programming Interviews is too challenging, I'd skip it.

Optimize for number of problems solved, which means coding in the site's
online text editor. I wouldn't code in your own personal text editor because
you do want to avoid autocomplete. If you feel like you need practice actually
writing on a whiteboard, you can do that a few days before the onsite.

~~~
cotterphinney
Hey there, Cotter from Interview Cake here. I'd love to get your permission to
use a snippet of this as a testimonial on the site. Shoot me an email at
cotter@interviewcake.com when you get a chance :)

------
acconrad
Prepping for these interviews is much like studying for the SATs - it's not
about measuring how smart / talented you are, but how good you are at taking
these tests. I say this as a primer only because rejection sucks, but knowing
that it's not a dig on you personally, that it's more of a numbers game, can
help you stay positive through this whole process.

I've heard a lot of success with this method:

1\. Start with [https://www.firecode.io/](https://www.firecode.io/) \- it's a
gentler intro than most of these resources.

2\. Once you can manage FireCode, move onto LeetCode as others have suggested.
More specifically, the ones that have been flagged as interview problems. If
you can get through the Hard ones in 30-45 min, you're good.

3\. Once you feel confident in steps 1 and 2, use
[https://interviewing.io](https://interviewing.io) to take a bunch of mock
interviews. The interviewers are generally from these companies, so if you do
well, you'll automatically skip the phone interview and land right in the main
interview space. And if you don't, no worries, you're getting practice in an
interview setting, and not just in answering problems.

3b. As a supplement to #3, Google and Facebook actually hold info sessions on
their interview process. My friends used those and landed at both places,
respectively. They both said the info sessions were pivotal for them.

The average time my friends spent on this process was roughly 90 hours total.
So if you worked on this full time for 2+ weeks, you should be prepared, or
2-3 months if you did a little bit every night while working your current job.

Best of luck!

~~~
creek567
Thanks this is great advice! > The average time my friends spent on this
process was roughly 90 hours total

That seems much shorter than I had expected, considering there's so many
questions on Leetcode. Do you recommend focussing only on the marked interview
questions on LeetCode or start at the beginning and work my way up to the
hardest?

~~~
acconrad
I personally go from easy to hard, but for less time focus on the marked ones

------
khuss
Focusing on a limited set of resources in a way that exercises your problem-
solving skills would be the key. Here is one plan:

1) Select a category such as "stacks and queues" from the Cracking coding
interview (CCI) book and read all the questions. This will give you a sense of
the type of questions being asked.

2) Sign up for the algorithms 1 and 2 courses
([https://www.coursera.org/learn/algorithms-
part1](https://www.coursera.org/learn/algorithms-part1),
[https://www.coursera.org/learn/algorithms-
part2](https://www.coursera.org/learn/algorithms-part2)) in the audit
mode(free). Pick the correct modules such as "stacks" and "queues" and watch
all the videos.

3) Come back to the questions in the book CCI and try to solve the problems
yourself. If you get stuck, look at the solutions for hints but still try to
do them yourself.

4) Do the same for all major topics such as strings, linked lists, recursion
etc.

Unfortunately, you are not going to remember all of you've learned. You need
spaced-repetition so repeat the above method 2-3 times for each topic.

Once you have the foundation, you will be able to tackle the harder questions
that you may find somewhere else or in the interview.

------
rconti
Investigate each company individually to determine whether or not you even
want to spend the time. Each one is very different with a different culture
and different pros and cons. Wanting to work for one of the big 4 doesn't mean
any of them.

------
jcadam
Beats me, I've been rejected by all 4, along with Microsoft and Netflix :) My
only advice would be to take a refresher course on Data structures and
algorithms (Coursera, et. al.,) and just practice doing programming problems.
I've used Crack the Coding interview and some online coding sites (topcoder,
etc.) which has definitely helped improve my interview performance. I'm a lot
more confident nowadays, at least :)

------
mjlee
10 years old but probably still worth a read:

[https://steve-yegge.blogspot.co.uk/2008/03/get-that-job-
at-g...](https://steve-yegge.blogspot.co.uk/2008/03/get-that-job-at-
google.html?m=1)

------
stuffaandthings
Do a lot of practice problems. There are plenty in the book "Cracking the
Coding Interview" Use the tools you'll be expected to use for an interview
with one of the top 4 companies (i.e. internet text pad, pen and paper,
whiteboard) Do several problems every day and you'll be ready in a few months.
Make it your 9-5 and you can be ready in a few weeks.

It's all about practice! Good luck!

Also, if you can get in touch with a recruiter at those companies, they'll
give you tons of helpful tips (mostly just how to practice and what to
practice)

~~~
creek567
Thanks! I was contacted by a recruiter couple years ago and they sent me the
practice list, but it seemed super generic and intimidating so I never replied
back.

I've heard really good things about CTCI so I'll pick that up. Having a Github
checklist and a study plan would be super useful (I'm sure there's other
people asking this question). I wonder if something like this exists already?

~~~
khalilch2
[https://github.com/jwasham/coding-interview-
university](https://github.com/jwasham/coding-interview-university) is what
you're looking for

~~~
creek567
YES!

~~~
ultrasounder
And the Parent ended up getting a job at Amazon which was a nice ending

------
songzme
First, I don't know what attracts you to the BIG 4 tech companies and it would
be nice for you to share more context and perhaps share a bigger overall
picture. For example, are you excited about their backend and scalability or
the amount of data they have? Do you think they can offer more money? I can
share some my journey (graduated in 2012 with CS undergrad) and hopefully this
can help you (or other HN readers) make better/more informed decisions. My
primary motivation for picking and switching jobs is money.

To get my first job as a software dev, I prepared by doing algorithms (using
cracking the coding interview book). You really don't need any other resource,
I did every the problem in the book at least 5 times. The most important
lesson I learned here is to constantly redo problems you struggle with until
you know it like the back of your hands.

In my first job I realized that I like building tools that people use so I
focused on learning front end development.

The next job was a front end developer and to prepare I just refreshed my
algorithms using the same book and basic JavaScript knowledge. I negotiated
hard because I had nothing to lose (the worst case scenario was sticking to my
current job) and ended up with 200k total comp.

I recently interviewed for front-end roles and I've noticed a shift from
algorithms to practical tasks (building x app). Out of the 9 onsites I did, I
don't remember doing any complex algorithms, but instead there were alot of
hands-on coding to make sure I can code up challenges on the spot. For front
end engineers, I think algorithms is no longer a point of focus. I don't think
there are any practice resources that focuses on front end development, but my
friend is building [https://jsstation.com](https://jsstation.com) to address
this.

Dropbox, Amazon, Facebook offered separate interview tracks for front-end
development and generic software engineering.

I ended up receiving a few offers and I was quite surprised by the numbers.
The top 3 are all between 250k - 310k total compensation packages, the lowest
base among them was 180k and the highest base was 210k. I'm quite surprised at
the big difference between what Glassdoor shows and what my friends and I are
making, perhaps someone here could shed some light.

I think you graduated 4 years after me, I hope you find some value here. Good
Luck!

~~~
nexus2045
Did all of these offers come from one of Seattle, SF, or NYC?

~~~
songzme
Sf

------
tbrooks
[https://www.interviewcake.com](https://www.interviewcake.com)

I met Parker at MicroConf a couple years ago and was really impressed with
Interview Cake.

I can't speak firsthand but it might be exactly what you're looking for...

------
jordansmithnz
I received an offer from one of these companies not too long ago - here's my
two cents on the subject:

• I was reached out to, rather than applying for a job. In the past I'd tried
applying for jobs at some of the companies but didn't hear back - so I focused
on going as far as I can without a job somewhere like this. Start a blog,
create some great side projects that receive some attention, etc - eventually
companies might start approaching you (and even if not, your resume will look
more appealing, and you've grown/learnt a lot which is helpful for any job
you're in).

• There's a lot of resources out there on interview type programming
questions. Yeah, they're helpful, and you should do them - even if just to
learn more and become a better developer. There's much more to the interviews
than a binary yes/no whether you solved the question or not though: being able
to share your thought process, quick thinking, showing creativity and good
intuition etc are all just as important.

• Experience, great social skills, and in depth knowledge is worth more than a
few days cramming for a coding interview. It shows during the interview
process (especially architecture or cultural interviews). I think interviewers
are looking for those things as much as they're looking for someone that's
smart and can solve a few tough questions on the spot.

Summing that up - focus on being a better developer, learning more, and
becoming an expert at what you do. Don't make your end goal a job at one of
those companies. If you don't get a job at one straight a way, it's no big
deal - who knows, in a few years you might, and if you didn't, you learnt a
lot which will help you anywhere you are.

------
atilimcetin
Also, I highly recommend the book "Elements of Programming Interviews".

~~~
Hernanpm
Yeah, this book is actually more helpful than CTCI

------
expertentipp
We need university curriculum for these. BSc/MSc in Technical Interviewing and
all doors are open!

~~~
creek567
To be honest this should be a required course for most CS programs!

Way more useful than other theoretical classes that were required but only
probably needed in grad school.

Software engineers (myself included) have this deep resentment for technical
interviews, but they are part of a software developer life and the more
comfortable we get doing them, the better off we are in long term!

~~~
luvbb
I disagree.

From my point of view University should be entirely about learning academic
material for the sake of self improvement. To become a more enlightened and
educated individual.

Having a "Technical Interview" course isn't about furthering student's
knowledge, but about furthering student's future finical gains. I believe
strongly that any improvement of a student's position in the labor market
should be a secondary effect, and not a primary concern, of a University.

I think that if Universities start competing on student's success in the labor
market post graduation then the centuries long tradition of improving
student's knowledge will suffer.

~~~
jhugg
You can have it both ways. Maybe you don’t get college credit for learning how
to interview, but a college could offer a free seminar on interviewing well in
the evening or something.

Colleges very much care how well their graduates do in the workforce, as it’s
a key way they’re measured. It’s a tough balance to mix mind-expanding
academia and direct preparedness though.

------
peterwwillis
The same way you prepare for any job for a single specific company. Read
everything the company has published so you can convince them you buy into
whatever their vision is. Don't propose any ideas or theories or preferences
for anything that deviates from it. Learn their every product and how they all
work and discuss the details in the interview so they know you "get it" and
are already familiar with everything.

Aside from this, getting accepted is merely about convincing your interviewers
that you have what they're looking for. Build a rapport, be confident, don't
be nervous, be funny if possible, but don't come off as arrogant or annoying.
Most companies prefer experience over technical mastery, so don't focus on
explaining technical details - though obviously you should fully explain it
when they do get technical. Answers you give should touch on every topic that
the subject would typically involve, with as little detail as possible, and if
they ask more specific questions, dive into it. You have to show a broad
understanding as well as minute attention to detail. While not being too
serious. Don't voice any negative opinions, nor any preferences.

Obviously ambition is important to you, so definitely get some books on
management and business so you can rise up in the ranks quicker. Being able to
speak to the business side will endear you to managers and executives, and if
you can impress them in an interview you're basically a shoe-in, because
politics. Yay for big companies.

Big companies generally think all they need to do is follow trends in order to
lower costs and increase productivity, so study up on every modern trend that
tech companies latch on to. Big data/machine learning/automation have been in
vogue for a while, as is obviously agile methods, devops processes, product
lifecycles, etc.

At the end of all this you may realize, hey, this sounds like I have to
support ideas or practices that I don't agree with. And that's because you're
trying to work for a company, rather than trying to work for yourself.
Eventually you may realize you'll be a lot happier _not_ trying to get hired
by a specific company, and simply try to be hired by the people who value who
you are, rather than who they want you to be.

~~~
walshemj
Id also read the last annual report and any interims and also read anything
about the companies and their competitors in the broadsheet newspaper you
prefer - you do of course read a broadsheet newspaper?

------
zapperdapper
Try "Cracking the Coding Interview" by Gayle Laakmann McDowell. There's some
pretty good coverage of what you might find in an interview. I think what
struck me is the author has worked for at least three of the companies you
listed, but never seemed to stay at any of them for very long - it makes you
wonder if working for the big four is really all it's cracked up to be (pardon
the pun)!

Google has also created some interview videos you can pick up on YouTube. They
are (obviously) staged, but are quite interesting and informative.

Good luck!

------
j_s
There is a Discord started by a small group on Twitch who have streamed mock
interviews (mostly last summer):
[https://discord.gg/ndFR4RF](https://discord.gg/ndFR4RF)

Example:
[https://www.youtube.com/watch?v=tdmXDjXz26c](https://www.youtube.com/watch?v=tdmXDjXz26c)

------
EnderMB
From my perspective, I'd try walking before you run. You need to get the
interview first.

Although you hear of Google hiring thousands of developers a year, and those
that do get hired having a 5% chance of success or whatever, that doesn't mean
that Google are guaranteed to offer you an interview. I've applied a handful
of times, and despite having a Computer Science degree, startup, and
small/large agency experience I've never managed to get past the application
stage at Google or Microsoft. Microsoft and Amazon contacted me in the past,
but neither actually resulted in an interview. Google rejected me within days
of applying on both occasions I applied.

With that in mind I would recommend that you follow a loose curriculum, and
just focus on becoming the best developer you can be. I'm currently working
through John Washam's repo on getting a job at one of the big four, and it was
good enough to get him through the door at Amazon.

[https://github.com/jwasham/coding-interview-
university](https://github.com/jwasham/coding-interview-university)

In general I think it's a good idea to rethink what your aims as a developer
are every now and then, regardless of what company you want to work for.
Recently, I was a senior .NET developer at a large agency working for big-name
clients, but I often felt like I wasn't a "proper developer" because I worked
on the .NET stack, and because for the past few years I've felt complacent in
a senior-level role. To combat this, I started learning some new languages on
the side, and eventually moved to a new job where I've switched from being the
go-to guy for .NET to the goes-to guy for working on a Linux stack, and I hope
that over the next few years I'll pick up enough knowledge that I can throw an
application in again and not get immediately rejected.

~~~
kzisme
What sort of languages/stuff did you work out to move out of feeling that way
with .NET? I've been working with .NET for 2ish years and have been feeling
the same.

~~~
EnderMB
I've been lucky enough to join a company that is largely agnostic. The devs
here seem to be mostly Ruby and JavaScript, but a bit of Python too. I've not
done much dev yet outside of a few bug fixes, but simply being out of my
element has helped considerably.

My only gripe with C# and .NET is that it's tied to Windows, a fact that
immediately locks you down to a single tech stack. Sure, you could write any
mainstream language on Windows, but no one does because the language and
frameworks aren't optimised for Windows. You're writing code as good as what's
written by others on the Linux stack, and your development environment is
largely as good as what everyone else is using, but you feel isolated.

For me, it's this perception that leads people to think less of .NET at a
platform. You're the guy that drove a Ford to a Volkswagen convention, and
even though your car is as good (and in some ways better) than what everyone
else has, you'll still feel like an imposter.

In terms of getting over that feeling, I don't think any particular language
will help you get over it. My knowledge of JavaScript is alright, so I'm
picking up Node/Express at the moment. For the past few months I've been
working through Django too, so my ultimate aim is to be in a position where I
no longer feel limited by a different language or platform.

~~~
kzisme
Thanks so much for the reply!

I guess my other question would be how did you end up at your latest job?

I always find that - for non .NET jobs they are mostly looking for Sr. level
folks for jobs. Any advice on transitioning?

~~~
EnderMB
I think it was mainly luck, because I've noticed this on both sides. Senior
roles are extremely hard to fill because there aren't enough experienced
developers looking for full-time roles. In the UK you often reach a certain
earning threshold and your options are:

1\. Push the salary limits where you can, but accept a full-time role with
limited progression, limited pay, but less stress.

2\. Be a lead developer, and ultimately move away from code and into
management.

3\. Go contracting, because you'll earn 2x what you earn as a salaried
employee.

Having been on the other side and having to look for a senior-level candidate
to join a team, I'd say that you could probably still send a speculative
application, and essentially explain that while you're not the finished
article they're looking for, you're interested in the company and you're
actively looking to learn. For my interviews, I essentially went in with full
honesty. I said that my main experience is C#, but that I'm looking to move
away from web development on the Windows stack and am looking to give
something new a try to build my skills as a developer. Some companies will
appreciate your honesty, and some won't, but I'd argue that the companies that
are merely looking to fill a defined role won't offer you the progression
you're after anyway.

It's still early days where I am at the moment, and there's every chance that
things might not work out, but so far I've been enjoying being the newbie
again. For me, it's been less about moving to a new stack, and more about
getting over that imposter syndrome of being a one-stack man. If it all goes
to shit, and I get made redundant/sacked, at the very least I can go back to
my old stack, and that alone takes a good bit of stress off of me.

------
shortoncash
I've passed a good few of these interviews. The other advice is good. I just
wanted to add that the thing that always gets me is that by the 4th or 5th
hour in the on site interview, I start getting tired and start slipping up.
You don't really often get a great break in the process. The jet lag from
flying to the onsite is also a killer.

------
andymoe
Facebook recruiter (and people I know who worked there) literally tell you to
buy and study “cracking the coding interview.” I did buy the book but I’ve
never moved forward with the interview because I really didn’t like to commute
south when did it for a year and I like pairing too much.

Cracking the Coding Interview: 189 Programming Questions and Solutions

[https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_OiRw...](https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_OiRwAb4VD2CN0)

~~~
tom_mellior
When I was contacted by a Google recruiter a while ago, he also sent me a PDF
copy of Cracking the Coding Interview and said I should use it to prepare.

The actual questions I got at the interview were nothing like what was in the
book. They weren't questions like "how does algorithm X work?" but "how would
you model/implement as system that does X?".

So, shrug. My one data point says that this book is a mostly useless
distraction.

------
dudus
Besides all the tips you already got I also recommend pramp, I tried it a
couple months ago and had a good experience.

[https://www.pramp.com/](https://www.pramp.com/)

Besides the coding part you should also think about your non-coding
interviews. There will be interviews where you'll be asked about
troubleshooting and technology in general. I don't have a good source for that
but you should think about that side that is just as important as your coding
interviews.

------
kruhft
The Facebook interview process was a bit of a joke. Writing code without being
able to evaluate and test it is for people just out of school, but that's what
they gave for an editor (which didn't have emacs keybindings either IIRC, just
some generic code sharing site). Sometimes people with experience do things
differently and have learned to USE the computer and not do everything in
their heads. Age and skillism to the extreme. I suspect they just want coder
drones.

~~~
fred_is_fred
The horror of no emacs key bindings.

~~~
kruhft
When it's built in your muscle memeory and you're a bit 'stressed during an
interview', yes it's difficult to write code without your normal set of
movement shortcuts and having to adapts to an alternate interface language.

Yes, it's annoying, especially for old timers like me that really know their
tools.

------
Mc_Big_G
[https://github.com/jwasham/coding-interview-
university](https://github.com/jwasham/coding-interview-university)

~~~
ultrasounder
And the Parent ended up getting a job at Amazon which was a nice ending

------
astdb
[https://us.teamblind.com/article/sharing-my-offer-numbers-
fr...](https://us.teamblind.com/article/sharing-my-offer-numbers-from-big-
companies-for-your-reference-yNgqUPQR) provides some insights into how to go
about interviewing with top tech companies, preparation, offer info etc.

------
chris-laffra
I wrote this a while back: [https://www.linkedin.com/pulse/how-prepare-
technical-intervi...](https://www.linkedin.com/pulse/how-prepare-technical-
interview-google-amazon-linkedin-chris-laffra/)

------
masternda
Have a look at this [https://github.com/jwasham/coding-interview-
university#algor...](https://github.com/jwasham/coding-interview-
university#algorithmic-complexity--big-o--asymptotic-analysis)

------
ballajis
I failed sys design interview at FB and it doesn't look these GitHub repos
about sys design helps that much. Could you tell me what book should I read to
get better at it?

------
sand500
Leetcode is the site I used.to practice coding for an interview.

------
praneshp
For my last round of interviews, I chucked Crack the coding interview and used
www.leetcode.com and
[http://highscalability.com/](http://highscalability.com/). Some of the better
companies also have a culture-fit round, whatever that means. That's very
important, so prepare for it. Google around for what sort of questions they
ask.

Good luck!

~~~
creek567
I have never heard of leetcode. Mind expanding more on the process? Did you
just do practice problems? Is there any reading around each question? Does it
offer the optimal solution etc?

~~~
praneshp
> Does it offer the optimal solution etc

This is one of the drawbacks; No, it does not. The judge has a timer so you
have to write code that is reasonable in runtime and space, but nothing
telling you if the answer is the most optimal one possible.

IMO, the ideal way to use it is to get a subscription, and then use the best
feature: sort by company. At first glance, you'll notice that facebook asks
very different problems than google. Once you select a problem, try solving
it, and then make sure you click through to the forums and read the highly
voted discussions. In many cases, I didn't find a more optimal solution, but
picked up a lot of python tricks that made the solution elegant, etc.

