Link Search Menu Expand Document

Yet another list of Interview Preparation Resources

nafSadh // notes // YaGIP / Reading Log / yalipr

Preparing for software engineering interview needs time, attention and practice; and to help with that, there are many resources sprinkled all over the internet and bookshelves. Some of them are wonderful and some of them are meh. Browsing through these can be overwhelming.

Therefore, I have tried to create a curated list of resources – these are just some of the good options you can chose from. To help you decide on which resource to try, I have annotated each item.
By no means, you have to go through all of it. I do not claim that, these are the best resources out there either; there must be resources I don’t know about which are even better and there might be some resources which I haven’t included but is useful to someone else.

I would suggest you to go through some of the articles and look at some of the study plans. Then pick one learning resource (book/course/lecture series) and one practice resource. It is best to learn something everyday and practice a bit everyday.

Good luck & have fun!

Table of Contents



xkcd 1293

Articles

Here are some insightful articles. All of them are personal takes on interview process and/or how to ace them.

Following articles, are not about how to ace an interview, but these are for the other side of the table; about how to hire a good engineer.

Study Plans and Reading Lists

  • Coding Interview University – this became a wildly popular compendium of resources for self-paced software engineering training. John Washam wanted to gear up himself as a software engineer and embarked on an 8 month long journey towards being an skilled software engineer. This study plan is overly comprehensive and as John mentioned, several times, you do not need to go through everything he went through. My personal recommendation is to go through some of the articles and pick up at least one algorithm book (more on it later) and one coding prep book/website (more on it later as well). This directory lists a lot of good reading material on specific topic collected from various sources; don’t be voracious, eat healthy and read (study) as needed.

  • Ace the coding interview, every time – An Amazon engineer’s take on how not to fail any technical interview.

  • Andyy Hope on software engineering interviews – a recent article outlining how he prepared for and got hired at Facebook.

  • The 30-minute guide to rocking your next coding interview – a recent NUS grad’s reflection on how he prepared for tech interviews. Yangshun Tay now works as a front-end engineer at Facebook. Oh, and this guide comes with a handbook.

  • Sam Gavis-Hughson from Byte by Byte on interviewing resources.

  • The System Design Primer 🌟 - a comprehensive illustrated guide on how to improve your system designing skills, particularly for interview prep. Includes a flow chart of topics to cover, a study guide and then goes into providing brief overview of each topics along with useful references materials. By Donne Martin, Engineering Manager at Facebook.

  • Awesome Scalability“list of readings to illustrate best practices and patterns in building scalable, available, stable, performant, and intelligent large-scale systems.” – Binh Nguyen.

  • System Design Preparation“a collection of links/documents for the following use cases: a) Prepare for a system design or open ended rounds. b) Learn more about how large scale systems work and thought process of designing a new system.” – Shashank Khare.

  • Here is great pinboard containing links to useful resources on system design, curated by Farsan Rashid.

On Books

There are plethora of books on algorithms, problem solving, software engineering and computer science in general. There are also, as many book-lists. One thing, I’d like to mention is that, picking up a good book is important. In many cases people are in a time crunch. So, you want to study a book which you can cover within a limited time; similarly, you would want to learn enough and understand them correctly.

There are people who have studied and compared a good number of books. What they have to say about these books can give you sufficient insight for picking up the right book.

Book List

Following are some books I studied or vetted and are in my to-read list.

See also: r/cscareerquestions/wiki/faq_books

Algorithms and data structures

  • 🚀 Sedgewick – I read his Algorithms in C++ during my freshman and sophomore years and I loved how he handled some very intricate topics. Later on I also looked at the more updated Algorithms 4e in conjunction with his Coursera courses 1, 2. Another book he authored focuses on analysis of algorithms and thus more mathematical in nature.

  • 📜 CLRSIntroduction to Algorithms (3e) by Cormen, Leiserson, Rivest & Stein – this is undoubtedly the most cited algorithm text book. However this is by no means an intro book. A lot of the materials covered here are intended for formal undergrad and grad level algorithm courses. This is one of the best book to study; if you can master this book, you can call yourself a master of algorithms. I specially liked graph related topics here during my sophomore/junior year algorithm class. However, I think this is less accessible for some readers.

  • Skiena – Steven S. Skiena is well known in fields of algorithms, programming challenges and data science. His The Algorithm Design Manual 2e balances between practical applications of algorithms and academic study of it. This book is organized in two parts: (1) text on algorithms and data structures & (2) catalog of algorithms. He resorts to mathematics less often and explains things in detail. This is a nice book to study with and keep as reference material.

  • DPVAlgorithms by Dasgupta, Papadimitriou, and Vazirani. This book’s PDF↗ is officially available for free online. People have mixed opinion about it. IMHO, this is a well balanced and venerable algorithm text. This tends to jump too quickly into mathematics; so if you are not math savvy, then this might seem difficult to you. I haven’t studied the book in depth yet, but one thing I liked about the contents is that, it appears to be industry appropriate. It breaks up algorithms into classes, and teaches you how to recognize what kind of algorithm should be used to solve a particular problem.

