mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-30 05:34:33 +08:00
contents: improve SEO of coding interview pages
This commit is contained in:
@ -3,7 +3,7 @@ id: best-practice-questions
|
||||
title: Best practice questions
|
||||
sidebar_label: 🔥 Best practice questions
|
||||
description: The best practice questions to prepare for algorithmic coding interviews by the author of Blind 75 spread across a 5-week schedule
|
||||
keywords: [algorithm, interview, questions, leetcode, blind 75]
|
||||
keywords: [algorithm, coding, interview, questions, leetcode, blind 75]
|
||||
---
|
||||
|
||||
<head>
|
||||
@ -13,7 +13,7 @@ keywords: [algorithm, interview, questions, leetcode, blind 75]
|
||||
|
||||
Hey there, the author of Blind 75 here 👋!
|
||||
|
||||
Practicing is the best way to prepare for coding interviews. Years ago, I curated a list of the most important 75 questions on [LeetCode](https://leetcode.com). Many other LeetCode questions are a mash of the techniques from these individual questions. I used this list in my last job hunt to only do the important questions.
|
||||
Practicing is the best way to prepare for coding interviews. LeetCode has over a thousand questions. Which should you practice? Hence years ago, I curated a list of the most important 75 questions on [LeetCode](https://leetcode.com). Many other LeetCode questions are a mash of the techniques from these individual questions. I used this list in my last job hunt to only do the important questions.
|
||||
|
||||
I [shared this list on Blind](https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU) by extracting the questions from [my freeCodeCamp article](https://www.freecodecamp.org/news/coding-interviews-for-dummies-5e048933b82b/) to save peoples' time when revising and someone reposted this list on [the LeetCode forum](https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions). It somehow blew up and became super famous in the coding interview scene, people even gave it a name - **Blind 75**. The Blind 75 questions as a LeetCode list can be found [here](https://leetcode.com/list/xi4ci4ig/).
|
||||
|
||||
|
@ -1,9 +1,17 @@
|
||||
---
|
||||
id: cheatsheet
|
||||
title: Cheatsheet
|
||||
title: Coding interview cheatsheet
|
||||
description: Things you should and shouldn't do during the coding interview
|
||||
sidebar_label: Cheatsheet
|
||||
keywords: [algorithm, coding, interview, cheatsheet, checklist]
|
||||
---
|
||||
|
||||
This is a straight-to-the-point, distilled list of technical interview Do's and Don'ts, mainly for algorithmic interviews. Some of these may apply to only phone screens or whiteboard interviews, but most will apply to both. I revise this list before each of my interviews to remind myself of them and eventually internalized all of them to the point I do not have to rely on it anymore.
|
||||
<head>
|
||||
<title>Coding interview cheatsheet | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="Coding interview cheatsheet | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
This is a straight-to-the-point, distilled list of technical interview Do's and Don'ts, mainly for algorithmic coding interviews. Some of these may apply to only phone screens or whiteboard interviews, but most will apply to both. I revise this list before each of my interviews to remind myself of them and eventually internalized all of them to the point I do not have to rely on it anymore.
|
||||
|
||||
#### Legend
|
||||
|
||||
|
@ -2,14 +2,30 @@
|
||||
id: coding-interview
|
||||
title: Coding interviews
|
||||
sidebar_label: Overview
|
||||
keywords:
|
||||
[
|
||||
algorithm,
|
||||
coding,
|
||||
interview,
|
||||
questions,
|
||||
leetcode,
|
||||
blind 75,
|
||||
technical,
|
||||
programming,
|
||||
]
|
||||
---
|
||||
|
||||
<head>
|
||||
<title>All you need to know about acing the coding interview | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="All you need to know about acing the coding interview | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
Coding interviews are tough. But fortunately, there's a tried and proven method to get better at them. With a combination of studying, practicing questions and doing mock interviews, getting that dream job can become a reality.
|
||||
|
||||
1. Decide on a programming language
|
||||
1. Study CS fundamentals
|
||||
1. Practice solving algorithm questions
|
||||
1. Decide on a [programming language](./picking-a-language.md)
|
||||
1. Study [Computer Science fundamentals](./study-and-practice.md)
|
||||
1. [Practice](./study-and-practice.md) solving algorithm questions
|
||||
1. Internalize the [Do's and Don'ts of interviews](./cheatsheet.md)
|
||||
1. Know what [signals and behaviors](./coding-signals.md) interviewers are looking out for
|
||||
1. Practice doing mock interviews
|
||||
1. Practice doing [mock interviews](./mock-interviews.md)
|
||||
1. Interview successfully to get the job
|
||||
|
@ -1,13 +1,19 @@
|
||||
---
|
||||
id: coding-signals
|
||||
title: Coding signals
|
||||
title: Coding interview signals
|
||||
keywords: [algorithm, coding, interview, signals, behavior]
|
||||
---
|
||||
|
||||
<head>
|
||||
<title>Signals interviewers look out for during coding interviews | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="Signals interviewers look out for during coding interviews | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
The point of interviews is for interviewers to extract signals from certain candidate behaviors. In coding interviews, the signals can be broadly classified into the following categories: Problem Solving, Technical Competency, Testing, and Communication.
|
||||
|
||||
When interviewers take down interview feedback, these are likely what is on their feedback sheet.
|
||||
|
||||
Refer to the [Facebook's Onsite Interview Guide](https://www.facebook.com/careers/swe-prep-onsite) for more information.
|
||||
Refer to the [Meta/Facebook's Onsite Interview Guide](https://www.metacareers.com/swe-prep-onsite/) for more information.
|
||||
|
||||
## Communication
|
||||
|
||||
|
@ -1,9 +1,15 @@
|
||||
---
|
||||
id: during-coding-interview
|
||||
title: During the coding interview
|
||||
description: The coding interview can be divided into stages, follow these recommended steps for each stage to ace the coding interview
|
||||
---
|
||||
|
||||
Congratulations, you are ready to put your skills into practice! In a real coding interview, you will be given a technical question (or questions) by the interviewer, write code in a real-time collaborative editor (phone screen/virtual onsite) or on a whiteboard (onsite) to solve the problem within 30–45 minutes. This is where the real fun begins!
|
||||
<head>
|
||||
<title>What to do during the coding interview | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="What to do during the coding interview | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
Congratulations, you are ready to put your practice to the test! In a real coding interview, you will be given a technical question (or questions) by the interviewer, write code in a real-time collaborative editor (phone screen/virtual onsite) or on a whiteboard (onsite) to solve the problem within 30–45 minutes. This is where the real fun begins!
|
||||
|
||||
Your interviewer will be looking out for signals that suggest you fit the requirements of the role and it is up to you to display those signals to them. Initially it may feel weird to be talking while you are coding as most programmers do not have the habit of explaining out loud as they are typing code. However, it is hard for the interviewer to know what you are thinking just by looking at the code that you type. If you communicate your approach to the interviewer before you start coding, you can validate your approach with them and the both of you can agree upon an acceptable approach.
|
||||
|
||||
@ -32,6 +38,7 @@ Some common questions you can ask:
|
||||
- What are some extreme cases of the input?
|
||||
- Can I destroy the original array/graph/data structure?
|
||||
- How is the input stored? If you are given a dictionary of words, is it a list of strings or a Trie?
|
||||
- If the input appears to be sorted, clarify if that is expected
|
||||
|
||||
After you have sufficiently clarified the scope and intention of the problem, explain your high level approach to the interviewer even if it is a naive solution. If you are stuck, consider various approaches and explain out loud why it will/will not work. Sometimes your interviewer might drop hints and lead you towards the right path.
|
||||
|
||||
@ -50,8 +57,9 @@ Getting stuck during coding interviews is extremely common. But do not worry, th
|
||||
- Think about how you would solve it without a program
|
||||
- You may spot a pattern and come up with a general algorithm for it
|
||||
- Recall past questions related to the topic, what similar questions in the past have you encountered and what techniques did you use to solve them?
|
||||
- Enumerate through the common data structures and whether they can be applied to the question. There really aren't that many - stack, queue, dictionary, heap, graph, etc.
|
||||
- Enumerate through the common data structures and algorithms whether they can be applied to the question. There really aren't that many - stack, queue, dictionary, heap, graph, etc.
|
||||
- Dictionaries/maps are extremely common in making algorithms more efficient
|
||||
- If the input appears to be sorted (or partially sorted), binary search should be one of the first things to try
|
||||
- Look out for repeated work and determine if you can cache those computations
|
||||
- Trade off memory for speed
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
id: interview-formats-top-companies
|
||||
title: Interview format at top companies
|
||||
description: Interview formats of the top tech companies. Know what to expect and prepare well for them
|
||||
sidebar_label: Top companies
|
||||
---
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
id: interview-formats
|
||||
title: Interview formats overview
|
||||
description: Common interview formats of tech companies and what they entail
|
||||
sidebar_label: Overview
|
||||
---
|
||||
|
||||
|
@ -3,12 +3,21 @@ id: mock-interviews
|
||||
title: Mock interviews
|
||||
---
|
||||
|
||||
<head>
|
||||
<title>Improve your technical interviewing skills through mock interviews | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="Improve your technical interviewing skills through mock interviews | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
Interviewing is a skill that you can get better at. The steps mentioned above can be rehearsed over and over again until you have fully internalized them and following those steps become second nature to you. A good way to practice is to find a friend to partner with and the both of you can take turns to interview each other.
|
||||
|
||||
## interviewing.io
|
||||
|
||||
A great resource for practicing mock coding interviews would be [interviewing.io](https://iio.sh/r/DMCa). interviewing.io provides anonymous practice technical interviews with Google and Facebook engineers, which can lead to real jobs and internships. By virtue of being anonymous during the interview, the inclusive interview process is de-biased and low risk. At the end of the interview, both interviewer and interviewees can provide feedback to each other for the purpose of improvement. Doing well in your mock interviews will unlock the jobs page and allow candidates to book interviews (also anonymously) with top companies like Uber, Lyft, Quora, Asana and more. You can also book mock interviews for more specific roles such as Mobile, Front End, Engineering Management. For those who are totally new to technical interviews, you can even view [recorded interviews](https://interviewing.io/recordings) and see how phone interviews are like. Read more about them [here](https://techcrunch.com/2017/09/27/interviewing-io-hopes-to-close-the-engineer-diversity-gap-with-anonymous-interviews/).
|
||||
|
||||
I have used interviewing.io both as an interviewer and an interviewee and found the experience to be really great! [Aline Lerner](https://twitter.com/alinelernerLLC), the CEO and co-founder of interviewing.io and her team are passionate about revolutionizing the technical interview process and helping candidates to improve their skills at interviewing. She has also published a number of technical interview-related articles on the [interviewing.io blog](http://blog.interviewing.io/).
|
||||
|
||||
## Pramp
|
||||
|
||||
Another platform that allows you to practice coding interviews is [Pramp](https://pramp.com/). Where interviewing.io matches potential job seekers with seasoned technical interviewers, Pramp takes a different approach. Pramp pairs you up with another peer who is also a job seeker and both of you take turns to assume the role of interviewer and interviewee. Pramp also prepares questions for you, along with suggested solutions and prompts to guide the interviewee.
|
||||
|
||||
Personally, I am not that fond of Pramp's approach because if I were to interview someone, I would rather choose a question I am familiar with. Also, many users of the platform do not have the experience of being interviewers and that can result in a horrible interview experience. There was once where my matched peer, as the interviewer, did not have the right understanding of the question and attempted to lead me down the wrong path of solving the question. However, this is more of a problem of the candidate than the platform though.
|
||||
|
@ -1,8 +1,27 @@
|
||||
---
|
||||
id: picking-a-language
|
||||
title: Picking a language
|
||||
title: Picking a programming language
|
||||
sidebar_label: Picking a language
|
||||
description: There are multiple programming languages you can choose from for coding interviews, which should you pick?
|
||||
keywords:
|
||||
[
|
||||
algorithms,
|
||||
programming,
|
||||
language,
|
||||
coding,
|
||||
interview,
|
||||
python,
|
||||
java,
|
||||
c++,
|
||||
javascript,
|
||||
]
|
||||
---
|
||||
|
||||
<head>
|
||||
<title>Which programming language is best for coding interviews? | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="Which programming language is best for coding interviews? | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
Before anything else, you need to pick a programming language to do your interviews in. Most companies will let you code in any language you want, the only exception I know being Google, where they only allow candidates to pick from Java, C++, JavaScript or Python for their algorithmic coding interviews.
|
||||
|
||||
## Some languages are more suited for interviews
|
||||
|
@ -1,8 +1,15 @@
|
||||
---
|
||||
id: self-introduction
|
||||
title: Self introduction
|
||||
description: Tips and techniques on how to leave a lasting impression on the interviewer through your self introduction
|
||||
keywords: [interview, self introduction, impression, best]
|
||||
---
|
||||
|
||||
<head>
|
||||
<title>How to do a killer self introduction in an interview | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="How to do a killer self introduction in an interview | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
Interviewers want to work with candidates they like. Leave a good/deep impression and it will increase your chances of success. Most of us are not strangers to self introductions as we meet new people now and then and have to introduce ourselves every once in a while. However, self introductions in interviews are slightly different from real life - you need to tweak it to your advantage - tailor the self introduction to the role and company you are applying for! Your self introduction evolves as you grow and are at a different stage of your career.
|
||||
|
||||
When being asked to introduce yourself, you can rephrase the question into:
|
||||
|
@ -1,11 +1,27 @@
|
||||
---
|
||||
id: study-and-practice
|
||||
title: Study and practice
|
||||
description: Mastery of Computer Science fundamentals, identifying question patterns, practicing good coding style is the key to improving in coding interviews
|
||||
keywords:
|
||||
[
|
||||
algorithm,
|
||||
coding,
|
||||
question,
|
||||
pattern,
|
||||
computer science,
|
||||
coding style,
|
||||
interview,
|
||||
]
|
||||
---
|
||||
|
||||
## Recap computer science fundamentals
|
||||
<head>
|
||||
<title>Efficient ways to study and practice for coding interviews | Tech Interview Handbook</title>
|
||||
<meta property="og:title" content="Efficient ways to study and practice for coding interviews | Tech Interview Handbook"/>
|
||||
</head>
|
||||
|
||||
If you have been out of college for a while, it is highly advisable to review CS fundamentals — Algorithms and Data Structures. Personally, I prefer to review as I practice, so I scan through my college notes and review the various algorithms as I work on algorithm problems from LeetCode and Cracking the Coding Interview.
|
||||
## Recap Computer Science fundamentals
|
||||
|
||||
If you have been out of college for a while, it is highly advisable to review Computer Science fundamentals — Algorithms and Data Structures. Personally, I prefer to review as I practice, so I scan through my college notes and review the various algorithms as I work on algorithm problems from LeetCode.
|
||||
|
||||
This [interviews repository](https://github.com/kdn251/interviews) by Kevin Naughton Jr. served as a quick refresher for me.
|
||||
|
||||
@ -19,7 +35,21 @@ Next, gain familiarity and mastery of the algorithms and data structures in your
|
||||
|
||||
### Practice coding questions
|
||||
|
||||
Practice coding algorithms using your chosen language. While [Cracking the Coding Interview](http://www.crackingthecodinginterview.com/) is a good resource for practice, I prefer being able to type code, run it and get instant feedback. There are various Online Judges such as [LeetCode](https://leetcode.com/), [HackerRank](https://www.hackerrank.com/) and [CodeForces](http://codeforces.com/) for you to practice questions online and get used to the language. From experience, LeetCode questions are the most similar to the kind of questions being asked in interviews whereas HackerRank and CodeForces questions resemble competitive programming questions. If you practice enough LeetCode questions, there is a good chance that you would have seen/done your actual interview question (or some variant) on LeetCode before. If you are more of a visual person, [Coderust](https://www.educative.io/collection/5642554087309312/5679846214598656?aff=x23W) explains the common algorithm questions through step-by-step visualizations which makes understanding the solutions much easier.
|
||||
Practice coding algorithms using your chosen language. While "Cracking the Coding Interview" is a good resource for practice, I prefer being able to type code, run it and get instant feedback. There are various Online Judges such as [LeetCode](https://leetcode.com/), [HackerRank](https://www.hackerrank.com/) and [CodeForces](http://codeforces.com/) for you to practice questions online and get used to the language. From experience, LeetCode questions are the most similar to the kind of questions being asked in interviews whereas HackerRank and CodeForces questions resemble competitive programming questions. If you practice enough LeetCode questions, there is a good chance that you would have seen/done your actual interview question (or some variant) on LeetCode before. If you are more of a visual person, [Coderust](https://www.educative.io/collection/5642554087309312/5679846214598656?aff=x23W) explains the common algorithm questions through step-by-step visualizations which makes understanding the solutions much easier.
|
||||
|
||||
### Broaden exposure
|
||||
|
||||
Gain a broad exposure to questions from various topics. In the second half of the article I mention algorithm topics and practice questions for each topic. If you can spare the time, do around 100–200 LeetCode questions of varying topics and you should be good. If you are short on time or not sure where to start, the [Best Practice Questions](./best-practice-questions.md) page tells you the best LeetCode questions to practice.
|
||||
|
||||
### Identify question patterns
|
||||
|
||||
As of writing, LeetCode has thousands of questions available. Which should you practice? It is not a good use of time to practice too many questions as after a while, you will realize that some questions are variants of one another and involve using similar techniques you've seen before. The trick here is to identify the question pattern and the technique you can use to solve variants of this question. Once you're familiar with a pattern, you'll be able to solve dozens of problems with a technique. Some techniques include - sliding window, two pointers, matrix traversal. The ["Grokking the coding interview" course by Educative](https://www.educative.io/courses/grokking-the-coding-interview?aff=x23W) shows you more techniques.
|
||||
|
||||
:::tip Expert tip
|
||||
|
||||
Learn and understand patterns, not memorize answers!
|
||||
|
||||
:::
|
||||
|
||||
### Space/time complexities
|
||||
|
||||
@ -33,8 +63,4 @@ Read up on the recommended coding style for your language and stick to it. If yo
|
||||
|
||||
Find out and be familiar with the common pitfalls and caveats of the language. If you point them out during the interview and intelligently avoid falling into them, you will usually impress the interviewer and that results in bonus points for your feedback, regardless of whether the interviewer is familiar with the language or not.
|
||||
|
||||
### Broaden exposure
|
||||
|
||||
Gain a broad exposure to questions from various topics. In the second half of the article I mention algorithm topics and practice questions for each topic. If you can spare the time, do around 100–200 LeetCode questions of varying topics and you should be good.
|
||||
|
||||
**Practice, practice and more practice!**
|
||||
**The key to interview success is practice, practice and more practice!**
|
||||
|
@ -39,7 +39,7 @@ Alice is an Engineering Manager with 10 years of professional experience. Her ba
|
||||
|
||||
Hence the amount of bonus you receive can be highly variable and senior employees get a higher proportion of their total compensation from bonuses.
|
||||
|
||||
## Equity/Stocks
|
||||
## Equity/stocks
|
||||
|
||||
Equity is what differentiates a tech job from a non-tech one. Equity means a share of the company; this signifies ownership and motivates employees to work in the best interests of the company. They can be a significant portion of one's compensation, sometimes even more than the base salary, especially for senior employees.
|
||||
|
||||
|
@ -145,6 +145,7 @@ export default React.memo(function SidebarAd() {
|
||||
path.includes('coding') ||
|
||||
path.startsWith('/best-practice-questions') ||
|
||||
path.startsWith('/cheatsheet') ||
|
||||
path.startsWith('/mock-interviews') ||
|
||||
path.startsWith('/algorithms')
|
||||
) {
|
||||
return (
|
||||
|
@ -274,7 +274,7 @@ function HowToUseStep({index, title, ctaLink, contents}) {
|
||||
</div>
|
||||
<div class="card__footer">
|
||||
<a
|
||||
class="button button--secondary button--block"
|
||||
class="button button--primary button--block"
|
||||
href={useBaseUrl(ctaLink)}>
|
||||
Read now →
|
||||
</a>
|
||||
|
Reference in New Issue
Block a user