HackerNews Readings
40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Martin Kleppmann

4.8 on Amazon

241 HN comments

Guns, Germs, and Steel: The Fates of Human Societies

Jared Diamond Ph.D.

4.5 on Amazon

239 HN comments

Deep Work: Rules for Focused Success in a Distracted World

Cal Newport

4.6 on Amazon

239 HN comments

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin

4.7 on Amazon

232 HN comments

Getting Things Done: The Art of Stress-Free Productivity

David Allen and Simon & Schuster Audio

4.5 on Amazon

231 HN comments

The Three-Body Problem

Cixin Liu, Luke Daniels, et al.

4.3 on Amazon

225 HN comments


William Gibson, Robertson Dean, et al.

4.4 on Amazon

218 HN comments

Harry Potter: Hogwarts Hardcover Journal and Elder Wand Pen Set

Insight Editions

4.8 on Amazon

212 HN comments

Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma , Richard Helm , et al.

4.7 on Amazon

208 HN comments

How to Read a Book: The Classic Guide to Intelligent Reading

Mortimer J. Adler and Charles Van Doren

4.5 on Amazon

193 HN comments

Sapiens: A Brief History of Humankind

Yuval Noah Harari, Derek Perkins, et al.

4.6 on Amazon

191 HN comments

The Intelligent Investor: The Definitive Book on Value Investing. A Book of Practical Counsel (Revised Edition)

Benjamin Graham , Jason Zweig , et al.

4.7 on Amazon

188 HN comments

Code: The Hidden Language of Computer Hardware and Software

Charles Petzold

4.6 on Amazon

186 HN comments

Seveneves: A Novel

Neal Stephenson, Mary Robinette Kowal, et al.

4.1 on Amazon

184 HN comments

Cracking the Coding Interview: 189 Programming Questions and Solutions

Gayle Laakmann McDowell

4.7 on Amazon

180 HN comments

Prev Page 2/180 Next
Sorted by relevance

yjftsjthsd-honApr 13, 2020

> Casually hides Cracking the Coding Interview book

Ironically, I'm pretty sure that owning that book is part of the image :)

wsh91onDec 3, 2016

I don't think anything I say will convince you that I merit being accorded with dignity, so I'll leave it at this: you're welcome to apply and come try to convince us otherwise! You know where to find us. I recommend Cracking the Coding Interview and lots of whiteboard practice. :)

gigatexalonJan 30, 2017

Keep up the good fight. Hell most would probably have given up by now. Do you have a portfolio or fun projects that you spend time on? Almost everywhere I interview asks for my github account. Also the book "cracking the coding interview" is awesome and only 30 bucks at Amazon.

civilianonMar 6, 2017

Studying an algorithms book (like Cracking the Coding Interview or Programming Interviews Exposed) is also an effective way to "hack" the interview. :-P

wikwocketonJune 23, 2014

This is excellent advice. "Elements of Programming Interviews" and "Cracking the Coding Interview" are both excellent choices for this, I like them both.

Also, check out this classic post on the topic:

philip1209onDec 6, 2013

I'd totally grab her book if it wasn't almost $40. Cracking the Coding Interview was amazingly helpful during my job search.

runawaybottleonApr 13, 2020

Well if you’re the real deal, you’re the real deal :p I guess only celebrities/insta influencers have to keep up the image.

Casually hides Cracking the Coding Interview book

danroblewisonSep 11, 2020

Buy and read the books "Cracking the Coding Interview" and "Domain Driven Design". You'll feel better.

sidllsonDec 4, 2017

Cracking the Coding Interview. It's a book by a software coder about how to pass code interviews at places like Facebook and Google. I suspect the author makes more money on the book than she ever did as a coder.

cshah4onJan 8, 2019

Leetcode, InterviewCake and Cracking the coding interview book should be enough to give you good understanding of topics involved and how to solve problems.

vmceptiononFeb 18, 2021

they are optimizing against false positives, and find false negatives a tolerable loss.

thats the rationale to make it not crazy, whether this is the best way to accomplish that is not resolved.

Cracking the Coding Interview” covers this pretty early in the book

aje403onMar 29, 2018

You're forgetting they all read all the way through cracking the code interview, the most difficult math book in history.

martinnionJan 2, 2015

Absolutely a lot of these questions were general knowledge to any techsavvy guy. I strongly recommend this book called [Cracking the coding interview] by Gayle Laakmann. It's very details and in-depth, helped me prepare for all my interviews.

wingerlangonJan 12, 2018

I've read "cracking the coding interview" over Christmas. One of the suggestions it had was to write the code on paper. Then write that exact code into your computer. Only when you've fully written it in, fix the errors.

abaloneonSep 7, 2019

I'm not sure what you mean by standardization. You're totally at the whim of the exam-maker either way. If anything I find algorithm screens tend to draw from a semi-standard set of fundamentals as outlined in books like Cracking the Coding Interview and tested on Leetcode among many other examples.

robertbalentonDec 15, 2020

As mentioned before, work on your Leetcode skills. Be sure you can talk while solving them on whiteboard.

From books I like "Elements of Programming Interviews" and also "Cracking the coding interview", even though it's little lightweight.

Then make your LinkedIn profile nice and shiny and contact the recruiters.

howon92onNov 7, 2013

I try to practice with Cracking the Coding Interview book when I have time but I am not sure if that is sufficient.

ImprovotteronAug 14, 2018

You could try reading/skimming over the book "Cracking the code interview" to get some insight in how the company handles interviews. The big five are in there so you'd get more information that way. Besides that, a week should be okay if you study hard and got good resources.

Double_a_92onJune 19, 2018

But you probably knew that is was something to consider. And weren't told that you are basically a full fledged developer after a 3 month web dev course and after reading "cracking the coding interview". The Dunning–Kruger effect is heavily at work there.

zevyouraonMar 16, 2014

I just started at Google two weeks ago (as a SWE, not SRE, though), and I found Cracking the Coding Interview to be the most helpful book for preparing for interviews in general. I also used Programming Interviews Exposed, which is comparable, but CtCI has a little more content.

philip1209onMay 3, 2013

Great, thanks. I'll read it this weekend.

The one book I found amazing for learning was Cracking the Coding Interview. The brief summaries of data structures followed by lots of examples and solutions helped me to develop an intuitive sense for run-times that made more academic texts approachable.

doganoonJan 9, 2019

I recommend "Cracking The Coding Interview" (https://amzn.to/2RjYkoG) for the beginning. It is a good starting point.

If your are familiar with PHP, you can checkout my library based on CTCI: https://github.com/doganoo/PHPAlgorithms

maverick_icemanonOct 27, 2016

Given your background, you can easily get a job as a software dev or data scientist in a big name Silicon Valley company. Just prepare for the interview for 2-3 months with books like Crack the Coding Interview.

partycoderonApr 24, 2018

Competitive programming is interesting, but it is very different from what you get to do at work.

"Cracking the coding interview" and similar books are really about competitive programming, which is what you get to do at contests like ICPC and such.

oarabbus_onFeb 20, 2019

>but Cracking the Coding Interview is an embarrassingly bad book

I like how you made this bold claim with zero justification as to why.

gaiusonApr 30, 2018

Memorising derivations of algorithms and solutions to puzzles from a book like Cracking The Coding Interview surely is just rote learning. There should be a high correlation between the content of the interview and the actual job, or what is the interview really for?

newman8ronAug 15, 2017

you might want to look at a book like "cracking the coding interview" or similar to identify the gaps in your skillset. If you're comfortable with everything in a book like that you shouldn't be having trouble finding work.

parsthisonApr 4, 2018

Same along with Cracking the Coding Interview and Clean Code. I use to have Blizstein's Introduction to Probability but I can't seem to find it now.

edit: typo

goatinaboatonApr 10, 2021

If you have not done so already buy a copy of Cracking The Coding Interview and take a few weeks off applying anywhere to work your way through it. Most modern interviews are tests of how recently you have read this one book. Good luck!

rhinesonApr 13, 2021

Never heard it called the green book, usually just called by the acronym CTCI (Cracking The Coding Interview). Just commenting in case anyone else was confused.

Congrats on getting a good payoff on your work, and thanks for sharing the info about your process.

ccogginsonMay 8, 2013

I'd recommend "Cracking the Coding Interview" by Gayle Laakmann McDowell. It's cheap at around 25 bucks on Amazon and has a pretty good cross section of questions. It isn't comprehensive by any means but I feel it's a good place to start. I think there is also a companion website that has more questions.

nsxwolfonFeb 21, 2017

"Cracking the Coding Interview" doesn't seem like a book you skim. It seems like a book you buy a gigantic whiteboard for and stay up until 3AM every night for 6 months with it.

But maybe I'm just not very smart?

gaylemcdonMay 24, 2017

I'll try to stay active on this thread if anyone has any more specific questions. (Context: I'm the author of Cracking the Coding Interview)

rishiloyolaonDec 16, 2018

"Cracking the Coding Interview" The name itself suggesting a book to prepare for coding interviews. I clearly mentioned System Interview.

TheDrizzle43onOct 6, 2016

Spend your time building shit instead of reading Cracking the Coding Interview and wasting time on Hacker Rank / Leetcode. There's the university.

brianmurphyonFeb 17, 2017

There are some good books on the subject. Start with "The Google Resume" by Gayle McDowell. Then move on to industry specific books like Cracking the Coding Interview.

deadmik3onJuly 22, 2016

"Cracking the Coding Interview" (probably wouldn't even have a career without this book)

"The Little Schemer"

"Stories of Cats and the Lives They Touch" by Peggy Schaefer

pconneronJuly 8, 2016

Get the book, "Cracking The Coding Interview." It was the most valuable resource for me in preparing for technical interviews near the end of my time in undergrad.

k120onFeb 9, 2018

For me it was very helpful to read "CRACKING the CODING INTERVIEW" book and solving tasks from https://www.hackerrank.com/domains/tutorials/cracking-the-co....

jervisfmonFeb 4, 2013

You may find this list of programming books helpful : http://stackoverflow.com/questions/194812/list-of-freely-ava...

Pick a book about something you want to know more about and study it for a month.

If you are preparing for interviews good books to read are 'Programming Interviews Exposed' and 'Cracking the Coding Interview'

dudulonDec 16, 2016

It reads like a PR piece. If it had stopped at "Now I want to be called a software engineer and I'll study for that", it would have been a nice story about setting goals, and working to get there or whatever. But the whole "Google is so freakishly awesome dude! I need to work there!! it's the most better company in the world!" is kind of a turn off.

I can't believe that Google Careers site actually recommend that candidates should study "Cracking the Coding Interview, 6th Edition". This is completely nuts to me.

brown9-2onNov 30, 2010

The author of "Crack the Coding Interview" and careercup.com claims[1] this list is very, very fake (for "software engineer" questions). She claims to have served on Google's hiring committees for over 3 years, so I would take her word over this blog's author.

In my own experience Google does not ask these types of questions.

If you do your own research on glassdoor.com and other sites where candidates self-report their interviewing experience, you will find almost no reports of candidates for SE positions being asked these types of "brainteasers".

1: http://www.technologywoman.com/2010/05/17/debunking-the-goog...

fergyfreshonApr 29, 2016

HackerRank is great. I agree with @bko. I would also like to point out a few books that I read in college that helped me out too. Cracking the Coding Interview is a great book that explains the most common algorithms job interviews will ask. Reading is my favorite way of learning.


wtingonOct 26, 2012

Her "Crack the Coding Interview" book basically is an expansion of that blog post, goes into more details, includes a lot of problem sets of different types and various strategies for attacking each one.

I like using it to study for interviews. It's not sufficient by itself, but will get you 75% of the way there.

*Disclaimer: I'm 3 degrees of separation away from the author. :p

therealdrag0onAug 21, 2019

"complexity analysis" ... "stuff you would learn in a computer science degree".

Does she want theory? Does she want Software Engineering skills? Does she want to be able to get a job?

Cracking the Code Interview might be a fine jumping off point. It covers a lot of topics at a very readable level. If she doesn't understand it from the books angle, then she can do research on her own until she gets there. It covers stuff like "complexity analysis" in-depth enough for most people.

abledononJuly 15, 2018

After reading Cracking the Coding Interview... I was more than satisfied about getting a job as a "Software Developer" instead of "Software Engineer"... then going home after job, not thinking about job, big O in the shower etc... whats the point of life, if we don't have the time to investigate "this" thing we call living.

jcronApr 28, 2011

You might want to look up Gayle Laakmann, who wrote "Cracking the Coding Interview" amongst others other books and runs a site/startup called CareerCup.


sanderjdonApr 13, 2021

The Algorithm Design Manual (just the first few chapters of refresher on data structures and stuff) and Cracking the Coding Interview.

benignslimeonJan 5, 2020

If you've ever checked out "Cracking the Coding Interview", you'll see there are many "algorithmic tricks" people can use to quickly improve performance while performing operations. An example from this problem, the author uses "a two pointer approach" to inch the head and tail pointers closer to one another, to cover all pertinent combinations and reduce run time. There are all kinds of little idioms, and many people that would take the time to comment on LeetCode forums are likely well versed in them.

tracker1onJuly 23, 2019

As mentioned in another comment for this post, Cracking the Code Interview is probably a good place to start in terms of reviewing some key concepts, assuming you don't have a CS degree and are largely self taught.

Of course given the libraries and systems already available, you don't practically need a lot of this knowledge, but it does help. When certain portions of an application just don't perform well, or when you hit really weird side effects of race conditions on static properties etc. I think it's also important to know the language and tools that you are working with as well as possible. It's not always possible to know everything, but you should probably read and complete at least one book on the language you are using. You can hack away in any given language for years. But until you've actually read cover to cover on a comprehensive book, you won't necessarily understand some concepts, or better still you will learn how the language does something for you, that you've been doing the hard way.

glaakonOct 26, 2012

I was in Seattle / Kirkland, and it was invite only there. I showed up every week (as did the vast majority of the Kirkland HC).

But, yes, I could have been more extensive in my credentials. Unfortunately, "How to Crack the Toughest Coding Interviews by ex-Google engineer, ex-Google hiring committee member who showed up every week, ex-Apple dev, ex-Microsoft dev, author of Cracking the Coding Interview, and author of The Google Resume" was a bit too long :).

