Master the Coding Interview: Data Structures + Algorithms free download by

Ultimate coding interview bootcamp. Get more job offers, negotiate a raise: Everything you need to get the job you want!

## Requirements

- No experience with data structures or algorithms needed
- Basic understanding of one programming language
- No previous computer science knowledge necessary

## Description

**Updated for the 2023 hiring season! Join a live online community of over 900,000+ developers and a course taught by an industry expert that has actually worked both in Silicon Valley and Toronto as a senior developer. Graduates of this course are now working at Google, Tesla, Amazon, Apple, IBM, JP Morgan, Meta + other top tech companies.**

Want to land a job at a great tech company like Google, Microsoft, Meta, Netflix, Amazon, or other companies but you are intimidated by the interview process and the coding questions? Do you find yourself feeling like you get "stuck" every time you get asked a coding question? This course is your answer. Using the strategies, lessons, and exercises in this course, you will learn how to land offers from all sorts of companies.

Many developers who are "self taught", feel that one of the main disadvantages they face compared to college educated graduates in computer science is the fact that they don't have knowledge about algorithms, data structures and the notorious Big-O Notation. Get on the same level as someone with computer science degree by learning the fundamental building blocks of computer science which will give you a big boost during interviews. **You will also get access to our private online chat community with thousands of developers online to help you get through the course.**

Here is what you will learn in this course:

**Technical:**

**1. Big O notation**

2. Data structures:

* Arrays

* Hash Tables

* Singly Linked Lists

* Doubly Linked Lists

* Queues

* Stacks

* Trees (BST, AVL Trees, Red Black Trees, Binary Heaps)

* Tries

* Graphs

3. Algorithms:

* Recursion

* Sorting

* Searching

* Tree Traversal

* Breadth First Search

* Depth First Search

* Dynamic Programming

Non Technical:

**- How to get more interviews- What to do during interviews- What do do after the interview- How to answer interview questions- How to handle offers- How to negotiate your salary- How to get a raise**

Unlike most instructors, I am not a marketer or a salesperson. I am a senior developer and programmer who has worked and managed teams of engineers and have been in these interviews both as an interviewee as well as the interviewer.

My job as an instructor will be successful if I am able to help you become better at interviewing and land more jobs. This one skill can really change the course of your career and I hope you sign up today to see what it can do for your career!

**Taught by:**

Andrei is the instructor of the **highest rated Web Development course on Udemy as well as one of the fastest growing. **His graduates have moved on to work for some of the biggest tech companies around the world like Apple, Google, JP Morgan, IBM, etc... He has been working as a senior software developer in Silicon Valley and Toronto for many years, and is now taking all that he has learned, to teach programming skills and to help you discover the amazing career opportunities that being a developer allows in life.

Having been a self taught programmer, he understands that there is an overwhelming number of online courses, tutorials and books that are overly verbose and inadequate at teaching proper skills. Most people feel paralyzed and don't know where to start when learning a complex subject matter, or even worse, most people don't have $20,000 to spend on a coding bootcamp. **Programming skills should be affordable and open to all. An education material should teach real life skills that are current and they should not waste a student's valuable time.** Having learned important lessons from working for Fortune 500 companies, tech startups, to even founding his own business, he is now dedicating 100% of his time to teaching others valuable software development skills in order to take control of their life and work in an exciting industry with infinite possibilities.

Andrei promises you that there are no other courses out there as comprehensive and as well explained. **He believes that in order to learn anything of value, you need to start with the foundation and develop the roots of the tree. Only from there will you be able to learn concepts and specific skills(leaves) that connect to the foundation. Learning becomes exponential when structured in this way.**

Taking his experience in educational psychology and coding, Andrei's courses will take you on an understanding of complex subjects that you never thought would be possible.

**See you inside the courses!**

## Who this course is for:

- Any engineer, developer, programmer, who wants to improve their interviewing skills
- Anyone interested in improving their whiteboard coding skills
- Anyone who wants to become a better developer
- Any self taught programmer who missed out on a computer science degree

### Curriculum

- 22 Sections
- 262 Lessons
- 0 Quizzes
- 19h 45m Duration

##### Introduction