Algorithms Refresher

  • Algorithms Unlocked [AU] by Cormen (the C in CLRS) is a nice refresher. This is much thinner than CLRS and is written more as a tradebook than as a text reference.

  • TopCoder Tutorials lists some great articles written by the TopCoder competitive programming community over the years. “They are very informal, which lets them stay short and to the point - a luxury no serious algorithm book can afford. The goal of these tutorials is to refresh your knowledge if you studied these algorithms before, or to give you an initial direction in exploring a particular group of algorithms.” –

  • Software Engineering Interview Preparation – an executive summary of theoretical stuff needed for such interviews. Comes with a tie-in blog post .

Interview Prep Books

  • Virtually everyone is familiar with Cracking the Coding Interview 🌟 [CTCI] by Gayle Laakmann McDowell and probably you would be benefited from it too. Solutions are posted on Github in several languages.

  • Programming Interviews Exposed [PI-Exposed] by John Mongan et al. is a very basic book for people who are totally uninitiated. If CTCI seems difficult for you, you can pick this up to build some foundation.

Design & Development

Video Lectures

There are some really good lectures on fundamentals of computer science and some on interview prep.

Online Learning Resources

MOOCs on Algorithm, Data Structures etc.

Interview Prep Courses

  • Udemy Technical Interview – “This course provides an introduction to topics that often show up on technical interviews.” Also check out their other courses about career in software engineering.

  • 💎 InterviewBit has six tracks: Programming, System Design, Scripting, Databases, Mock Interviews and Puzzles. Their courses are, in a nutshell, genius. It is organized as gamified levels. Each level has some tutorials and then relevant problems/challenges. You have to achieve certain score to unlock next level. This, imho, is very affective. You can learn fundamentals of comp-sci and solve interview style problems side-by-side in a well structured plan.

  • Interview Camp – created by Harsh Goel, who worked for NetApp, Google and sold his Pext app to Pinterest. From the looks of it, this seems to be a good camp; but this is paid content and I haven’t purchased it yet.

  • Interview Cake – this is money-back guarantee freemium interactive course. The reading materials are free, but interactive problem solving steps are not.

  • Hired in Tech – Algorithm design

Design & Development

  • Software Development Process on Udacity, in collaboration with GATech; also part of Georgia Tech’s Online Masters Degree (OMS) as CS6300. Lead by Alex Orso.

  • UIUC offers a Cloud Computing specialization on Coursera. It has 5 courses, 2 on cloud computing concepts, 2 on applications of it, 1 on cloud network and one capstone project. Looks interesting. A more succinct course could be better, but this offers more up to date understanding of this now growing field.

Coding Practice

Best way to sharpen your algorithm and problem solving skills is by engaging in competitive programming. But if ACM, TopCoder or Codeforces are not your cups of tea, then you can resort to one of the following:

  • LeetCode – This site originally hosted some two-three hundred programming interview problems. It is run by Winston Tang, an engineer at Google, Amazon and Intel. Recently he started working full time on LeetCode and since, the problem archive has grew to about a thousand. It now also organizes contests regularly, resulting in the surge of problems. First two-three hundred problems cover a wide range of everything; so you do not have to solve all 900 of them. Also, a good thing about this site is that, with premium subscription, you can filter problems by company tags. So, if you are preparing for a particular company, you can review their trend.
    • My personal suggestion is to, solve a few problems everyday and not to exhaust yourself. They also have a revisit and favorite list. You should definitely utilize these. Also, session is a nice feature.
  • HackerRank evolved from InterviewStreet. It originally provided a tool for companies to arrange online coding tests. Later, they started HackerRank for programmers to practice and solve coding problems. Their problem set ranges nicely from ACM/TopCoder style competitive programming problems to technical interview focused problems.
  • InterviewBit – organizes contests, collaborates with software companies and has some wonderful prep courses.

  • GeeksforGeeks – it has a lot of articles, some are really good while some are meh. So use with caution. I have found a lot of their explanations to be spot on and very useful in understanding difficult problems.


