mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-28 12:43:12 +08:00
contents: optimize build speed
This commit is contained in:
@ -11,7 +11,7 @@ Over 500,000 people have benefitted from this handbook! I have lost count of the
|
|||||||
|
|
||||||
## Who am I?
|
## Who am I?
|
||||||
|
|
||||||
I'm [Yangshun](https://twitter.com/yangshunz), a Staff Software Engineer at Meta/Facebook. 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 [9 offers from top tech companies in the Bay Area](https://www.teamblind.com/post/Sharing-my-offer-numbers-from-big-companies-for-your-reference-yNgqUPQR) - Facebook, Google, Airbnb, Palantir, Dropbox, Lyft, and some startups.
|
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.
|
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.
|
||||||
|
|
||||||
|
@ -28,17 +28,32 @@ Before anything else, you need to pick a programming language to do your intervi
|
|||||||
|
|
||||||
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.
|
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. One of my top reasons for recommending Python is that it 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.
|
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 slower coding/typing speed. 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.
|
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
|
## 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 doing interviews because the company uses that language heavily or just because you want to show that you are trendy.
|
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 mastering algorithms, there is barely spare effort 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 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.
|
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
|
## The exception to the norm
|
||||||
|
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
id: resume-sample
|
|
||||||
title: Resume sample
|
|
||||||
sidebar_label: Sample
|
|
||||||
---
|
|
||||||
|
|
||||||
import YangshunResumeURL from '@site/static/img/yangshun-resume.png';
|
|
||||||
|
|
||||||
Here's a sample resume (mine). I like using Google Docs as the portability is great and also comes with version control. Feel free to clone my resume and use it as a starting point for your own.
|
|
||||||
|
|
||||||
Here's a [Google Doc template](https://docs.google.com/document/d/1DQ5SKNrm1hb1BRS40ejovLxhyEKXiuTGsDEXIiZSW0o/edit?usp=sharing) of my resume if you're interested. **Do not request to edit, click "File > Make a Copy"**.
|
|
||||||
|
|
||||||
<div class="text--center">
|
|
||||||
<figure>
|
|
||||||
<img alt="Yangshun's Resume 2021" class="shadow--md" src={YangshunResumeURL} />
|
|
||||||
<figcaption>Yangshun's Resume 2021</figcaption>
|
|
||||||
</figure>
|
|
||||||
</div>
|
|
@ -29,6 +29,6 @@ From my experience as a FAANG interviewer as well as my discussions with countle
|
|||||||
|
|
||||||
:::tip Expert tip
|
:::tip Expert tip
|
||||||
|
|
||||||
To maximize your chances of being shortlisted, I recommend 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). I personally used their service during my applications and it helped me get shortlisted at multiple Bay Area FAANG companies (and more). It is currently **70% off as part of a limited time promotion**.
|
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**.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
@ -66,15 +66,15 @@ Prepare a self introduction that follows the following outline (inspired by "Cra
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
### Example 1: Front End Engineer at Facebook
|
### Example 1: Front End Engineer at Meta
|
||||||
|
|
||||||
#### Self introduction
|
#### Self introduction
|
||||||
|
|
||||||
> "Hi I'm Yangshun and I graduated from National University of Singapore in 2015 with a degree in Computer Science. My interests are in Front End Engineering and I love to create beautiful and performant products with delightful user experiences.
|
> "Hi I'm XXX and I graduated from National University of Singapore in 2015 with a degree in Computer Science. My interests are in Front End Engineering and I love to create beautiful and performant products with delightful user experiences.
|
||||||
>
|
>
|
||||||
> Back in school, I designed and built a web application, NUSMods which solves a huge problem of class and timetable planning every semester. It receives over a million pageviews a month and is used by over 40,000 NUS students and even some professors. It is built using a modern web technology stack - React, Redux, Jest, Babel, Flow, webpack and is mobile-responsive."
|
> Back in school, I designed and built a web application, NUSMods which solves a huge problem of class and timetable planning every semester. It receives over a million pageviews a month and is used by over 40,000 NUS students and even some professors. It is built using a modern web technology stack - React, Redux, Jest, Babel, Flow, webpack and is mobile-responsive."
|
||||||
>
|
>
|
||||||
> I'm interested in the Front End Engineer role at Facebook because I have been using Facebook Open Source Front End technologies for a while now and am inspired by Facebook's mission and Open Source culture.
|
> I'm interested in the Front End Engineer role at Meta because I have been using Meta Open Source Front End technologies for a while now and am inspired by Meta's mission and Open Source culture.
|
||||||
|
|
||||||
#### Breakdown
|
#### Breakdown
|
||||||
|
|
||||||
@ -83,13 +83,13 @@ Prepare a self introduction that follows the following outline (inspired by "Cra
|
|||||||
- "It receives over a million pageviews a month and is used by over 30,000 NUS undergraduates and even some professors."
|
- "It receives over a million pageviews a month and is used by over 30,000 NUS undergraduates and even some professors."
|
||||||
- Mention something about the project which stands out
|
- Mention something about the project which stands out
|
||||||
- "It is built using a modern web technology stack - React, Redux, Jest, Babel, Flow, webpack and is mobile-responsive."
|
- "It is built using a modern web technology stack - React, Redux, Jest, Babel, Flow, webpack and is mobile-responsive."
|
||||||
- Facebook tech stack! Also hints that you keep yourself updated with modern web technologies
|
- Meta tech stack! Also hints that you keep yourself updated with modern web technologies
|
||||||
|
|
||||||
### Example 2: Front End Engineer at Lyft
|
### Example 2: Front End Engineer at Lyft
|
||||||
|
|
||||||
#### Self introduction
|
#### Self introduction
|
||||||
|
|
||||||
> "Hi I'm Yangshun and I graduated from National University of Singapore in 2015 with a degree in Computer Science. My interests are in Front End Engineering and I love to create beautiful performant products with delightful user experiences.
|
> "Hi I'm XXX and I graduated from National University of Singapore in 2015 with a degree in Computer Science. My interests are in Front End Engineering and I love to create beautiful performant products with delightful user experiences.
|
||||||
>
|
>
|
||||||
> I previously worked at Grab where I led the Grab for Work project. Grab for Work was a service for companies to make corporate transportation expenses convenient. Companies can create employee groups, set ride policies and share corporate payment methods with their employees. I built the project with another engineer over the period of 3 months on a React/Redux and Golang stack."
|
> I previously worked at Grab where I led the Grab for Work project. Grab for Work was a service for companies to make corporate transportation expenses convenient. Companies can create employee groups, set ride policies and share corporate payment methods with their employees. I built the project with another engineer over the period of 3 months on a React/Redux and Golang stack."
|
||||||
>
|
>
|
||||||
|
@ -68,7 +68,7 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
copyright: `Copyright © ${new Date().getFullYear()} Yangshun Tay. Built with Docusaurus.`,
|
copyright: `Copyright © ${new Date().getFullYear()} Tech Interview Handbook. Built with Docusaurus.`,
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
title: 'General',
|
title: 'General',
|
||||||
@ -161,7 +161,7 @@ module.exports = {
|
|||||||
path: '../contents',
|
path: '../contents',
|
||||||
routeBasePath: '/',
|
routeBasePath: '/',
|
||||||
sidebarPath: require.resolve('./sidebars.js'),
|
sidebarPath: require.resolve('./sidebars.js'),
|
||||||
showLastUpdateAuthor: true,
|
// showLastUpdateAuthor: true,
|
||||||
showLastUpdateTime: true,
|
showLastUpdateTime: true,
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
|
@ -33,9 +33,10 @@ function FAANGTechLeads({className, position}) {
|
|||||||
<p className={styles.tagline}>
|
<p className={styles.tagline}>
|
||||||
<strong>Best resume service for FAANG</strong>
|
<strong>Best resume service for FAANG</strong>
|
||||||
<br />
|
<br />
|
||||||
FAANG Tech Leads' <u>resume review service</u> helped me get
|
FAANG Tech Leads' <u>resume review service</u> helped many people
|
||||||
shortlisted at top Bay Area companies. Their resume templates are
|
get shortlisted at top Bay Area companies. Their resume templates
|
||||||
only <u>$28 now (70% off)</u> and tailored to your experience level.
|
are only <u>$28 now (70% off)</u> and tailored to your experience
|
||||||
|
level.
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
);
|
);
|
||||||
@ -52,9 +53,10 @@ function FAANGTechLeads({className, position}) {
|
|||||||
<p className={styles.tagline}>
|
<p className={styles.tagline}>
|
||||||
<strong>Get shortlisted at FAANG</strong>
|
<strong>Get shortlisted at FAANG</strong>
|
||||||
<br />
|
<br />
|
||||||
FAANG Tech Leads' <u>resume review service</u> helped me get
|
FAANG Tech Leads' <u>resume review service</u> helped many people
|
||||||
shortlisted at top Bay Area companies. Their resume templates are
|
get shortlisted at top Bay Area companies. Their resume templates
|
||||||
only <u>$28 now (70% off)</u> and tailored to your experience level.
|
are only <u>$28 now (70% off)</u> and tailored to your experience
|
||||||
|
level.
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
);
|
);
|
||||||
@ -101,27 +103,6 @@ function Moonchaser({className, position}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Educative({className, position}) {
|
|
||||||
return (
|
|
||||||
<a
|
|
||||||
className={clsx(styles.container, className)}
|
|
||||||
href={`https://educative.io/tech-interview-handbook?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=${position}&aff=x23W`}
|
|
||||||
key={Math.random()}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
onClick={() => {
|
|
||||||
window.gtag('event', `educative.${position}.click`);
|
|
||||||
}}>
|
|
||||||
<p className={styles.tagline}>
|
|
||||||
<strong>Looking to get hired at FAANG?</strong>
|
|
||||||
<br />
|
|
||||||
<u>Educative</u> offers many great courses to improve your interview
|
|
||||||
game. <u>Join today for a 10% discount!</u>
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function EducativeCoding({className, position}) {
|
function EducativeCoding({className, position}) {
|
||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
@ -231,13 +212,13 @@ export default React.memo(function SidebarAd({position}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Math.random() > 0.5 ? (
|
return Math.random() > 0.5 ? (
|
||||||
<Moonchaser
|
<AlgoMonster
|
||||||
className={backgroundClass}
|
className={backgroundClass}
|
||||||
key={Math.random()}
|
key={Math.random()}
|
||||||
position={position}
|
position={position}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<Educative
|
<EducativeCoding
|
||||||
className={backgroundClass}
|
className={backgroundClass}
|
||||||
key={Math.random()}
|
key={Math.random()}
|
||||||
position={position}
|
position={position}
|
||||||
|
@ -37,8 +37,8 @@ export default [
|
|||||||
section was an absolutely invaluable resource and a great overall
|
section was an absolutely invaluable resource and a great overall
|
||||||
reference to brush up my fundamentals with the helpful hints and tips
|
reference to brush up my fundamentals with the helpful hints and tips
|
||||||
provided, and also solve some of the most popular questions categorized
|
provided, and also solve some of the most popular questions categorized
|
||||||
by type. I certainly have Yangshun to thank for helping me land my dream
|
by type. I certainly have this handbook to thank for helping me land my
|
||||||
job at Google!
|
dream job at Google!
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@ -86,9 +86,8 @@ export default [
|
|||||||
<br />
|
<br />
|
||||||
With the help of Tech Interview Handbook, I was able to land offers from
|
With the help of Tech Interview Handbook, I was able to land offers from
|
||||||
Google, Amazon, Uber and several other great companies. Really
|
Google, Amazon, Uber and several other great companies. Really
|
||||||
appreciate Yangshun and other contributors for putting out such quality
|
appreciate the contributors for putting out such quality content for the
|
||||||
content for the community. I'd wholeheartedly recommend this handbook to
|
community. I'd wholeheartedly recommend this handbook to anyone!
|
||||||
anyone!
|
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
@ -136,7 +136,7 @@ function HeroSection() {
|
|||||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||||
<p className="hero__subtitle">
|
<p className="hero__subtitle">
|
||||||
{siteConfig.tagline} <br />
|
{siteConfig.tagline} <br />
|
||||||
Brought to you by FAANG engineers and the author of the{' '}
|
Brought to by the author of the{' '}
|
||||||
<a href={BLIND_75_URL} rel="noopener" target="_blank">
|
<a href={BLIND_75_URL} rel="noopener" target="_blank">
|
||||||
Blind 75 list
|
Blind 75 list
|
||||||
</a>
|
</a>
|
||||||
@ -192,20 +192,16 @@ function WhatIsThisSection() {
|
|||||||
technical interviews.
|
technical interviews.
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
As a Senior Software Engineer and Tech Lead at Meta/Facebook, I
|
Having personally gone through the interviewing process, it was
|
||||||
have personally gone through the frustrating process of browsing
|
frustrating to have to find resources from everywhere to prepare
|
||||||
through many unorganized resources to prepare for my technical
|
for my technical interviews.
|
||||||
interviews.
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
This handbook contains the essence of technical interviewing I
|
This handbook contains the essence of technical interviewing I
|
||||||
gathered over my last job hunt, which allowed me to clinch{' '}
|
gathered over my last job hunt, which allowed me to clinch 9
|
||||||
<a href={BLIND_OFFER_NUMBERS_URL}>
|
offers out of 11 top Bay Area companies -{' '}
|
||||||
9 offers out of 11 top Bay Area companies
|
<strong>Google, Airbnb, Palantir, Dropbox, Lyft</strong>, and some
|
||||||
</a>{' '}
|
startups!
|
||||||
-{' '}
|
|
||||||
<strong>Facebook, Google, Airbnb, Palantir, Dropbox, Lyft</strong>
|
|
||||||
, and some startups!
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 144 KiB |
Reference in New Issue
Block a user