- How To Succeed In This Course
- Join Our Online Classroom!
- Exercise: Meet Your Classmates and Instructor
- ZTM Resources
- Monthly Coding Challenges, Free Resources and Guides

##### Getting More Interviews

- Section Overview
- Resume
- Exercise: Resume Walkthrough
- Resume Review
- Resources: Resume Templates
- What If I Don't Have Enough Experience?
- Optional Exercise: Github Master
- Optional: Exercise: Github README
- LinkedIn
- Optional Exercise: LinkedIn Endorsements
- Portfolio
- Resources: Free Portfolio Templates
- Email
- Resources: Email
- Where To Find Jobs?
- Resources: Where To Find Jobs?
- When Should You Start Applying?
- Section Summary
- Monthly Industry Updates

##### Big O

- Python, Java, C/C++, C#, Golang, Swift, Kotlin, TypeScript, Scala, Perl Code
- Setting Up Your Environment
- Section Overview
- Big O Cheatsheet
- What is Good Code?
- Big O and Scalability
- O(n)
- O(1)
- Exercise: Big O Calculation
- Solution: Big O Calculation
- Exercise: Big O Calculation 2
- Solution: Big O Calculation 2
- Simplifying Big O
- Big O Rule 1
- Big O Rule 2
- Big O Rule 3
- O(n^2)
- Big O Rule 4
- Big O Cheat Sheet
- What Does This All Mean?
- O(n!)
- 3 Pillars Of Programming
- Space Complexity
- Exercise: Space Complexity
- Exercise: Twitter
- Optional: Javascript Loops
- Section Summary

##### How To Solve Coding Problems

- Section Overview
- What Are Companies Looking For?
- What We Need For Coding Interviews
- Exercise: Google Interview
- Exercise: Interview Question
- Exercise: Interview Question 2
- Review Google Interview
- Optional Exercise: Google Interview On Your Own
- Section Summary

##### Data Structures: Introduction

- Section Overview
- What Is A Data Structure?
- How Computers Store Data
- Data Structures In Different Languages
- Operations On Data Structures

##### Data Structures: Arrays

- Arrays Introduction
- Static vs Dynamic Arrays
- Quick Note: Upcoming Video
- Optional: Classes In Javascript
- Implementing An Array
- Strings and Arrays
- Exercise: Reverse A String
- Solution: Reverse A String
- Exercise: Merge Sorted Arrays
- Solution: Merge Sorted Arrays
- Interview Questions: Arrays
- Arrays Review

##### Data Structures: Hash Tables

- Hash Tables Introduction
- Hash Function
- Hash Collisions
- Exercise: Implement A Hash Table
- Solution: Implement A Hash Table
- keys()
- Extra: keys() Without Collision
- Hash Tables VS Arrays
- Exercise: First Recurring Character
- Solution: First Recurring Character
- Interesting Tidbit: Python Dictionaries
- Hash Tables Review

##### Data Structures: Linked Lists

- Linked Lists Introduction
- What Is A Linked List?
- Exercise: Imposter Syndrome
- Exercise: Why Linked Lists?
- Solution: Why Linked Lists?
- What Is A Pointer?
- Our First Linked List
- Solution: append()
- Solution: prepend()
- Node Class
- insert()
- Quick Note: Upcoming Video
- Solution: remove()
- Doubly Linked Lists
- Exercise: Doubly Linked Lists
- Solution: Doubly Linked Lists
- Singly VS Doubly Linked Lists
- Exercise: reverse()
- Solution: reverse()
- Linked Lists Review

##### Data Structures: Stacks + Queues

- Stacks + Queues Introduction
- Stacks
- Queues
- Exercise: Stacks VS Queues
- Solution: Stacks VS Queues
- Quick Note: Upcoming Video
- Exercise: Stack Implementation (Linked Lists)
- Solution: Stack Implementation (Linked Lists)
- Exercise: Stack Implementation (Array)
- Solution: Stack Implementation (Array)
- Exercise: Queue Implementation
- Solution: Queue Implementation
- Queues Using Stacks
- Stacks + Queues Review

##### Data Structures: Trees

