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

Scroll down for comments...

Programming in Scala

Martin Odersky, Lex Spoon, et al.

4.7 on Amazon

42 HN comments

The Art of Doing Science and Engineering: Learning to Learn

Richard W. Hamming and Bret Victor

4.7 on Amazon

40 HN comments

The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World

Pedro Domingos

4.4 on Amazon

40 HN comments

Operating Systems: Three Easy Pieces

Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau

4.7 on Amazon

40 HN comments

Start with Why: How Great Leaders Inspire Everyone to Take Action

Simon Sinek

4.6 on Amazon

36 HN comments

Java Concurrency in Practice

Brian Goetz , Tim Peierls, et al.

4.7 on Amazon

34 HN comments

Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon

Kim Zetter, Joe Ochman, et al.

4.7 on Amazon

34 HN comments

Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

Michael Lopp

4.4 on Amazon

33 HN comments

The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution

Walter Isaacson, Dennis Boutsikaris, et al.

4.6 on Amazon

31 HN comments

Elements of Programming Interviews: The Insiders' Guide

Adnan Aziz , Tsung-Hsien Lee , et al.

4.6 on Amazon

31 HN comments

Accelerated C++: Practical Programming by Example

Andrew Koenig , Mike Hendrickson, et al.

4.2 on Amazon

31 HN comments

The Ascent of Money: A Financial History of the World: 10th Anniversary Edition

Niall Ferguson

4.5 on Amazon

30 HN comments

Programming Rust: Fast, Safe Systems Development

Jim Blandy, Jason Orendorff, et al.

? on Amazon

28 HN comments

Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython

Wes McKinney

4.6 on Amazon

28 HN comments

Think Python: How to Think Like a Computer Scientist

Allen B. Downey

4.6 on Amazon

27 HN comments

Prev Page 3/16 Next
Sorted by relevance

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:
http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog...

torbjornonJune 17, 2018

I am really enjoying working through the book "Elements of Programming Interviews"

lostphdonJan 22, 2015

Thanks. I haven't seen that site before. I got cracking the coding interview (which seems too easy) and Elements of Programming Interviews (picked that up a few days ago and that book has some hand in shattering my confidence. Is that the bar for devs? If true, I freely admit I'm not at that level).

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.

atilimcetinonJan 11, 2018

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

obstacle1onJune 25, 2014

>Get "Elements of Programming Interviews"

This is the Aziz and Prakash book, yes? Formerly known as "Algorithms for Interviews"?

If so, can anyone comment on whether or not the content has significantly changed between editions?

codesushi42onOct 21, 2019

No. The authors are purposely obscure and arrogant.

There are much better books to learn algorithms from. Even Elements of Programming Interviews is better.

It is worth coming back to if you want to read proofs to understand things in depth. But it is terrible as a fundamental instructive text.

0db532a0onJan 8, 2019

I am currently working through the book “Elements of Programming Interviews”.

sungrionMay 4, 2021

Learned it from the book “Elements of programming interviews” alongside with namedtuple and few other things

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.

sohamonMay 8, 2015

Three main ways to prepare for a technical interview are:

  1. Books
2. Websites
3. Classroom courses

=====

Books

=====

  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

========

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://leetcode.com

http://HackerRank.com

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

http://SPOJ.pl

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:

http://InterviewCake.com

http://GeeksForGeeks.org

http://Glassdoor.com

http://Careercup.com

=============================

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.

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.

gaylemcdonSep 9, 2014

It's hardly rife with non-programming authors.

Elements of Programming Interviews: authors include an algorithms professor, a software engineer, and an engineer/CTO.

Programming Interviews Exposed: authors include software engineer, a CEO & VP Technology, and a radiologist. (Note that this book was written a long time ago. The radiologist probably was a programmer at the time.)

Ace the Programming Interview: software developer

Data Structures and Algorithms Made Easy: software developer

Out of 9 authors (including myself), 8 are/were software developers or something else very, very deep in technology. Possibly all 9.

Notably, zero are/were recruiters.

curiousDogonJan 23, 2017

Solve the book Elements of Programming Interviews and you'll get a job at any of the Big 5.

thewarrioronMar 2, 2020

Luck was on my side :)

I also had help from a friend who was a top ranked competitive programmer. We went over problems together. To anyone with a competitive programming background most FANG interview questions are absurdly easy.

You often see people asking “So I’m supposed to come up with these 3 tricks to solve these problems in 5 minutes and write the code in 20 minutes under pressure ?”. Competitive programmers have trained themselves to do exactly this and they do this consistently on questions way more difficult than the average FANG interview. The value of this skill in day to day development is debatable but it’s definitely something to sharpen your mind. It’s something one can learn to do with reasonable effort and is not impossibly hard as some like to claim.

I also winnowed down on what to prepare by eliminating types of questions not generally asked or too difficult by scanning lists of common questions asked. Although I had only a few weeks to prepare. If you have more time the second step may not be as necessary.

If you have one month to prepare use the Elements of Programming Interviews book. If you have more time check out Udi Manbers book on designing algorithms using induction. It goes into the why and the how.

In recent times I’ve observed that the system design interview increasingly plays the deciding role as most candidates can now solve the DS/Algo questions being asked.

skylarkonJan 13, 2018

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

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

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

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

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

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]

gofreddygoonApr 23, 2020

After the initial denial phase, I took it as a challenge and that mindset has helped me. I tried a variety of tools including anki to my own homegrown leitner system. They all suck for this. Don't waste your time.

