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!

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…


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

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…


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.

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!

(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


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

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…


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

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…


Short and simple example that illustrates the benefits of MobX!

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.


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

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…

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