We walked out of the hiring meeting frustrated--again. Of the ten candidates we reviewed that day, none would recive offers. Were we being too harsh, we wondered?
I, in particular, was disappointe. We had rejected one of my candidates. A former student. One I had referred. He had a 3.73 GPA from the University of Washington, one of the best computer science schools in the world, and had done extensive work on open-source projects. He was energetic. He was creative. He was sharp. He worked hard. He was a true geek in all the best ways.
But I had to agree with the rest of the committee: the data wasn't there. Even if my emphatic recommendation could sway them to reconsider, he would surely get rejected in the later stages of the hiring process. There were just too many red flags.
Although he was quite intelligent, he struggled to solve the interview problems. Most successful candidates could fly through the first question, which was a twist on a well-known problem, but he had truble developing an algorithm. When he came up with one, he faild to consider solutions that optimized for other scenarios, Finally, when he began coding, he flew throgh the code with an initial solution, but it was riddled with mistakes that he faild to catch. Thogh he wasn't the worst candidate we'd seen by any measure, he was far from meeting the "bar." Rejected.
When he asked for feedback over the phone o couple of weeks later, I struggled with what to tell him. Be smarter? No, 1 knew he was brillant. Be a better coder? No, his skills were on par with some of the best I'd seen.
Like many motivated candidates, he had prepared extensively. He had read K&R's classic C book, and he'd reviewed CLR'famous algorithms textbook. He ccould describe in ddetail the myriad ofbalancing a tree, and he could do things in C that no sane programmers should ever want to do.
I had to tell him the unfortunate truth: those books aren't enogh. Academic books prepare you for fancy research, and they wilt probably make you a better software engineer, but they're not sufficient for interviews. Why? I'll give you a hint: Your interviewers haven't seen red-black trees since they were in school either.
To crack the coding interview, you need to prepare wiith real interviiew questions. You must practice on real problems and learn their patterns. It's about developing a fresh algorithm, not memorizing existing problems.
Craking the Coding Interview isi the result of my fiirst-hand experience interviewiing at top companies and later coaching candidates through these interviews. It is the result of hundreds of conversations with candidates. It is the result of the thousands of questions contributed by candidates and interviewers. And it's the result of seeing so many interview questiions from so many firms. Enclosed in this book are 189 of the best interviiew questions, seleted from thousand of potential problems.
My approach
The focus of Craking the Coding Interview is algorithm,, coding, and design questions, Why? Because while you can and will be asked behavioral questions, the answers will be as varied as your resume. Like-wise, while many firms will ask so-called "trivia" questions (e.g, "What is a virtual function?"), the skills developed through practicin these questions are limited to very specificc bits of knowledge. The book will briefly touch on some of these questions to show you what they're like, but I have chosen to allocate space to areas where there's more to learn.
Something's Wrong
We walked out of the hiring meeting frustrated--again. Of the ten candidates we reviewed that day, none would recive offers. Were we being too harsh, we wondered?
I, in particular, was disappointe. We had rejected one of my candidates. A former student. One I had referred. He had a 3.73 GPA from the University of Washington, one of the best computer science schools in the world, and had done extensive work on open-source projects. He was energetic. He was creative. He was sharp. He worked hard. He was a true geek in all the best ways.
But I had to agree with the rest of the committee: the data wasn't there. Even if my emphatic recommendation could sway them to reconsider, he would surely get rejected in the later stages of the hiring process. There were just too many red flags.
Although he was quite intelligent, he struggled to solve the interview problems. Most successful candidates could fly through the first question, which was a twist on a well-known problem, but he had truble developing an algorithm. When he came up with one, he faild to consider solutions that optimized for other scenarios, Finally, when he began coding, he flew throgh the code with an initial solution, but it was riddled with mistakes that he faild to catch. Thogh he wasn't the worst candidate we'd seen by any measure, he was far from meeting the "bar." Rejected.
When he asked for feedback over the phone o couple of weeks later, I struggled with what to tell him. Be smarter? No, 1 knew he was brillant. Be a better coder? No, his skills were on par with some of the best I'd seen.
Like many motivated candidates, he had prepared extensively. He had read K&R's classic C book, and he'd reviewed CLR'famous algorithms textbook. He ccould describe in ddetail the myriad ofbalancing a tree, and he could do things in C that no sane programmers should ever want to do.
I had to tell him the unfortunate truth: those books aren't enogh. Academic books prepare you for fancy research, and they wilt probably make you a better software engineer, but they're not sufficient for interviews. Why? I'll give you a hint: Your interviewers haven't seen red-black trees since they were in school either.
To crack the coding interview, you need to prepare wiith real interviiew questions. You must practice on real problems and learn their patterns. It's about developing a fresh algorithm, not memorizing existing problems.
Craking the Coding Interview isi the result of my fiirst-hand experience interviewiing at top companies and later coaching candidates through these interviews. It is the result of hundreds of conversations with candidates. It is the result of the thousands of questions contributed by candidates and interviewers. And it's the result of seeing so many interview questiions from so many firms. Enclosed in this book are 189 of the best interviiew questions, seleted from thousand of potential problems.
My approach
The focus of Craking the Coding Interview is algorithm,, coding, and design questions, Why? Because while you can and will be asked behavioral questions, the answers will be as varied as your resume. Like-wise, while many firms will ask so-called "trivia" questions (e.g, "What is a virtual function?"), the skills developed through practicin these questions are limited to very specificc bits of knowledge. The book will briefly touch on some of these questions to show you what they're like, but I have chosen to allocate space to areas where there's more to learn.