CONTENTS
Foreword 1
Introduction 2
I. The Interview Process 5
Overview 6
How Questions are Selected 7
Timeline and Preparation Map 8
The Evaluation Process 10
Incorrect Answers 11
Dress Code 12
Top 10 Mistakes 13
Frequently Asked Questions 15
II. Behind the Scenes 17
The Microsoft Interview 19
The Amazon Interview 20
The Google Interview 21
The Apple Interview 22
The Facebook Interview 23
The Yahoo! Interview 24
III. Special Situations 25
Experienced Candidates 26
Testers and SDETs 27
Program and Product Managers 28
Dev Leads and Managers 30
Start-Ups 31
IV. Before the Interview 33
Getting the Right Experience 34
Building a Network 35
Writing a Great Resume 37
V. Behavioral Questions 39
Behavioral Preparation 40
Handling Behavioral Questions 43
VI. Technical Questions 45
Technical Preparation 46
HandlingTechnical Questions 49
Five Algorithm Approaches 52
What Good Coding Looks Like 56
VII. The Offer and Beyond 61
Handling Offers and Rejection 62
Evaluating the Offer 63
Negotiation 65
On the Job 66
VIII. Interview Questions 67
Data Structures 69
Chapter 1 | Arrays and Strings 71
Chapter 2 | Linked Lists 75
Chapter 3 | Stacks and Queues 79
Chapter 41 Trees and Graphs 83
Concepts and Algorithms 87
Chapter 5 I Bit Manipulation 89
Chapter 61 Brain Teasers 93
Chapter 7 | Mathematics and Probability 97
Chapter 8 | Object-Oriented Design 103
Chapter 91 Recursion and Dynamic Programming 107
Chapter 10 | Scalability and Memory Limits 111
Chapter 11 | Sorting and Searching 117
Chapter 12 | Testing 123
Knowledge Based 131
Chapter 13 | C and C++ 133
Chapter 14 | Java 141
Chapter 15 | Databases 147
Chapter 16 I Threads and Locks 153
Additional Review Problems 161
Chapter 17 I Moderate 163
Chapter 18 | Hard 167
IX. Solutions
Data Structures
Chapter 1 | Arrays and Strings
Chapter 2 | Linked Lists
Chapter 3 | Stacks and Queues
Chapter 41 Trees and Graphs
Concepts and Algorithms
Chapter 5 | Bit Manipulation
Chapter 61 Brain Teasers
Chapter 7 | Mathematics and Probability
Chapter 8 | Object-Oriented Design
Chapter 9 | Recursion and Dynamic Programming
Chapter 10 | Scalability and Memory Limits
Chapter 11 | Sorting and Searching
Chapter 12 | Testing
Knowledge Based
Chapter 13 | C and C++
Chapter 141 Java
Chapter 15 | Databases
Chapter 16 | Threads and Locks
Additional Review Problems
Chapter 17 | Moderate
Chapter 181 Hard
X. Acknowledgements
XI. Index
XII. About the Author