Cracking the Coding Interview
Resources
Related to [[career-advice]].
Modules
Chapters Checklist
- The Interview Process
- Why?
- How Questions are Selected
- It's All Relative
- Frequently Asked Questions
- Behind the Scenes
- The Microsoft Interview
- The Amazon Interview
- The Google Interview
- The Apple Interview
- The Facebook Interview
- The Palantir Interview
- Special Situations
- Experienced Candidates
- Testers and SDETs
- Product (and Program) Management Dev Lead and Managers
- Startups
- Acquisitions and Acquihires
- For Interviewers
- Before the Interview
- Getting the Right Experience
- Writing a Great Resume
- Preparation Map
- Behavioral Questions
- Interview Preparation Grid
- Know Your Technical Projects
- Responding to Behavioral Questions
- So, tell me about yourself
- Big O
- An Analogy
- Time Complexity
- Space Complexity
- Drop the Constants
- Drop the Non-Dominant Terms
- Multi-Part Algorithms: Add vsMultiply
- AmortizedTime
- Log N Runtimes
- Recursive Runtimes
- Examples and Exercises
- Technical Questions
- How to Prepare
- What You Need to Know
- Walking Through a Problem
- Optimize and Solve Technique #1: Look for BUD
- Optimize and Solve Technique #2: DIY (Do It Yourself)
- Optimize and Solve Technique #3: Simplify and Generalize
- Optimize and Solve Technique #4: Base Case and Build
- Optimize and Solve Technique #5: Data Structure Brainstorm
- Best Conceivable Runtime (BCR)
- Handling Incorrect Answers
- When You've Heard a Question Before
- The "Perfect" Language for Interviews
- What Good Coding Looks Like
- Don't Give Up]
- The Offer and Beyond
- Handling Offers and Rejection
- Evaluating the Offer
- Negotiation
- On the Job
- Interview Questions
- Data Structures
- Chapter 1 Arrays and Strings
- Hash Tables
- ArrayList and Resizable Arrays
- StringBuilder
- Chapter 2 Linked Lists
- Creating a Linked List
- Deleting a Node from a Singly Linked List
- The "Runner" Techn ique
- Recursive Problems
- Chapter 3 Stacks and Queues
- Implementing a Stack
- Implementing a Queue
- Chapter 4 Trees and Graphs
- Types of Trees
- Binary Tree Traversal
- Binary Heaps (Min-Heaps and Max-Heaps)
- Tries (Prefix Trees)
- Graphs
- Graph Search
- Concepts and Algorithms
- Chapters 5 Bit Manipulation
- Bit Manipulation By Hand
- Bit Facts and Tricks
- Two's Complement and Negative Numbers
- Arithmetic vs Logical Right Shift
- Common Bit Tasks: Getting and Setting
- Chapter 6 Math and Logic Puzzles
- Prime Numbers
- Probability
- Start Talking
- Develop Rules and Patterns
- Worst Case Shifting
- Algorithm Approaches
- Chapter 7 Object-Oriented Design
- How to Approach
- Design Patterns
- Chapter 8 Recursion and Dynamic Programming How to Approach
- Recursive vs Iterative Solutions
- Dynamic Programming and Memoization
- Chapter 9 System Design and Scalability
- Handling the Questions
- Design: Step-By Step
- Algorithms that Scale: Step-By-Step
- Key Concepts
- Considerations
- There is no "perfect" system
- Example Problem
- Chapter 10 Sorting and Searching
- Common Sorting Algorithms
- Searching Algorithms
- Chapter 11 Testing
- What the Interviewer Is Looking For
- Testing a Real World Object
- Testing a Piece of Software
- Testing a Function
- Troubleshooting Questions
- Knowledge Based
- Chapter 12 C and C++
- Classes and Inheritance
- Constructors and Destructors
- Virtual Functions
- Virtual Destructor
- Default Values
- Operator Overloading
- Pointers and References
- Templates
- Chapter 13 Java
- How to Approach
- Overloading vs Overriding
- Collection Framework
- Chapter 14 Databases
- SQL Syntax and Variations
- Denormalized vs Normalized Databases SQL Statements
- Small Database Design
- Large Database Design
- Chapter 15 Threads and Locks
- Threads in Java
- Synchronization and Locks
- Deadlocks and Deadlock Prevention
- Additional Review Problems
- Chapter 16 Moderate
- Chapter 17 Hard
- Solutions
- Data Structures
- Concepts and Algorithms
- Knowledge Based
- Additional Review Problems
- Advanced Topics
- Useful Math
- Topological Sort
- Dijkstra's Algorithm
- Hash Table Collision Resolution
- Rabin-Karp Substring Search
- AVL Trees
- Red-BlackTrees
- MapReduce
- Additional Studying
- Code Library
- HashMapList<T, E>
- TreeNode (Binary Search Tree)
- LinkedListNode (Linked List)
- Trie and TrieNode
- Hints
- Hints for Data Structures
- Hints for Concepts and Algorithms
- Hints for Knowledge-Based Questions
- Hints for Additional Review Problems
- About the Author
Backlinks
Computer Science Books
- [[cracking-the-coding-interview]]