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.3 (107 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
4,896 students enrolled
Take This Course
  • Lectures 63
  • Length 7.5 hours
  • Skill Level Intermediate Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 11/2013 English

Course Description

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


What are the requirements?

  • Experience writing code
  • Some exposure to data structures and algorithms
  • (optional) Whiteboard for realistic practice
  • (optional) Resume to review and modify during the course

What am I going to get from this course?

  • 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

Who is the target audience?

  • 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

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


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

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


  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
Section 1: Bonus: Approaching your Job Search and Applying to Jobs

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!


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.

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
Resume Tips and Tricks
2 pages
Section 2: Getting Ready: Before the Interview

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

How to Choose Practice Problems
Sources of Practice Problems
Just Before your Interview
2 pages
Section 3: During the Interview: Tips and Tricks
Questions to Ask your Interviewer
What can go wrong?
Guest Lecture: Effective Communication
3 pages
Ethics: Seen Question Before?
Section 4: After the Interview: So you got the job...
2 pages
Section 5: Learn to Apply the Practice Problem Formula

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.

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.

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!

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.

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!

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.

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!

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!

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 Solution

Write a function that, given n, returns n!

Try this problem online at HackerRank

Hands-on Problem: Factorial Solutions
Section 6: Bonus Essential Review: Data Structures
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.

Hash Tables: More Questions than Answers!
Hash Tables: Deep Dive
Hash Tables
9 questions
Section 7: Bonus Essential Review: Algorithms
Tree Traversals (the big 3 depth-first)
Breadth-first Search and Traversal
2 pages
Breadth-first Search Practice Problems
1 page
3 questions

Make sure you know your traversals!

Merge Sort
Section 8: Bonus Essential Review: Algorithmic Problem Solving
Recursion Quiz
4 questions
Dynamic Programming
4 pages
Dynamic Programming Practice Problems
2 pages
Bit Manipulation
Bit Manipulation
5 pages
Bit Manipulation Quiz
12 questions
Section 9: Bonus Essential Review: Design Patterns and Architecture
Software Architecture + Design
3 pages
The Singleton
2 pages
Section 10: Bonus Essential Review: Software Concepts
Programming Language Paradigms
4 pages
Programming Language Paradigm Quiz
7 questions
Section 11: Congratulations!

Material Covered:

  • How to solve problems with code
  • Choosing a language
  • Approaching problems, getting un-stuck, fixing solutions' mistakes
  • Soft skills" framework for preparing cover letter and resume, connecting with interviewer, questions to ask during your interview
  • Long-term improvement
  • Negotiating once you've got offers

Additional resources:

  • Coding for Interviews book list
  • Practice problem websites
  • Schedule a time with Brian

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Brian Jordan, Professional Software Engineer, Game and Web Developer

Brian Jordan is a professional software engineer and game developer in San Francisco and founder of Coding for Interviews—the weekly programming practice problem and CS topic overview newsletter.

At PopCap Games in San Francisco, Brian built addictive mobile and web games. At TripAdvisor in Boston, Brian used the power of Java to do important things like censor swear words out of reviews!

Brian has a BSc. in Computer Science from Tufts University. He loves writing and reading clean code, learning obscure vim idioms, and building redstone contraptions in Minecraft.

Brian is so passionate about new developers getting the most out of their career that he volunteers by doing free one-on-one prep sessions. You should sign up for your free one-on-one chat about your prep here.

Ready to start learning?
Take This Course