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:

  1. Get a good understanding of the problem. Repeat the problem to your interviewer to check that you understood.
  2. Ask for details and edge cases
  3. Take an example and make sure it’s not too small or an edge case.
  4. Take your time to think, but don’t stay silent more than a couple of minutes.
  5. Get the brute force solution as fast as possible. Discuss optimizations now or after you implement it.
  6. 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.
  7. 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.