drblastonFeb 18, 2019

Google recruiters call me a lot. I think I'd do a good if not stellar job working there. I've passed multiple FAANG interviews and been very successful as a senior developer.

In my email I have an "interview prep packet" from them that essentially tells me to brush up on algorithms and read Cracking the Coding Interview to prepare for their interview process.

I'm fairly happy in my job. If they offered more money or a really interesting project I'd consider working for them. But I'm pretty lazy about redo-ing college algorithms class during my free time at home to go work there, so I probably won't.

There's an opportunity cost with interviews like this where an M.S. and long career of getting shit done counts for very little and memorization of undergrad level topics that you can look up in two minutes in Knuth if you have a problem that requires it can make or break an interview.

I've made a career fixing a ton of horribly shitty, inefficient code that's been produced exclusively by people who pass these interviews.

LewishamonSep 27, 2016

Where did you get the idea it drives interviewers crazy?

a) I shouldn't ask questions that are in that book, any question found in the wild is banned.

b) I want my candidates to study and show me the best of themselves, and that they want the job and are not wasting my time by throwing their resume on the pile as an afterthought.

c) Cracking the Code Interview is really good at helping you through the algorithmic questions popular on whiteboards. I find the signal:noise ratio on those questions pretty poor, so I ask more straightforward questions that more closely represent things a software engineer encounters in their everyday life. CtCI is good for getting you up to snuff at the stuff you don't do all the time (if ever) just in case you get That Interviewer.

Admittedly, I am but one interviewer and there are many others who do many things many different ways, but I've never heard anyone denounce candidates studying.

GrumpyYoungManonMar 6, 2017

As others have suggested, get a copy of "Cracking the Coding Interview" and review the questions therein. If you can answer those questions easily, you'll have an easy time at the average interview.

If you want to prepare to interview at one of the top companies, then afterwards procure a copy of my secret weapon: Aziz, Lee, & Prakash's "Elements of Programming Interviews". The questions there are an order of magnitude more difficult. If you are able to apply the CS concepts you are learning to questions of that difficulty, all doors will be open to you.

delasheronJune 21, 2013

Thanks for writing this, Cracking the Coding Interview has been one of my go-to books these last few weeks. A must read for any new grad, and the coding problems / answers are very insightful.

geebeeonJuly 29, 2015

I thought Gayle Laakman McDowell, who wrote "Cracking the Coding Interview", wrote a good article about the problems of take-home interviews.


At the core of the problem is that this approach can be used to burn a lot of a candidate's time without an equivalent investment from the company.

I've mentioned this before - I applied (maybe 5 years ago) to a company that first asked me to take a Java test (about 1 hour of work). Then the recruiter called me and sent me a take home project that should take "5-7 hours". I did this, crickets chirped for a month, though I did check in with the recruiter for a while (I gave up eventually). Finally the recruiter called me with a one-line brush off "we've decided not to move forward at this time…"

Granted, this was a bad experience, and it won't always be like this. But I'm pretty close to saying "never" to these exams.

I thought Gayle's suggestions were good. She goes so far as to suggest a 90% passage rate - that you should not be giving these tests to people who are unlikely to pass then, using them to confirm, not screen.

alphast0rmonFeb 25, 2013

If you have enough time I would highly recommend reading "Cracking the Coding Interview" by Gayle Laakmann McDowell [1]. She does a very good job covering all aspects of the interview process and the problems and solutions will most definitely help you improve your algorithm and data structure skills.

[1] http://www.amazon.com/Cracking-Coding-Interview-Programming-...

mindcrimeonNov 14, 2018

If it were me, I'd probably consult Cracking The Coding Interview[1], and the Robert Sedgewick Algorithms in C++ [2][3] books. That and maybe spend some time practicing on Leetcode, Hacker Rank, Project Euler, etc. Skiena's Algorithm Design Manual[4] could also be good.

[1]: https://www.amazon.com/Cracking-Coding-Interview-Programming...

[2]: https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Str...

[3]: https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/020...

[4]: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...

grayhairmommaonDec 3, 2010

Thanks for your support. The reason I mention "on a white board, no syntax errors, compilable" is because I've been dinged at the whiteboard for these silly reasons. No shit ! And Gayle Laakmann, author of "Cracking the Coding Interview" actually says it's important to write nearly perfect code at the whiteboard.

sohamonMay 8, 2015

Three main ways to prepare for a technical interview are:

  1. Books
2. Websites
3. Classroom courses




  There are a dozen or so books in the market. 
The two most popular books (and well written also) are:

1. Cracking the Code Interview
2. Elements of Programming Interviews




Websites are roughly divided into two groups:

a. Where you can write code and compare yours with others' solutions

Popular ones, in no particular order, are:



http://uva.onlinejudge.org/(UVA Online Judge)


https://projecteuler.net/ (Project Euler)

Note that not all of them have questions that are interview oriented. But it's great practice regardless.

b. Ones that give you a problem and then a solution, with no or little competitiveness

Popular ones, are:






Classroom courses / Bootcamps


http://InterviewKickstart.com (I run this one)

Having said that, realize that you are not alone. Most programmers these days don't use fancy data-structures and algorithms at work.

But unfortunately, interviews still ask for it. That is a whole debate on its own.

slarkxonMay 31, 2015

Well, I think nothing beats a good book, written just for the exact purpose, something like Cracking the coding interview is worthy enough to get the right kind of info for preparing for any kind of an interview. It also gets revised every year. Plus moving from one chapter to another, just take flipping a few pages : UI is simple and efficient. I can just read what i need to read, I can workout the problems on my own, or if I am stuck I can see hints of the complete solution. I mean there is no stopping to my learning, and the pace, flow and direction is set my me. Shouldn't some problems be deemed solved in the offline world, and not be bloated to online proportions?!

onlyrealcuzzoonJune 4, 2019

I'm a generalist as well. I can't help you out too much. It's mostly luck.

