contents: minor tweaks

pull/125/head
Yangshun Tay 5 years ago
parent 6910bfdbd2
commit f891bc30c7

@ -67,7 +67,7 @@ The focus of week 3 is on non-linear data structures like trees, graphs and heap
## Week 4 ## Week 4
Week 4 builds up on knowledge from previous weeks but questions are of increased difficulty. Expect to see such level of questions during interviews. We get to use more advanced data structures such as heaps and tries in this week. Week 4 builds up on knowledge from previous weeks but questions are of increased difficulty. Expect to see such level of questions during interviews. You get to get more practice on advanced data structures such as heaps and tries.
- [Add and Search Word](https://leetcode.com/problems/add-and-search-word-data-structure-design/) - [Add and Search Word](https://leetcode.com/problems/add-and-search-word-data-structure-design/)
- [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) - [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/)
@ -90,15 +90,17 @@ Week 4 builds up on knowledge from previous weeks but questions are of increased
## Week 5 ## Week 5
Week 5 focuses on Dynamic Programming questions. Week 5 focuses on Dynamic Programming (DP) questions. Personally as an interviewer, I'm not a fan of DP questions as they are not really applicable to practical scenarios. However, companies like Google still ask DP questions and if you joining Google is your dream, DP is unavoidable.
DP questions can be hard to master and the best way to get better at them is... you guessed it - practice! Be familiar with the concepts of memoization and backtracking.
- [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) - [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/)
- [Coin Change](https://leetcode.com/problems/coin-change/) - [Coin Change](https://leetcode.com/problems/coin-change/)
- [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) - [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/)
- [Word Break Problem](https://leetcode.com/problems/word-break/)
- [Combination Sum](https://leetcode.com/problems/combination-sum-iv/) - [Combination Sum](https://leetcode.com/problems/combination-sum-iv/)
- [House Robber](https://leetcode.com/problems/house-robber/) - [House Robber](https://leetcode.com/problems/house-robber/)
- [House Robber II](https://leetcode.com/problems/house-robber-ii/) - [House Robber II](https://leetcode.com/problems/house-robber-ii/)
- [Decode Ways](https://leetcode.com/problems/decode-ways/) - [Decode Ways](https://leetcode.com/problems/decode-ways/)
- [Unique Paths](https://leetcode.com/problems/unique-paths/) - [Unique Paths](https://leetcode.com/problems/unique-paths/)
- [Jump Game](https://leetcode.com/problems/jump-game/) - [Jump Game](https://leetcode.com/problems/jump-game/)
- [Word Break Problem](https://leetcode.com/problems/word-break/)

@ -1,120 +1,158 @@
--- ---
id: company-interview-formats id: company-interview-formats
title: Company Formats title: Interview Formats
--- ---
Interviews are a multi-stage process and each stage can consist of vastly different formats.
## Various Formats
### Pop Quiz
Pop quizzes are meant to be 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. It is not a very common interview format these days.
Examples:
- What is 4 & 5? Answer: 4
- What is the time complexity of bubble sort? Answer: O(n^2)
### 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 for 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 snake game
### Phone Interview
Phone interview 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 (Skype/Hangout). A question will be given to you and you will work on that question using an online collaborative editor (CoderPad/CodePen/Google Docs).
### 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 doing a system design question. It ia also possible that you have to bring you own laptops and work on a project/solve a coding problem on the spot.
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.
## Formats of famous companies
### Airbnb ### Airbnb
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview: - Technical phone interview:
- 1 or 2 x Algorithm/front end on CoderPad/CodePen. - 1 or 2 x Algorithm/front end on CoderPad/CodePen
- On-site (General): - On-site (General):
- 2 x Algorithm coding on CoderPad. - 2 x Algorithm coding on CoderPad
- 1 x System design/architecture. - 1 x System design/architecture
- 1 x Past experience/project. - 1 x Past experience/project
- 2 x Cross functional. - 2 x Cross functional
- On-site (Front End): - On-site (Front End):
- 2 x Front end coding on CodePen. Use any framework/library. - 2 x Front end coding on CodePen. Use any framework/library
- 1 x General coding on your own laptop. - 1 x General coding on your own laptop
- 1 x Past experience/project. - 1 x Past experience/project
- 2 x Cross functional. - 2 x Cross functional
- Tips: - Tips:
- All sessions involve coding on your own laptop. Prepare your development environment in advance. - All sessions involve coding on your own laptop. Prepare your development environment in advance
- You are allowed to look up APIs if you need to. - You are allowed to look up APIs if you need to
- They seem to place high emphasis on compilable, runnable code in all their coding rounds. - They seem to place high emphasis on compilable, runnable code in all their coding rounds
- Cross functional interviews will involve getting Airbnb employees from any discipline to speak with you. These interviews are mostly non-technical but are extremely important to Airbnb because they place a high emphasis on cultural fit. Do look up the Airbnb section of the behavioural questions to know what sort of questions to expect. - Cross functional interviews will involve getting Airbnb employees from any discipline to speak with you. These interviews are mostly non-technical but are extremely important to Airbnb because they place a high emphasis on cultural fit. Do look up the Airbnb section of the behavioral questions to know what sort of questions to expect
### Asana ### Asana
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview. - Technical phone interview
- On-site (Product Engineer): - On-site (Product Engineer):
- 3 x Algorithm and system design on whiteboard within the same session. - 3 x Algorithm and system design on whiteboard within the same session
- 1 x Algorithm on laptop and system design. This session involves writing code on your own laptop to solve 3 well-defined algorithm problems in around 45 minutes after which an engineer will come in and review the code with you. You are not supposed to run the code while working on the problem. - 1 x Algorithm on laptop and system design. This session involves writing code on your own laptop to solve 3 well-defined algorithm problems in around 45 minutes after which an engineer will come in and review the code with you. You are not supposed to run the code while working on the problem.
- Tips: - Tips:
- No front end questions were asked. - No front end questions were asked
- Asana places high emphasis on System Design and makes heavy use of the whiteboard. You do not necessarily have to write code for the algorithm question of the first three interviews. - Asana places high emphasis on System Design and makes heavy use of the whiteboard. You do not necessarily have to write code for the algorithm question of the first three interviews
- All 4 sessions involve algorithms and system design. One of the sessions will be conducted by an Engineering Manager. - All 4 sessions involve algorithms and system design. One of the sessions will be conducted by an Engineering Manager
- The last session will involve coding on your own laptop. Prepare your development environment in advance. - The last session will involve coding on your own laptop. Prepare your development environment in advance
- Regardless of Product Engineer or Engineering Generalist position, their interview format and questions are similar. - Regardless of Product Engineer or Engineering Generalist position, their interview format and questions are similar
### Dropbox ### Dropbox
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interviews: - Technical phone interviews:
- 2 x Algorithm/front end on CoderPad/CodePen. - 2 x Algorithm/front end on CoderPad/CodePen
- On-site (Front End): - On-site (Front End):
- 2 x Front end on CodePen. Only Vanilla JS or jQuery allowed. - 2 x Front end on CodePen. Only Vanilla JS or jQuery allowed
- 1 x General coding on CoderPad. - 1 x General coding on CoderPad
- 1 x All around. Meet with an Engineering Manager and discussing past experiences and working style. - 1 x All around. Meet with an Engineering Manager and discussing past experiences and working style
- Tips: - Tips:
- You can code on your own laptop and look up APIs. - You can code on your own laptop and look up APIs
- Dropbox recruiters are very nice and will give you helpful information on what kind of questions to expect for the upcoming sessions. - Dropbox recruiters are very nice and will give you helpful information on what kind of questions to expect for the upcoming sessions
- One of the front end sessions involve coding up a pixel-perfect version of a real page on www.dropbox.com. You'll be given a spec of the desired page and you'll be asked to create a working version during the interview. - One of the front end sessions involve coding up a pixel-perfect version of a real page on www.dropbox.com. You'll be given a spec of the desired page and you'll be asked to create a working version during the interview
### Facebook ### Facebook
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interviews: - Technical phone interviews:
- 1 or 2 x Algorithm/front end on Skype/CoderPad. - 1 or 2 x Algorithm/front end on Skype/CoderPad
- On-site (Front End): - On-site (Front End):
- 2 x Technical coding interview on whiteboard (Ninja). - 2 x Technical coding interview on whiteboard (Ninja)
- 1 x Behavioural (Jedi). Meet with an Engineering Manager and discussing past experiences and working style. - 1 x Behavioural (Jedi). Meet with an Engineering Manager and discussing past experiences and working style
- 1 x Design/architecture on whiteboard (Pirate). - 1 x Design/architecture on whiteboard (Pirate)
- Tips: - Tips:
- You are only allowed to use the whiteboard (or wall). No laptops involved. - You are only allowed to use the whiteboard (or wall). No laptops involved
- For the Jedi round, you may be asked a technical question at the end of it. Front end candidates will be given a small HTML/CSS problem nearing the end of the session. - For the Jedi round, you may be asked a technical question at the end of it. Front end candidates will be given a small HTML/CSS problem nearing the end of the session
- For the Ninja rounds, you may be asked one to two questions depending on how fast you progress through the question. - For the Ninja rounds, you may be asked one to two questions depending on how fast you progress through the question
### Google ### Google
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview: - Technical phone interview:
- 1 or 2 x algorithm on Google Doc. - 1 or 2 x algorithm on Google Doc
- On-site (Front End): - On-site (Front End):
- 3 x Front end on whiteboard. Have to use Vanilla JS (or at the most, jQuery). - 3 x Front end on whiteboard. Have to use Vanilla JS (or at the most, jQuery)
- 2 x Algorithm on whiteboard. - 2 x Algorithm on whiteboard
- Team matching. - Team matching
- Speak with managers from different teams who are interested in your profile. - Speak with managers from different teams who are interested in your profile
- Tips: - Tips:
- You are only allowed to use the whiteboard. No laptops involved. - You are only allowed to use the whiteboard. No laptops involved
- In rare cases, candidates may even be allowed to skip the phone interview round and advanced to on-site directly. - In rare cases, candidates may even be allowed to skip the phone interview round and advanced to on-site directly
- For non-fresh grads, you only receive an offer if you are successfully matched with a team. - For non-fresh grads, you only receive an offer if you are successfully matched with a team
### Lyft ### Lyft
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview: - Technical phone interview:
- 1 x Algorithm/Front end over JSFiddle. - 1 x Algorithm/Front end over JSFiddle
- On-site (Front End): - On-site (Front End):
- 4 x Front end on Coderpad/your own laptop. Use any language/framework. - 4 x Front end on Coderpad/your own laptop. Use any language/framework
- 1 x Behavioural. Meet with an Engineering Manager and go through candidate's resume. - 1 x Behavioral. Meet with an Engineering Manager and go through candidate's resume
- Tips: - Tips:
- Can use whiteboard and/or laptop. - Can use whiteboard and/or laptop
- For front end coding, I opted to use React and had to set up the projects on the spot using `create-react-app`. - For front end coding, I opted to use React and had to set up the projects on the spot using `create-react-app`
### Palantir ### Palantir
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview: - Technical phone interview:
- 1 x Algorithm over HackerRank CodePair and Skype. - 1 x Algorithm over HackerRank CodePair and Skype
- On-site (General): - On-site (General):
- 2 x Algorithm on whiteboard. - 2 x Algorithm on whiteboard
- 1 x Decomposition (system design) on whiteboard. - 1 x Decomposition (system design) on whiteboard
- On-site (Front End): - On-site (Front End):
- 1 x Front end on your own laptop. This session lasts about 1.5 hours. Use any library/framework. - 1 x Front end on your own laptop. This session lasts about 1.5 hours. Use any library/framework
- 1 x Decomposition (system design) on whiteboard. - 1 x Decomposition (system design) on whiteboard
- Tips: - Tips:
- I opted to use React and had to set up projects on the spot using `create-react-app`. - I opted to use React and had to set up projects on the spot using `create-react-app`
- You may be asked to meet with Engineering Managers after the technical sessions and it's not necessarily a good/bad thing. - You may be asked to meet with Engineering Managers after the technical sessions and it's not necessarily a good/bad thing
### WhatsApp ### WhatsApp
- Recruiter phone screen. - Recruiter phone screen
- Technical phone interview: - Technical phone interview:
- 2 x Algorithm over CoderPad. - 2 x Algorithm over CoderPad
- On-site (Web Client Developer): - On-site (Web Client Developer):
- 4 x Algorithm on whiteboard. - 4 x Algorithm on whiteboard
- Tips: - Tips:
- No front end questions were asked. - No front end questions were asked
- 1 of the interviewers is an Engineering Manager. - 1 of the interviewers is an Engineering Manager

@ -3,12 +3,24 @@ id: picking-a-language
title: Picking a Language title: Picking a Language
--- ---
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. Most of the time, I would recommend 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. 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.
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. ## 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 pretty 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 pretty 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.
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 on-site interviews. The reasons for choosing/not choosing C++ are similar to Java. Ultimately, Python, Java and C++ are decent choices of languages. 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. 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 on-site interviews. The reasons for choosing/not choosing C++ are similar to Java. Ultimately, Python, Java and C++ are decent choices of languages.
## 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.
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 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.
## 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. 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.

@ -31,11 +31,11 @@ Bonuses are usually paid on a semi-annual basis and are typically dependent on a
- Brandon is a Software Engineer fresh out of college. His base salary is 100,000, is a fresh grad (seniority multiplier: 10%), crushed expectations for the half (individual performance multiplier: 200%) and his company did pretty well (company performance multiplier: 120%). For that half, his bonus will be as follows: - Brandon is a Software Engineer fresh out of college. His base salary is 100,000, is a fresh grad (seniority multiplier: 10%), crushed expectations for the half (individual performance multiplier: 200%) and his company did pretty well (company performance multiplier: 120%). For that half, his bonus will be as follows:
- **Bonus:** 100,000 x 50% (for the half) x 10% (seniority) x 200% (individual performance) x 120% (company performance) = 12000 - **Bonus:** 100,000 x 50% (half a year) x 10% (seniority) x 200% (individual performance) x 120% (company performance) = 12000
- Alyssa is an Engineering Manager with 10 years of professional experience. Her base salary is 220,000, is an experienced engineering manager (seniority multiplier: 20%), exceeded expectations for the half (individual performance multiplier: 150%) and her company did pretty awesome (company performance multiplier: 130%). For that half, her bonus will be as follows: - Alyssa is an Engineering Manager with 10 years of professional experience. Her base salary is 220,000, is an experienced engineering manager (seniority multiplier: 20%), exceeded expectations for the half (individual performance multiplier: 150%) and her company did pretty awesome (company performance multiplier: 130%). For that half, her bonus will be as follows:
- **Bonus:** 200,000 x 50% (for the half) x 20% (seniority) x 200% (individual performance) x 130% (company performance) = 39000 - **Bonus:** 200,000 x 50% (half a year) x 20% (seniority) x 200% (individual performance) x 130% (company performance) = 39000
Hence the amount of bonus you receive can be highly variable and senior employees get a higher proportion of their compensation from bonuses. Hence the amount of bonus you receive can be highly variable and senior employees get a higher proportion of their compensation from bonuses.

Loading…
Cancel
Save