- Trees Introduction
- Binary Trees
- O(log n)
- Binary Search Trees
- Balanced VS Unbalanced BST
- BST Pros and Cons
- Exercise: Binary Search Tree
- Solution: insert()
- Solution: lookup()
- Extra Exercise: remove()
- Solution: remove()
- AVL Trees + Red Black Trees
- Resources: AVL Trees + Red Black Trees
- Binary Heaps
- Quick Note on Heaps
- Priority Queue
- Trie
- Tree Review

##### Data Structures: Graphs

- Graphs Introduction
- Types Of Graphs
- Exercise: Guess The Graph
- Graph Data
- Exercise: Graph Implementation
- Solution: Graph Implementation
- Graphs Review
- Data Structures Review
- What Else Is Coming Up?

##### Algorithms: Recursion

- Introduction to Algorithms
- Recursion Introduction
- Stack Overflow
- Anatomy Of Recursion
- Exercise: Factorial
- Solution: Factorial
- Exercise: Fibonacci
- Solution: Fibonacci
- Recursive VS Iterative
- When To Use Recursion
- Exercise: Reverse String With Recursion
- Recursion Review

##### Algorithms: Sorting

- Sorting Introduction
- The Issue With sort()
- Sorting Algorithms
- Bubble Sort
- Exercise: Bubble Sort
- Solution: Bubble Sort
- Selection Sort
- Exercise: Selection Sort
- Solution: Selection Sort
- Dancing Algorithms
- Insertion Sort
- Exercise: Insertion Sort
- Solution: Insertion Sort
- Merge Sort and O(n log n)
- Exercise: Merge Sort
- Solution: Merge Sort
- Stable VS Unstable Algorithms
- Quick Sort
- Optional Exercise: Quick Sort
- Which Sort Is Best?
- Resources: Heap Sort
- Radix Sort + Counting Sort
- Resources: Radix Sort + Counting Sort
- Exercise: Sorting Interview
- Solution: Sorting Interview
- Sorting In Your Language
- Sorting Review

##### Algorithms: Searching + BFS + DFS

- Searching + Traversal Introduction
- Linear Search
- Binary Search
- Graph + Tree Traversals
- BFS Introduction
- DFS Introduction
- BFS vs DFS
- Resources: BFS vs DFS
- Exercise: BFS vs DFS
- Solution: BFS vs DFS
- breadthFirstSearch()
- breadthFirstSearchRecursive()
- PreOrder, InOrder, PostOrder
- depthFirstSearch()
- Optional Exercise: Validate A BST
- Graph Traversals
- BFS in Graphs
- DFS in Graphs
- Dijkstra + Bellman-Ford Algorithms
- Searching + Traversal Review

##### Algorithms: Dynamic Programming

- Dynamic Programming Introduction
- Memoization 1
- Memoization 2
- Fibonacci and Dynamic Programming
- Dynamic Programming
- Implementing Dynamic Programming
- Interview Questions: Dynamic Programming
- Dynamic Programming Review

##### Non Technical Interviews

- Section Overview
- During The Interview
- Exercise: Hero Stories
- Tell Me About Yourself
- Exercise: Your Pitch
- Why Us?
- Tell Me About A Problem You Have Solved
- Exercise: Past Projects
- What Is Your Biggest Weakness
- Exercise: Your Biggest Weakness
- Any Questions For Us?
- Resources: Questions To Ask A Company
- Secret Weapon
- After The Interview
- Section Summary

##### Offer + Negotiation

- Section Overview
- Handling Rejection
- Negotiation 101
- Handling An Offer
- Handling Multiple Offers
- Getting A Raise
- Exercise: Negotiation Master
- Section Summary

##### Thank You

- Become an Alumni
- Thank You.
- What You Can Do Now

##### Extras: Google, Amazon, Facebook Interview Questions

- Coding Problems
- Top Interview Questions
- Amazon Interview Questions
- Facebook Interview Questions
- Google Interview Questions
- Domain Specific Questions

##### Contributing To Open Source To Gain Experience

- Contributing To Open Source
- Contributing To Open Source 2
- Exercise: Contribute To Open Source

##### Extra Bits

- Learning Guideline
- Quick Note: Upcoming Videos
- From JTS: Learn to Learn
- From JTS: Start With Why
- Coding Challenges
- How To Use Leetcode
- AMA - 100,000 Students!!
- Course Review
- The Final Challenge

##### BONUS SECTION

- Special Bonus Lecture