If you study Cracking the Coding Interview, and you know that book inside and out, and you feel confident you can solve all of the questions in it (you can ignore the Java/C++ stuff if you're not applying for one of those jobs) -- you have a /chance/ to get hired.

But there's lots of smart people with those skills who fail the interview every day.

unscaledonJuly 31, 2020

I didn't read it as criticism of the engineers reading “Cracking The Coding Interview.” - if you want to pass algorithmic interviews you have to read it or something equivalent - or be fresh out of college.

But just as this post says, as a hiring manager, you'll get very little insight into how good the candidate is until after you've hired them. This does serve as a weak signal for dedication, but:

1. You don't want to make your hiring decision only based on dedication.

2. There are other, better signals for dedication.

SunrosternonJune 1, 2020

- Watch CS50 by Harvard alongside your freshman CS 100-level courses - it will help you with fundamentals.
- Read Cracking the Coding Interview - a very useful book on data structures and algorithms.
- Use Viewert for building out your knowledgebase and stay on top of to-do items, it will help you remember things fast.
- Practice a lot, just build projects and iterate.
- Good luck!

ericmceronDec 16, 2020

I have been looking for work recently (frontend/full-stack) and have been pleasantly surprised, all my interviews so far have been fairly practical React, JS, CSS questions. I spent a month leetcoding and reading Cracking the Coding Interview also. 8 months of focused work on interviewing seems... insane haha.

That said I do feel smarter for having refreshed my knowledge on BST, linked-lists, etc. I don't know if there is a better way to interview, the algo/data-structure stuff will definitely reveal your ability to stay calm and problem solve though. A tricky tree or graph problem will also reveal how strong your mental context and ability to visualize code in your head is.

ryanmarshonOct 17, 2018

These days CS50 lectures are online. The TCP/IP and Linux books I can't recall. That was some 20+ years ago. I think the TCP/IP/Protocols book was from Sams and the Linux book(s) were from O'Reilly. Algorithms/Data was The Algorithm Design Manual by Skiena. Cracking the Coding Interview is great too. Crypto was just a bunch of reading online, I haven't found a good book on that I would recommend, same for data transfer protocols. I didn't just read three books, I'm saying, 20/20 hindsight I could have read about 3 books to garner most of the stuff I didn't learn by skipping college.

Maybe some of us self taught developers should get together and curate a clear path for CS knowledge and ancillary helpful things.

svdreeonFeb 22, 2017

If this line of thinking ever takes off, it will be just another one of those meaningless rituals you have to go through to signal that you're part of the club. Polish your resume, dress up nicely, read 'cracking the coding interview' the night before. There might actually be a great idea for a new book in there: "How to fill up your GitHub account with random crap so future employers think you're really really passionate".

jomkronSep 14, 2017

It doesn't really matter too much, within reason. Do what you think sounds interesting.

Do internships.

Play sports/some form of physical activity to a relatively high level.

Start reading Cracking the Coding Interview now and do chapter a month, if you want to get a job at FB/GOOG etc after graduation.

tabethonJan 11, 2018

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.

_kulteonJune 11, 2018

Startups offer pretty good compensation for folks who lack the ability to pass a FAANG interview. Folks lacking traditional CS backgrounds but with an actually high level of skill for writing software, specifically web software, tend to be over-represented in this group.

A lot of the downsides of startups people mentioned here are 100% true. If you didn't study CS in college though, consider the hours of reading Cracking the Coding Interview you'd have to do and divide those hours by your FAANG comp, and you might come out with an equal or slightly higher hourly rate going the startup route. And your interview process might be a lot less stressful.

SatvikBerionDec 1, 2018

I've repeatedly heard statements from people at Google contradicting what Bock says about the process. Here's one public response from Gayle Laakmann McDowell (author of Cracking the Coding interview): https://www.quora.com/Why-doesn%E2%80%99t-Google-care-about-...

angersockonMar 5, 2014

So, here's the deal.

I don't think it is fair to expect you to talk about your old company's codebase in an interview--I'd love to have that conversation, but I understand if you wouldn't feel comfortable doing so.

So, I can ask you questions in person, and get some response. Maybe you interview well, and you can answer things easily; maybe because you know your shit, maybe because you crammed with "Crack the Coding Interview"-like books, maybe because you have inside information on what'll come up in the interview.

Maybe you interview poorly, and if I ask you to whiteboard something you have a panic attack even though you know it cold. Maybe you are having an off day, or our conversation just flows the wrong way and you don't communicate to me the experience I'm looking for that you already have.

By contrast, if I have your github (or sourceforge, or bitbucket, or whatever), I can infer certain things about you: I know what languages you write in, I know whether you roll things from scratch or make little changes to other people's projects, I know how much you care about code quality and commits, I know what sorts of projects you like to work on in your free time.

In an interview, I can (and will!) ask you about some code that you've written, both good and bad, and I can see how you respond--are you defensive, apologetic, humble, humorous? I can ask questions about specific projects, work through your thought process, and get a much better feel for how you are on a team.

As to your question "What is the difference between experience writing proprietary code and experience writing code that happens to be published on GitHub?"

The difference is that I know for certain you can use git, I know that you aren't hiding behind your team on that project, and I know what lines of code you did and did not write (barring certain corner cases). Proprietary code is also usually pretty fucking dull, honestly: you're usually patching or hacking in some business logic for a legacy app that isn't that great to begin with. If I cared about that, I'd just hire some legions of code monkeys from India and be done with my problem.

rescbronApr 13, 2021

It really depends on the interviewer not wasting both our times and making it worth for everybody. I had candidates that weren't good sellers of their past experience, but I made sure to engage with them and they were in fact excellent professionals.

When interviewing you can ask the candidate for details on their MySQL + cron job and investigate how do they think, architect and build a solution and how much bullshit they're talking. Were you given a very detailed task to perform and you just did it? Or did you reach the conclusion that a MySQL DB plus a cron job would achieve the results? Why? What if the cron job failed? Draw a rough flowchart of your script, etc.

On the other hand, you can smell the bullshit of interesting fictions from a long distance when you ask those probing questions.

Now, an interview on basic CS algorithms? The only thing I would know is that you have a good memory and can recall the Cracking the Code Interview book.

dominotwonDec 7, 2019

Haha here is the email i have from my facebook interview thats coming up.

"Your initial Facebook interview is coming up and we want you to ace it!

Here are some tips and resources so you know what to expect and can prepare adequately. Preparing is key.

Our initial interview determines whether to continue with a full series of onsite interviews. This initial interview is primarily a coding interview that will take place between you and a Facebook engineer.

It's important for any engineer to brush up on their interview skills, coding skills and algorithms. Practice coding on a whiteboard or with pen and paper, and time yourself. Preparing increases your odds significantly!
Below are two helpful links to a Facebook Interview Prep Course led by Gayle Laakmann McDowell, author of “Cracking the Coding Interview”. Use password FB_IPS to access the videos.
Cracking the Facebook Coding Interview - The Approach
Cracking the Facebook Coding Interview - Problem Walk-Through
This article provides much more advice about how to prepare: Preparing for your Software Engineering Interview at Facebook

Here's a sample problem to get started.

Sample Problem
Write a function to return if two words are exactly "one edit" away, where an edit is:
Inserting one character anywhere in the word (including at the beginning and end)
Removing one character
Replacing exactly one character
Most importantly, you can view this and other Facebook sample interview questions and solutions here.

Want more sample questions? Try HackerRank, LeetCode, and CodeLab. Be sure to practice questions in a variety of subjects and difficulty levels."

SavageBeastonDec 4, 2019

Attempting to hire dev resources that do not have Computer Science degrees and a SOLID grasp of CS fundamentals is a suicide mission. The FAANGs have already figured this out. As a bootstrapped founder you should strongly consider that behaving like a FAANG makes you much more likely to be successful like a FAANG.

What are you going to do with these Reverse Bootcampers when one of your paying customers demands a Web Scale API implementation of The Blue Eyed Island problem? What happens when the pager goes off in the night because the recursive palindrome finder service is stack overflowing? Personally I really don't want to be on the phone with an angry customer trying to explain how the sub-optimal time complexity of my products sorting algos is "good enough" or giving other excuses ("..results typically come back in <400ms").

I'm sure you can get a bunch of junior folks in and train them to repeatably perform common dev tasks, bang out some functional Javascript, maybe even take some data from a form on a website and query a database with it but unless you're willing to get a crop of campers and pay them to memorize Cracking The Code Interview (6th edition) then I feel like you're probably just wasting your time.

jypepinonSep 7, 2013

I'm a Devbootcamp alumni, now working in a full time position. Just like you, I wanted to continue my learning and get more knowledge on algorithms, data-structures, and other things DevBootcamp doesn't teach you.

I strongly recommend
- Algorithms in a nutshell from O'Reilly (http://www.amazon.com/Algorithms-Nutshell-In-OReilly/dp/0596...)

- Cracking the Coding interview (http://www.amazon.com/Cracking-Coding-Interview-Programming-...)

Those two books are perfectly concise and straight to the point to understand and learn exactly what you feel you are lacking as a self-taught programmer.

The first one will teach you what you have to know, putting everything into work context, making it really easy to understand why and how this or that algorithm is useful.

Cracking the coding interview then offers really good challenges to practice and master those algorithms. And of course, if you are interested in getting a job, will perfectly prepare you for that ;)

wh-uwsonDec 23, 2011

Are you looking for a developer job or unix sys admin?

For dev I would read this:

I know it says intern but i promise if you get to know that stuff well enough it would get you full time as well.

Also get
"Cracking the Coding Interview" and "Programming Interviews Exposed"

Those give pretty good overviews about what is base level knowledge to get you up to speed for a developer role.

Then things would get domain specific from there

Others would have to chime in for sys admin

zapperdapperonJan 11, 2018

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!

bit_logiconNov 3, 2016

This is because the technical interview has completely degenerated into an arms race. It started with good intentions. It used to be just, here's a problem, try to solve it and let's discuss. And at first it was fine. But then knowing Big-O, algorithm, data structure, etc. became a way to "show off" and impress the interviewer. So everyone started to focus on those to impress the interviewer. Then the interviewers noticed and started to state they would only be impressed by more and more obscure algorithms and data structures.

And then the real downward spiral began with the publication of Cracking the Coding Interview. More books were published, a whole industry to support this. Then came the sites like leetcode and HackerRank. Now there's a lot of money supporting and pushing for continuing this stupid process. And the arms race just keeps getting worse and worse. The interviewers expect more and more obscure algorithms and data structures and justify it with "must avoid false positives". This just increases the study time for candidates and they're willing to spend time and money to do it. And the tech interview industry (all the books and sites) are happy to push this arms race since it's more money for them. Now they have enough money to go openly defend the tech interview as the "best practice".

It's not even enough to get the right answer now. You have to do it fast enough or you fail. And now they care about syntax on a whiteboard. None of this used to be true. It all started as a way to see how you approach a problem and discussing it. No expectations that you would correctly get Algorithm ABC and Data Structure XYZ. No expectation that the syntax is correct, pseudo code was ok. No expectation even on a complete working solution, the point was just to see if you can reason about the problem.

All that is gone, replaced by the tech interview arms race. Now it's just a massive speed pattern matching contest to see if you've studied enough to hopefully cover the obscure problem the interviewer will pick and if you can correctly pattern match in time based on the hundreds of questions you did on leetcode. Completely useless and against the original intent of tech interviews.

mathgeekonMar 18, 2015

Let me preface this by saying that above all else, your soft skills are important. Learn to interview. Read Cracking the Coding Interview. Practice your people skills. It's likely that your friends who "were able to get those internships inspite of having almost no software development experience just because they are good at competitive programming" are really good at the soft skills in addition to being good problem solvers.

Assuming that your soft skills are up to task...

It really depends on how many side projects you already have, either open sourced on GitHub or tangibly published (such as iOS apps on the App Store, for example).

You're best served by having a balance of tools in your skill set. If you already have side projects that you're proud of, getting better at "competitive programming" (which is really just getting better at solving problems in certain domains quickly) will make you a better candidate overall.

Companies like Google want junior devs and interns to be problem solvers that they can mold into senior developers. That's what "competitive programming" tests for. However, if you have the soft skills and the pedigree of presentable projects to demonstrate, you can make it work.

citizenkeysonJune 20, 2011

Person with great "resume and/or cover letter" only has proven talent in writing great "resume and/or cover letter".

"The Google Resume" is a great book. It's written by a former hiring manager that's worked at Google, Apple, and Microsoft. Gayle Laakman also wrote "Cracking the Coding Interview" and runs www.careercup.com .

Nobody gets hired by sending "steady streams of applications for months". You gotta stand out somehow. In my case, I run two websites that track over 300 start-ups. I was also personally referred to Google by a Stanford PhD already employeed by Google Research. Google has no excuse for not inviting me in the 'Plex.

JCDenton2052onMar 6, 2017

The prevalent thinking is that algorithmic skills transfer very well to other problem-solving skills. This is especially the case in Google, Microsoft, Facebook and Amazon who ask a lot of these questions. I do not necessarily agree with it, but it is the way things are.

It's just another skill that can be acquired with proper effort and concentration. I can recommend "Cracking the Code Interview", it is chock full of these problems.

andrew_wc_brownonMar 30, 2019

Yes! Space Repetition Learning is amazing.

For me its wasn't about becoming a 10X developer but proving that I was already 10X because I was facing a salary cap of 120K CAD where I saw friends working as long as me 180K+ CAD and some 250K+ CAD. The last job I attempted we had a 55 year old developer being paid the same as me doing the same rot work and I said thats not going to happen to me.

I've always been a person that gets things done but when you asked me how I did it I could never regurgitate the factoids.

Interviewers or other developers thought I was stupid/faking because their probing of my knowledge came down to superficial factoids and not evaluating the past work as a whole where I literally have 30+ projects. Hiring is broken and instead of getting upset about it you just have to meet the checklist.

I have Cracking the Coding Interview and I've been through that book 3x and I can not remember the contents of it because that book has been more more useful to me to prompt up my monitor than in my in the day to day work.

I feel when you're a developer 10 years in you'll be forgetting things as quick as you learn them but proving you have in-memory knowledge is super important.

I use Anki and Mnemosyne but found their UIs clunky and so I built my own Space Repetition Learning flash card system. I was studying for AWS Certifications and I wanted a way to tied practice exam questions I wrote to flashcards so when I got questions wrong it would reload my deck, and one I memorized all the factoids via space repetition learning I could go back and attempt a practice exam.

Now when people ask me whats the different between RAID 0 vs RAID 1 I know which is stripping or mirroring.

I got so carried away building my study system it because my own startup called ExamPro: https://exampro.co

Its really nice to have something you can build where you actually have domain knowledge and its the first time independently where I was successful building a startup that has generated revenue.

I could build anything but without domain knowledge I could never sell what I could build and now I can and its wonderful.

Space Repetition Learning changed my life. Who knew?

s3nnyyonApr 27, 2016

You're assuming that everyone with a bachelor or master in CS can just walk into FaceGooSoft after reading "cracking the coding interview".

That is not true.

The false-negative rate at FaceGooSoft is very high, they have a revolving door of candidates, that is why they can afford it.

I am interviewing people for IT-jobs for over a year now and I met many engineers that are Google-material but did not make it into a tier-1 firm for some reason (they where scared-off by annoying recruiters, where asked unlucky questions at interviews, did not even try or even want to make it in there).

Hence, they have to work at mediocre companies and life at mediocre companies is better in Switzerland than in the US, I believe.

alfalfasproutonMar 9, 2017

Honestly, I found the books (eg; Cracking the Coding Interview) to be decent at giving a quick overview.

At the end of the day, doing a bunch of medium difficulty and some hard difficulty questions on leetcode proved to be the best preparation. By the time you get to your interviews, you've probably seen a variation on what they're asking. I didn't find doing more interviews to be much more helpful than just doing a bunch of practice questions (if you're already good at interviewing in general).

