I interviewed a lot in my short work experience and I got rejected. And I got
offers. Google, Amazon, DeepMind, Facebook, Bloomberg, Skyscanner, JP Morgan,
Morgan Stanley.
I compiled here all the advice that I give to my friends when they ask or when
they don’t ask.\
What you need to know?
Data structures and algorithms. Only one subject out of the entire Computer
Science degree.
You also need to know the time and space complexity of every data structure.
Resources
Leetcode. This is the place to practice for the technical interview. They have
a big collection of problems, but not too big to be overwhelming, nicely
organized on topics.
The problems that you’ll get in your interview will be the same as the ones on
Leetcode or slightly modified. I REPEAT. The problems that you’ll get in your
interview will be the same as the ones on Leetcode or slightly modified. It
might feel like cheating when you solve the problems on Leetcode, but it’s
not, everyone is doing it.
Geeksforgeeks. Every data structure and algorithm that you’ll need is nicely
explained on Geeksforgeeks. I look at Geeksforgeeks at theoretical support and
Leetcode as practical support. If you’re new to the subject, go on
Geeksforgeeks, check what is a linked list, how it’s implemented, what
problems you can solve using this data structure and then go on Leetcode and
do it yourself.
Pramp. Here you get paired up with another candidate, you interview him and in
turn, he interviews you. It’s a mock interview. I cannot stress how important
it is to recreate the interview experience. I get to be really nervous during
interviews, so I schedule a couple of mock interviews before my real
interview. As everything else in life, it becomes better with practice.
Glassdoor. Here you can search for a specific company and see juicy details.
Past interviews, salaries and the opinions of others.
Bonus, before an interview, I like to have a quick glance at this cheat sheet
that has all the times and space complexities in one place.
Your resume
It should have one page and one page only.
Use keywords. The company might use a tool for parsing resumes. Don’t use long
complicated sentences, artistic touches and no need for pictures.
Amazing, but not necessary, contributions to open source projects and
competitions
Make the most with what you have. Get a nice description for your university
projects, host them on Github and link your Github to your resume.
Here is a good example of the resume, one done in latex, I used
it as a template myself.
The application process
Apply early. Apply in September or October or when applications open, This is
because applications are processed on a rolling bases, so first come, first
served.
Ask for a referral. You might know someone that works there, reach out and ask
if they can refer you.
** Ask for the recruiter details **. In case your friends already interviewed at
your-soon-to-be company, ask if they can provide you with the recruiter’s
details. Send a nice, short email to the recruiter explaining your background,
your interest and attach your resume.
Reach out to your previous recruiter. In case you already interviewed but got
rejected, get back to your previous recruiter and restate your interest.
Probably you’ll have a headstart compared to the new candidates.
Reach out on Linkedin. If you don’t know anyone who already works there, reach
out on Linkedin to someone who works there and ask their advice on how you
could secure a position.
The technical interview
Your code will probably not be compiled. So you can write everything.
You’ve practiced on Leetcode, go on Glassdoor, check other interviews and
schedule some mock ones on Pramp.
It’s important that you speak during the interview and share your thinking
process.
It’s ok if you get stuck, you can ask the interviewer for tips.
I have a structure for how I want to approach the interview and this calms me
down. When the interview starts I go on autopilot and follow the next steps:
- Get a good understanding of the problem. Repeat the problem to your interviewer to check that you understood.
- Ask for details and edge cases
- Take an example and make sure it’s not too small or an edge case.
- Take your time to think, but don’t stay silent more than a couple of minutes.
- Get the brute force solution as fast as possible. Discuss optimizations now or after you implement it.
- When finished, it’s actually not finished. Go through every instruction of your code and check conceptually that it does what you want it to do. Run your code through a small example, like a unit test, but spoken.
- Reiterate. Here is a technical interview example done by Google.
The behavioral interview
You might have a separate interview with the human resources team,
it might be included in a technical one, or it might not be at
all.
Go on glassdoor and check previous such interviews.
Research the company: mantra, values, CEO.
Prepare answers. Why this company? Tell me about a time when…
Tell me a bit about yourself.\
The offer
Congratulations! You got it.
Rejection
Congrats again. You just got the details of the recruiter, come back in 6 to 12 months.
The thing that I want you to remember from this post is that if you want it, you can get it. You don’t need to be at a top-rated university, you don’t need to be a God of programming. Just go for it. If you want to hear the story from me, check the video below.