Be prepared for blood, sweat, and possible stress tears.

*Scroll down for the mega list of free resources for technical interview prep at the end! Good luck :)
UPDATE:
Added a new version of the interview cheat-sheet that can be downloaded & printed, and added new resources for data structure review!

Image for post
Image for post

Technical interviews are tough. Especially when there are about a million different questions they can possibly pull on you — it can feel impossible to be well-prepared. This guide aims to help you plan your review before your next big interview!

While I am no expert on technical interviews, I’ve gone through this interview-prep process twice each school year and have successfully gotten internship offers after interviews from both small and large companies. These questions are a mix of actual interview questions I’ve seen and also what I personally think is important to review.


Rejection — an unfortunate and inevitable part of our journey to employment

Image for post
Image for post

Why am I writing this? Because rejection sucks. Big time.

Rejection invokes feelings of shame, embarrassment, and regret. It is entirely natural for us to avoid circumstances (like interviews) that will lead us to these negative emotions at all cost.

However, on the other side of the fear of rejection — we have the possibility for major wins in our careers, ambitions, and goals! Why should we let our irrational anxiety be the gatekeeper for our success?

I want to share with you some tips and the mindset that helped me stay grounded when I was faced with the unfortunate reality of rejection.

1. Accept the Fact That You Will Get Rejected

First thing’s first — get it in your head that everyone gets rejected.


An article dedicated to all my below-par performances, frustrating lows, and failed attempts at picking up computer science— because CS shows mercy for no one.

Image for post
Image for post

Year 1 of studying CS

Mental State: Questioning myself and my choices, attempting to ‘fake it till I make it’, overall struggling with confidence in my ability to pick up computer science

Background: Awful at math (with a C in calc) and still under the impression that you needed to be a math wizard to excel in CS

Introduction to Computer Science (CS 111)— Intro course for CS majors that taught logic, assembly code deconstruction, basic algorithms (like binary search), recursion, and other fundamental topics using Python.

Bad Day: My CS111 Final …
What happened?


A list of some thoughtful questions that can help you learn more about the company and its values.

Remember that interviews are a two-way street — they’re an opportunity for the company to assess your background and skill set, but also a chance for you to see if the company is the *right* fit for you!

Image for post
Image for post

(short backstory) I recently finished the soul-sucking process of interviewing and after completing over 30 interviews (from screener to final round stages) — I’ve found what questions worked best for me and helped me learn about the company. I’ve categorized and listed these questions below, along with general tips that may help you pick which values to ask about. good luck ❤

Some Precautions

It’s great to use interviews to learn about the work environment and see if the fit is right for you! However, remember that as a candidate, you’re still trying to secure an offer — until then, you do not have any leverage. Just remember that once you secure the offer, you’re free to ask as much about the company as you’d like!


Including how to ask for extensions, how to deal with “exploding deadlines”, and overall tips on how smaller vs larger companies negotiate!

Image for post
Image for post
visual representation of how it feels to negotiate

Before we start: Remember that you are the one companies want, and that you hold the bargaining chip! After investing thousands in resources and months of time to find you, screen you, and interview you for the role — do you think they’re suddenly going to change their mind when you ask for a better offer? Spoiler alert: the answer is no.

Rule 1: Always bring up negotiations over the phone*

Choosing the right method of communication is an important first step.

Speaking directly with your recruiter is the best way to communicate how you’re feeling about the opportunity and also hear out how your recruiter is feeling and thinking in terms of negotiating.

In most cases, you will initially learn about your offer from a phone call with your recruiter. Following up with a request to talk about the offer in more detail over a phone call is very doable and your recruiter will likely be happy to talk again.

By talking over the phone, you also become more personable and can develop a deeper connection with your recruiter. If they feel particularly strong about you, they may try harder to improve your offer!

*Small note on talking on the phone vs sending emails:

If you’re extremely introverted and are much more comfortable with communicating through email, that is also a totally fine option. As long as you take the time to explain your thoughts & feelings about the offer and mention any concerns you have, you should be able to negotiate via email. However, you should still be prepared for when you recruiter asks if you can talk about the negotiation over the phone.


A safe go-to recipe to figure out how to make any problem more manageable.

Image for post
Image for post

1. When you get the question (before you write a single line of code)

The easiest way to make sure you understand the question is to walk through test cases.

Things to clarify with your interviewer:
What is the expected input? What is the expected output?
Any assumptions you may have about certain test cases

After walking through test cases, make a note of any variables you should keep track of and what kind of data structures would make the most sense for this problem.

Always think of ways you can break down the problem. Is there a smaller, easier sub-problem that you can solve? And if so, what would that solution look like?

2. Writing the code (and what to do if you get stuck)

After you figure out your algorithm and explain your logic, the next thing for you to do is translate your idea into code. …


Short and simple example that illustrates the benefits of MobX!

Image for post
Image for post
Preview of finished product, feel free & play around with it here: https://jsfiddle.net/xsd7upv8/14/

Let’s say we have an app keeps track of a list of all the dogs we’ve ever pet. This basic application will have 2 different views:

  1. The view of our list of dogs we already pet
  2. The view for adding a new doggo to our list

Our app should change & render differently based on which view our application currently has. So how can we do this with MobX?

1. Making a store to keep track of your data

For any dynamic application that takes in user input, we need a way to keep track of these actions & events.

In our case, if we meet a new dog and want to add him to the list, we need some way to keep track of all the dogs’ names. …


A simple, fool-proof outline for reducing problems to NPC (for anyone who needs a refresher or accidentally missed lecture)

Useful Definitions:
P: problems that can be solved in polynomial time
NP: non-deterministic polynomial, i.e. for any NP problem — if we are given a possible solution we can verify if it is valid or not in polynomial time
NP-Complete: subset of NP problems where there is no known efficient method to find the solution

Image for post
Image for post
Drawing out the universe of NP problems

Getting Started

In general, it’s easier to understand a concept when you know the why behind it. So what is the why we need to remember when doing NPC proofs?

Our goal: To show that our problem is just as difficult as a known NPC problem, or alternatively to show that all instances of a known NPC problem can be reduced to our problem.
Why does it matter? If we know our problem is just as hard as a known NPC problem, then we know that there is no efficient way of finding the solution. …

About

Helen Zhang

Full-time cat & dog lover, part time developer 💖 I like writing to help others! @helenzhxng | Previously @Paypal & @NASA , now @Squarespace— bit.ly/connect-hz

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store