Still, I think this garbage is annoying for senior developer positions or once you're at least a few years out of school. Having to practice implementing a topo-sort in 10 minutes or doing some tedious combinatorial problem gives zero insight into good software engineering practices. System design questions, on the other hand, are actually useful.

mdwrigh2onFeb 2, 2012

Some advice from someone who sat on Google's Hiring Committee for about 20 months: https://plus.google.com/101174951617223562800/posts/2UE1Y815...

Having said that, Cracking the Coding Interview is a fantastic book for technical interviews. I've always been skeptical of this kind of book, but after having interviewed at Google, MS and Amazon, I can say that most of the questions were similar to ones from the book, if not directly from it. So thanks for writing it Gayle :)

askafriendonJune 15, 2017

This is roughly how a job search for me would go if I were to do it right now:

I would probably go directly to the companies I'm interested in once I've done a ton of research into the companies and their trajectories/teams. There'd probably only be a handful of companies that I'd be interested in joining. Luckily I'm in the Bay Area so there's a lot of great ones that wouldn't require me to move.

I could get my foot in the door at most companies just based on my resume (nothing insane - a consistent trajectory with good performance at a string of top companies/startups helps). But after that, I'd be royally screwed by the interview process if I didn't prepare thoroughly for the algorithms puzzles for a solid month or two. LeetCode (online coding practice) and Cracking The Code Interview (book) are popular review material for exactly this so I'd review those after work and on the weekends. Even after preparation there's still an unnecessarily big element of luck built into the standard tech interview process. With luck and preparation hopefully a couple of the companies from my shortlist work out and that would be that.

jakebasileonSep 27, 2016

I have no idea why I am being compared to Donald Trump.

> Being old is not an indicator of success.

I didn't say it was. A history of success is an indicator of being successful though.

> You seriously seem to live in some wonderland where the quality of a candidate just magically appears out of thin air.

You seem to love in a wonderland where a candidate's aptitude can magically get turned into a score on HackerRank.

> They don't want the job badly enough.

Yeah, fuck them for not wanting to waste time on your startup that will likely bomb in a year. How dare these people want a personal life.

> I routinely test older candidates who can't program anywhere outside of the little box they made for themselves, and freak out when they see a programming language that isn't the one they've used for the last 20 years. Is that inhumane?

And I've met hotshot new grads who think they're the best thing since static typing, yet can't benefit from years of experience in how software is made in the real world.

> Gayle is awesome. Cracking the Code Interview is a really great book, and I credit it for getting me through some of my interviews. Everyone here poking at her are people shooting the messenger for delivering the inconvenient truth.

I only now realized the user who I am going back and forth with elsewhere in this thread was the author of these books. I am pointing out the flaws in these types of interviews and how they are very overvalued. The book's ability to get you through interviews means nothing about how those interviews select for people who can do the job, only that the book was designed to help you get through interviews.

gamanoidonFeb 5, 2019

In some way yes, especially when looking at comparing their time/memory complexities and weighing tradeoffs.

A good starter would be to go through the classic: Cracking The Coding Interview book as a form of guide.

Also there are a few sites out there that offer practical contextual problems to solve in preparation.

Interview questions vary and how stringent they will be with it would also vary.

majormajoronMar 16, 2017

For getting a job at Google/Facebook/Amazon/X cool startup, it's a lot more important to do some narrow-minded rote-memorization of algorithms and data structures and hone the skills talked about in a small set of books like Cracking the Coding Interview than to learn something really interesting, or become good at a certain thing, or build some cool shit.

Most interviewers aren't really interested in figuring out "is it worthwhile that you built this thing / did you do it right / why do you think this was something worth learning?" when it's so much easier to evaluate your whiteboard code on a narrow problem against some ideal standard solution.

You can tell them about how you were able to learn enough about a particular database in a couple weeks to be able to cut 90% of the runtime out of a hot query in your first few months at a job, since that was an area that wasn't scaling well and it was something your boss asked if you could take a look at, and they'll be like "ok that's nice, now implement a trie." What's the point of even having experience building and running real systems if that's the process?

If you'd rather be building than practicing whiteboard questions, your best path to success is probably going to be a less predictable one where you need to come across one of the right companies willing to work harder at interviewing because they have to find the best candidates who fall through the cracks at the places with the name recognition.

minimaxironJune 18, 2017

Gayle Laakmann McDowell, author of Cracking the Coding Interview, commented on Facebook about this article (all text below is her words): https://www.facebook.com/groups/hackathonhackers/permalink/1...

> Weird analogy. Companies don't ask candidates the history of binary search trees, computer architecture, or anything like that.

A better analogy would be if they gave this translator a particularly challenging piece of text to translate -- for example, one that didn't have a clear right answer and the candidate had to discuss different tradeoffs.

But... then that doesn't seem like quite so silly of an interview process.

There are absolutely valid criticisms of whiteboard interviews, but most criticisms made are either based on terrible implementations of whiteboard interviews or based on stuff that's just incorrect. (Yes, it's totally fair to criticize a company who conducted a flawed whiteboard interview. But that criticism doesn't apply to the system as a whole. That same company could mess up whatever your favorite interview style is, too.)

> By the way: I don't actually know how translators are interviewed. But one of my best friends interviewed to be a journalist with some major New York newspapers (WSJ, etc).

She was already a journalist before this, so they had lots of public writing samples for her (analogy: GitHub code samples).

Did they just hire her based on this? Nope!

She had to do a live writing test (analogy: whiteboard coding interviews). She also had to do a pitch session to talk about different potential stories she could theoretically write about (analogy: design/architecture interviews). Plus some behavioral interviews.

Why not just look at her writing samples? Unlike for coders (which might not have public portfolios representing a significant portion of their work), basically all of her work product was actually public. So why not just hire from that?

Well, because all they see is the final output. They don't know what direction she was given, how long it took her, how much editing/collaboration was involved, etc. A crappy writer in a particular environment can churn out good work -- because someone else is doing a lot of the work. Looking at the final result is actually not a great measure of someone's skills.

Coding interviews aren't that special.

SomeCallMeTimonOct 21, 2014

...and which seem to largely be collected in the book Cracking the Coding Interview [1]. If you can answer all of their sample questions, you should do fine at a Google interview -- once your brain is used to the task of solving small algorithmic problems, it should get easier, even if the precise question they ask isn't in that book.

Easy for me to say, since I find problems like those easy; I cranked through a few dozen of them with only having to really think about a couple.

If you can't answer them all yet...well, now you have something specific to study.

[1] http://www.amazon.com/Cracking-Coding-Interview-Programming-...

musicaleonFeb 19, 2019

"I've made a career fixing a ton of horribly shitty, inefficient code that's been produced exclusively by people who pass these interviews."

Well, the interviews are marginally effective at identifying new CS grads (who also are cheap and have few outside commitments - companies love this!) but not much else. You're exactly right to view it as an algorithms final exam or an algorithm puzzle contest, but Cracking the Coding Interview is an embarrassingly bad book, in spite of (?) its ostensible purpose of helping people study for algorithm puzzle interviews at Google, Facebook, etc..

msoadonMar 7, 2015

This is second time I'm interviewing Google and I felt the difference. They asked me questions more related to my work and less from "Cracking the coding interview" book. Hopefully it would be the same on-site. I'm confident that I'm good at what I'm doing and if Google really wants me to work on things that I'm interested, I would be a good employee. I have zero days of no-commits in my Github strike. I have more open source projects than many 500+ employees companies.

With all of that "Cracking the coding interview" book in my hand anyway! :D

We'll see what happens!

bigtunacanonOct 21, 2014

So true; the Google, Facebook, Microsoft, Fill in Here puzzle interviews are pretty silly. Rather than splitting people into groups of "good developers" and "bad developers" they can really be split up into these two categories.

1) People who read Cracking the Coding Interview
2) People who haven't heard of this book.


Seriously; any competent programmer can crank through the stuff in that book in a week or two and be solid for the types of silly questions they will be asked in those interviews.

Honestly the best interview I ever had was one where I interviewed with a highly technical IT director and it was just very conversational. We spent about two hours of just chatting about the different types of technologies we had been working with and kept diving deeper and deeper into knowledge areas. At the end of it he just says, "Ok, you are obviously a smart guy; I'm going to send you over to see the VP now so you two can discuss salary requirements."

Kurtz79onNov 5, 2018

As much as I agree that the process is bullshit, it is no different than studying for an exam, something we took for granted during school, just as a mean to an end (a degree), except that in this case there is arguably a much higher ratio of payoff/effort.

There is no mystery involved, one of the more known books on the subject is "Cracking the Coding Interview", but really there is no mystery to crack.

There is a ton of literature, tools, examples freely available on the Internet, all that is missing is time and effort to go through them and learn them as if it were for an exam.

One of the main objection is "Why I should spend more time in doing something I already do full-time at my job, where I'm perfectly qualified?", but to me it's pointless: if you think getting hired by another company will improve your life significantly (or even marginally), it is something you should definitely put effort into.

At the very least, this process (aside from those lucking out) proves that the candidate is able to understand a non-trivial problem (getting hired) and have the ability and put the effort necessary to solve it (going through the bullshit excercise and questions), as it was in your case.

throwaway85305onMar 21, 2016

I'm currently in the process of applying at Facebook (which I guess qualifies as a TrendCo that recently transitioned to BigCo). I haven't even got to the technical phone screen yet, but the recruiter tried to get me to attend an "interview prep session" and then sent me a pair of videos from it totalling 2.5 hours when I couldn't, which of course I felt obligated to watch on the assumption that all the other candidates will have.

Ridiculous enough. Then there's the content. The videos are a presentation by Gayle McDowell, the author of Cracking the Coding Interview. Lots of tips about interviewing, 95% of which were pretty obvious but most of which seemed useful enough, on the assumption that the process is a given. But McDowell would repeatedly say things like "most interviewers won't expect you to write perfect syntax on a whiteboard, but some will" as if this was perfectly reasonable. And she gave "if you're writing in Python, it's a red flag if you use ++ (instead of += 1)" as an example of something she cares about herself! So both the recruiter and McDowell recommended doing a number of pen-and-paper practice coding problems before your interview, specifically on the basis that this is something you never do in your day job.

If I want to be charitable, this is Facebook trying to even out some of the biases introduced by their (apparently unchangeable) whiteboard algo puzzle interview questions, by ensuring everyone is prepared.

If I want to be less charitable, the demand for hours and hours of preparation is just (further) hazing to prove dedication.

In either case, I think this evidence that BigCos are not necessarily any more rational about hiring.

GayleonSep 20, 2011

The fifth edition of Cracking the Coding Interview came out a few weeks ago. The correct link is http://www.amazon.com/dp/1466208686.

username3onApr 7, 2020

Read Cracking the Coding Interview. That’s all that the companies test of your degree.

goodoldboysonAug 18, 2017

As a fellow self-taught developer, I feel your pain. I've been there, many times.

However, there's no reason that you can't also teach yourself the necessary CS fundamentals required to ace these types of interviews. There are plenty of people out there who have done it. "Cracking the Coding Interview" is a great book that if you dedicate enough time to it will help you totally nail those questions (once you have the fundamentals down).

The real secret is to avoid the technical interview altogether. How, you ask? Networking. And not the typical schmoozing type, either. A quick way to start is just to connect with every single developer at your current job. As they make their way to other companies, they're going to either be in a position to hire or at the very least able to strongly recommend someone (and many companies don't actually do these crazy white-board interviews).

