This post is targeted for people looking to get offers from large tech companies like Google, Facebook, Microsoft, Dropbox, Uber, Lyft, and Airbnb. This isn’t to say other companies aren’t interesting! It’s just that these companies’ interview processes are all straightforward (though not necessarily easy) and many people are interested in working for them.

Let’s start off with an obvious point: make sure you can get phone screens from these companies. If you have a large network of friends who can refer you, awesome! You can simply skip to step 4. If you went to a competitive college, or have several years of full-time software engineering experience, you should be qualified to get interviews.

If you weren’t lucky enough to go to a college with good career services and don’t have experience yet, you’re not out of luck. One option is to build personal projects. This is the best way to learn new technologies and tack them on your resume. This will also help you build software engineering skills and show that you’re taking initiatives for your learning. The best project ideas are ones you are interested in as well; you will spend several factors more time working on them. But if you’re absolutely stuck, I would recommend doing web projects. For example, a real-time chat room, an online chess game, or Instagram clone demonstrate practical knowledge. Web development is a skill that’s sought after by almost every tech company, so this is a great way to not put all your eggs in one basket.

Perfect your resume. This deserves a post in itself but here are some tips: It should be one page, unless you have over two decades of experience.

It should use a clean template.

It should point out your accomplishments, not the job descriptions.

It should use action words: built, launched, tested, led.

It should have numbers to describe the accomplishments.

Internalize basic algorithms and data structures. This is where a lot of recent grads have an advantage since they just finished their second or third course in algorithms. Some suggested resources here are: Tim Roughgarden’s two Coursera algorithm courses.

The Algorithm Design Manual by Skiena

CLRS

Become good at coding interview problems. This is the hardest part. The best way to get good at this is to dive right in. Solve new difficult questions and ignore questions that are too easy for you. This may take anywhere from 1 to 6 months. Shameless plug: we have a mailing list that sends you a new problem every day. Also, take a look our post on solving hard interview questions here. After solving a lot of problems, you should line up 3-5 mock interviews with your friends. If you prefer a more active trial run,

you can go through onsite interviews at your second choice companies. Here are some more tips: It’s worth mentioning again: make sure you’re solving hard problems every day.

When studying make sure to always follow good thought process and vocalize your thoughts

Use a high level programming language such as Ruby or Python. You don’t want to manage memory unless that’s the point of the interview.

Invest in a whiteboard and thin markers. It’s surprising how powerful modern IDEs and text editors are! Coding on a whitebord is a skill itself.

One thing to look out for is to leave space between code so that you can more easily insert new code (you don’t want to have to erase code

to write more code) and start writing from the top upper left corner, so that you have enough space if you should need it.

Now it’s time for the actual interviews. It’s important to not forget interviewers are humans too. If you show interest in their work and get along with them, they’ll want you to pass. They’ll interpret your skills less harshly too. Lastly, don’t forget that they’re no smarter than you are!