Skip to content

learn-co-curriculum/welcome-to-technical-interview-prep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Welcome to Technical Interview Preparation

Learning Goals

  • Explain the technical interview process

Introduction

Please note that completion of this content is not required for graduation or moving to the next Phase. It is optional. Please prioritize the required coursework.

In addition to preparing a portfolio of awesome projects to show off to your future employer, you'll also need to be prepared for technical interviews. In this part of the course, we'll help you prepare by asking you to solve a series of problems on algorithms and/or data structures. You may find some problems easy and others incredibly difficult. Don't worry - this is normal. It takes time to get used to solving these types of problems.

Before we get into how to approach progressing through this section, let's talk about the two types of technical interviews.

Two Types of Technical Interviews

Your technical interview may be held asynchronously or synchronously. During an asynchronous technical interview, you may be asked to solve algorithmic problems in a timed environment by yourself. For a synchronous interview, you will likely be asked to whiteboard and solve the problem in front of your interviewer.

Async technical interviews typically require candidates to problem solve alone. Once the solution is submitted, the hiring team will review your solution and determine whether you should move forward in the hiring process. At this point, they'll likely require that most or all problems be solved and will also consider the quality of the solution/s.

During synchronous interviews, the interviewer is likely looking to see how you:

  • Work in a team
  • Handle feedback
  • Talk technically
  • Handle obstacles
  • Approach solving a problem / think
  • Evaluate different approaches to solving a problem and make decisions

At this stage, you may be able to move forward in the hiring process if you demonstrate good communication skills, logical thinking, perseverance, calm under pressure, and graciousness towards your interviewer's feedback even if you are unable to solve the problem. Asking good questions to fully understand the problem or get unstuck are normally welcome. Interviewers also typically expect you to come up with your own test cases to ensure the problem is actually solved. This portion of the interview might require you to largely solve the problem alone on a whiteboard or IDE, or through pair programming where the interviewer is either the driver or navigator. Many interviewers are forgiving of syntax errors, and they generally don't expect you to have every piece of the core language memorized.

During this portion of the course, we will be preparing you for both types of interviews, so it's important to take the time to solve as many problems as you can alone and to complete the paired assignments, if applicable.

How to Progress Through This Section

We recommend approaching these problems in order by yourself since each problem increases in difficulty. For a problem that is meant to be solved on the same day, work on it for 30 minutes. If you can't solve it in 30 minutes, work on something else, and then come back to it and give yourself up to 30 more minutes. For problems that are meant to be solved over the course of several days, set aside 30 to 60 minutes each day to work on them. If you reach the time limit and have not solved the problem, look at our solution or someone else's and take time to understand why it works. Some days, due to your workload, you may need to set a shorter time limit; we recommend a minimum of 20 minutes total.

If you fall behind, e.g. you didn't solve Week 1 Day 2's problem on time, keep in mind that we usually have bonus problems and spare time available in Week 3 of any Phase. You can always use this time to catch up on problems you missed. Don't worry if you don't finish all of the problems before the next Phase, you can always come back to them when you have time or even after graduation.

For any type of problem, if you were able to pass most of the test cases but just can't quite solve a couple of the edge cases, consider looking for a solution to compare yours to. If we provide a solution, you can compare it to ours, but you can also ask other students and search the Internet. Take the time to understand why the solutions work and consider working on your solution until it works given what you've learned.

Some Things to Keep in Mind

You may struggle with some or many of these problems. Be patient with yourself and trust that with time and practice, you'll improve. You'll be amazed at how much you progress with each week or month!

If you look at others' solutions, be aware that shorter doesn't mean better. Aim for a solution that makes sense to you, which you can also explain to others. Three lines of easy-to-understand code is better than one line of confusing code.

If you use an online platform that provides information on how fast your code runs or how well it utilizes memory, take that information with a giant grain of salt. Many of those platforms do not tell you how they arrive at those results, and you may find that the results vary greatly even when running the same code. You might also find that someone with a similar solution to yours has wildly different performance results - an indication that the platform isn't calculating results correctly.

Lastly, try not to compare yourself to others at this point. Everyone progresses at a different pace, and that's OK. The key is to keep trying while taking care of yourself mentally and physically.

About

for algorithms and data structures course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published