swyxonJuly 1, 2020

naming is hard... so the background on this is that the book was originally called "Cracking the Coding Career" for the alliteration and for the mirror with "Cracking the Coding Interview". I nearly even shipped with that name - until Gayle McDowell got in touch and said this would break her trademark. So I had to tweak it. I considered maybe a dozen other names but believe it or not they were worse :(

igotsideasonDec 27, 2018

* The Bogleheads' Guide to Investing

* The Algorithm Design Manual

* Cracking the code interview

* Some Elixir books

imauldonMay 18, 2018

If you don't have a copy of Cracking The Coding Interview I'd suggest getting one. Also:


umbsonAug 10, 2016

Since your goal is to clear interview at Google (or companies with similar interview style), I would recommend straight up interview preparation.

I have recently found "Elements of Programming Interviews" [1]. For people with 5+ years of experience trying to clear Google style interviews, this is the perfect book for following reasons:

+ The quality of problems is much much better than the other two books popular in this category ([2,3]). I am not saying problem are hard, but they found a right balance between quality and solvability in interview setting.
+ The solutions are methodical and of high standard. For experienced people, problems in [2,3] may appear too dumb down.
+ It has some 260 or more problems covering various areas of CS. By going through this book, you should get CS fundamentals and interview prep in one shot.

I have all three books but strongly recommend EPI

[1] Elements of Programming Interviews
[2] Cracking the Coding Interviews
[3] Programming Interviews Exposed.

I have no affiliation with authors/publishers of [1]

booleandilemmaonJuly 15, 2018

I was recently speaking with a recruiter who advised me to “prep” for tech interviews. “Read Cracking the Coding Interview”, he said. “Do some programming problems so your skills are fresh”.

I’ve never prepped for a tech interview and I’m never going to read a stupid book that’s supposed to coach me.

What am I prepping for? I’ve been a programmer 10+ years. I’ve had 10+ years of “prep”. Is that “fresh” enough for you?

Tech interviews have gotten way, way out of hand.

shlooshonAug 17, 2020

I also don't have a CS degree, and got hired at a FAANG company. If you want to quickly get up to speed on the data science basics, check out "Cracking the Coding Interview" by Gayle Laakmann McDowell. Her YouTube videos are also useful. Certainly, there are other methods, but this is one that I found useful.

crimsonalucardonFeb 16, 2020

Where in my comment do I talk about leetcode or false positives?

Not only are you incorrect, but you are completely off topic.

I am saying Gayle Lackman, the author of Cracking the coding interview and, in the past, one of the board members who decide on candidates in the google interview literally told me word for word that the interview optimizes for IQ. Meaning that there are tons of engineers who can spend a life time studying and never get into google because they are genetically not intelligent enough.


SpoomonSep 20, 2017

Gainlo (http://www.gainlo.co/) does mock interviews with actual Big N / unicorn developers for a price.

Triplebyte (https://triplebyte.com/iv/afyYdFu/cp , referral link), if you can make it to their final video interview, will also give you full feedback whether or not you pass, for free. They don't do whiteboarding but they do live coding and debugging.

There are a few general tips though... the biggest of which is to talk out loud. They're not necessarily wanting a full solution to the problem (although it helps); the interviewer wants to know how you think, whether or not you can code decently, and if you test. (You prove the last part by running an example through your code while talking about it to find and fix any bugs.)

Check out Cracking the Coding Interview (https://www.amazon.com/Cracking-Coding-Interview-Programming...) for more of this. It's a very good book. Pairing its problems with an actual whiteboard and a timer is a close approximation to a real interview.

hackerboosonApr 26, 2015

I've flunked almost every interview where I've been asked to solve a fiddly math problem with an algorithm. I've always sucked at these types of questions. I ended up buying Gayle McDowell's book 'Cracking the Coding Interview' to get me through my next career move, but since then, I've taken a job that didn't involve getting through a coding exam.

It's these types of questions that would stop me even applying for a job at Amazon or Google. I know they'd come up and I know I'd flunk them, so I don't bother.

Funny thing is, nobody has regretted hiring me.

geebeeonJune 23, 2015

I did this once. After a take home quiz that took about an hour, I had a 6-7 hour "homework" problem. I did it, and sent it in. It took the company a month to get back to me, though I did stay in contact with the recruiter. The final answer, delivered by the recruiter, was "we've decided not to more forward at this time." No other feedback. I have no idea if anyone even looked at it - I never did speak to a dev at the company.

This experience left me embarrassed, honestly. I don't think it reflects well on me that I put up with it even once.

At this point, I will participate in tech interviews, but I won't do any more take-home assignments. I suppose this could change under different circumstances.

Gayle Laakmann McDowell, who wrote "Cracking the Coding Interview", wrote an insightful post her blog about this. It's titled "Companies who give candidates homework assignments: knock it off!"


She mentions something I see as a problem as well - these tests allow the company to burn a lot of a candidate's time, but not the other way around. I may have burned 6+ hours interviewing unsuccessfully at google, but they parted with 6+ hours of developer time as well (though I did spend a lot of additional hours reviewing algorithms and doing sample problems). This creates a natural set of checks and balances that don't exist with homework assignments.

She does have some good suggestions about how to use a take home if a company is determined to do it. To me, a particularly insightful one was to have a high (she says 90%+) passage rate.

I agree. If you're going to ask a candidate to spend a day on a homework assignment, you should be very close to an offer. If you're using it as an early filter, you are wasting a tremendous amount of developer time.

minimaxironApr 22, 2016

Reversing a binary search tree is a binary (pun intended) answer: you either know how to do it because you learned it in college/read Cracking the Coding Interview, or you don't.

home_boionFeb 19, 2017

I'm of the opinion that the average software engineer in the USA is already overpaid and underworked with excellent benefits and low incentive to unionize.

I'm simplifying it a bit but if you don't like your job, just grab a copy of Cracking the Coding Interview and apply to big companies. The big companies pay very well, have good benefits and interview everyone because of the need for a high head count

pmiller2onAug 21, 2018

Let’s compare this to a recent experience I had with a recruiter from Square. Among other things, I was told that in a 1 hour phone screen, I was to write code as if it were production code, and not “just interview hacking.” She also suggested I read Cracking the Coding Interview ! For a phone screen!

I think this is frankly ridiculous. What do you think the rest of the interview process is like? At best, it’s cargo culting. At worst, it’s abuse.

Edit: I should add that no guidance was given as to what the standards for “production code” in this phone screen were.

robodaleonJune 8, 2018

Agree! I bought that book (Cracking the Coding Interview) just to see what the fuss was about it. That thing is massive, dense, and has enough sample problems to keep a person busy for hundreds of hours...

Those hundreds of hours are way better spent building a side project...and will speak volumes more than trudging through a book to help you "hack" the technical interview.

SomeCallMeTimonDec 3, 2014

> Keep trying to learn more, self-improving and keep applying.

I think it's worthwhile to add "improve your job application strategy" to that list.

There was just an article on the how bad resumes are at predicting success; the converse is that you can likely improve your resume if you're not getting offers.

And write a cover letter. Probably one in 20 (or maybe one in a hundred) resumes come in with a cover letter. And make it relevant. Talk about what the company does and how you'd be a good fit. Paraphrase their requirements list as a list of your strengths, and explain how things you don't know can be overcome.

When I do this I have almost always gotten an interview. [1] And when I get an interview I almost always get an offer. [2]

The other strategy that works for me is to network. Go to MeetUps relevant to your field and interact with people. I don't care if you're an introvert; I am too. It's hard. But do it. It's worth it.

Right now I have a remote job that pays well where I was recommended by a friend who I met because I was networking.

[1] The only exception for me was the months following 9/11, when no one was hiring because the whole nation was in shock.

[2] I really recommend "Cracking the Coding Interview" by Gayle Laakmann McDowell; if you can answer all of the questions relevant to your field, you should be golden.

keb_onJan 17, 2019

I know where you're coming from, but I don't actually think it's very clear what type of questions will be asked for most technical interviews, and that is what makes it so frustrating and soul-crushing. There is always something I do not know, so the kinds of questions I face during interviews is seemingly endless.

If I'm applying for a Front-End Developer position, the interviews can ask CS fundamental questions, or things I maybe learned by reading Cracking The Coding Interview, or doing HackerRank problems; or they might ask specific questions about any frameworks or libraries listed on the job posting, or they might ask more software architecture / system design questions, or they might ask about the Software Development Life Cycle, what is Waterfall, describe AGILE, how do you write testable code, the deployment process, security vulnerabilities, etc.

Maybe all of that doesn't sound so bad to you, but for a young, mostly inexperienced developer who is trying to get a better job, it is daunting.

shoyeronApr 27, 2016

Obviously, your mileage may vary. But at least at large companies (e.g., Google) the CS fundamentals you need to know to pass a coding interview are indeed pretty standard, and well described in books such as "Cracking the Coding Interview".

BFS is absolutely on that list. Yes, I had to relearn it in preparation for my Google interview, but it was something I was ready for when it came up. And I would claim I'm a better software engineer for it -- graph search and data structures are topics that come up in lots of different contexts and for which understanding the basics can indeed make a big impact on your code.

The list of these fundamentals is not that long, and the fact that it exists is a big part of the reason why coding bootcamps have been so successful.

groby_bonJan 18, 2019

It depends on what you know before, as well. When I interviewed the last time, I read "Cracking the Coding Interview" on the flight up to the Bay Area, just to be sure - and that was that. (And I did get an offer)

And no, I'm far from a genius programmer - it's just that I spent ~30 years working in this field, and reading a lot along the way.

If you can, go out and interview. Just to see what it's like. If you really want to find a job, start with companies you're less interested in and use their interviews as free whiteboard training.

eanthyonMar 30, 2020

The skill of getting a job is completely different than your profession skills. First of if you are not getting agents calling you and getting replies on applications in the most abundant industry that software development is you are doing something very wrong. I know of people with literature degree that learnt coding in a few months by themselves and landed a developer job... Things to consider:

1) your CV and online profile is bad - keep it one 1-2 pages, keep it concise, only include previous RELEVANT job experience and skills gained from it, also include any accomplishments on the roles. Include education and section with Skills and Personal Projects. Don't bother adding unnecessary fluff like personal statement or hobbies.
Put a good profile on LinkedIn with same sections and accept all agents invitations

2) You live in a small town if so either move to a big one or apply for remote jobs in bigger cities around Europe/America

3) Your interview/social skills are bad- do mock interviews, read Cracking the Coding Interview, look people in the eyes when interviews and be calm.

4) Your tech skills are rubbish - you don't need to be hackerrank master but you should be able to do some common problems like fibonacci and hashmaps and related again Do more practice and work on personal project like CRUD apps and pick easier language like Python

If you do all of these points there is no way you won't get a job

alexc05onOct 10, 2016

in Gayle Laackman's "Cracking the coding interview":

> Amazon’s “bar raiser” interviewer is charged with keeping the interview bar high. They at-
tend special training and will interview candidates outside their group in order to balance
out the group itself. If one interview seems significantly harder and different, that’s most like-
ly the bar raiser. This person has both
significant experience with interviews
and veto power in the hiring decision.
You will meet with your recruiter at the
end of the day.

I can confirm that for me, the interview was 4*45 minute whiteboard coding sessions. In two of the interviews it was 2-on-one.

Unlike Gayle's description however, I received no debrief or description of what aspect of the 4+ hour ordeal I was rejected on. (Not to mention the night before where there was a 5 hour social/mixer).

It seems that since her writing, they've adopted a no-feedback policy.

So all in, I spent a day "investing the effort in their team's interviewing techniques" but got nothing but a black hole in return and down a day's vacation.

I've got a lot of sympathy for the person who says "this interview process is a lot of work" and who, after 17 years coding in production, decides they don't have time to invest in helping a room full of 20 somethings improve their interview skills.

