dhruv's wiki
T

# Cracking the Coding Interview

## Chapters Checklist

• The Interview Process
• Why?
• How Questions are Selected
• It's All Relative
• Behind the Scenes
• The Microsoft Interview
• The Amazon Interview
• The Apple 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
• 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
• 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)
• 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
• 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
• Pointers and References
• Templates
• Chapter 13 Java
• How to Approach
• 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
• Synchronization and Locks
• Chapter 16 Moderate
• Chapter 17 Hard
• Solutions
• Data Structures
• Concepts and Algorithms
• Knowledge Based
• Useful Math
• Topological Sort
• Dijkstra's Algorithm
• Hash Table Collision Resolution
• Rabin-Karp Substring Search
• AVL Trees
• Red-BlackTrees
• MapReduce