misc: add redirects

This commit is contained in:
Yangshun
2022-04-08 17:57:28 +08:00
parent 7eccc0db17
commit a6918b297b
23 changed files with 129 additions and 1680 deletions

View File

@ -1,190 +0,0 @@
---
id: behavioral-questions
title: Behavioral interview common questions
sidebar_label: Common questions
---
import InDocAd from './\_components/InDocAd';
Here's a list of common behavioral questions to prepare for. If you prepare well for the general questions and apply the STAR format along with demonstrating qualities, you will be fine.
## General
- Why do you want to work for X company?
- Why do you want to leave your current/last company?
- What are you looking for in your next role?
- Tell me about a time when you had a conflict with a co-worker.
- Tell me about a time in which you had a conflict and needed to influence somebody else.
- What project are you currently working on?
- What is the most challenging aspect of your current project?
- What was the most difficult bug that you fixed in the past 6 months?
- How do you tackle challenges? Name a difficult challenge you faced while working on a project, how you overcame it, and what you learned.
- What are you excited about?
- What frustrates you?
- Imagine it is your first day here at the company. What do you want to work on? What features would you improve on?
- What are the most interesting projects you have worked on and how might they be relevant to this company's environment?
- Tell me about a time you had a disagreement with your manager.
- Talk about a project you are most passionate about, or one where you did your best work.
- What does your best day of work look like?
- What is something that you had to push for in your previous projects?
- What is the most constructive feedback you have received in your career?
- What is something you had to persevere at for multiple months?
- Tell me about a time you met a tight deadline.
- If this were your first annual review with our company, what would I be telling you right now?
- Time management has become a necessary factor in productivity. Give an example of a time-management skill you've learned and applied at work.
- Tell me about a problem you've had getting along with a work associate.
- What aspects of your work are most often criticized?
- How have you handled criticism of your work?
- What strengths do you think are most important for _your job position_?
- What words would your colleagues use to describe you?
- What would you hope to achieve in the first six months after being hired?
- Tell me why you will be a good fit for the position.
## Airbnb
While loving to travel or appreciating Airbnb's growth may be good answers, try to demonstrate the deep connection you have with the product.
- What does "belong anywhere" mean to you?
- What large problems in the world would you solve today?
- Why do you like Airbnb?
- If you had an unlimited budget and you could buy one gift for one person, what would you buy and who would you buy it for?
- If you had an unlimited budget and you could go somewhere, where would you go?
- Share one of your trips with us.
- What is the most challenging project in or out of school that you have worked on in the last 6 months.
- What is something that you don't want from your last internship/job?
- Give me an example of when you've been a good host.
- What's something you'd like to remove from the Airbnb experience?
- What is something new that you can teach your interviewer in a few minutes?
- Tell me about why you want to work here.
- What is the best gift you have ever given or received?
- Tell me about a time you were uncomfortable and how you dealt with it.
- Explain a project that you worked on recently.
- What do you think of Airbnb?
- Tell me something about yourself and why you'd be a good fit for the position.
- Name a situation where you were impressed by a company's customer service.
- How did you work with senior management on large projects as well as multiple internal teams?
- Tell me about a time you had to give someone terrible news.
- If you were a gerbil, which gerbil would you be?
- What excites you about the company?
- How does Airbnb impact our guests and hosts?
- What part of our mission resonates the most with you?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Airbnb-Interview-Questions-E391850.htm)
## Amazon
- How do you deal with a failed deadline?
- Why do you want to work for Amazon?
- Tell me about a situation where you had a conflict with a teammate.
- In your professional experience have you worked on something without getting approval from your manager?
- Tell me a situation where you would have done something differently from what you actually did.
- What is the most exceedingly bad misstep you've made at any point?
- Describe what Human Resources means to you.
- How would you improve Amazon's website?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Amazon-Interview-Questions-E6036.htm)
## ByteDance
- What do you know about <role> and why?
- Take me through a product you launched from start to end
- What's the biggest achievement in your previous projects?
- Tell me about a recent failure and what you learned from the experience
- Why do you want to work at ByteDance?
- What makes you a good fit for this position?
- What excites you about the role?
Source: [Glassdoor](https://www.glassdoor.sg/Interview/ByteDance-Interview-Questions-E1624196.htm)
## Dropbox
- Talk about your favorite project.
- If you were hired here what would you do?
- State an experience about how you solved a technical problem. Be specific about the diagnosis and process.
Source: [Glassdoor](https://www.glassdoor.com/Interview/Dropbox-Interview-Questions-E415350.htm)
<InDocAd />
## Hired
- Tell me about yourself.
- What is your biggest strength and area of growth?
- Why are you interested in this opportunity?
- What are your salary expectations?
- Why are you looking to leave your current company?
- Tell me about a time your work responsibilities got a little overwhelming. What did you do?
- Give me an example of a time when you had a difference of opinion with a team member. How did you handle that?
- Tell me about a challenge you faced recently in your role. How did you tackle it? What was the outcome?
- Where do you want to be in five years?
- Tell me about a time you needed information from someone who wasn't responsive. What did you do?
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
## Lyft
- Tell me about your most interesting/challenging project to date.
- Why Lyft? What are you looking for in the next role?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Lyft-Interview-Questions-E700614.htm)
## Palantir
- **What is something 90% of people disagree with you about?**
- **What is broken around you?**
- How do you deal with difficult coworkers? Think about specific instances where you resolved conflicts.
- How did you win over the difficult employees?
- Tell me about an analytical problem that you have worked on in the past.
- What are your three strengths and three weaknesses?
- If you were in charge of picking projects for Palantir, what problem would you try to solve?
- What are some of the best and worst things about your current company?
- What would your manager say about you?
- Describe Palantir to your grandmother.
- Teach me something you've learned.
- Tell me a time when you predicted something.
- If your supervisors were to rate you on a scale of 1-10, what would they rate you?
- What was the most fun thing you did recently?
- Tell me the story of how you became who you are today and what made you apply to Palantir.
Source: [Glassdoor](https://www.glassdoor.com/Interview/Palantir-Technologies-Interview-Questions-E236375.htm)
<InDocAd/>
## Slack
- Tell me something about your internship.
- Why do you want to join Slack?
- Tell me about your past projects.
- Explain me your toughest project and the working architecture.
- Apart from technical knowledge, what did you learn during your internship?
- If someone has a different viewpoint to do a project like different programming language, how would handle this situation?
- What are your most interesting subjects and why?
- Did you find any bugs in Slack?
- What is your favorite feature and why?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Slack-Interview-Questions-E950758.htm)
## Stack Overflow
- What have you built?
- What is the hardest technical problem you have run into?
- How did you solve it?
- Where do you see yourself in 5 years?
- Why do you want to work here?
- How do you handle disagreements with co-workers?
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
## Stripe
- How do you stay up to date with the latest technologies?
- Explain a project that you worked on recently that was difficult.
- Where do you see yourself in five years?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Stripe-Interview-Questions-E671932.htm)
## Twitter
- What would your previous boss say your biggest strength was?
Source: [Glassdoor](https://www.glassdoor.com/Interview/Twitter-Interview-Questions-E100569.htm)

View File

@ -1,115 +0,0 @@
---
id: 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]
---
<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
- ✅ = Do
- ❌ = Don't
- ⚠️ = Situational
### Before interview
| | Things |
| --- | --- |
| ✅ | Prepare pen, paper and earphones/headphones. |
| ✅ | Find a quiet environment with good Internet connection. |
| ✅ | Ensure webcam and audio are working. There were times I had to restart Chrome to get Hangouts to work again. |
| ✅ | Request for the option to interview over Hangouts/Skype instead of a phone call; it is easier to send links or text across. |
| ✅ | Decide on and be familiar with a programming language. |
| ✅ | Familiarize yourself with the coding environment (CoderPad/CodePen). Set up the coding shortcuts, turn on autocompletion, tab spacing, etc. |
| ✅ | Prepare answers to the [frequently-asked behavioral questions](behavioral-questions.md) in an interview. |
| ✅ | Prepare some [questions to ask](questions-to-ask.md) at the end of the interview. |
| ✅ | Dress comfortably. Usually you do not need to wear smart clothes, casual should be fine. T-shirts and jeans are acceptable at most places. |
| ✅ | Stay calm and composed. |
| ⚠️ | Turn off the webcam if possible. Most remote interviews will not require video chat and leaving it on only serves as a distraction. |
### Introduction
| | Things |
| --- | --- |
| ✅ | Introduce yourself in a few sentences under a minute or two. |
| ✅ | Mention interesting points that are relevant to the role you are applying for. |
| ✅ | Sound enthusiastic! Speak with a smile and you will naturally sound more engaging. |
| ❌ | Spend too long introducing yourself. The more time you spend talking the less time you have to code. |
### Upon receiving the question
| | Things |
| --- | --- |
| ✅ | Repeat the question back at the interviewer. |
| ✅ | Clarify any assumptions you made subconsciously. Many questions are under-specified on purpose. E.g. a tree-like diagram could very well be a graph that allows for cycles and a naive recursive solution would not work. |
| ✅ | Clarify input format and range. Ask whether input can be assumed to be well-formed and non-null. |
| ✅ | Work through a small example to ensure you understood the question. |
| ✅ | Explain a high level approach even if it is a brute force one. |
| ✅ | Improve upon the approach and optimize. Reduce duplicated work and cache repeated computations. |
| ✅ | Think carefully, then state and explain the time and space complexity of your approaches. |
| ✅ | If stuck, think about related problems you have seen before and how they were solved. Check out the [tips](/algorithms/study-cheatsheet.md) in this section. |
| ❌ | Ignore information given to you. Every piece is important. |
| ❌ | Jump into coding straightaway. |
| ❌ | Start coding without interviewer's green light. |
| ❌ | Appear too unsure about your approach or analysis. |
### Code out your solution
| | Things |
| --- | --- |
| ✅ | Explain what you are coding/typing to the interviewer, what you are trying to achieve. |
| ✅ | Practice good coding style. Clear variable names, consistent operator spacing, proper indentation, etc. |
| ✅ | Type/write at a reasonable speed. Too slow is no good. |
| ✅ | As much as possible, write actual compilable code, not pseudocode. |
| ✅ | Write in a modular fashion. Extract out chunks of repeated code into functions. |
| ✅ | Ask for permission to use trivial functions without having to implement them; saves you some time. |
| ✅ | Use the hints given by the interviewer. |
| ✅ | Demonstrate mastery of your chosen programming language. |
| ✅ | Demonstrate technical knowledge in data structures and algorithms. |
| ✅ | If you are cutting corners in your code, state that out loud to your interviewer and say what you would do in a non-interview setting (no time constraints). E.g., "Under non-interview settings, I would write a regex to parse this string rather than using `split()` which may not cover all cases." |
| ✅ | Practice whiteboard space-management skills. |
| ⚠️ | Reasonable defensive coding. Check for nulls, empty collections, etc. Can omit if input validity has been clarified with the interviewer. |
| ❌ | Remain quiet the whole time while coding. |
| ❌ | Spend too much time writing comments. |
| ❌ | Use extremely verbose or single-character (unless they're common like `i`, `n`) variable names. |
| ❌ | Copy and paste code without checking (e.g. variables need to be renamed). |
| ❌ | Interrupt your interviewer when they are talking. Usually if they speak, they are trying to give you hints or steer you in the right direction. |
| ❌ | Write too big (takes up too much space) or too small (illegible) if on a whiteboard. |
### After coding
| | Things |
| --- | --- |
| ✅ | Scan through your code for mistakes as if it was your first time seeing code written by someone else. |
| ✅ | Check for off-by-one errors. |
| ✅ | Come up with test cases. Try extreme test cases - empty sets, single item sets, negative numbers |
| ✅ | Step through your code with those test cases. |
| ✅ | Look out for places where you can refactor. |
| ✅ | Reiterate the time and space complexity of your code. |
| ✅ | Explain trade-offs and how the code/approach can be improved if given more time. |
| ❌ | Immediately announce that you are done coding. Do the above first! |
| ❌ | Argue with the interviewer. They may be wrong but that is very unlikely given that they are familiar with the question. |
### Wrap up
| | Things |
| --- | --- |
| ✅ | Ask questions. More importantly, ask good and engaging questions that are tailored to the company! Pick some questions from [this list](questions-to-ask.md). |
| ✅ | Thank the interviewer. |
| ⚠️ | Ask about your interview performance. It can get awkward. |
| ❌ | End the interview without asking any questions. |
### Post interview
| | Things |
| --- | --- |
| ✅ | Record the interview questions and answers down as these can be useful for future reference. |
| ⚠️ | Send a follow up email to your interviewer(s) thanking them for their time and the opportunity to interview with them. |

View File

@ -1,83 +0,0 @@
---
id: coding-interview
title: Step-by-step coding interview guide
description: 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.
sidebar_label: Step-by-step guide
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.
We recognize that there is no one-size-fits-all path to interviewing success, it is largely dependent on the individual. Here's how I recommend navigating the content of this book depending on your background for the following group of people:
- [New to coding interviews - typically college freshmen/sophomores/bootcamp grads](#newbie)
- [Passed interviews before - typically college juniors/seniors](#returning)
- [Worked in the industry](#experienced)
## New to coding interviews {#newbie}
_Recommended for college freshmen/sophomores/juniors looking for their first internship or bootcamp graduates looking for their first job._
If you are new to coding interviews (e.g. first time interviewing for an internship/full-time job), we recommend reading through the entire section from start to finish.
1. Decide on a [programming language](./picking-a-language.md)
1. Study and revise
- Revise your [Computer Science fundamentals](./study-and-practice.md)
- Go over the [algorithm tips](.//algorithms/study-cheatsheet.md)
- Take [online courses](./best-coding-interview-courses.md) if you need more materials
1. Practice solving algorithm questions
- Do the [best practice questions](./best-practice-questions.md)
1. Know how coding interviews are like
- Internalize the [Do's and Don'ts of interviews](./cheatsheet.md)
- Know what [signals and behaviors](./coding-signals.md) interviewers are looking out for
1. Do [mock interviews](./mock-interviews.md)
1. Interview successfully to get the job
## Passed interviews before {#returning}
_Recommended for college juniors/seniors looking for their second internship or first full-time job._
You have successfully passed coding interviews before and it is not your first time job hunting. You are somewhat familiar with technical interviewing but have not interviewed in a while. It would still be good to go through most of the content in the handbook but use your own discretion and accelerate/skip portions you are familiar with.
1. Study and revise
- Revise your [Computer Science fundamentals](./study-and-practice.md)
- Go over the [algorithm tips](.//algorithms/study-cheatsheet.md)
- Take [online courses](./best-coding-interview-courses.md) if you need more materials
1. Practice solving algorithm questions
- Do the [best practice questions](./best-practice-questions.md)
1. Know how coding interviews are like
- Internalize the [Do's and Don'ts of interviews](./cheatsheet.md)
- Know what [signals and behaviors](./coding-signals.md) interviewers are looking out for
1. Do [mock interviews](./mock-interviews.md)
1. Interview successfully to get the job
1. [Negotiate](./negotiation.md) the offer!
1. Check out tips on [choosing between different offers from companies](./choosing-between-companies.md)
## Mid-level/senior candidates {#experienced}
_Recommended for people who have been working in the industry for at least a few years._
You have been working for a few years now and are a little rusty with the less common data structures and algorithms taught back in school because you don't get to use them very often at work.
1. Revise a bit of [Computer Science fundamentals](./study-and-practice.md)
- Take [online courses](./best-coding-interview-courses.md) if you have lost access to your college materials
1. Practice efficiently via the [best practice questions](./best-practice-questions.md)
1. Do [mock interviews](./mock-interviews.md)
1. Interview successfully to get the job
1. [Negotiate](./negotiation.md) the offer!
1. Check out tips on [choosing between different offers from companies](./choosing-between-companies.md)

View File

@ -1,110 +0,0 @@
---
id: coding-signals
title: Coding interview signals
keywords: [algorithm, coding, interview, signals, behavior]
toc_max_heading_level: 2
---
<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 [Meta/Facebook's Onsite Interview Guide](https://www.metacareers.com/swe-prep-onsite/) for more information.
## Communication
### Clarify problem
- 👍 Appropriately asked good, clarifying questions about the problem
- 👎 Failed to confirm understanding/ask appropriate questions
### Communicating approach
- 👍 Able to explain overall approach, technical terms, and acronyms (where applicable)
- 👎 Failed to effectively explain overall approach, technical terms, and acronyms (where applicable)
### Explains while coding
- 👍 Explains what the code is doing while coding, especially for parts that aren't obvious
- 👎 Keeps silent during coding, or just reading out the code without much explanation
## Problem solving
### Understanding the problem
- 👍 Understood the key aspects of the problem quickly
- 👎 Had difficulty in understanding the key aspects of the problem
### Solution/approach
- 👍 Approached the problem in a systematic and logical manner
- 👎 Did not demonstrate a logical thought process for approaching the problem
### Trade-offs analysis
- 👍 Came up with multiple solutions and explained the trade-offs of each clearly and correctly
- 👎 Failed to describe trade-offs of different solutions
### Improving the solution
- 👍 Suggested a more efficient solution when prompted, or proactively coming up with a better solution
- 👎 Had difficulty in coming up with a more efficient solution even after being prompted
### Complexity analysis
- 👍 Able to determine the algorithmic time and space complexity
- 👎 Was not able to determine the algorithmic time and space complexity (explain why TC came up with such an answer)
### Hinting
- 👍 Did not require any major hints
- 👎 Needed plenty of hints
## Technical competency
### Speed
- 👍 Quickly implemented a working solution
- 👎 Was not able to complete the solution
### Correctness/Accuracy
- 👍 Implemented the solution correctly (e.g., working solution, minimal bugs)
- 👎 Unable to correctly implement a solution (e.g., non-working solution, incorrect logic, and/or serious bugs)
### Mastery of chosen programming language
- 👍 Demonstrated mastery of the chosen programming language
- 👎 Does not seem to be familiar with the chosen programming language
### Implementation
- 👍 Implementation was clean and straightforward
- 👎 Implementation was unnecessarily complex and/or messy
### Coding style
- 👍 Coding style was neat (proper indentation, spacing, and no bad practices)
- 👎 Coding style was messy (inconsistent indentation, weird spacings, etc.)
## Testing
### Common cases
- 👍 Tested their code against various typical cases
- 👎 Failed to test the code against typical cases
### Corner cases
- 👍 Found and handled corner/edge cases
- 👎 Failed to consider corner/edge cases
### Self-correction
- 👍 Identified and corrected bugs in the code (where applicable)
- 👎 Not able to discover and fix bugs even after being hinted/prompted

View File

@ -1,10 +0,0 @@
---
id: cover-letter
title: Cover letter
---
- A short introduction describing who you are and what you're looking for
- What projects have you enjoyed working on?
- Which have you disliked? What motivates you?
- Links to online profiles you use (GitHub, Twitter, etc)
- A description of your work history (whether as a resume, LinkedIn profile, or prose)

View File

@ -1,90 +0,0 @@
---
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
---
import InDocAd from './\_components/InDocAd';
<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 3045 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.
## Before the interview (remote)
For phone screens/remote interviews, prepare paper and pen/pencil to jot down and visualize stuff. If you are given a question on trees and graphs, it usually helps if you draw out some examples of the data structure given in the question.
Use earphones and make sure you are in a quiet environment. You definitely do not want to be holding a phone in one hand and only having the other hand to type. Try avoiding using speakers because if the echo is bad, communication is harder and repeating of words will just result in loss of valuable time.
## Self introduction
Prepare a self introduction by following the [self introduction section](./self-introduction.md).
## Upon receiving the question
Many candidates jump into coding the moment they hear the question. That is usually a big mistake. Take a moment to repeat the question back at the interviewer and make sure that you understand exactly what they are asking. Repeating back/rephrasing the question will reduce chances of miscommunication.
Always seek clarification about the question upon hearing it even if it you think it is clear to you. You might discover something that you have missed out and it also sends a signal to the interviewer that you are a careful person who pays attention to details. Some interviewers deliberately omit important details to see if you ask the right questions.
Some common questions you can ask:
- How big is the size of the input?
- How big is the range of values?
- What kind of values are there? Are there negative numbers? Floating points? Will there be empty inputs?
- Are there duplicates within the input?
- 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.
Start with a brute force approach, communicate it to the interviewer, explain the time and space complexity and why it is bad. It is unlikely that the brute force approach will be one that you will be coding. At this point, the interviewer will usually pop the dreaded "Can we do better?" question, meaning that they are looking for a more optimal approach. In my opinion, this is usually the hardest part of the interview. In general, look for repeated work and try to optimize them by potentially caching the calculated result somewhere and reference it later, rather than having to compute it all over again. There are some tips on tackling topic-specific questions that I dive into details below.
Only start coding after you and your interviewer have agreed on an approach and they have given you the green light.
<InDocAd/>
## What to do when stuck
Getting stuck during coding interviews is extremely common. But do not worry, that is part of the process and is a test of your problem solving abilities. Here are some tips to try out when you are stuck:
- Talk through what you initially thought might work and explain why it doesn't
- This can help guide you on the right track by avoiding the pitfalls
- Come up with more test cases and write them down
- A pattern may emerge
- 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 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
## While coding
Write your code with a neat coding style (consistent indentation, spacing around your operators). Reading code written by others is usually not an enjoyable task. Reading horribly-formatted code by others makes it worse. Your goal is to make your interviewer understand the code you have written so that they can quickly evaluate if your code does what you say it does and whether it solves the given problem. Use clear variable names, avoid single letter names unless they are for iteration. However, if you are coding on a whiteboard, you might not want to use extremely verbose variable names for the sake of reducing the amount you have to write. Abbreviations are usually fine if you explain what it means beforehand.
Always be explaining what you are currently writing/typing to the interviewer. This is not about literally reading out what you are typing to the interviewer. Talk about the section of the code you are currently implementing at a higher level, explain why it is written as such and what it is trying to achieve.
While coding, if you find yourself copying and pasting code, consider whether it is necessary. If you find yourself copying and pasting one large chunk of code spanning multiple lines, it is usually an indicator that you can refactor by extracting those lines into a function and defining parameters for the differences in them. If it is just a single line you copied, usually it is fine. Do remember to change the respective variables in your copied line of code where relevant. Copy-paste errors are a common source of bugs even in day-to-day coding!
## After coding
After you have finished coding, do not immediately announce to the interviewer that you are done. In most cases, your code is usually not perfect and contains some bugs or syntax errors. What you need to do now is to review your code.
Firstly, look through your code from start to finish as if it is the first time you are seeing it, as if it was written by someone else and you are trying to spot bugs in it. That's exactly what your interviewer will be doing. Look through and fix any minor issues you may find.
Next, take the initiative to come up with small test cases and step through the code (not your algorithm!) with those sample input. What interviewers usually do after you have finished coding would be to get you to write tests. It is a huge plus if you write tests for your code even **before** they prompt you to do so. You should be emulating a debugger when stepping through and jot down or say out the values of the important variables as you step through the lines of code.
If there are huge duplicated chunks of code in your solution, it would be a good chance to refactor it and demonstrate to the interviewer that you are one who values code quality. Also look out for places where you can do [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation).
Lastly, give the time/space complexity of your code and explain why it is such. You can even annotate certain chunks of your code with the various time/space complexities to demonstrate your understanding of your code and the APIs of your chosen programming language. Explain any trade-offs in your current approach vs alternative approaches, possibly in terms of time/space.
If your interviewer is happy with the solution, the interview usually ends here. It is also not uncommon that the interviewer asks you extension questions, such as how you would handle the problem if the whole input is too large to fit into memory, or if the input arrives as a stream. This is a common follow-up question at Google where they care a lot about scale. The answer is usually a divide-and-conquer approachperform distributed processing of the data and only read certain chunks of the input from disk into memory, write the output back to disk, and combine them later on. Being able to solve these extension questions will indicate that you are a strong candidate which will likely lead to a better offer.

View File

@ -1,16 +0,0 @@
---
id: how-to-apply
title: How to apply
---
## Apply Directly
TODO
## Referrals
TODO
## Agencies/Portals
TODO

View File

@ -1,55 +0,0 @@
---
id: interview-formats
title: Interview formats overview
description: Common interview formats of tech companies and what they entail
sidebar_label: Overview
---
import InDocAd from './\_components/InDocAd';
Interviews are a multi-stage process and each stage can consist of vastly different formats.
## Various formats
### Quiz
Quizzes are meant to be a first-pass filter as a quick and dirty way of weeding out extremely weak (or even non-technical) candidates. They are structured questions and have clear-cut answers which makes them possible to be administered by recruiters/non-technical folks or automated graders. They are typically done early in the process.
Examples:
- What is 4 & 5 (in binary)? Answer: 4
- What is the time complexity of bubble sort? Answer: O(n<sup>2</sup>)
### Online coding assessment
Like quizzes, online coding assessments are usually given early in the process. An algorithm problem is given with well-formed input and output and candidates are expected to write code in an online coding interface to solve the problem. [Hackerrank](https://www.hackerrank.com) is a very common platform for conducting online coding assessments. LeetCode would be a good way to practice for the problem solving aspects of online coding assessments. However, in Hackerrank you are typically expected to write code to read from stdin and also print to stdout, which can trip candidates up if they aren't familiar with the APIs.
### Take home assignment
There has been numerous debates on whether asking algorithm questions are a good way of assessing individual abilities as they aren't exactly the most relevant skills needed on a day-to-day basis at a job. Take home assignment is a format designed to address the shortcomings of the algorithm interview by getting candidates to work on larger projects which allow them to demonstrate software design skills.
However, this interview format takes up more time from both the candidates and the company and hence it is not as commonly seen in large companies where they have a high volume of candidates. This format is more common among startups and small companies.
Examples
- Build a flights listing app
- Build a kanban app
- Build a snake game
<InDocAd/>
### Phone interview
Phone interviews are the most common format and every candidate will face this at least once while interviewing. You will be asked to speak with an interviewer either over a phone call or VoIP (BlueJeans/Skype/Google Hangout). A question will be given to you and you will work on that question using an online collaborative editor (CoderPad/CodePen/Google Docs).
You are usually not allowed to execute the code even if the editor supports execution. So don't rely on that for verifying the correctness of your solution. Formats would differ slightly depending on the roles you are applying to. Many companies like to use [CoderPad](https://coderpad.io/) for collaborative code editing. CoderPad supports running of the program, so it is possible that you will be asked to fix your code such that it can be run. For front end interviews, many companies like to use [CodePen](https://codepen.io/), and it will be worth your time to familiarize yourself with the user interfaces of such web-based coding environments.
### Onsite
If you have made it to this stage, congratulations! This is usually the final stage before an offer decision. Candidates who made it to the onsite stage will be required to have an in-person interview at the office. If you are an overseas candidate, companies might even fly you in and pay for your accommodations!
The onsite stage usually consists of multiple rounds (coding, system design, behavioral) and is expected to last for a few hours. Since you are onsite, it is possible that you will be asked to do a whiteboard exercise with an interviewer, usually either solving an algorithm question or a system design question. It is also possible that you have to bring your own laptop and work on a project/solve a coding problem on the spot.
For onsite interviews at smaller (non-public) companies, most will allow (and prefer) that you use your own laptop. Hence it is important that you prepare your development environment in advance.
If the company provides lunch, you might also have a lunch session with an employee where you can find out more about the company culture.

View File

@ -1,28 +0,0 @@
---
id: introduction
title: Introduction
---
## What is this?
The **Tech Interview Handbook** contains carefully curated content to help you ace your next technical interview with a focus on algorithms. While there are a ton of interview resources on the internet, the best ones are either not free, or they do not cover the complete interview process, usually only focusing on algorithms. Tech Interview Handbook goes straight to the point and tells you the minimum you need to know to pass your technical interviews.
Over 500,000 people have benefitted from this handbook! I have lost count of the number of people who have messaged me on Twitter/LinkedIn to thank the Tech Interview Handbook for helping them in their job hunt.
## Who am I?
In 2017, I was frustrated at my job at Grab, a regional ridehailing company and wanted to break into FAANG but I didn't know how to. After few months of research, studying and practicing, I interviewed at 11 companies and managed to get offers from top tech companies in the Bay Area - Google, Airbnb, Palantir, Dropbox, Lyft, and some startups.
It was a tedious process which I don't ever want to go through again. **I went through that process but with this handbook, you don't have to.** This handbook contains the essence of technical interviewing which will benefit you in your job hunt.
## 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?
Whether you are a beginner to technical interviews or a seasoned engineer who has not been on the other side of the interviewing table in a while and want to get back into the game, the Tech Interview Handbook has got you covered.
If you are a busy engineer like most people are, this resource is for you. Nobody has time to do hundreds of LeetCode questions, and the good news is that you don't need to do that many to actually get the job at FAANG! I looked through hundreds of LeetCode questions and distilled the [best questions to practice](./best-practice-questions.md).

View File

@ -1,60 +0,0 @@
---
id: 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
There are some languages which are more suitable than others for coding interviews and some languages you absolutely want to avoid. From my experience as an interviewer, most candidates pick Python or Java. Other commonly seen languages include JavaScript, Ruby and C++. I would absolutely avoid lower level languages like C or Go, simply because they lack many standard library functions and data structures and some may require manual memory management.
Personally, Python is my de facto choice for algorithm coding interviews because it is succinct and has a huge library of functions and data structures available. Python also uses consistent APIs that operate on different data structures, such as `len()`, `for ... in ...` and slicing notation on sequences (strings/lists/tuples). Getting the last element in a sequence is `arr[-1]` and reversing it is simply `arr[::-1]`. You can achieve a lot with minimal syntax in Python.
Java is a decent choice too but having to constantly declare types in your code means extra keystrokes which results in more typing which doesn't result in any benefit (in an interview setting). This issue will be more apparent when you have to write on a whiteboard during onsite interviews. The reasons for choosing/not choosing C++ are similar to Java. Ultimately, Python, Java and C++ are decent choices of languages.
- Recommended: Python, C++, Java, JavaScript
- Acceptable (but prefer recommended if you are familiar): Go, Ruby, PHP, C#, Swift, Kotlin
- Avoid: Haskell, Erlang, Perl, C, Matlab
- You must be mad: Brainfuck, Assembly
## Use a language you are familiar with
Most of the time, it is recommended that you use a language that you are extremely familiar with rather than picking up a new language just for using in interviews.
If you are under time constraints, picking up a new language just for interviewing is hardly a good idea. Languages take time to master and if you are already spending most of your time and effort on revising/mastering algorithms, there is barely spare energy left for mastering a new language. If you are familiar with using one of the mainstream languages, there isn't a strong reason to learn a new language just for interviewing.
If you have been using Java at work for a while now and do not have time to be comfortably familiar with another language, I would recommend just sticking to Java instead of picking up Python from scratch just for the sake of interviews. Doing so, you can avoid having to context switch between languages during work vs interviews. **Most of the time, the bottleneck is in the thinking and not the writing**. It takes some getting used to before one becomes fluent in a language and be able to wield it with ease.
Valid reasons to learn a new language:
- The interview requires usage of that language (domain-specific roles like mobile/front end/data science)
- You are not in a rush to start interviewing
Poor reasons to learn a new language:
- The company you are interviewing with uses that language heavily and you want to impress the interviewer/show that you fit in
- You want to show that you are trendy
## The exception to the norm
One exception to the convention of allowing you to "pick any programming language you want" is when you are interviewing for a domain-specific position, such as Front End/iOS/Android Engineer roles, in which you would need to be familiar with coding in JavaScript, Objective-C/Swift and Java respectively. If you need to use a data structure that the language does not support, such as a Queue or Heap in JavaScript, perhaps try asking the interviewer whether you can assume that you have a data structure that implements certain methods with specified time complexities. If the implementation of that data structure is not crucial to solving the problem, the interviewer will usually allow this. In reality, being aware of existing data structures and selecting the appropriate ones to tackle the problem at hand is more important than knowing the intricate implementation details.

View File

@ -1,30 +0,0 @@
---
id: psychological-tricks
title: Psychological tricks
---
Here are some psychological tricks that will help you ace a job interview.
- Tailor your answers to the interviewer's age.
- Generation Y interviewers (between 20 and 30): Bring along visual samples of your work and highlight your ability to multitask.
- Generation X interviewers (between 30 and 50): Emphasize your creativity and mention how work/life balance contributes to your success.
- Baby Boomer interviewers (between 50 and 70): Show that you work hard and demonstrate respect for what they've achieved.
- Hold your palms open or steeple your hands.
- Find something in common with your interviewer.
- Mirror the interviewer's body language.
- Compliment the interviewer and the organization without self-promoting.
- Specifically, the students who ingratiated themselves praised the organization and indicated their enthusiasm for working there, and complimented the interviewer. They didn't play up the value of positive events they took credit for or take credit for positive events even if they weren't solely responsible.
- Show confidence and deference simultaneously.
- In a job interview, that means showing deference to your interviewer, while also demonstrating self-confidence. One way to do that is to say something like, "I love your work on [whatever area]. It reminds me of my work on [whatever area]."
- Emphasize how you took control of events in your previous jobs.
- To impress your interviewer, you should talk about past work experiences where you took initiative.
- Be candid about your weaknesses.
- It's wiser to say something genuine like, "I'm not always the best at staying organized," which sounds more honest, and could make your interviewer more inclined to recommend you for the position.
- Explain what you do in order to minimize the effects of this weakness on your work. If you say you "focus too much on detail" follow up by saying something like "I make sure to often take a step back and make sure it really matters on the bigger picture and I'm not spending time on something meaningless".
- Speak expressively.
- Showcase your potential.
- You might be tempted to tell your interviewer all about your past accomplishments — but research suggests you should focus more on what you could do in the future, if the organization hires you.
###### References
- [Business Insider](http://www.businessinsider.com/psychological-tricks-to-ace-job-interview-2015-11)

View File

@ -1,136 +0,0 @@
---
id: questions-to-ask
title: Questions to ask
---
import InDocAd from './\_components/InDocAd';
Here are some good questions to ask at the end of the interview, extracted from various sources. The ones in **bold** are the ones that tend to make the interviewer go "That's a good question" and pause and think for a bit.
## General
- **What are you most proud about in your career so far?**
- **What is the most important/valuable thing you have learnt from working here?**
- How do your clients and customers define success?
- What would you change around here if you could?
- What are some weaknesses of the organization?
- What does a typical day look like for you?
- What do you think the company can improve at?
- How would you see yourself growing at this company in the next few years?
- Was there a time where you messed up and how was it handled?
- Why did you choose to come to this company?
- When you were last interviewing, what were some of your other options, and what made you choose this company?
- What was something you wish someone would have told you before you joined?
- What was your best moment so far at the company?
## Culture
- **What is the most frustrating part about working here?**
- **What is unique about working at this company that you have not experienced elsewhere?**
- **What is something you wish were different about your job?**
- How will the work I will be doing contribute to the organization's mission?
- What do you like about working here?
- What is your policy on working from home/remotely?
- (If the company is a startup) When was the last time you interacted with a founder? What was it regarding? Generally how involved are the founders in the day-to-day?
- Does the company culture encourage entrepreneurship? Could you give me any specific examples?
## Technical
These questions are suitable for any technical role.
- **What are the engineering challenges that the company/team is facing?**
- **What has been the worst technical blunder that has happened in the recent past? How did you guys deal with it? What changes were implemented afterwards to make sure it didn't happen again?**
- **What is the most costly technical decision made early on that the company is living with now?**
- **What is the most fulfilling/exciting/technically complex project that you've worked on here so far?**
- **I do / don't have experience in domain X. How important is this for me to be able to succeed?**
- How do you evaluate new technologies? Who makes the final decisions?
- How do you know what to work on each day?
- How would you describe your engineering culture?
- How has your role changed since joining the company?
- What is your stack? What is the rationale for/story behind this specific stack?
- Do you tend to roll your own solutions more often or rely on third party tools? What's the rationale in a specific case?
- How does the engineering team balance resources between feature requests and engineering maintenance?
- What do you measure? What are your most important product metrics?
- What does the company do to nurture and train its employees?
- How often have you moved teams? What made you join the team you're on right now? If you wanted to move teams, what would need to happen?
- What resources does the company have for new hires to study its product and processes? Are there specifications, requirements, documentation?
- There's "C++" (or Python, Swift or any other tech) in the job description. How will you estimate my proficiency in this tech in 3 months?
- How do you think my expertise would be relevant to this team? What unique value can I add?
<InDocAd/>
## Product
- Tell me about the main products of your company.
- What is the current version of product? (If it is v1.0 or similar - there could be a lot of chaos to work with)
- What products are your main competitors?
- What makes your product competitive?
- When are you planning to provide the next release? (If in several months, it would mean a lot of requirements specified in job description are not needed right now)
- Is the team growing, and what sort of opportunities will there be in the next year/3 years?
- What are your highest priorities right now? For example, new features, new products, solidifying existing code, reducing operations overhead?
## Management
These questions are suitable for asking Engineering Managers, especially useful for the Team Matching phase of Google interviews or post-offer calls that your recruiters set up with the various team managers.
- **How do you train/ramp up engineers who are new to the team?**
- **What does success look like for your team/project?**
- **What qualities do you look out for when hiring for this role?**
- **What are the strengths and weaknesses of the current team? What is being done to improve upon the weaknesses?**
- **Can you tell me about a time you resolved an interpersonal conflict?**
- How did you become a manager?
- How do your engineers know what to work on each day?
- What is your team's biggest challenge right now?
- How do you measure individual performance?
- How often are 1:1s conducted?
- What is the current team composition like?
- What opportunities are available to switch roles? How does this work?
- Two senior team members disagree over a technical issue. How do you handle it?
- Have you managed a poor performer at some point in your career before? What did you do and how did it work?
- Where do you spend more of your time, high performers or low performers?
- Sometimes there's a trade-off between what's best for one of your team members and what's best for the team. Give an example of how you handled this and why.
- Give an example of a time you faced a difficult mentoring/coaching challenge. What did you do and why?
- What is your management philosophy?
- What is the role of data and metrics in managing a team like ours?
- What role does the manager play in making technical decisions?
- What is an example of a change you have made in the team that improved the team?
- What would be the most important problem you would want me to solve if I joined your team?
- What opportunities for growth will your team provide?
- What would I work on if I joined this team and who would I work most closely with?
<InDocAd/>
## Leadership
These questions are intended for senior level management, such as CEO, CTO, VPs. Candidates who interview with startups usually get to speak with senior level management.
- How are you funded?
- Are you profitable? If no, what's your plan for becoming profitable?
- What assurance do you have that this company will be successful?
- Tell me about your reporting structure.
- How does the company decide on what to work on next?
## HR
- **How do you see this position evolving in the next three years?**
- **Who is your ideal candidate and how can I make myself more like them?**
- What concerns/reservations do you have about me for this position?
- What can I help to clarify that would make hiring me an easy decision?
- How does the management team deal with mistakes?
- If you could hire anyone to join your team, who would that be and why?
- How long does the average engineer stay at the company?
- Why have the last few people left?
- Have you ever thought about leaving? If you were to leave, where would you go?
## References
- [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/)
- [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433)
- [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask)
- [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/)
- [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/)
- [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/)
- [A developer's guide to interviewing](https://medium.freecodecamp.org/how-to-interview-as-a-developer-candidate-b666734f12dd)
- [Questions I'm asking in interviews 2017](https://cternus.net/blog/2017/10/10/questions-i-m-asking-in-interviews-2017/)
- [What are good questions to ask during a software developer interview when asked "Do you have any questions now?"](https://www.quora.com/What-are-good-questions-to-ask-during-a-software-developer-interview-when-asked-do-you-have-any-questions-now/answer/John-L-Miller)
- [What are some good questions to ask when interviewing someone for a manager position?](https://www.quora.com/What-are-some-good-questions-to-ask-when-interviewing-someone-for-a-manager-position/answer/David-Seidman)

View File

@ -1,196 +0,0 @@
---
id: resume-checklist
title: Resume checklist
sidebar_label: Checklist
---
Now that you are aware of how recruiters screen your resume, here are some actionable ways you can apply to instantly improve your resume.
<details>
<summary>
## 1. Include a cover letter
</summary>
I've often received resumes with no cover letters, and I am perfectly fine with it. If you ask me, it is better to have no cover letter than to have a bad cover letter, especially if your cover letter is a "templated" content. An effective cover letter needs to highlight the fit between the job requirements and your skills/experiences. Do not just tell me what you have done in your cover letter; Tell me how it is a fit for what I am looking for.
Some small nitpicks:
- Make sure that the cover letter is addressed to the right person (either the name of the recruiter if it is known, or to a generic hiring manager) and company
- Run a spell check
</details>
<details>
<summary>
## 2. Keep your resume under a page
</summary>
Your resume should be kept to 1 page or a MAXIMUM of 2 pages. Include only your most recent and relevant experiences.
Information that a recruiter wants to know:
- Name, email, contact number
- Objective statement
- Education details: College, Major, GPA, Sample classes (optional, but if you list, make sure its classes that you scored well in and are relevant to your area of interest), academic awards, availability
- If you have studied abroad, you can list that too
- Projects that you have worked on
- Work experience/co-curricular activities
- Skills/other interests
- Street cred - GitHub/Stack Overflow/LinkedIn profile (optional, but highly recommended)
Information nobody needs to know:
- Your profile picture. In the US, it is illegal to discriminate based on age, gender, race, or appearance
- Address, home phone number, gender, religion, race, marital status, etc etc
- Elementary, middle, high school
- Your low GPA
- Anything less recent than 3-4 years unless they are valid job experiences
- Anything about your parents/siblings, their names, occupation, etc
- Your life story
- Anything not relevant to the job you are applying for (e.g. that you have a driving license when you are applying to be a programmer)
Ideally, keep it short, concise, but as detailed as possible.
</details>
<details>
<summary>
## 3. Include your GPA if it's good
</summary>
Everyone wants the cream of the crop. In the absence of a standardized test, GPA serves as that indicator. **While GPA may not necessarily be a good indication of how well you can code, a high GPA would definitely put you in a more favorable position to the recruiter.**
If your GPA is rather low, but you have loads of technical experiences, you can try not listing your GPA in the resume. This kinda "forces" the recruiter to read through your projects/job experience, and perhaps grant you a first interview. If you manage to impress them, who cares about your GPA? But if your GPA is low and you do not have skills for the job... maybe you should work on one of them and revisit job applications later.
In a different scenario, some students have low GPA, but it might be due to some irrelevant classes which they did badly in. E.g. Student X is scoring A for all his programming classes, but did not do well for his language classes. If I am hiring a developer, Student X would still be a suitable candidate despite his low GPA. In such cases, it might even be recommended to attach a transcript along with the resume.
Also, when you list your GPA/results, try to benchmark it. Instead of simply listing 4.6, write 4.6/5.0 (First Class Honors or Summa Cum Laude). To the recruiter, 4.6 does not mean anything if he/she is not familiar with your grading system.
</details>
<details>
<summary>
## 4. Be clear about your objectives
</summary>
Are you looking for a summer internship/full-time employment? What position are you applying for? Read the job description and know the job you are applying for!
**"Work experience" does not mean any work experience; it means _relevant_ work experience.** If you are applying for a developer position, the recruiter is not interested to know that you were a student escort for girls walking back to their apartments at night, nor that you were a cashier at Starbucks. You would be better off writing about the project you did for some programming class - yes, even if it was just a school project. Tailor your experiences and projects according to the job you are applying for. Pick relevant details to emphasize on and do not be hesitant to drop stuff completely if they are totally irrelevant. Quality over quantity.
- Make sure the description is comprehensive. Avoid writing "Software engineering intern - write code". You are better off not writing anything
- Based on my experience, most fresh grads do not have extremely relevant job experience (unless you are lucky to have scored a really rewarding internship). For developer positions, I think it is ok to not have any job experience and just list projects
</details>
<details>
<summary>
## 5. Use reverse chronological order
</summary>
Always list your resume in reverse chronological order - the most recent at the top. Recruiters are more interested in what you have worked on recently than what you worked on 3 years ago. Chances are, you probably forgot the details too anyway.
</details>
<details>
<summary>
## 6. Make sure you are contactable
</summary>
- Get a proper email account with ideally your first name and last name, eg. "john.doe@gmail.com" instead of "angrybirds88@gmail.com"
- If you are using your school's .edu email, try to have an alias like "john.doe@xxx.edu" instead of "a002342342@xxx.edu"
- Avoid emails like "me@christi.na" or "admin@[mycooldomain].com" -- because it is very prone to typo errors
- Make sure the number you have listed is the best way to reach you. The last thing you want is to miss the call from the recruiter because you typed the wrong number, or you are not available on that number during office hours (most probably the times the recruiter will call)
</details>
<details>
<summary>
## 7. Pay attention to the layout, formatting, and design
</summary>
- Be consistent about the way you format your resume. Italics, underline, bold, and how they are used
- Keep to a single standard font (avoid fancy fonts like Comic Sans or whatever) and do not have too many varying styles/font sizes/color
- Be consistent about the way you list your dates (eg. May 2011 - Aug 2011). Avoid using numerals for both month and date due to the difference in style for MMDD and DDMM in different countries. Dates like "Aug 2011 - June 12" just show that you have zero attention to detail
- Unless you are applying for a design job, just stick to the standard "table" style for the resume. There is nothing wrong with the standard style, and it helps the recruiter screen your resume more efficiently since they are trained through experience to read that format. It would also help in the automatic scoring by the ATS. The last thing you want is for your application to be rejected because the system could not parse your resume for it to be scored. That said, I am not discouraging you from coming up with your own design. It is nice to read something different. Just be aware of the risks you could be taking
- Name your file `firstname_lastname_resume.pdf` instead of `resume.pdf` - it is easier for recruiters to search/forward
- PDF preferred over Word doc
- Be consistent about bullet points
- Your resume should not look sparse. (Come on, it is only 1 page!) If you really have trouble filling it up, you are either not thinking hard enough, or not doing enough. In the case of the latter, consider working on your personal projects (i.e. stuff you can post on GitHub). That said, do not write stuff just to fill space. Read point 4
- This should be common sense, but do not commit fraud, i.e. apply for the same job using a different name, or using your friend's resume to apply for the same job. Some ATS issues an indicator if they suspect the application to be a duplicate
- It's important to note the layout of your resume. If you choose to quickly upload your resume via an auto-fill program, understand that the program will read your resume from top to bottom, left to right. This is good to keep in mind when developing the layout of your resume
- Try to keep white space down to a minimum. This will also help reduce the length of your resume to one page. Reduce margins and paddings reasonably
</details>
<details>
<summary>
## 8. Listing your skills
</summary>
It is useful to list your relevant skills in a quick summary section for easy reading/matching. However, many people make the mistake of listing as many skills/programming languages in the resume as possible. This may get you through the ATS scoring, but it definitely would not leave a good impression on the recruiter - the actual human reading your resume and deciding whether to call you up for an interview!
Ideally, if your resume is good enough, the recruiter should already know what you are proficient in. The skills section is just a quick summary/reiteration. **Listing a bunch of technologies you claim you know without actually showing how you have worked with them is pointless.**
</details>
<details>
<summary>
## 9. Include your projects
</summary>
- Ideally, 1-2 lines about the project, 2-3 lines about your role, what technologies you used, what you did, your learning, etc etc. These can be Final Year Projects, Research projects, projects for a particular class, freelance projects, or just personal projects (ie. GitHub stuff)
- Ideally, 2 to 3 projects that align with your interests/position you are applying for
- Avoid using titles such as "Project for [module code]". Sorry, the recruiter has no idea what class is represented by the module code. Ideally, you want the project section to demonstrate your personality and skills, and be the talking point during the interview
</details>
<details>
<summary>
## 10. Include your online profile/other interests
</summary>
Here's the news - Recruiters do search for your name! Definitely pre-empt that by Googling/Facebook-ing/searching yourself on all forms of social media to see what turns up. Make sure your privacy settings are restricted so your online profile shows only the image you are trying to project.
If you have some space on your resume, it is good to list additional interests outside of coding. Eg. skiing, water sports, soccer, etc etc. Gives the interviewer something to talk to you about. It also shows that you are a well-rounded individual/cool person to hang out with.
</details>
<details>
<summary>
## 11. Bonus: Country-specific customization
</summary>
If you are applying to foreign countries, it'd help to customize your resume to make it easier for recruiters of that country to understand your resume. For example, you can do the following for US roles:
- If you're interning, expected year of graduation (month as well if you know) because some places only want to hire interns who are graduating soon
- Mention work eligibility. This is straightforward for Singaporeans (mention eligibility for H-1B1 visa)
- Convert your grades to a GPA out of 5 and mention whether it's First Class Honors/Summa Cum Laude
</details>
### References
- [Screening your resume is like playing word search](https://medium.com/@christinang89/screening-your-resume-is-like-playing-word-search-60f4d0e60840)
- [10 tips to get past resume screening for College Students/Grads](https://christinang89.quora.com/10-tips-to-get-past-resume-screening-for-College-Students-Grads)

View File

@ -1,73 +0,0 @@
---
id: ats-proof-template
title: Set up your ATS-proof resume template
description: Learn how to create an ATS-proof software engineering resume for FAANG
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
ATS,
ATS readability,
ATS proof template,
]
---
Most companies these days automate their resume screening process through Applicant Tracking Systems (ATS). 75% of resumes sent to top companies are never seen by human eyes. Always ensure your resume is easily readable by an ATS to maximize job opportunities throughout your career.
:::tip Expert tip
[FAANG Tech Leads](https://www.faangtechleads.com?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=ats_template&aff=1e80c401fe7e2) is currently offering resume templates and examples at **70% off**.
Their templates:
- Are created by ex-FAANG hiring managers based on top resumes received from hundreds of candidate applications
- Guarantee readability by FAANG ATS
- Cater to various experience levels
They also offer resume examples/references from candidates who have received multiple offers from FAANG companies - which are helpful in helping you craft content that meets the same bar. [Check it out](https://www.faangtechleads.com?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=ats_template&aff=1e80c401fe7e2)!
:::
## Use Microsoft Word or Google Docs to create and edit your resume
**Do's**
- Submit your resume as a PDF file to preserve formatting, but always create it from Microsoft Word or Google Docs. It is important to ensure that the text in your resume is easily highlightable, which is a precondition for easy parsing.
- ATS tools are always trying to improve their readability of standard resume formats - hence the more commonplace your resume format is, the better.
- To maximize space on your resume, rather than using header or footers, reduce the margins of the page - narrow margins are 0.5 on each side.
**Don'ts**
- Do not use Photoshop, other graphic design tools or online resume builders to build your resume
- Do not use the header or footer sections in a Word/Google Docs file - reduce margins instead and just write the information in the body.
## Use a standard font of readable size
New fonts may convert letters into special characters which are not readable by the ATS. Fonts you should use - **Arial, Calibri, Garamond**.
Ensure your font size remains readable for humans later on in the hiring process - use a minimum size of **10px** for readability.
## Add sections with standard headings and ordering
ATS readers need to identify and parse standard types of information from your resume. Using standard header titles and ordering can help them do that better.
This is the order which has worked well for me and recommended by recruiters:
| Section | Heading Name |
| --- | --- |
| Professional summary | (Use resume headline as section title, for e.g. "Senior Software Engineer at Google with over 5 years of experience leading teams") |
| Contact information | "Contact Information" |
| Skills - programming languages, frameworks, etc. | "Skills" |
| Experience | "Work Experience" |
| Education (Note: if you are still in school or have less than 3 years of experience, you may put Education first) | "Education" |
| Projects | "Projects" |
| Other optional sections - e.g. Certifications, Awards, etc | "Awards and Accolades" / "Certifications" / "Awards, Accolades and Certifications" |
:::caution
Never add symbols to your headers to avoid ATS readability issues.
:::

View File

@ -1,27 +0,0 @@
---
id: final-tips
title: Final resume tips
description: Final tips for writing your software engineering resume for FAANG
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
tips,
]
sidebar_label: Final tips
---
## Do not take job application forms lightly
If the company you are applying for requires you to fill in the "Work Experience" and "Education" sections into their own form, do not take it lightly! Most of the time, these are internal HR applications which help parse job applications and filter out candidates from the information provided. In fact, it is possible that your resume is never seen by the recruiter or hiring manager - only the information that you fill up in their forms!
## Do not apply to many jobs at the same company
The ATS also allows recruiters to see all the roles you have applied to at their company. Try not to apply to too many jobs as a recruiter wouldn't be able to tell if you're actually interested in or if you're self-aware about your abilities. E.g. applying for a Software Engineer and a Data Scientist role at the same company is not a good idea.
---
And that is it from me in terms of resume preparation - hope this helps! If you have any other tips you would like to share with others on Tech Interview Handbook, do reach out to me at contact@techinterviewhandbook.org or create a new [GitHub discussion item](https://github.com/yangshun/tech-interview-handbook/discussions).

View File

@ -1,38 +0,0 @@
---
id: free-tools-to-review-resume
title: Free tools to review your resume
description: Learn which free tools you can use to test and review your software engineering resume for FAANG
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
test,
ATS,
ATS readability test,
free resume review,
free resume testing,
]
---
I recommend using these free tools to optimize your resume:
## 1. Free resume review
[Resume Worded](https://a.paddle.com/v2/click/29828/144522?link=1861) uses AI to give instant expert feedback on your resume.
We previously recommended [TopResume's free all-in-one review](https://tidd.ly/3GxVIs9) of your resume, but received some feedback that that their reviewers are not technical and do not give feedback relevant to engineering roles. In that regard, we recommend [FAANG Tech Leads' Resume Review service (paid)](https://www.faangtechleads.com?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=ats_template&aff=1e80c401fe7e2) where your resume will be reviewed by ex-FAANG hiring managers and engineers, not random writers who don't understand technology.
## 2. Test readability with industry-standard ATS
Test the readability and formatting of your resume using . Most big companies use such resume scanners.
## 3. The plain text file test
Simply copy the content from your resume and paste it into a plain text document! Make edits if:
- There are points missing from your original resume
- Characters are displaying incorrectly in plain text
- Sections are disorganized

View File

@ -1,34 +0,0 @@
---
id: guide
title: Step-by-step resume guide
description: No nonsense, step-by-step guide for writing your FAANG-ready software engineering resume
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
]
---
Have you ever encountered mysteriously never getting shortlisted for positions at certain companies despite having strong relevant experience in your resume?
This guide helps you prevent that and improve your chances of getting shortlisted for software engineering jobs.
From my experience as a FAANG interviewer as well as my discussions with countless recruiters, I have collated a very concise, no-bullshit summary of the exact steps you need to prepare your resume for a FAANG software engineering job application.
## Four steps to create your resume
1. Set up your [ATS-proof resume template](./ats-proof-template.md)
1. Fill up your template with effective [resume content](./write-effective-content.md) following a recommended format
1. [Optimize your resume](./optimize-resume.md) with keywords
1. [Review your resume](./free-tools-to-review-resume.md) using free tools
<br/>
:::tip Expert tip
To maximize your chances of being shortlisted, consider getting your resume reviewed by [FAANG Tech Leads - a team of ex-FAANG hiring managers](https://www.faangtechleads.com?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=resume_guide&aff=1e80c401fe7e2). It is currently **70% off as part of a limited time promotion**.
:::

View File

@ -1,71 +0,0 @@
---
id: optimize-resume
title: Optimize your resume
description: Learn how to effectively optimize your software engineering resume for FAANG
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
keyword optimization,
ATS,
ATS proof,
job description,
]
toc_max_heading_level: 2
---
With the basic resume up, we can next try to optimize the resume content. Here are two must-haves to optimize your content:
## 1. Less is more
**Do's**
- Highlighting a few of your best achievements is better than including many "average" achievements in your resume
- Use only 1 page for your resume
**Don'ts**
- Do not list all your achievements just to showcase a greater quantity without filtering
## 2. Keyword optimization
Imagine you are a hiring manager or recruiter screening a resume while juggling many other tasks in your job - you simply won't have much time on each resume! When a hiring manager looks at a resume, they are in fact quickly scanning for keywords of skills or experiences that they value, before paying any additional attention to your resume.
Recruiters and ATS do that as well, but based on the job description that the hiring manager helped to write. That is why optimizing your resume based on job descriptions is very important.
:::info
Some ATS will determine the strength of your skills based on the frequency of a keyword in your resume, and others assign an estimated amount of experience for a skill based on its placement in your resume.
For instance, if your previous job experience was 3 years long and you mentioned handling Search engine marketing (SEM), the ATS will assume 5 years of SEM experience.
:::
### Include keywords from job descriptions into your resume
You should always analyze the job description for must-have and good-to-have skills or experiences and ensure the keywords are added to your resume.
Include them under the "Skills" section and pepper the same keywords into the "Work Experience" and "Education" sections. Be sure to closely imitate the language within the job description.
Remember to include the full version of common abbreviations as well. E.g. Amazon Web Services instead of AWS, Google Cloud Platform instead of GCP.
However, do not do keyword stuffing for the sake of it - always remember that the resume will be read by a recruiter or hiring manager eventually.
### Optimize keyword frequency and placement
Analyze the job description and determine how important each skill and experience is, then optimize the frequency of the keyword according to its importance.
:::tip Expert tip
While optimizing for every application is ideal, you can generalize your resume to a type of position.
1. Collate 3 to 5 job descriptions for that position
1. Copy and paste them into a `.txt` file and upload it into a free "word and phrase" frequency tool like [Online-Utility.org's Text Analyzer](https://www.online-utility.org/text/analyzer.jsp) to identify regularly used keywords
1. Incorporate skills and experiences that you have into the resume
:::
<!-- I have also prepared a list of fail-safe keywords you can use to pass most ATS screeners, segmented by type and seniority of software engineer. You can find it [here]. -->

View File

@ -1,152 +0,0 @@
---
id: write-effective-content
title: Write effective resume content
description: Learn how to effectively write your software engineering resume for FAANG
keywords:
[
FAANG,
software engineering resume,
step-by-step resume guide,
software engineer resume,
FAANG software engineer resume,
professional summary,
skills,
work experience,
education,
awards,
]
toc_max_heading_level: 2
---
import InDocAd from '../\_components/InDocAd';
Next, fill up your template!
It is daunting to start on a fresh slate, so I recommend you start by making a laundry list of bullet points under each section, then optimizing it accordingly. This prevents excessive attention placed on premature optimization.
**Do's for ATS readability**
- If a divider is required between information, use "|" (pipe character) or tabs
- Use simple bullet points
**Don'ts for ATS readability**
- Do not use images, pictures or diagrams
- Do not use tables
:::tip Expert tip
To maximize efficiency in applying for several job types, create and keep a "Master resume" updated which will basically contain an exhaustive list of all points under every section of your resume. When applying for each job, you can make a copy of the Master document and eliminate or optimize points as necessary.
:::
## 1. Professional summary
The professional summary, if written well, will be the most effective and important part of your resume. From my experience as an interviewer, I generally may not have the time to read into the detail of resumes - hence summaries which directly address why a candidate is a good fit for the job greatly improves their chances of capturing my attention.
**Start with a resume headline**
Always start with a concise, one line description of yourself
- Fewer than 10 words
- Summarizes your experience relevant to the job description
Examples:
- Software Engineer at Company X with strong fundamentals in front-end technologies
**Summarize your best selling points**
Below the resume headline, include a summary of yourself which expands on your resume headline.
- 4 or fewer points, in bullet or paragraph form
- Include most important skills and experiences relevant to the job applied, quantifying them where possible
- Keep in mind to answer the question of "Why am I a good fit for this job?" - while writing the summary
## 2. Contact information
**Must-haves**
- Name (Should be included at the very top of the resume)
- Personal phone number
- Never include your work phone number here
- Location - City, State, Zip
- Just enough for recruiters to determine if you are a local or international candidate
- Email address
- Never include your work email here
- I recommend Gmail if you are using other email services
- LinkedIn profile
**Good-to-haves**
- GitHub profile URL
- Personal website URL
- Stack Overflow profile URL
- Medium profile URL
- Competitive coding profile
- Codechef
- Hackerrank
If a divider is required between information, use "|" or tabs
Where relevant, indicate achievements in coding platforms, for example, max ratings, ranking, number of stars, badges.
## 3. Skills
Include programming languages and tech stacks:
Structure in the following manner:
> [Skill summary] : [List skills separated by "|"]
- Programming languages - If impressive, include your familiarity by the number of lines you have written, for example "Over 10,000 lines"
- Frameworks
- Databases
<InDocAd/>
## 4. Work experience
List your work experience in a familiar format and reverse chronological order. Every job listed should have:
The company, location, title, duration worked following this structure
> [Company or Organization], [Location] | [Job Title] | [Start and end dates formatted as MM/YYYY]
Example
> Facebook, Singapore | Front End Engineering Lead | 08/2018 - Present
List of top accomplishments, including:
- Scope of job and skills required
- Accomplishments listed following this structure
- > [Accomplishment summary] : [Action] that resulted in [quantifiable outcome]
## 5. Education
Most software engineering jobs will require at least an undergraduate degree. However, unless you are a recent graduate or do not have much work experience, it should not be prioritized above your work experience.
Use the following format, eliminating information where it is not relevant:
> [Degree Name], [Year of Graduation - write expected graduation date if not graduated]<br/>[University Name], [Location]<br/>GPA: X.XX / 4.0 (List GPA if more than 3.50/4.00, or more than 4.3 under a 5-point system)<br/>List key achievements, including leadership positions, skills, societies, projects, awards, etc.
Example:
> BSc in Computing, Computer Science, Graduation Year 2015<br/> National University of Singapore, Singapore <br/>GPA: 3.82 / 4.00 (Magna cum laude)<br/>Dean's List, Valedictorian<br/>President of hacker society
## 6. Projects
Include at least 2 projects you have contributed to, outlining your key contributions. Always try to link your project name to GitHub or somewhere the hiring manager can view your project.
> [facebook/docusaurus](https://github.com/facebook/docusaurus) <br/>Maintainer and lead engineer for Docusaurus v2, a static site generator which powers the documentation of many of Meta's Open Source Projects - React Native, Jest, Relay, Reason, etc. Used by 7.6k > projects on GitHub.
## 7. Awards, accolades and certifications
Only include achievements related to the job application and try to quantify your achievements. A good format to use would be
> [Year] [Quantification] [Competition]
Example
> 2016 | Best All-Round Product out of 50 teams | Facebook Hackathon

View File

@ -1,47 +0,0 @@
---
id: star-format
title: STAR format
---
## What is STAR?
The [STAR](https://en.wikipedia.org/wiki/Situation,_task,_action,_result) format is a framework to help you organize your experience into sections that flows nicely. From Wikipedia:
- **Situation** - The interviewer wants you to present a recent challenge and situation which you found yourself in
- **Task** - What were you required to achieve? The interviewer will be looking to see what you were trying to achieve from the situation. Some performance development methods use "Target" rather than "Task". Job interview candidates who describe a "Target" they set themselves instead of an externally imposed "Task" emphasize their own intrinsic motivation to perform and to develop their performance
- **Action** - What did you do? The interviewer will be looking for information on what you did, why you did it, and what the alternatives were
- **Results** - What was the outcome of your actions? What did you achieve through your actions and did you meet your objectives? What did you learn from this experience and have you used this learning since?
## Example
Here's an example of how the STAR format can be used to answer the question: **"Tell me about a time in which you had a conflict and needed to influence somebody else"**.
### Situation
> "I was the team lead of a school project about building a social network mobile web app. Our designer's midterms were approaching and didn't have time to produce the mockups. Our front-end person was rushing him for the mockups so that he could proceed with his work, and that was stressing the designer out. The atmosphere in the team was tense."
### Task
> "As the team lead, I had to resolve the tension between the front-end developer and the designer so that the team could work together peacefully and complete the project on time."
### Action
> "I spoke to the front-end developer to ask him why he was rushing the designer for the designs. He said that he wanted the designs early because it would be a waste of time rebuilding if the designer designed something different eventually. I explained to him that the midterm dates were out of the designer's control and we had to be more understanding about each other's schedules.
>
> I spoke to the designer to get a rough idea of what he had in mind and asked him when he could commit to producing the high-fidelity designs. He replied that he could start on them as soon as his midterms were over. I explained to him why the front-end developer was pushing him for the mockups, and that the front-end developer had no ill intentions and simply wanted the project to succeed.
>
> As someone with some experience in UI/UX design, I came up with wireframe mocks, ran them by the designer for approval, then passed them to the front-end developer to start building. I encouraged the front-end developer to use placeholders and not be too concerned about the details for now. We could build the non-UI parts first (authentication, hook up with APIs) and tweak pixels and add polish later on. The front-end developer agreed and went ahead with the approach. I explained to the front-end developer that the designer will pass us the mockups after his midterm, by &lt;DATE&gt;."
### Result
> "When our designer ended midterms, he came back with beautiful mockups that fit well into the wireframes. Our front-end developer implemented them with great care to detail. We ended up scoring top marks for the project and became a great team."
### Qualities
Through the above, experienced interviewers can extract the following qualities from the mentioned behaviors.
- **Empathy** - Empathize with both roles and make sure to understand each individuals' reasons
- **Willingness** - to wear multiple hats: Picked up the role of the designer and came up with wireframes
- **Project management** - Able to unblock the project by changing approaches midway to great effectiveness
- **Conflict management** - Explain to parties involved in the conflict and make sure no hard feelings remain
- **Hold people accountable** - Get a confirmation date as to when the designer can produce the mockups and hold him accountable

View File

@ -183,21 +183,4 @@ module.exports = {
}, },
], ],
], ],
plugins: [
[
'@docusaurus/plugin-client-redirects',
{
redirects: [
{
from: '/coding-round-overview',
to: '/coding-interview',
},
{
from: '/behavioral-round-overview',
to: '/behavioral-interview',
},
],
},
],
],
}; };

View File

@ -1,107 +1,5 @@
module.exports = { module.exports = {
docs: [ docs: [
{
Preface: ['introduction', 'landscape'],
},
{
'Step 1: Prepare a FAANG-ready resume': [
'resume/guide',
'resume/ats-proof-template',
'resume/write-effective-content',
'resume/optimize-resume',
'resume/free-tools-to-review-resume',
'resume/final-tips',
],
},
{
type: 'category',
label: 'Step 2: Ace the interview',
collapsed: false,
items: [
{
'Interview formats': [
'interview-formats',
'interview-formats-top-companies',
],
},
'self-introduction',
{
'🔥 Coding interviews': [
'coding-interview',
'picking-a-language',
'study-and-practice',
'best-coding-interview-courses',
'best-practice-questions',
'during-coding-interview',
'cheatsheet',
'coding-signals',
'mock-interviews',
],
},
'system-design',
{
'Behavioral interviews': [
'behavioral-interview',
'star-format',
'behavioral-questions',
'psychological-tricks',
],
},
'questions-to-ask',
],
},
{
'Step 3: Negotiate the best offer': [
'understanding-compensation',
'negotiation',
'negotiation-rules',
],
},
{
'Step 4: Prepare for the job': [
'choosing-between-companies',
'engineering-levels',
// 'team-selection',
],
},
{
'Algorithms cheatsheets': [
'algorithms/study-cheatsheet',
{
Basics: [
'algorithms/array',
'algorithms/string',
'algorithms/sorting-searching',
'algorithms/recursion',
'algorithms/hash-table',
],
'Data structures': [
'algorithms/linked-list',
'algorithms/queue',
'algorithms/stack',
],
'Non-linear data structures': [
'algorithms/tree',
'algorithms/heap',
'algorithms/graph',
'algorithms/trie',
'algorithms/matrix',
'algorithms/interval',
],
Additional: [
'algorithms/binary',
'algorithms/math',
'algorithms/geometry',
'algorithms/dynamic-programming',
],
},
],
},
{
Misc: ['interviewer-cheatsheet'],
},
],
docsRevamp: [
{ {
type: 'category', type: 'category',
label: 'Introduction', label: 'Introduction',
@ -176,5 +74,8 @@ module.exports = {
'algorithms/geometry', 'algorithms/geometry',
], ],
}, },
{
Misc: ['interviewer-cheatsheet'],
},
], ],
}; };

View File

@ -15,5 +15,131 @@
"source": "/grind75/:asset*", "source": "/grind75/:asset*",
"destination": "https://grind75.vercel.app/grind75/:asset*" "destination": "https://grind75.vercel.app/grind75/:asset*"
} }
],
"redirects": [
{
"source": "/behavioral-questions",
"destination": "/behavioral-interview-questions/"
},
{
"source": "/behavioral-questions/",
"destination": "/behavioral-interview-questions/"
},
{
"source": "/cheatsheet",
"destination": "/coding-interview-best-practices/"
},
{
"source": "/cheatsheet/",
"destination": "/coding-interview-best-practices/"
},
{
"source": "/coding-signals",
"destination": "/coding-interview-rubrics/"
},
{
"source": "/coding-signals/",
"destination": "/coding-interview-rubrics/"
},
{
"source": "/coding-interview",
"destination": "/coding-interview-prep/"
},
{
"source": "/coding-interview/",
"destination": "/coding-interview-prep/"
},
{
"source": "/introduction",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/introduction/",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/psychological-tricks",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/psychological-tricks/",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/picking-a-language",
"destination": "/programming-languages-for-coding-interviews/"
},
{
"source": "/picking-a-language/",
"destination": "/programming-languages-for-coding-interviews/"
},
{
"source": "/questions-to-ask",
"destination": "/final-questions/"
},
{
"source": "/questions-to-ask/",
"destination": "/final-questions/"
},
{
"source": "/resume/:blah*",
"destination": "/resume/"
},
{
"source": "/resume-checklist",
"destination": "/resume/"
},
{
"source": "/resume-checklist/",
"destination": "/resume/"
},
{
"source": "/star-format",
"destination": "/behavioral-interview/"
},
{
"source": "/star-format/",
"destination": "/behavioral-interview/"
},
{
"source": "/interview-formats",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/interview-formats/",
"destination": "/software-engineering-interview-guide/"
},
{
"source": "/coding-round-overview",
"destination": "/coding-interview-prep/"
},
{
"source": "/coding-round-overview/",
"destination": "/coding-interview-prep/"
},
{
"source": "/behavioral-round-overview",
"destination": "/behavioral-interview/"
},
{
"source": "/behavioral-round-overview/",
"destination": "/behavioral-interview/"
},
{
"source": "/during-coding-interview",
"destination": "/coding-interview-best-practices/"
},
{
"source": "/during-coding-interview/",
"destination": "/coding-interview-best-practices/"
},
{
"source": "/algorithms/introduction",
"destination": "/algorithms/study-cheatsheet/"
},
{
"source": "/algorithms/introduction/",
"destination": "/algorithms/study-cheatsheet/"
}
] ]
} }