It probably sounds a lot more bitter than I mean it to. I've looked for work 3 times since '98 and found it pretty quickly each time. (One of those times was within a day of starting to look)

I do worry about ageism going forward. Fortunately my current place has a lot of those gandalf-looking fellas. I love working with they grey-beards of programming.

In fairness, I think my experience with Facebook's interview process was worse.

LewishamonSep 27, 2016

> A hiring process that can be gamed by reading a book sold by the process giver is especially flawed and morally corrupt.

Hahaha, please tell me another one Mr. Trump.

> A hiring process that acts as if years of experience mean nothing and which reduces your career to a score on a web page generated by a terrible constructed test is especially flawed and inhumane.

Being old is not an indicator of success.

You seriously seem to live in some wonderland where the quality of a candidate just magically appears out of thin air.

I want candidates to have studied. Studying isn't gaming. Studying is being smart. I want candidates that studied. Those that didn't I don't want. They don't want the job badly enough.

I routinely test older candidates who can't program anywhere outside of the little box they made for themselves, and freak out when they see a programming language that isn't the one they've used for the last 20 years. Is that inhumane?

Gayle is awesome. Cracking the Code Interview is a really great book, and I credit it for getting me through some of my interviews. Everyone here poking at her are people shooting the messenger for delivering the inconvenient truth.

chris11onJan 23, 2017

I'd recommend Cracking the Coding Interview for studying for interviews.

partycoderonMar 15, 2017

I'll ignore the insults and proceed to refute your point.

I am regularly contacted by recruiters from companies where I've interviewed successfully (with offers) and unsuccessfully (no offer).

They do it because it's cost efficient.

The book "Cracking the coding interview" also speaks about this in the early chapters.

bearmfonMay 7, 2013

> exercise to write a function which returns a boolean in

> response to the question of whether sequence A is a sub-

> sequence of sequence B.

If you can't solve this really fast it means you haven't practiced enough for the interviews.

> of course calculating the permutations of a list is n-

> squared

If I understand you correctly, it is actually n!, because there are n! permutations of n objects.

Basically, your problem seems to be lack of preparation. You study a lot but you haven't studied things that are asked in the interviews well enough.

I would recommend "Cracking the Coding Interview" book. Of course you need to actually solve problems from it. There is lots of valuable advice there. Courses on algorithms on Coursera are also pretty good.

goodrootonMay 29, 2018

I would not consider myself an extrovert. I am much more inclined to introversion. But as @mattnewport said in response to me...

> Similar to what some others mentioned, I'm more of an introvert so I find remote work makes me more social if anything as I don't "use up" my social energy being in an office and can instead use it more selectively on interactions that I get more value from.

I think this is key. Offices used to make me feel exhausted. I recall coming home from work and plummeting into a "crash nap" for an hour so that I could salvage my evenings. I worked hard to build my life so that I can move at a much slower pace and take things in a flow that works well for me.

But to your question: is what you are describing par for the course for an introvert working remotely, or are you taking social reclusion too far...

There seems to be two things afoot:

* You have been interviewing for a long while without success.

* You feel lonely and, in a way, depreciating, because of your confined way of being.

As for interviewing... I would agree that actual interviews _are_ practice - the best kind! But I am curious as to the other type of practice that you are doing. Are you working with other people to help you or are you studying textbooks like 'Cracking the Coding Interview'? We all feel a bit weird about recruiters, but there are services that will help you polish your people skills.

As for reclusiveness... It sounds like you might be taking it to an extreme. There are studies that pop-up on HN often about the benefits of social contact towards well-being and longevity. There is also intuitive proof; we feel much better when we have social validation. The inverse is depressing. I empathize. It sounds like you are having a tough time.

I would challenge a limiting belief like introversion. That is not a good reason for making yourself suffer alone. It might be time to write a narrative for yourself where you _are_ into athletic activities, meeting up with strangers, and being open to healthy and fruitful relationships. When you take care of yourself it will shine through in all that you do.

pavlovonDec 1, 2016

There's three kinds of hiring in the tech industry. The proles must take an agility course of whiteboard coding interviews that maintain a pretense of objectivity, but actually are loyalty filter tests that only measure how much time are you willing to spend on studying shit books like "Cracking the Code Interview" which have no application in the real world.

Then there's the networked hire who basically lets people know he/she is on the market, and can land a job without having to spend 6 hours at a whiteboard answering trick questions about the space-time complexity of the interviewer's socks.

Finally, the super-networked can get in through an acquihire, so they don't have to feel bad about having spent a couple millions of investor money on their startup sabbatical.

ApocryphononAug 21, 2018

Link is (2013). As a further note, the writer is Gayle Laakmann McDowell, author of CTCI (Cracking the Coding Interview), which might explain its covertly pro-whiteboard interview stance. Though I agree with the comments saying that her actual criticisms aren't as clickbait or absolutist as the title makes it sound.

yogeshponAug 10, 2016

Here are some of resources you can use for learning CS topics related to interviewing. You don't have to do all of them, do as per whatever combination suits you.

For learning Algorithms and data structures for interviews

1. Coursera courses on Algorithms by Prof Roughgarden

2. Coursera courses on Algorithms by Prof Sedgewick

3. OCW 6.006 as listed above would be good too.

4. Prof Skiena's algorithms course

5. Berkeley CS 61b by Prof Shewchuk for refreshing basic Data structures like Linked list, tree traversals which are not covered in above mentioned courses.

For practice,

1. geeksforgeeks.org

2. leetcode.com

3. interviewbit.com

4. careercup.com

5. Hiredintech.com

6. topcoder, hackerrank , spoj etc are good sites for practice in general but their problems are embedded with extraneous information not seen in interviews. For example, interviewer is not going to explain you 2 page story, instead he will tell you directly what needs to be done.

In books,

1. Cracking the Coding Interview

2. Programming Interviews Exposed

3. Elements of Programming Interviews

Books on Design Patterns

1. GoF

2. Head first design patterns

3. Software Architecture books by Robert Martin

4. Elements of Enterprise Architecture Patterns by Fowler

5. System Design research papers, gainlo.co has many design questions

ng12onJan 15, 2018

I completely agree. Every time I start a job search I dust off my copy of "Cracking the Coding Interview", do a half dozen problems on HackerRank and I'm good to go. Sure, it's not exactly the skillset a professional software engineer needs -- but if you're a professional software engineer it really shouldn't be that hard.

geebeeonJune 17, 2016

You may want to consider these posts by Gayle Laakman McDowell (who write "Cracking the Coding Interview") on possible problems with take-home exams:


From her blog post on general interviews and take-homes:


"Be fair to candidates. Balance the demand on their time with the utility you get from it. If you're giving a longer project, these should largely replace your interviews. Be aware that this means losing candidates who have other responsibilities."

(in the context of github and other outside contributions, but applicable in my opinion to take home exams as well):
"You may really struggle with female developers here. They're more likely to have substantial family responsibilities (and thus can't do as much out of work)."

vram22onSep 12, 2017

Yes, and that's why sites/books like Cracking the Coding Interview exist. While I don't deny that they have some merit, they don't cover the full picture of what is needed.

I've had a few people (beginners looking for a job) ask me for help on just those sorts of interview questions - and not being interested in spending time on learning the underlying fundamentals, though I had mentored them (on mentoring sites like Codementor) some on those areas earlier (at their request). Misguided, to say the least. Told them that that (just doing the interview prep) is not a good approach, because, even if they manage to clear/pass the interview, with or without my or others' help, they will likely get found out soon for their lack of fundamental knowledge, soon after getting a job.

avgDevonNov 30, 2020

Software people in general like "hacks". We game hiring process by reading books like "Cracking the coding interview". However, the hiring process is broken but that is a different story.

I worked super hard in school, did well and pulled several all nighters. I work at an enterprise now and my algorithm knowledge is useless. I just build enterprise web applications, which is fine.

In software any job you take you will be learning new stuff and new way of doing things. I gained much more from classes that focused on building actual working projects instead of strict algorithms and testing. In our AI class we had to pick an AI algo and implement it in a popular game, one of the best experiences in school.

smnscuonSep 27, 2016

I have the paperback and I've been following her for a long time (she's very active on Quora but I quit that site long ago). I think if you're a moderately good programmer looking for a job at the big four you only need to read Cracking the Coding Interview, maybe aosabook.org, and solve all medium problems on leetcode. This course is just the right thing to get me to actually start preparing for my upcoming Google interview.

warentonJune 9, 2017

I replied to another user "40acres" in this thread about my process, check that out for additional details. Yes, watch videos and read books. "Tushar Roy - Coding Made Simple" on YouTube was a massive help. Some books I've read: Cracking the Coding Interview, Programming Interviews Exposed, Programming Pearls, Hacker's Delight, Mythical Man Month, Boolean Reasoning: The Logic of Boolean Equations, Understanding Linux Network Internals, Introduction to Algorithms CLRS, Return on Software: Maximizing the Return on Your Software Investment, Software Estimation: Demystifying the Black Art.

I read (past and presently) a lot of business and finance books as well. Also tons of books teaching soft skills, which is hugely important.

godelmachineonJune 30, 2018

If you have read Cracking the Coding Interview, the author describes a guy who was hired in her company because there was super shortage of developers. The guy barely knew HTML. He used to come late to office, play ping pong and take off before sundown.

I believe things were quite similar in India during the dotcom bubble. Candidates were asked to do some addition programs, hir d immidietely, and within weeks their H1B was sponsored.

pavlovonNov 1, 2017

Many companies instruct candidates should study for interviews with specific books or courses (e.g. “Cracking the Code Interview”).

That indicates the idea is not that someone who is a competent professional should pass without studying. The passively hostile whiteboard coding exams are more like a hazing ritual than an actual job performance test.

garysielingonOct 29, 2016

That makes sense. I think if I was looking now I'd probably call people I used to work with rather than bother with interviewing. The failure rate on FizzBuzz type tests is really high though, and it should take 30-60 minutes (which would save you the 3 hour discussion on the failure mode). Of course, if you were going to interview at a bunch of places, it would be better if you only had to do that test once.

Recently it also seems like more people are over-prepared to interview than ever before. At the entry level code academies prep people really well to appear more "senior", and other people are studying the "Cracking the Coding Interview" book. The challenge for the interviewer is determining if the person has memorized a bunch of interview sequences or if they understand the material they are talking about. I'm inclined to think some form of programming with discussion in the interview is still a good signal, if it's like what you'd actually be doing.

ilakshonAug 31, 2019

I think everyone has to have _some_ kind of "mental model" otherwise you wouldn't be able to code anything except random keystrokes.

But next time just write some comments outlining what the function is supposed to do.

Also take whatever rationalization people give for what they do with a grain of salt. There are lots of reasons they might have picked someone else -- maybe there was a cheaper hire, or a prettier one, or you had bad breathe that day.

But comments with an outline before you start typing real code should satisfy most people's idea of having a mental model.

If you want to pass a FAANG interview with algorithmic/puzzle questions then that's totally different than pair programming and you will probably want to get a book specifically related to that or something. Like a book titled "Cracking the Code Interview" or something.

StevePerkinsonMar 5, 2017

Exactly. As a 15+ year vet, I love coding homeworks because:

1) I've been coding forever, and have faced code reviews in multiple professional environments. So your "6-8 hours" will probably only take me less than two, and my code will probably look better than yours to a reviewer.

2) I get tired of having to re-read "Cracking the Code Interview", because almost none of that is frequently used outside of academia. And dealing with smug 5-year journeymen interviewers, who are accustomed to asking 1-year juniors to traverse binary search trees and name all of the design patterns that they've memorized from books.

No matter what process your company uses, there will always be people trash-talking it on the Internet. "I refuse to interview at those places", "I insist on being paid an hourly rate to deal with them", etc. I'm sure that 99% of this is chest-thumping bullshit. But regardless, if you're going to filter out part of the candidate pool no matter which path you take... I'd much rather filter those 25-year olds who feel too entitled to write some code, and legitimately believe that companies should just glance at their GitHub page and then hurl them a giant sack of money.

