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
wikwocketonJune 23, 2014
Also, check out this classic post on the topic:
http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog...
torbjornonJune 17, 2018
lostphdonJan 22, 2015
robertbalentonDec 15, 2020
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
obstacle1onJune 25, 2014
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
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
sungrionMay 4, 2021
GrumpyYoungManonMar 6, 2017
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
=====
Books
=====
========
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
gaylemcdonSep 9, 2014
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
thewarrioronMar 2, 2020
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
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
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
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
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
stack_underflowonSep 20, 2020
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
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
tedunangstonSep 9, 2014
"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
cunninghamdonFeb 13, 2015
McDowell's The Google Resume also has some useful tidbits in it.
brad0onSep 18, 2017
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
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
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
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.
atilimcetinonSep 27, 2017
-
Convert a sorted doubly linked list into a BST
C++: http://elementsofprogramminginterviews.com/solutions/cpp/sor...
Java: http://elementsofprogramminginterviews.com/solutions/java/So...
Python: http://elementsofprogramminginterviews.com/solutions/python/...
-
Convert a BST to a sorted doubly linked list
C++: http://elementsofprogramminginterviews.com/solutions/cpp/bst...
Java: http://elementsofprogramminginterviews.com/solutions/java/BS...
Python: http://elementsofprogramminginterviews.com/solutions/python/...