xkcd 1185

Mock Interview

Doing some mock interview is a good idea. Specially, if you can get feedback.

  • interviewing.io - anonymous interview with potential employers. Interviews are conducted by engineers from companies that are actually hiring; after a successful interview the company may ask you to unmusk if they want to bring in for on-site.

  • Pramp “is a FREE, online peer-2-peer platform for practicing technical interviews.” It matches you with other engineers for doing 1-on-1 video sessions.

Cheat sheets

On Résumé

Soft Skills

Official Guides

Software industry is probably that odd industry where they reveal all secrets about their interview process. Most large companies have standardized their interview process so much so that, and they want interviewees to succeed so much that they actively generate and provide prep materials.

Facebook

Google

Medium

Palantir

Bookmarks

  • http://bigocheatsheet.com/
  • https://www.youtube.com/watch?v=PJKYqLP6MRE
  • https://codelab.interviewbit.com/dashboard/
  • https://techdevguide.withgoogle.com/paths/advanced/

From Reddit

  • https://www.reddit.com/r/cscareerquestions/comments/n5spv/getting_a_job_in_software_development_a_reddit/
  • https://www.reddit.com/r/cscareerquestions/comments/1jov24/heres_how_to_prepare_for_tech_interviews/

Even if you are not interviewing

Since you are here, and I got you reading this far, I am going to share some of my favorite resources. These do not directly help you in acing your technical interview but they are really useful to software engineers in general.

  • Write Code Every Day – how John Resig, creator of jQuery picked up pace for his pet project(s).

  • Programming Pearls (2e) by Jon Bentley – some time tested articles originally published on CACM.

  • Joel on Software [JoS] – Joel Spolsky, the guy behind StackOverflow, Trello, FogCreek and other wonderful things, posts read-worthy articles here.

  • Project Euler – a collection of mathematical problems for which answers can be found using computer programs.

Job Channels

I found the following channels to be a good source for job search:

  • Triplebyte – Triplebyte is a platform which makes finding new opportunities and hiring great talent - both easier. First anyone can take their online quiz. This is a comprehensive quiz covering various topics a generalist software engineer is expected to know. Don’t worry, none of these are tricky or arcane. If you pass this quiz you are invited to schedule a 2hr Skype interview. You’d be provided enough prep material for those. Once you pass this step, you’ld be matched with upto 200 potential companies based on your skills and interests. They’d also send you some really nice swag (I got an wireless charger and a nice jacket). Their portfolio includes a lot of top tier companies. Once you match with some companies, they’d give you pitch calls to tell you about their job opportunities. Then you are expected to set up 3-5 on-site interviews. They’d arrange them in a way so that you can just travel once and be done with it. There have been historically a 50% on-site to offer rate. So, if you go for 5 on-sites you’d easily get 2-3 offers to chose from. One thing great about this service is that, they eliminate the messy sourcing and phone screening steps. Another great thing is that, you can arrange your interviews together making it easy to secure multiple offers in a short window. On top of all that, Triplebyte will give you three grands if you accept and offer through them.

  • Hired.com – After you sign up with them, they’d review your profile and one hiring advocate may have a phone chat with you to better understand your profile and career goal. They usually focus on candidates in (located at or willing to relocated to) major US tech hubs such as SF Bay Area, NYC etc. They advise on your career progression and once you are ready your profile would go live for 1-2 weeks. Going live means, your profile will be advertised to a pool of potential employers who in turn will contact with you about potential opportunities. I found Hired.com to be very useful. On top of hooking up to a lot of good employers, you’d get a cash bonus if you get hired through them.

not so random though



2018-2019 © nafSadh
Maintained on GitHub by nafSadh.
Please report issues and add suggestions here.