vl623onJuly 17, 2018

Aside from reading "Cracking the Coding Interview", I recommend trying out challenges at Hacker Rank, or LeetCode (or anything similar). Do it with the online editor, or even use their questions as practice for whiteboard questions. Whatever you do for a whiteboard, try transcribing that as submission to see how close to real code you wrote. Some companies you interview care about that.

cunninghamdonFeb 13, 2015

If you want to work for Microsoft or Google, while you likely can't get away with using your employers's $2K, the best books to read are Cracking the Coding Interview and Elements of Programming Interviews. Both books have very solid algorithm questions which you can use to go research the various algorithms and learn them. Although, I'd wait for Elements of Programming Interviews v2 which will include Java samples, as opposed to C++, but that's just me.

McDowell's The Google Resume also has some useful tidbits in it.

jwhitlarkonMar 31, 2016

The book "Cracking the Coding Interview" is a huge help for getting through interviews. It's a real grind to work through, but worth it. You don't have to do all the problems, but make sure you do some from each section.

Most business degrees can be useful, because you understand the business much better. Accounting actually turns out to be useful for distributed systems.

Edit: It wouldn't have occurred to me, but I think Anthropology would be very helpful in understanding why systems were put together the way they are.

pjc50onDec 6, 2019

It's a very distant parody of the famous "Cracking the Coding Interview" book, and the whole set of expectations around technical interviews.

What's actually happening in the code: it starts off in the Lisp-on-JVM that is called Clojure, but for "performance reasons" drops down to hand-writing Java bytecode. A useful reminder that it's all just bytes and we don't have to arrive at them by the "normal" route.

hocuspocusonMay 28, 2021

I don't think it matters that much. Before Leetcode there were books like Cracking the Code Interview. It's not like Google owns dynamic programming interview questions. Some companies with a similar hiring bar ask Leetcode questions verbatim. What matters is how you do it and what you expect from candidates.

webyacusaonMar 27, 2021

I don't want to sound like I am looking for pity here, but at what point, is it OK to give up? My first fail was back at 2009, a full interview cycle with Microsoft. After I was rejected by AWS a few weeks ago (also a full cycle interview, no offer), I realize that I have spent a decade, on and off, trying to get employed by big tech. Since I am not getting any younger, spent countless hours preparing, reading and re-reading Cracking The Code Interview, and I don't feel like I am getting any better or closer, I am looking for some closure. I believe perseverance is an important quality, but also, I don't want to spend another decade through all this. I have been always employed, in not so sexy corporations, but I have earned a living, raised my son, and supported my family, that still lives in a third world country, and without my support they would had been homeless years ago. Sometimes I feel like my efforts were more of an ego trip, just to show off how smart I am, that I was hired by Google. And that's where I am right now. I am unsure how to feel.

joubertonOct 23, 2013

I often come across developers who only think to use data structures that are native to their language (a Sapir-Whorf trap, if you will).

For example, in JavaScript, we essentially have arrays (great for tracking order, O(n) lookup) and objects (great for O(1) lookup, no order), but that doesn't mean you can't:
a) implement other data structures such as doubly linked lists, heaps, red black trees, etc.
b) combine the strengths of two different data structures in a new object

I think it was Bill Gates who emphasized the importance of picking good data structures up front.

A book I recommend for learning how to implement data structures (and concomitant algorithms) is: Introduction to Algorithms (http://mitpress.mit.edu/books/introduction-algorithms)

It is also useful to have some heuristic for picking data structures, and I have found the recipe proposed by Gayle Laakmann in her book, Cracking the Coding Interview, useful in most non-esoteric cases.

tomcat27onDec 4, 2020

30 years ago software engineering was probably a few bunch of technical skills. Now it's a very big spectrum, no individual knows everything.

Someone applying to search quality team at Google that works on search algorithm really wants someone who knows algorithms..

but that may not be the case for a web of app developer.

but the same app developer needs to know have algorithmic sense to do some performance tuning.

The current interviews ignore all these nuances and simply ask a weird, sometimes boring, competitive coding question. That's fine too.. most engineers enjoy a puzzle once in a while.

But what really irritates me is sensitivity of assessment in these coding interviews.

Someone the other day was saying Cracking the Coding Interview book is no longer relevant. The problems are apparently simpler to what people ask in real interviews.

We don't just have to provide pseudocode. Write working, beautiful code, solve the edge cases and speak to the interviewer while doing all of this. I don't know since when engineers actually talk and code at the same time during working hours.

The phone interviews are a joke. In a 45mins meeting, where 10mins spent on introduction from both people has zero weight. In those days it was supposed to weed out non-serious candidates with fizz-buzz question. Well' agreed fizz buzz isn't really a good question, but neither a LeetCode Hard DP question to be solved in 30mins.

joshuakcockrellonJan 11, 2018

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 - 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/ - 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 Feel free to send me yours if you want some feedback.

wernercdonSep 20, 2016

The problem with Euler is it is very heavy on math. Math and programming aren't the same things. (although certain programming paths do rely heavily on math)

Its better to do something. ANYTHING. Euler? Hackerrank.com (or other similar websites? exercism.io? "Crack the Coding Interview" (or any other similar book)? codereview.stackexchange.com? codegolf.se?

Or any of the other dozens of ideas here http://programmers.stackexchange.com/a/764/2536

The key is DOING. Repetition. Solving problems and overcoming obstacles. Repeatedly. Till you get better. Then do it again. Repeat yourself.

Did I mention repetition? repeatedly?

How do you learn to piano? Guitar? fix cars? Years and years of practice. Programming is no different.

giaouronJuly 3, 2017

I don't have a CS degree and work at Amazon. I picked a specialty completely unrelated to academic CS that's generally welcoming of beginners (PHP development).

After getting a very entry level PHP job based on reading a few O'Reilly books, I spent a couple years getting progressively less shitty jobs with progressively higher pay and levels of responsibility. By the time I got an interview with Amazon, I was a legitimate PHP expert. I read a book on Amazon's leadership principles and worked through Cracking the Coding Interview to prep for my interview loop at Amazon, and I'm pretty sure only one or two of my interviewers knew I didn't have a CS degree -- the rest didn't look at my resume.

Now that I've been at Amazon for two years, I don't think any employer would care about my lack of a CS degree. I'm certainly happy to be making several times more than I did in my previous career (French teacher).

ma2rtenonAug 10, 2016

I am going to start at Google in two weeks. Having recently passed Google interviews, I would give you the following tips:

1. Unless they contacted you at LinkedIn or you know someone at Google who can refer you, the most difficult part is actually getting an interview.

2. Apply as soon as possible. They don't mind scheduling an interview 3 months in advance and they will send you preparation material and they will be able to answer questions. (This is specific to Google, I would not do that at most other companies).

3. Check out Quora they have a ton of information about the Google interview process. Also some info, but not so much about other companies. That shouldn't matter because the preparation is mostly the same.

4. I don't think it's a bad idea to follow courses as well. At least for me it would motivate me more if I learned something of value in addition to just getting a job. However, unless you are interested in it, don't worry about Math.

5. As others I would recommend to work through the book Cracking the Coding Interview. I also found the website interviewbit.com helpful. It's similar to leetcode, but they organize the questions by topic and gamified it. This helped me to stay motivated.

6. Also prepare for system design questions. Those are equally important as coding, algorithms and data structures for candidates that have industry experience.

7. Do mock interviews. Ask friends, otherwise there is a YC startup called Pramp.com. They allow to do mock interviews with peers for free. There also services that let you do payed mock interviews with people that actually work at big tech companies.

8. Don't be naive about what impact you can have working at big companies like Google. You are going to work on a small subpart.

malandrewonNov 12, 2014

There are many valid points they raise, but this one is pure malarkey:

    But when they interviewed at larger companies, they had to do 
these "whiteboard" interviews, where you're given a coding
challenge and you go to the whiteboard and attack it. And our
guys didn't get hired, right? They had never done a whiteboard
interview. So, in that case, is there something wrong with the
fellow, or is there something wrong with the interview process?

I hate whiteboard interviews as much as the next person, but it's not like it's a secret that whiteboard interviews are standard practice, and pretty much everyone I know that is good at them became good at them the same way; they studied.

It's pretty common advice everywhere on the internet that when you need to prepare for such interviews that you go grab yourself a copy of the well-regarded "Cracking the Code Interview" by Gayle McDowell or one of the other code interview prep books.

Failing at a whiteboard code interview is not a race or gender thing. It's a failure to do some basic research on what to expect in the interview or a failure to spend the time preparing for what you're going to encounter in the interview process.

laexonJan 27, 2015

You could check out the following resources:

1. Coursera Algorithms I for formal university-style learning. See https://www.coursera.org/course/algs4partI

2. Algomation.com for visualising algorithms. See http://www.algomation.com/

3. http://bigocheatsheet.com/ for time/space complexities for the most common data structures & algorithms.

4. The book - Cracking the Coding Interview which goes through the questions that top companies like Google, Amazon, Microsoft ask during interviews. For their solutions, see https://github.com/gaylemcd/ctci

Hope that helps in some ways.

lazaroclapponJan 9, 2017

The idea, as I understand it, for a lot of these diversity programs is: a) get more candidates of underrepresented groups to apply, b) if they lack some preparation other candidates are expected to have, help them get it, c) apply the same strict hiring standard to these candidates as to anyone else. Applying a different standard would be a disservice to the company, to the already represented group and to the underrepresented group as well (it is never a good thing to be at a role where you lack the ability to perform or learn to perform in said role).

The best companies don't and shouldn't have two standards. But point a) and b) are important.

As an example of a), a company can make an effort to reach out to graduates of traditionally black colleges, or expand their international recruiting efforts to countries that don't traditionally have a strong pipeline of sending candidates to US. Underrepresented groups also likely won't know other people working at those companies who can reefer them, since white and asian men already employed there will mostly have white and asian men in their circles. Keep in mind many hires come in through some form of networking, where represented groups already have a huge advantage in terms of getting the foot in the door, unrelated to skill.

As an example of b), most people graduating from Stanford and the like know to read Cracking the Coding Interview or similar before doing a software interview and know how software interviews work, graduates from other schools (places like my undergrad college) might need to be told about those resources. People not facing an stereotype threat might also be calmer during interviews, which helps. Now, the fix for the later is not to make the interview easier, but maybe providing or recommending mock interviews for people who haven't interviewed at similar companies before?

The idea is not to create two hiring pipelines: a hard one and an easy one. The idea is to get people to show at the start of the normal pipeline who would normally not even know that was an option.

edemonJuly 10, 2014

Grab the book named "Cracking the coding interview". After you've finished with it and done all the coding questions (without cheating) all this crap will be a breeze for you. Plus you will learn some neat tricks which are invaluable for your day job. When I was planning to interview for a job I've done a research for such books and this was the most useful. Please note that I am not the author of the book nor an affiliate of him.

istvan__onJune 12, 2015

Twitter interview went sideways, I got one shot with a question (that I won't share) that required finding Hamiltonian path in a tree, over the phone of course. I am not sure what is the mindset of the interviewer.

I am hiring engineers (systems, software and security) in the last 5 years, got trained up on recruiting by Amazon, so I would say I have a pretty good understanding on hiring.

The right approach with these interviews to find out the best of the candidate. In order to achieve that you always start with simple questions like what is a variable, what sort of data is out there, do you use version control etc. After that you switch gears.

On the subject of inverting binary trees on a whiteboard. Is this the core of your business? How many times did you need to do that last week? If it is irrelevant for your daily operations than why are you asking this question?

The problem is that (especially companies like Google) like to hire Stanford graduates and those guys think after being in the job for few months that the best way on interviewing is to measure how well the candidate would have done during the last semester in theoretical CS class at the university. While we probably all know that running a service for millions of users in production in a distributed environment requires many other skills that are not represented too much in the interviews, yet this is what you can run into during the interview loops.

I think at certain extent this is known to the Google recruiting team and they are ok with it. The way to beat the interview is to read books like Cracking the Coding Interview and train up extremely well on those trees and search algos and all, if you are really committed to work there. There are several very senior guys turned down by Google simple because they failed one or two of these ridiculous questions.

I think the last incident kind of a good example of this:


Now I get back to my read about how the heck I am inverting a binary tree.

stuffaandthingsonJan 11, 2018

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)