The key to slaying this dragon is repetition. If you identify repeating patterns and just fucking practice them and own them, you make a lot of progress. Just like you learn to draw. One mistake I made initially was to follow common advice and 'just solve leetcode'. No it does not work (for me). Don't waste your time. First own the basics.

Its similar to the mental models approach that Charlie Munger advertises, just limited to this domain. A few common patterns solve a lot of common problems. e.g.

* using hashmap to find a pair/triplet that match a criteria in an array of numbers
* kadane's algorithm - to find contiguous subarray
* dfs - for "find all combinations" type of problems
* coin change / knapsack - solves a lot of problems in DP space
* implementing merge sort/timsort/heapsort
* implementing quick sort
* a classic problem involving a trie implementation
* two pointer approach to navigating arrays

These cover a large swath of interview questions (programming + whiteboard)

Once you add in your vast real world experience, you really have a strong edge over other candidates in further rounds. Especially in a hiring manager's perspective.

definitely get the book Elements of Programming Interviews (I printed it out and read it chapter wise as time permits. Sometimes while cooking). I focus on array, string type questions

And finally, another thing I realized is ... to get what really want, you must be ready to lose it. Fear of rejection is real, creepy and my biggest deterrent. I've since told myself - I want that job at google. I will try all I can. I am not afraid to lose.

Fuck it man, just do it.

jaguar86onJan 23, 2015

Not so long ago, I was pretty much in your situation, except that I didn't have a PhD. I was moving into a software engineering role from a DevOps role. I was initially flunking a number of interviews at pretty much the same companies you have mentioned. My advice as most, Practice and Patience while solving problems. Practice talking through a problem in particular. The interviewer is waiting with a hint in hand, which you can always use to get a direction in which to solve the problem. Getting this hint 100% of the time from the interviewer is 100% fine.

As for study, I highly recommend the index page of this book, Elements of Programming Interviews, as a reference. It contains a catalogue of questions, whose complexity exceeds that of CTCI or PIE. Here are the links.

For the entire book, http://www.amazon.com/Elements-Programming-Interviews-Inside...

For just the index page, http://elementsofprogramminginterviews.com/pdf/epi-toc.pdf.

Good luck!

itronitrononMay 15, 2020

Elements of Programming Interviews (jk)

stack_underflowonSep 20, 2020

These types of questions basically boil down very cookie cutter patterns that generally bucket into graph traversal/search, being comfortable with coding/manipulating linked data structures, enumerating+pruning search spaces, and knowing little tricks to reduce an order of magnitude from the runtime or space complexity after having applied one of these patterns. These all generally require knowing all your basic data structures as a prereq (stack/queue/deque/vector/hash table/self-balancing search tree, then using those primitives to compose graphs etc).

My advice for people who wanted to prep for these interviews originally used to be to read through some books that prep you for algorithm competitions (e.g. ICPC, IOI, GCJ), but I find that to be a bit overkill and not as efficient a use of time (although some of these books do a much better job of explaining things than any of these interview prep books I've gone through). Today the advice I'd give is get a book like 'Elements of Programming Interviews' in the language you plan on using and a leetcode subscription and just get down to learning about a data structure/algorithm/problem solving paradigm and then solving a bunch of questions that fit that technique.

If you really want to go with the overkill approach, I'd recommend a book like Competitive Programming 3: https://cpbook.net/

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

bcbrownonMar 12, 2015

Pick up the book Elements of Programming Interviews and practice.

tedunangstonSep 9, 2014

OK, fine. The next two Amazon books I get for "programming interview", "Elements of Programming Interviews" and "Programming Interviews Exposed", both have three authors each. In both cases, only one of the authors is actually employed as a programmer. The others include an EE professor, a radiologist and two executives. The field is rife with non programming authors.

"I wrote a book about programming interviews" does not signal to me that you are, in fact, a programmer.

I am happy to believe Gayle is a programmer, but I wouldn't use her book as a credential to support that claim.

(And I just realized that I'm replying to Gayle. I didn't read your username before posting. oops. The "you" above wasn't meant to be directed at you personally.)

iron0013onFeb 7, 2020

Read either CTCI or Elements of Programming Interviews. The key is knowing that the problems you’ll be presented with aren’t as novel or random as they might seem. The same general topics and problem classes come up over and over, and once you can recognize them you can learn to solve them. It’s really hard, but it’s a matter of effort, not intellect (or at least not solely intellect).

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.

brad0onSep 18, 2017

The best things to know as an undergrad is:

Can I consistently pass the technical exams? Read Elements of Programming Interviews cover to cover.

How can I get in contact with a recruiter at Amazon? Trade shows, through university contacts etc

Am I someone who is humble and likeable? This isn't talked about enough.

If you can do these things then you should be able to get a job at the big companies.

One last thing. There's so many different roles at Amazon you need to ask yourself "what am I most interested in?"

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.

MrZipfonMar 16, 2015

As an older self-taught engineer who went through interviews last year this is great advice. Other books I found particularly useful were:

Algorithms by Dasgupta, Papadimitriou and Vazirani:

http://www.amazon.com/Algorithms-Sanjoy-Dasgupta/dp/00735234...

And Elements of Programming Interviews by Aziz, Lee and Prakash:

http://www.amazon.com/Elements-Programming-Interviews-Inside...

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.

Built withby tracyhenry

.

Follow me on