Ace Your Coding Interview & Land Your Dream Programming Job
4.2 (144 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
5,010 students enrolled

Ace Your Coding Interview & Land Your Dream Programming Job

Prepare for your next code interviews to get the job of your dreams. Review essential data structures, algorithms, etc!
4.2 (144 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
5,010 students enrolled
Created by Brian Jordan
Last updated 11/2015
English [Auto]
Price: $19.99
30-Day Money-Back Guarantee
This course includes
  • 6 hours on-demand video
  • 12 articles
  • 33 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • By the end of the course, you will be able to find and secure a great programming job
  • In this course, you will learn the data structures, algorithms and design patterns interviewers test candidates on in interviews
  • You will prepare for your interviews by doing real code problems asked at Google, Microsoft and Amazon
Course content
Expand all 63 lectures 07:27:20
+ What You'll Learn
3 lectures 14:48
What You’ll Learn
Solving problems with code at your interview
  1. Choosing and sticking to a language for your interviews
  2. Approaching problems smartly
  3. Communicating with your interviewer
  4. Strategies for getting un-stuck when you don’t see a clear solution
  5. Fixing mistakes in your solution before your interviewer does
  6. Handling design problems
  7. Reviewing and understanding key concepts, algorithms, data structures
    1. From hash tables to dynamic programming to even bit manipulation
Soft skills of code interviews
  1. Writing cover letters and preparing your resume
  2. Avoiding common interview mistakes
  3. How to dress
  4. How to connect with your interviewers
  5. Questions for YOU to ask your interviewers
Strategies for long-term continuous improvement
  1. Getting deeper in to the programming community
  2. Seeking out new job opportunities
  3. Getting the most out of your internships and jobs
  4. Establishing an online presence
What You'll Learn

Preparation Mindset

Preparing for code interviews can be painful, stressful, time consuming and energy draining.

But it’s so important.

Dan Blumenthal, Dir. Engineering at TripAdvisor puts it well:

Whether through arrogance (“I’m awesome, and don’t need to prepare”), fatalism (“there’s nothing I can do to prepare”), or ignorance (“preparing is an option?”), virtually no one does a thing to stack the odds in their favor during one of the most important inflection points in their career. Your job will likely determine where you live. If you get an offer with a low starting salary, it could take years to catch up to a higher one (if at all).

“So before you even start practicing, you've gotta just view these interviews as yet another standardized test, another game that you need to play well and beat.” - Philip Guo, CS Professor at University of Rochester (post)

“Don't whine and think to yourself, ‘but I'll never have to manually reverse a linked list in my job, so these questions are lame!’”

“You should plan on working 60 hours per week. The first 40 are for your employer. The remaining 20 are for you. During this remaining 20 hours you should be reading, practicing, learning, and otherwise enhancing your career." - “Uncle” Bob Martin, author of Clean Code


  1. Take your preparation seriously and invest in it
  2. Have a positive attitude and focus on preparing, not on complaining
  3. Practice in small chunks so you don’t burn out
The Preparation Mindset


  1. Practice a ton of problems: code code code
  2. Code at a whiteboard
  3. Practice writing REAL code—and compile it
  4. Do more real interviews, ending with your favorite company

More Resources

  1. Preparing for a software engineering interview by veteran ex-Googler Niniane Wang
  2. Coding Interview Tips from Parker Phinney of InterviewCake
  3. How to prepare for technical interviews by Dan Blumenthal, Director of Engineering at TripAdvisor
  4. How to be a star, great essay on long-term personal software engineering development by Dan Blumenthal
  5. What recruiters look for in a resume, also a good essay on long-term development from the perspective of when a recruiter looks at your resume years down the line
How to Approach your Preparation
+ Bonus: Approaching your Job Search and Applying to Jobs
5 lectures 16:33

Create a portfolio website with: a list of projects, your resume, and a photo of your beautiful mug.

Use Github Pages (Octopress/Jekyll) or Wordpress for your site, consider a custom domain.

Start blogging—write about your interview prep, practice problems you do, notes from courses. Host on your site or CoderWall.

Write guest blog posts for fellow code interviewers!

Your Personal Website

Hands-on To Dos:

Get a GitHub account and push something there. Some ideas: Code interview solution code, even snowboarding videos.

Get and update your LinkedIn: list jobs, connect with coworkers, update to a nice photo, ask for recommendations.

(Optional) Get an account on StackOverflow: ask and answer some questions.

Beware of tweets: Be sure you keep your tweets professional or keep separate personal (#yolo) / professional (#knuthswag) accounts—and link to the professional one from your portfolio/LinkedIn.

Your Online Presence
Finding Jobs
2 pages
  1. Cover letters are important
  2. Research the company you're applying to
  3. Use the standard structure for your letter
    1. Paragraph 1: Introduction
    2. Paragraph 2-3: Why you're a good fit
    3. Paragraph 4: Closing, call-to-action
  4. Have someone review your letter
How to Write Cover Letters
Resume Tips and Tricks
2 pages
+ Getting Ready: Before the Interview
4 lectures 25:32

Topics covered:

1. Choosing the language—choose what you're comfortable with, lean towards language used at company

2. Once you've chosen—practice with that language—and only that language!

Solid choices: Java, C / C++ / C#, Python, Javascript, even Ruby

Company leanings:

Facebook: PHP

Google: C/C++, Java, Python Javascript

Amazon: mostly Java, Javascript, tiny bit of Ruby

Preview 07:51
How to Choose Practice Problems
Sources of Practice Problems
Just Before your Interview
2 pages
+ During the Interview: Tips and Tricks
4 lectures 11:53
Questions to Ask your Interviewer
What can go wrong?
Guest Lecture: Effective Communication
3 pages
Ethics: Seen Question Before?
+ Learn to Apply the Practice Problem Formula
22 lectures 04:19:28

In this lecture, I cover the 7 essential steps to approaching a problem, finding a solution—and coding it up without making any embarrassing, avoidable mistakes.

The 7 Essential Steps to Acing a Problem
Applying the Problem Solving Formula: Queue with Two Stacks

Practice problem: given a linked list, return that linked list with the order of all nodes reversed.

Submit your solutions as a Pull Request in the CFI repository here.

Applying the Problem Solving Formula: Reverse a Linked List
Code Solution Review: Reverse a Linked List

Write a function which, given a linked list, returns whether that linked list contains a cycle.

E.g., given the following linked list, your function will say "yes, this contains a cycle".

                E             /  ^           v    | A -> B -> C -> D  

That is, where traversing would result in C -> D -> E -> C -> D -> E

Have a great solution and know how to use GitHub? Submit it as a Pull Request to our GitHub repository!

Applying the Problem Solving Formula: Linked List Has Cycle
Code Solution Review: Linked List Has Cycle
Applying the Problem Solving Formula: Uncoupled Integer
Code Solution Review: Uncoupled Integer

For this question, you will parse a string to determine if it contains only "balanced delimiters."

A balanced delimiter starts with an opening character ((, [, {), ends with a matching closing character (), ], }respectively), and has only other matching delimiters in between. A balanced delimiter may contain any number of balanced delimiters.

Want to share your wonderful, fantastic solution, and maybe end up in the interview response hall of fame?! Submit a pull request to the course's GitHub repository here.

Applying the Problem Solving Formula: Balanced Delimiters
Code Solution Review: Balanced Delimiters

Given an array of integers and a target integer sum, return whether there exist a pair of integers in the array which add up to sum.

See if you can come up with an O(n^2) solution first. Then—can you come up with an O(n log n) one?

Playing along? Submit your solution to the course's practice problem repository!

Applying the Problem Solving Formula: Target Sum
Code Solution Review: Target Sum

Implement a stack which keeps track of its minimum value.

Challenge: can you keep the operation time complexity to O(1)?

Hint: Try using some extra space. What data structure might work for keeping track of minimums?

If you're feeling saucy, submit your wonderful solutions as a pull request to the course practice problem repository.

Applying the Problem Solving Formula: Minimum Stack
Code Solution Review: Minimum Stack

Given a binary search tree, return its height—that is, the maximum depth reached by the tree.

Example: given a BST with a single node, your function would return 0.

Given a linear BST with only right side nodes 0 -> 1 -> 2 -> (null), where 2 is the tail, your function would return a max height of 2.

Hint: BSTs are a recursively defined data structure.

Hint #2: which tree traversal method covered in the traversal lecture might come in handy here?

Awesome solution? You know it! Submit to the class problem solution repository here. Join the Hall of Solution Fame!

Applying the Problem Solving Formula: BST Height
Code Solution Review: BST Height

Given a binary search tree root, count the total number of nodes in the tree.

Of course, you're completely free to submit your awesome code solutions to share with the class!

Applying the Problem Solving Formula: BST Count
Code Solution Review: BST Count

Try the problem called "offensive", "an insult to my dignity", and "a must-ask"—here on HackerRank:

Hands-on Problem: FizzBuzz Question
Hands-on Problem: FizzBuzz Solution
Hands-on Problem: Factorial Solutions
+ Bonus Essential Review: Data Structures
9 lectures 37:53
Linked Lists
3 pages
Array Practice Problems
1 page
Binary Search Tree
Tries (prefix trees)

In this lecture we talk about why reviewing hash tables is important, reading quotes from Dan Blumenthal of TripAdvisor, Steve Yegge from Amazon/Google, and Cracking the Coding Interview.

Preview 02:32
Hash Tables
9 questions
+ Bonus Essential Review: Algorithms
5 lectures 09:47
Tree Traversals (the big 3 depth-first)
Breadth-first Search and Traversal
2 pages
Breadth-first Search Practice Problems
1 page

Make sure you know your traversals!

BFS / DFS quiz
3 questions
Merge Sort
+ Bonus Essential Review: Algorithmic Problem Solving
4 lectures 15:17
Recursion Quiz
4 questions
Dynamic Programming
4 pages
Dynamic Programming Practice Problems
2 pages
Bit Manipulation Quiz
12 questions
+ Bonus Essential Review: Design Patterns and Architecture
3 lectures 04:41
Software Architecture + Design
3 pages
The Singleton
2 pages
  • Experience writing code
  • Some exposure to data structures and algorithms
  • (optional) Whiteboard for realistic practice
  • (optional) Resume to review and modify during the course

NEW: 75% off (normally $199) to celebrate fresh new practice problems being added!

Ace your next code interview to land that dream programming job...

  1. Even if you've never written code at a whiteboard
  2. Even if you've never aced an algorithms or data structures course
  3. Even if you don't plan to job search for a year, or even two
  4. Even if you've never built a portfolio site or contributed to an open source project

Want to work at your dream company, like Google, Amazon, Microsoft, or Facebook, but worried that you might choke on the code interview?

No matter how well you know your stuff, when the time comes the last thing you want to do is experience the Whiteboard Freeze!

Whether you are a master programmer wanting to really shine while exuding confidence during an interview, or there are some holes in your coding skills that you want to fix to make sure you nail the interview, this course has got you covered.

"Brian provided me with useful guidelines on my resume. As a software engineer, he definitely knows how to emphasize one's strengths." - Miao-chen Chou, got a job at Google

I will teach you the exact approach that:

    - I taught at a "Hacking a Google Interview" 2 day workshop at MIT

    - Significantly increases your success rate of a coding interview

    - Has landed several people I have advised jobs at companies like Google

    - Has secured me offers at Amazon, TripAdvisor, PopCap, and more

“He gave me great tips for preparing for my upcoming interview, sent me very useful links and was even willing to help me with connections to future job opportunities.” -Agatha Man, subsequently hired by Google

This course is one of the best things you can do to prepare for your coding interview, because it teaches you how to prep for a real-world programming interview, covering everything from preparing your application to acing your final round of interviews at the whiteboard.

Specifically, you will learn:

  1. What a typical programming interview consists of, and exactly how to prepare for it
  2. Learn a special step-by-step pattern for approaching tough questions
  3. How to use a series of tools to get un-stuck when you inevitably hit a wall on a tough question
  4. How to negotiate a 10%+ salary increase (and much more when you have multiple good offers)

"Brian helped me realize my weaknesses and suggested how to address them. It was wonderful" - Parameswaran

I guarantee you will feel prepared for your code interview after taking this class, or I will personally refund you.

I just ask that you share your successes with the other students when you succeed!

Enroll today and I will see you inside


Who this course is for:
  • Anyone applying to Google, Facebook, Amazon, Microsoft or other tech companies with a high bar of admission
  • Intermediate programmers looking for a programming job
  • Coding product managers whose interviews will include programming problems