Cracking the Code Interview Review
Intro
During this article I will be reviewing the first 8 chapters of the book Cracking the Coding Interview.
This is a book that you see recommended everywhere, I have been hearing about this book since I was in my early years of University, but I never actually took the time to read it, until this month.
Here are my takeaways.
Are whiteboard interviews unfair?
This question is one of the things that I have found really interesting during my time learning how to code. Many people complain about this type of interviews.
Why? Well the argument is that they don’t really reflect what you will be encountering in your day to day job. And I agree with that. But (there’s always a but) I can also agree with the counter-argument that’s:
Whiteboard interviews are helpful to seeing your problem-solving skills, how you work under pressure, and how well you can communicate your technical knowledge. They also show your knowledge in data structures and algorithms, of course you won’t use a binary tree everyday, only in very special cases. But this question arises, how would you know when to implement a binary tree if you don’y really know what a binary tree is? This really got me thinking.
Different companies have different interviews
The title is kind of obvious, I know. But in the book you get to see that different companies have different expectations and priorities. And it’s always worth reasearching the company to know what they’re looking for and see if you’re a good fit. The book explores the different interview processes of mostly FAANG companies, but I won’t get in to much detail about that.
The book also points how depending on your role the company will expect different things from you, which again sounds obvious, but it’s good pointing it out. You should research what the position expects from you.
Are you ready to start preparing for interviews?
I remember when I was in University there was some people reading this book or looking forward to buy it. But after reading the Before the Interview
chapter, I know that I wouldn’t really recommend this book to someone that is starting to learn.
Why? Well because, the skill of interviewing is a skill of its own (is what this book aims to teach). And there isn’t really a point of preparing for interviews if you’re really new in tech and you still need to grasp your fundamentals. So I would only recommend reading or acquiring this book if you think you’re actually ready to go out and look for a job.
Most of the times you need to have some projects/experience to get your foot in the door of the company.
Behavioral question
As well as you prepare for technical questions, you should be prepared to answer the questions that talked about your personality.
During our talk of interview best practices there was quote that came up. I will just quote from memory so don’t judge.
At the of the day the interviewer just wants to know one thing about you. Would I have a beer with this girl/guy?
And reading this at first could sound controversial. But think about it, of course in a pure objective perspective this wouldn’t matter, you would pick the person with the highest qualifications and you would only ask technical questions. But guess what? We’re human, we’re not purely objective.
So what you can do to excel in this matter are actually a couple of things. So be ready to talk about:
- Your past projects.
- Your mistakes/failures and how you overcomed them.
- Weaknesses, and also give a good example of how you overcome it.
- Questions to the interviewer
There are a bunch of other strategies that you can follow to make yourself more appealing mentioned in the book. I actually found this chapter in the book to be one of the most interesting.
Big O Notation
For me it was never a secret that this was something that I had to learn. When I was studying in my university unfortunately I didn’t learned this in my classes. But it was something that I always had present, because I heard a lot of people talk about it.
So reading this chapter was actually a great opportunity to take a dive into this subject. I’m still not an expert by any means. But I feel that by reading this chapter and doing some exercises I have a more solid grasp and I can estimate the complexity of an algorithm correctly most of the times.
Technical Questions
As I already mentioned in this essay, interviews are a skill of its own. And technical questions might be the hardest part to master from interviews.
The book throws a bunch of interesting tips and knowledge that will get you trough your interview. But of course it’s not enough by just reading, the number one advice is: practice. Another things to improve in technical interviews:
- Know your datastructures, a couple of basic algorithms and core CS concepts. (There’s a useful table for this in the book)
- When you practice do it as rudimentary as possible to really make yourself think. Get rid of the fancy IDE and go back to paper.
- When solving a problem try to really understand it (make questions), before moving to anything else. Pay attention to any details, they’re given to you for a reason
- Always use examples and walk trough the examples
The Offer and Beyond
This was also a really interesting chapter, were the author explores several thigns to have in consideration when you’re finishing with interviews.
For starters you want to build good relationships with the company no matter if you don’t get an offer or if you reject it, either way, making a good impression won’t hurt you.
Another cool thing is that, as young guy, I’ve never really thought about everything I have to take in consideration (besides the salary) to consider a company financially wise. So in this chapter several factors are explored that I think will help me in the future where I can choose from more than one offer.
Negotiation is also a key factor for your salary, basically negotiation are uncomfortable for most people (including me), but they can offer great benefits when done. I think it’s really worth learning a few things before engaging in this to make the most out of it.
And finally, once you’re in the job make sure you have a plan for how long you want to be there. And where do you want to go next. I think this is specially important if you’re trying to achieve any professional goal, because most likelt, eventually you’ll have to change your job to keep growing.