Introduction |
|
xxiii | |
|
Chapter 1 Hiring Programmers: The Inside Story |
|
|
1 | (28) |
|
|
2 | (5) |
|
|
3 | (1) |
|
The interviewer's motivation and approach |
|
|
3 | (1) |
|
|
3 | (2) |
|
|
5 | (1) |
|
The interviewer's motivation and approach |
|
|
5 | (1) |
|
|
5 | (1) |
|
|
6 | (1) |
|
The interviewer's motivation and approach |
|
|
6 | (1) |
|
|
6 | (1) |
|
|
7 | (1) |
|
Tech talk---don't hold back |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
8 | (6) |
|
Include relevant keywords but keep them in context |
|
|
9 | (1) |
|
|
9 | (1) |
|
Justify your claims of experience |
|
|
9 | (1) |
|
Ignore anyone who tells you "strictly one or two pages" |
|
|
10 | (1) |
|
Emphasize skills that match the job advertisement |
|
|
10 | (1) |
|
Don't leave unexplained gaps between jobs |
|
|
10 | (1) |
|
"Reading, music, and cinema" |
|
|
11 | (1) |
|
|
11 | (1) |
|
|
11 | (1) |
|
CVs containing more experience |
|
|
12 | (1) |
|
CVs of those returning to work |
|
|
12 | (1) |
|
Avoiding common CV blunders |
|
|
13 | (1) |
|
|
13 | (1) |
|
Vague or nonspecific accomplishments |
|
|
13 | (1) |
|
Unclear or cluttered layout |
|
|
13 | (1) |
|
Unprofessional e-mail address |
|
|
14 | (1) |
|
|
14 | (1) |
|
Comparison of major job boards |
|
|
15 | (1) |
|
|
15 | (2) |
|
Working effectively with a recruiter |
|
|
17 | (1) |
|
Searching for Jobs Yourself |
|
|
17 | (5) |
|
Networking for introverts |
|
|
18 | (2) |
|
Finding potential employers |
|
|
20 | (1) |
|
Approaching potential employers |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
22 | (7) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
24 | (1) |
|
|
25 | (1) |
|
Careers at Stack Overflow |
|
|
26 | (1) |
|
Skills matter: "Find Your Ninja" |
|
|
27 | (2) |
|
Chapter 2 Handling the Phone Interview with Confidence |
|
|
29 | (10) |
|
|
30 | (9) |
|
Preparing your cheat sheets |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
Having a phone interview checklist |
|
|
35 | (1) |
|
Using a phone interview cheat sheet template |
|
|
35 | (4) |
|
Chapter 3 In-Person Interviews |
|
|
39 | (14) |
|
Preparing for the Interview |
|
|
39 | (6) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
|
Handling different types of interview questions |
|
|
42 | (1) |
|
Fielding social and behavioral questions |
|
|
43 | (1) |
|
|
43 | (1) |
|
Tackling technical pop-quiz questions |
|
|
43 | (1) |
|
Fielding the general intelligence test |
|
|
44 | (1) |
|
Dealing with the stress test question |
|
|
44 | (1) |
|
|
45 | (3) |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
Look for ways to interact |
|
|
47 | (1) |
|
The Second Most Important Thing |
|
|
48 | (1) |
|
|
48 | (1) |
|
Being aware of how much time you have |
|
|
48 | (1) |
|
Stories are good, evidence is better |
|
|
49 | (1) |
|
Communicating Effectively |
|
|
49 | (4) |
|
Using your passion to combat nerves |
|
|
49 | (1) |
|
|
49 | (1) |
|
Speaking slower than usual |
|
|
50 | (1) |
|
Starting and finishing clearly |
|
|
50 | (1) |
|
Repeating your main point |
|
|
50 | (1) |
|
Spontaneity improves with practice |
|
|
51 | (2) |
|
Chapter 4 Negotiating a Job Offer |
|
|
53 | (10) |
|
|
54 | (1) |
|
|
54 | (3) |
|
Considering the whole package |
|
|
55 | (1) |
|
Must have, should have, could have |
|
|
56 | (1) |
|
|
56 | (1) |
|
|
56 | (1) |
|
|
57 | (1) |
|
|
57 | (1) |
|
The Role of the Recruiting Agent |
|
|
57 | (1) |
|
Start as You Mean to Go On |
|
|
57 | (2) |
|
|
58 | (1) |
|
|
58 | (1) |
|
|
59 | (1) |
|
Intellectual Property (IP) |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
60 | (1) |
|
What to Do If Things Go Wrong |
|
|
60 | (1) |
|
"It's a standard contract" |
|
|
60 | (1) |
|
|
61 | (1) |
|
Escalation and ultimatums |
|
|
61 | (1) |
|
Summary of Negotiating Tips |
|
|
61 | (2) |
|
Chapter 5 Programming Fundamentals |
|
|
63 | (46) |
|
Understanding Binary, Octal, Hexadecimal |
|
|
64 | (4) |
|
Converting hexadecimal to binary |
|
|
66 | (1) |
|
|
67 | (1) |
|
Understanding Data Structures |
|
|
68 | (5) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
70 | (2) |
|
|
72 | (1) |
|
Understanding graph traversal |
|
|
72 | (1) |
|
|
73 | (2) |
|
|
75 | (1) |
|
Modeling with Object-Oriented Programming |
|
|
76 | (5) |
|
Understanding classes and objects |
|
|
76 | (2) |
|
Untangling inheritance and composition |
|
|
78 | (1) |
|
|
78 | (2) |
|
Data-hiding with encapsulation |
|
|
80 | (1) |
|
Thinking Like a Functional Programmer |
|
|
81 | (1) |
|
|
81 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
Full-Stack Web Development |
|
|
82 | (1) |
|
Decipering Regular Expressions |
|
|
83 | (9) |
|
Finding content with anchors and word boundaries |
|
|
85 | (1) |
|
Matching character classes |
|
|
86 | (2) |
|
Constraining matches with quantifiers |
|
|
88 | (1) |
|
Working with groups and captures |
|
|
89 | (1) |
|
|
90 | (2) |
|
|
92 | (1) |
|
Recognizing Hard Problems |
|
|
92 | (1) |
|
|
93 | (2) |
|
|
95 | (14) |
|
|
109 | (48) |
|
|
110 | (2) |
|
|
112 | (1) |
|
Measuring Efficiency and Performance |
|
|
112 | (7) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
114 | (1) |
|
|
114 | (2) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
Measure more than once take an average |
|
|
118 | (1) |
|
|
118 | (1) |
|
Try the easy things first |
|
|
119 | (1) |
|
|
119 | (1) |
|
Understanding What "Modular" Means |
|
|
119 | (2) |
|
Understanding the SOLID principles |
|
|
121 | (5) |
|
Single Responsibility Principle |
|
|
121 | (2) |
|
|
123 | (1) |
|
Liskov Substitution Principle |
|
|
123 | (1) |
|
Interface Segregation Principle |
|
|
124 | (1) |
|
Dependency Inversion Principle |
|
|
125 | (1) |
|
Avoiding Code Duplication |
|
|
126 | (2) |
|
|
128 | (6) |
|
|
134 | (23) |
|
Chapter 7 The Usual Suspects |
|
|
157 | (36) |
|
|
158 | (9) |
|
|
160 | (1) |
|
|
160 | (5) |
|
|
165 | (1) |
|
|
166 | (1) |
|
|
167 | (4) |
|
|
167 | (1) |
|
|
168 | (1) |
|
First normal form: "No repeated values" |
|
|
168 | (1) |
|
Second normal form: "No partial dependencies" |
|
|
169 | (1) |
|
Third normal form: "No transitive dependencies" |
|
|
169 | (1) |
|
|
169 | (1) |
|
|
170 | (1) |
|
|
170 | (1) |
|
Populating a normalized database |
|
|
170 | (1) |
|
|
171 | (6) |
|
Functions in C receive arguments by value |
|
|
173 | (1) |
|
Arrays in C are handled like pointers |
|
|
174 | (1) |
|
Passing values and references |
|
|
175 | (2) |
|
|
177 | (2) |
|
YAGNI is not an excuse to take shortcuts |
|
|
177 | (1) |
|
|
178 | (1) |
|
Do not trade common sense for a methodology |
|
|
178 | (1) |
|
|
179 | (5) |
|
|
179 | (1) |
|
Not being paranoid enough |
|
|
180 | (1) |
|
|
181 | (1) |
|
|
182 | (1) |
|
Copying and pasting too much |
|
|
182 | (1) |
|
|
183 | (1) |
|
|
184 | (2) |
|
|
186 | (7) |
|
Chapter 8 Quirks and Idioms |
|
|
193 | (52) |
|
Binary Fractions and Floating Point Numbers |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
195 | (1) |
|
|
195 | (3) |
|
|
198 | (1) |
|
|
198 | (2) |
|
|
200 | (1) |
|
|
200 | (1) |
|
|
201 | (1) |
|
|
202 | (3) |
|
|
205 | (1) |
|
|
205 | (1) |
|
|
206 | (1) |
|
|
206 | (2) |
|
|
208 | (37) |
|
Chapter 9 Testing --- Not Just for Testers |
|
|
245 | (20) |
|
|
246 | (1) |
|
|
246 | (1) |
|
Behavior-driven development |
|
|
247 | (1) |
|
|
247 | (1) |
|
|
247 | (2) |
|
|
247 | (1) |
|
|
248 | (1) |
|
|
248 | (1) |
|
|
248 | (1) |
|
|
248 | (1) |
|
|
249 | (1) |
|
|
249 | (2) |
|
|
251 | (2) |
|
|
253 | (3) |
|
|
256 | (9) |
|
Chapter 10 The Right Tools |
|
|
265 | (38) |
|
|
266 | (1) |
|
|
266 | (2) |
|
Exploiting Command-Line Tools |
|
|
268 | (1) |
|
|
269 | (2) |
|
|
271 | (1) |
|
|
271 | (1) |
|
Troubleshooting with Utilities from Sysinternals |
|
|
272 | (1) |
|
|
272 | (1) |
|
|
272 | (1) |
|
Source control with Team Foundation Server |
|
|
273 | (1) |
|
|
273 | (1) |
|
Source control with Subversion |
|
|
273 | (1) |
|
|
274 | (1) |
|
|
274 | (1) |
|
|
275 | (1) |
|
|
275 | (28) |
|
Chapter 11 Notorious Interview Questions |
|
|
303 | (48) |
|
|
303 | (1) |
|
|
304 | (1) |
|
Solving Puzzles and Brain-Teasers |
|
|
304 | (1) |
|
|
304 | (2) |
|
Solving Probability Problems |
|
|
306 | (1) |
|
|
306 | (1) |
|
|
307 | (1) |
|
|
307 | (1) |
|
|
308 | (1) |
|
|
309 | (1) |
|
Devising Recursive Algorithms |
|
|
309 | (1) |
|
|
309 | (2) |
|
Understanding Logic Gates |
|
|
311 | (2) |
|
|
313 | (2) |
|
Writing Code to Prove You Can Code |
|
|
315 | (1) |
|
|
315 | (1) |
|
|
316 | (35) |
|
Chapter 12 Programming Wisdom |
|
|
351 | (44) |
|
|
352 | (5) |
|
|
357 | (38) |
|
Appendix Preparing Your Cheat Sheets |
|
|
395 | (6) |
|
|
396 | (1) |
|
|
397 | (1) |
|
|
397 | (1) |
|
|
398 | (1) |
|
Questions to Ask, If Given the Opportunity |
|
|
399 | (2) |
Index |
|
401 | |