marcinzmonJuly 15, 2020

I've had FAANG tell me to read Cracking the Coding Interview, sent me links to leetcode/hackerank, sent me PDFs with notes on what topics would be covered for domain specific interviews, linked me to their blog posts on architecture design, videos by their engineers on how to prepare, given me the literal behavioral questions I got asked, etc, etc. Facebook sent me well over a dozen links to guides for my interview and half of those had further links in them (including to a list of practice questions on hackerank).

edit: It is also very reasonable to study having done it myself and talked to people who have gotten into these companies. At 15 minutes a pop you can do 100+ leetcode questions a week. Spend a few months and you'll have studied almost every reasonable question. Most of them are repetitive patterns but around 5% have tricks you need to memorize. That covers 2-3 out of your 5 interviews. Behavioral you need to memorize around 5 questions that they'll basically give you ahead of time. System design is harder but there's videos for the 10 topics that will cover 90% of the potential questions.

mahyarmonFeb 13, 2015

If you want to work at those companies, your time is better spent with something like Cracking the Coding Interview and reviewing it on the weekend. If you actually go through the entire book, you'd stand a pretty good chance at doing really well on all of your interviews as far as stuff you don't use on the job frequently questions go.

This former googler who's interviewed a lot agrees with me:
"For instance, if you read Cracking the Coding Interview and were diligent about it (i.e., actually worked through the problems and practiced at them), you'd stand a good chance of doing really well during Google's interview process."

If you have never studied any of these topics, keeping this book in mind as you study for your algorithms course will be definitely helpful for your grade and your future interviews!

pavlovonDec 7, 2019

The tech industry has unfortunately adopted the methodology of centralized hackable tests as the canonical gatekeeping method in the form of programming interviews.

Most big tech companies don't care about how good you have been at delivering some value through creating software: they want to see you deliver a very specific type of performance at a whiteboard. Interviewers are given specific math puzzle questions to ask. Interviewees are explicitly told by the same companies' hiring departments that they should aim to hack the system by studying books like "Cracking the Code Interview".

This is an industry that prides itself on supposedly making data-driven decisions through A/B testing. When it comes to hiring people to make those decisions, everybody just plays along to a decades-old script.

spiralpolitikonOct 9, 2016

I would add Google, Microsoft, et al to that list. Seen lot's of candidates come in for interview who have read books like "Cracking the coding interview" who have obviously memorized the white board solutions to complex problems who then can't implement 'boolean equals(Object)' correctly when asked to do so.

Kurtz79onMar 27, 2015

Also, a few years down the road, the relevant experience you have will weight orders of magnitude more than your degree or PhD.

Right now, your decision should be based mainly on what you would like to do be doing in your professional life, don't sweat too much on your initial salary (which even as a junior developer, it should be at the very least decent).

Just keep practicing (hint, read "How to crack the coding interview"), and you should be fine.

baccheiononAug 17, 2016

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

marcinzmonApr 20, 2019

The best way is to interview at good companies and get offers from them. That means the usual Google, Facebook, Apple, etc. and also up-and-coming ones (Uber, Lyft, etc.). You don't even need to want to work for the company but getting an offer will tell you your worth for the future. You will need to study hard for those interviews but it's well documented online what you need to study specifically (read Cracking the Coding Interview, practice Hackerrank, LeetCode, etc.).

There's generally threads online where recent grads say what offers they've gotten from companies and websites like www.paysa.com that try to aggregate them but those are all biased.

Equity is a gamble not in your favor, read up on how many startups fail outright, how many sell for basically nothing, and how much you're going to get diluted in funding rounds. Founders will say otherwise but it's their job to sell you so don't trust them. So if you do want to gamble on a startup make sure to heavily discount the value of equity when negotiating.

fnbronJan 1, 2019

Performing well on the interviews is a skill that you can acquire through practice. If you do 100 Leetcode questions, read through all of Cracking the Coding Interview, and suffer through 30 phone screens, by the end of it, you'll be a hardened interviewee capable of passing an interview anywhere in tech (you can probably get by with much less practice; I'm being purposefully hyperbolic).

Does this mean you'll be good at the job? No. Is this very wasteful? Yes.

Getting interviews, on the other hand, requires you to read the recruiter's mind, and can vary depending on what the recruiter had for breakfast, or if they fought with their significant other that morning. It's much less formulaic.

acconradonJuly 11, 2016

Practice! Books like Programming Pearls and Cracking the Coding Interview will be useful for you. Meet with friends and do mock interviews.

Developer interviews are similar to the SATs/GREs/any other standardized test. It's not a test of your general ability so much as it is a test of your ability to do well on a standardized testing format. And in general, the best way to ace those is to practice interview problems a lot.

foobarquxonApr 7, 2015

> Furthermore, I know plenty of people who haven't gone to any college and work at Google. If you don't hear back, it has nothing to do with the college you went to.

The author of "Cracking the Coding Interview", who worked at Google, has publicly said that, at least in her hiring committees, your education and particularly the prestige of the school you went to was very important.

csnewbonDec 27, 2018


- Ready Player One

- Pattern Recognition

- Burning Chrome

- Do Androids Dream of Electric Sheep?

- Hyperion

- A Fire Upon The Deep

Technical (backend development + security)

- HTTP: The Definitive Guide

- RESTful Web Services

- Designing Data Intensive Applications

- Web Scalability for Startup Engineers

- The Art of Software Security Assessment

- The Web Application Hacker's Handbook

- A Philosophy of Software Design

- Clean Architecture

- The Go Programming Language

- Refactoring (new 2nd edition)

- Algorithm Design Manual

- Cracking The Coding Interview

I'll definitely be able to get through all the sci-fi novels, but not the technical stuff. At minimum I need to go through the technical interview prep books, refactoring, and designing scalable applications.

ThatOtherPersononOct 6, 2016

How you do in technical interviews often has little to do with how good of a programmer you are. Modern technical interviews (in Silicon Valley, at least) tend to focus on a certain category of computer science and mathematical questions, rather than skills that would actually benefit an employer.

On the bright side, something of an industry has been built up around preparing people for tech company interviews (similar to the SAT prep industry). Check out Gayle McDowell's Cracking the Coding Interview[0], CodeKata[1], or Interview Cake[2].

[0] https://www.amazon.com/Cracking-Coding-Interview-Programming...

[1] http://codekata.com/

[2] https://www.interviewcake.com/

aaronbrethorstonFeb 28, 2017

> If you have one candidate who has seen all of this stuff before and can use it directly from memory

Except that the continued success and popularity of books like Cracking the Coding Interview suggest that this really isn't the case.

The candidate who has spent the last month cramming on the best way to reverse a string in place, or the difference between the plethora of types of trees isn't guaranteed to be the best candidate for your position. All they're proving is that they can pass your screening process.

Edit: and to answer your question, I'd rather have the person with 20 years of experience in the field who can't remember how to draw the Lewis structures for arbitrary molecules off the top of their head than the doctor fresh out of school who doesn't have the slightest clue what this blotch on my abdomen might be.

flor1sonJune 9, 2017

I did my masters in Computer Science (graduated cum laude) and am currently in the third year of my PhD. I applied for a few companies but I am having trouble getting through the coding tests, which are sometimes very practically oriented (Android and iOS). Maybe I am not skilled enough as a programmer, or the companies tests are not suitable for me, or the companies themselves are not suitable for me, but I believe I would have a better chance of getting hired if I had the practical experience these companies are looking for. Your advice about reading Cracking the Coding Interview is spot on, however I would say a bootcamp aimed at studying exactly that book would be very beneficial for landing a job.

NumberSixonAug 4, 2015

There are also a number of books. The most well known is Gayle Laakmann McDowell's Cracking the Coding Interview


Gayle also has a number of YouTube videos such as:


and a web site:


Others include:

Elements of Programming Interviews: The Insider's Guide by Adnan Aziz


Programming Interviews Exposed: Secrets to Landing Your Next Job by John Mongan, Noah Kinder, and Eric Giguire


EridrusonJune 18, 2017

Getting hired by FB/Gogle/etc is roughly a 2 step process:

- get past resume screening to the phone screen

- do well in your interviews

The first part can be done in a bunch of ways, including having interesting projects on your resume or getting a referred by a current employee.

The second question is largely things that are covered by the book "Cracking the Coding Interview". People report that studying this book and related online resources for a month or so is enough to do well in the interview process.

I don't really know how they review resumes, but you should apply to some jobs to see if you can get a phone interview; if you do, then all you really need is to do well in your interviews.

dcw303onAug 1, 2017

This is a good cheat sheet for those who don't have (or have forgotten) the knowledge but want to game an algorithm heavy interview. The problem I got with this is exactly the same as when I tried reading the "Cracking the Coding Interview" book:

I got through a few chapters and then the author mentions something off the cuff with an assumption that the reader will know what they mean. But of course, I don't, because these books are basically a collection of cheats and hacks. I get frustrated that I don't understand it, so I seek out something that starts with the fundamentals and expands from there.

What I'm trying to say is that I'd rather slog through 900 pages of Sedgewick and come out with a thorough understanding rather than try 20 quiz questions to be stumped by whatever the hell they were trying to get at with question 21 and then give up.

alanautonSep 17, 2016

Judging from this comment, I would say you lack confidence. Recruiters and interviewers can see this coming from a mile away. Perhaps, you are trying to jump up the proverbial software engineering ladder to fast...

I would highly recommend you read the book: Decode and Conquer. I would also recommend Cracking the Coding Interview and Cracking the PM Interview. If you can solve those problems on a white board, you can pass a technical SE interview.

I would also suggest you:

1. Work on a problem for a few minutes and try to solve it. If you can't, look at the solution and understand how the solution was derived. Go back and solve the problem again. You are not finished here. Go back a few days later and work on the same problem - repeating this several times a week. Over time, you will grow more confident and can quickly recall concepts that are potentially causing you to perform poorly on your technical interviews.


andymoeonJan 14, 2018

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


isuraedonJan 29, 2014

Don't be discouraged by the comment. It is not normal but I have heard the big 5 software companies tend to be arrogant during interviewing.

It sounds like you simply weren't technically prepared and qualified for the position. That is correctable!

1) Interview prep. Here are the 4 standard books to prepare for programming interviews at big companies like Apple, Google, Microsoft, Facebook, Amazon.

- Programming Interviews Exposed
- Cracking the Coding Interview
- Elements of Programming Interviews
- Ace the Programming Interview

2) Open Source - Get involved today! Pick a big open source project like Mozilla. Big projects have great resources and programs to get new people involved. For example Mozilla has mentored bugs where the mentor helps you along from environment setup to submitting the code.

3) Hobby Projects - Pick a technology/platform/framework that interests you. Read up on basic tutorials and setup the development environment. Get the server running. Get the code to compile. Take small steps. Ask for help. You can find answers to basic questions on stackoverflow etc.

tom_mellioronJan 15, 2018

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.

arthurjjonSep 28, 2020

> you can do it. It will take some number of weeks or months

I think you're overstating the time needed. Passing those interviews for someone who reads HN is basically just reading Cracking the Coding Interview [1] or Programming Interviews Exposed [2] and doing the ~50% of the exercises.

Source: Worked at 2 of FAAMG and got rejected from 2 of them (because I forgot to read those book before the interview)

[1] https://amzn.to/30g9vRQ
[2] https://amzn.to/3iaZknD

Built withby tracyhenry


Follow me on