tech-interview-handbook Documentation

Curated coding interview preparation materials for busy software engineers

RAW Doc

1. Project Overview & Quickstart (yangshun/tech-interview-handbook)

File: README.md

Tech Interview Handbook


What is this?

Not everyone has the time to do a few hundred LeetCode questions. Here are free and curated technical interview preparation materials for busy engineers, brought to you by me, the author of Blind 75. Over 1,000,000 people have benefitted from this handbook!

Besides the usual algorithm questions, other awesome stuff includes:

Help from you in contributing content would be very much appreciated!

Why would you read this?

This repository has practical content that covers all phases of a technical interview, from applying for a job to passing the interviews to offer negotiation. Technically competent candidates might still find the non-technical content helpful.

The information in this repository is condensed. Ultimately, the key to succeeding in technical interviews is consistent practice and I don't want to bore you with too many words. I tell you the minimum you need to know on how to go about navigating the interview process, you go and practice and land your dream job.

Who is this for?

Anybody who wants to land a job at a tech company but is new to technical interviews, seasoned engineers who have not been on the other side of the interviewing table in a while and want to get back into the game, or anyone who wants to be better at technical interviewing.



How is this repository different?

There are many awesome books like "Cracking the Coding Interview" and interview-related repositories out there on GitHub, what makes this repository different? The difference is that many existing interview repositories contain mainly links to external resources whereas this repository contains top-quality curated content directly for your consumption.

Also, existing resources focus mainly on algorithm questions and lack coverage for more domain-specific and non-technical questions. This handbook aims to cover content beyond the typical algorithmic coding questions. ๐Ÿ˜Ž

Looking for interview courses?

AlgoMonster aims to help you ace the technical interview in the shortest time possible. By Google engineers, AlgoMonster uses a data-driven approach to teach you the most useful key question patterns and has contents to help you quickly revise basic data structures and algorithms. Best of all, AlgoMonster is not subscription-based - pay a one-time fee and get lifetime access. Join today for a 70% discount โ†’

[Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)

This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages. Learn and understand patterns, not memorize answers! Get lifetime access today โ†’

Looking for Front End content?

Front-end-related content has been moved to a separate website - Front End Interview Handbook.

Looking for System Design content?

We're still working on System Design content. In the meanwhile, check out ByteByteGo's System Design Interview course or Design Gurus' Grokking the System Design Interview course, which in our opinion are among the most useful resources for getting started on system design interviews preparation.

Contents

A Docusaurus website has been created to provide a better reading experience. Check out the website here!



If you are interested in how data structures are implemented, check out Lago, a Data Structures and Algorithms library for JavaScript. It is pretty much still WIP but I intend to make it into a library that can be used in production and also a reference resource for revising Data Structures and Algorithms.

Contributing

There are no formal contributing guidelines at the moment as things are still in flux and we might find a better approach to structure content as we go along. You are welcome to contribute whatever you think will be helpful to fellow engineers. If you would like to contribute content for different domains, feel free to create an issue or submit a pull request and we can discuss further.

Contributors

This project exists thanks to all the people who contributed. [Contribute].

Backers

Thank you to all our backers! ๐Ÿ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo/profile picture will show up here with a link to your website. [Become a sponsor]

Disclaimer

I am providing code in the repository to you under an open source license. Because this is my personal repository, the license you receive to my code is from me and not my employer (Meta).


File: algorithms/README.md

Algorithms

The contents have been moved to the website.


File: apps/website/experimental/front-end/README.md

Front-end Job Interview Questions

Front-end Job Interview Questions have been migrated here.


File: apps/website/README.md

Website

This website is built using Docusaurus 2, a modern static website generator. It is part of the repository's Vite+ monorepo setup.

Installation

Vite+ manages installs through the repository's declared package manager. At the root of the repository, run vp install to install the monorepo dependencies.

sh
$ vp install

Local Development

Also at the root of the repository, run:

sh
$ vp run dev

This command starts a local development server and opens up a browser window. Most changes made to JavaScript and Markdown files will be reflected instantly without having to restart the server.

Build

From the repository root, run:

sh
$ vp run --filter @tih/website build

This command generates static content into the build directory and can be served using any static contents hosting service.

Deployment

text
$ cd apps/website
$ GIT_USER=<Your GitHub username> USE_SSH=1 vp run deploy

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.


File: apps/portal/README.md

Create T3 App

This is an app bootstrapped according to the init.tips stack, also known as the T3-Stack.

Why are there `.js` files in here?

As per T3-Axiom #3, we take typesafety as a first class citizen. Unfortunately, not all frameworks and plugins support TypeScript which means some of the configuration files have to be .js files.

We try to emphasize that these files are javascript for a reason, by explicitly declaring its type (cjs or mjs) depending on what's supported by the library it is used by. Also, all the js files in this project are still typechecked using a @ts-check comment at the top.

What's next? How do I make an app with this?

We try to keep this project as simple as possible, so you can start with the most basic configuration and then move on to more advanced configuration.

If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our Discord and ask for help.

Also checkout these awesome tutorials on create-t3-app.

How do I deploy this?

Vercel

We recommend deploying to Vercel. It makes it super easy to deploy NextJs apps.

  • Push your code to a GitHub repository.
  • Go to Vercel and sign up with GitHub.
  • Create a Project and import the repository you pushed your code to.
  • Add your environment variables.
  • Click Deploy
  • Now whenever you push a change to your repository, Vercel will automatically redeploy your website!

Docker

You can also dockerize this stack and deploy a container. See the Docker deployment page for details.

Useful resources

Here are some resources that we commonly refer to:

2. Official Technical Reference & Guides (yangshun/front-end-interview-handbook)

File: README.md


What is this?

Unlike typical software engineer job interviews, front end job interviews have less emphasis on algorithms and have more questions on intricate knowledge and expertise about the domainโ€Šโ€”โ€ŠHTML, CSS, JavaScript, just to name a few areas. This repository covers all you need to know for front end interviews:

Where to get hands on practice?

After getting a good understanding about front end interview preparation, try out GreatFrontEnd, a platform built by me! Not only are there 200+ practice questions, each with multiple solutions from Senior Front End Engineers, there are also automated test case suites to help you identify what's wrong with your code. Thus, check out the following resources:

  • Study plans help you prepare for your upcoming technical interviews, whether it is in a week or 3 months later.
  • Focus areas allow you to focus on your weak areas and also further improve your strengths depending on your preferences.
  • Preparation by stage prepares you for each phase of your interview process, from quiz to coding interviews.
  • Individual framework questions offer training based on specific frameworks that may be tested during your technical interviews.


Looking for Generic Interview Preparation?

You might be interested in the Tech Interview Handbook which has helpful content on general coding interviews such as algorithms, behavioral questions and an interview cheatsheet!

Translations

If you are interested in how data structures are implemented, check out Lago, a Data Structures and Algorithms library for JavaScript. It's meant for reference and studying purposes, not for production use.

Contributing

Contributing Guide

Read our contributing guide to learn about how you can contribute, how to propose improvements or if you are interested in translating the content.

Supporting

Many hours of hard work have gone into this project. Your support will be very appreciated!

License

All projects and packages in this repository are MIT licensed.


File: website/README.md

Website

This website is built using Docusaurus 2, a modern static website generator.

Run the following commands from the repository root.

Installation

text
$ vp install

Local Development

text
$ vp run dev

This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.

Build

text
$ vp run build

This command generates static content into the build directory and can be served using any static contents hosting service.

Deployment

text
$ GIT_USER=<Your GitHub username> USE_SSH=1 vp run deploy

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.