Saturday, December 12, 2015

Filled Under: , , , , , ,

Study Guides for your Next Technical Interview

Big-Oh Computer Science English Interviews Java Programming Study
I get commissions for purchases made through some links in this post. The recommendations are my own, and are not sponsored (*).

Over the last couple of years, I have been creating some Interview Study Guides that have helped both improve my coding/technical skills and prepare for interviews in top tech companies. Since I believe these guides might be useful for others I have decided to publish them.

All the guides are free and released under CC-Attribution-ShareAlike License.

All the guides are a work in progress and open for improvements. You can download all the guides from here.

NEW: if you prefer video over text, then don't miss my Youtube Playlist "Before the technical interview" where I cover all the topics presented on these guides (and many others).

Below is a brief summary of each of the guides.

Computer Science Fundamentals

As the name implies, this guide provides a summary of Computer Science Fundamentals, including:
  • Data Structures
  • Algorithms
  • Complexity Analysis
  • Mathematics and Probability
  • Regular Expressions
  • Threads and Locks
The sources range from online resources like Wikipedia, GeeksForGeeks and StackOverflow to formal books including (*):

I find it useful to quickly review different algorithms and as cheatsheet for different CS courses, and most of the interviews at Google, Facebook, LinkedIn, Amazon, and other big tech companies, will make a big emphasis on these topics.

You can download this guide clicking here.

This guide will help you have the concept to solve typical problems like Finding the largest BST in a tree.

Software Development and Architecture

This guide compiles higher level topics like:
  • Object Oriented Design
  • Service Oriented Architectures (SOAP and REST)
  • Scalability and Networking
  • Front End Development
    • How do browsers work
    • How to speed up websites
    • ...and more!
  • Frameworks (specifically Spring)
  • Databases
This guide is a bit less polished than CS Fundamentals, but also includes a wide range of sources from different websites and books including (*):

You can download this guide clicking here.

Code Snippets

This guide is the shortest. It includes short descriptions and code snippets from programming languages I have had some experience with (even if only during a course in college). The code snippets are commented with syntax explanation. The languages in the guide include:
  • Ruby
  • Javascript
  • PHP
  • Prolog
  • Haskell
  • C/C++
You can download this guide clicking here.

Additional Resources

There are a lot of free resources on the Internet you can learn from:


I (Christian Vielma) have personally created these guides for personal use, to be used as a reference for technical interviews, work, and study. Since I believe these documents might provide value to others, I have decided to make them public.

Most of the contents on these documents have been added from different sources, from freely available resources on the Internet, to books, with additional added content from me. I made my best effort to provide full credit to the original sources, and in no way I'm trying to take advantage of improper quotations. If you believe I have made an invalid reference to a resource, please let me know and I'll fix it.

I provide these guides as-is, with no additional guarantees. I'm also releasing it under CC-Atribution-ShareAlike License, so you are free to extend it and update it with proper attribution.


(*) Disclaimer 2:
As an Amazon Associate I earn from qualifying purchases. Links referring to Amazon are still books that I personally recommend (not sponsored) but I might receive money based on clicks  or purchases. There might also be some ads on the sides or between posts are those are placed by Google based on their recommendations (not endorsed by me).



I'm a software developer, with main interest in SOA, Web and Mobile applications design and development. I'm also interested in Travel, Politics, Photography and Volunteering.

"We are what we repeatedly do.Excellence, then, is not an act, but a habit." (Aristotle) is my motto .


  1. Thank you for creating this information.

  2. I have revived call for Onsite interview !

    How can i prepare myslef ?

    I had applied for Dev-Ops(linux) Position

    1. That's great! I would still recommend exercises from the Cracking the Coding Interview or similar. It's better to cover all the areas you can, but if you have to focus, aim for:
      - Trees
      - Recursion
      - Sort, search and tree/graph traversal algorithms
      - OO Design
      - Scalability

      Good luck!

  3. Hello,
    Thank you very much for the useful guide! I have my first phone interview with Amazon for Sr. Data Scientist position next week. The questions that you provided doesn't seem to apply to this. Will I be ask technical or more like conceptual questions? Many thanks!

    Best Regards,

    1. Hi Bao! Well, I'm not sure about the questions related to Sr. Data Scientist (this post is mostly for SDE roles), or if they will request some programming skills (which I think they will). On the phone screen they will usually try to test your technical skills and maybe some behavioral questions, but that's secondary. Each interviewer may have their style, but basically I would focus on the following:
      - Determine what are the technical topics expected on your area (ie: prepare on the topics in the job description + your strong points in your resume).
      - When you get asked some difficult questions try to talk out loud your approach(es), and state your assumptions. Don't go directly for the solution (even more in a senior position, you are expected to clarify things), but ask questions about it to clarify.

      Finally, have fun in the interview. I have discovered that I have learned a lot from interviewing at big companies like Amazon, if you can't come to the solution to the main problem, write it down, and look for it later. It is also a good opportunity to ask the interviewer something you might be curious about the company, technologies or approaches.

      Good luck!

  4. This comment has been removed by a blog administrator.

  5. Thank you so much for writing and preparing the material, I will definitely go through it. I have given first round of coding interview with Amazone India for SDE1, and one coding and two design rounds are left. Could you please suggest me: 1st- does your material covers(almost) all the topics for SD1, 2nd> Till what depth they can expect solutions of design problems, and what would be the focus in them, 3rd> Can you please give me a sample of leadership related questions(behavioural)?

    Thank you so much!

    1. Sure! I'm glad you liked it!

      1) Yes, it covers all the topics for SDE1 and a bit more (it's unlikely that someone will ask you complex graph/probability algorithmic questions). The most specialized book that I took as reference when was preparing for the tests was "Cracking the coding interview". I took most of the topics from there and expanded with my own material when I was studying. Basically SDE1-2 have the same questions, it's mostly how much of uncertainty that they give you, and as more experimented you are, you'll probably be able to avoid more pitfalls.

      2) Design problems are usually open ended. There's no right solution or expected depth. It's mostly to see how you argue and how well thought are your solutions. How you react if they contradict you. My recommendation is to talk about different approaches, enumerate them and start looking for pros/cons, ask for use cases, needs, and start discarding some of the options. My best tip would be to think of it as an actual job, a regular meeting with a colleague where you are trying to meet the client's needs. Both of you will be able to know if you'd like to work in a team after this kind of interview. I actually think that these are good questions to get to know the candidate.

      3) Behavioral questions: questions about how you show (or not) the company values, by asking about previous experiences. Something like:
      - Tell me about a time you went beyond the requirements.
      - Tell me about a time when you couldn't deliver, what did you do about it?
      - Tell me about a time you made a huge mistake. What did you learn from it?
      Try to have 2-3 good examples of past experiences (personal or work related) where you can showcase most of your abilities. For example: if you are analytical and proactive, but also good addressing conflicts, try to have examples where you can show them. Don't focus only on analytical or conflicts.
      You can download the Behavioral Preparation Grid from here: to prepare better. Also, don't forget to check to read other candidates experiences.

      Good luck!

  6. Sorry, but the Dropbox link does not work!

    1. It does. You are missing to click download.

  7. Thank you very very much for your efforts , am preparing now for Amazon interview soon and I found your blog very useful. It's in my browser Favorites bar now :)

  8. Thank you so much for writing and preparing the material, I will definitely go through it

  9. Great blog. It is difficult to crack programming interviews. Thank you for sharing these resources to learn core concepts of Computer Science and books and courses like Cracking the coding interview can be immensely helpful when preparing for programming interviews.



Copyright © Librethinking.
Designed by Templateism. Hosted on Blogger Platform.