This section dives deep into practical tips for specific topics of algorithms and data structures which appear frequently in coding questions. Many algorithm questions involve techniques that can be applied to questions of similar nature. The more techniques you have in your arsenal, the higher the chances of passing the interview. They may lead you to discover corner cases you might have missed out or even lead you towards the optimal approach!
@ -190,9 +189,10 @@ To find out if two circles overlap, check that the distance between the two cent
Be familiar with the various graph representations, graph search algorithms and their time and space complexities.
You can be given a list of edges and tasked to build your own graph from the edges to perform a traversal on. The common graph representations are:
- Adjacency matrix.
- Adjacency list.
- Hashmap of hashmaps.
- Adjacency matrix.
- Adjacency list.
- Hashmap of hashmaps.
A tree-like diagram could very well be a graph that allows for cycles and a naive recursive solution would not work. In that case you will have to handle cycles and keep a set of visited nodes when traversing.
@ -298,15 +298,17 @@ For partitioning linked lists, create two separate linked lists and join them ba
Linked lists problems share similarity with array problems, think about how you would do it for an array and try to apply it to a linked list.
Two pointer approaches are also common for linked lists. For example:
- Getting the k<sup>th</sup> from last node - Have two pointers, where one is k nodes ahead of the other. When the node ahead reaches the end, the other node is k nodes behind.
- Detecting cycles - Have two pointers, where one pointer increments twice as much as the other, if the two pointers meet, means that there is a cycle.
- Getting the middle node - Have two pointers, where one pointer increments twice as much as the other. When the faster node reaches the end of the list, the slower node will be at the middle.
- Getting the k<sup>th</sup> from last node - Have two pointers, where one is k nodes ahead of the other. When the node ahead reaches the end, the other node is k nodes behind.
- Detecting cycles - Have two pointers, where one pointer increments twice as much as the other, if the two pointers meet, means that there is a cycle.
- Getting the middle node - Have two pointers, where one pointer increments twice as much as the other. When the faster node reaches the end of the list, the slower node will be at the middle.
Be familiar with the following routines because many linked list questions make use of one or more of these routines in the solution:
- Counting the number of nodes in the linked list.
- Reversing a linked list in-place.
- Finding the middle node of the linked list using fast/slow pointers.
- Merging two lists together.
- Counting the number of nodes in the linked list.
- Reversing a linked list in-place.
- Finding the middle node of the linked list using fast/slow pointers.
- Merging two lists together.
#### Corner Cases
@ -339,10 +341,10 @@ If the question asks to implement an operator such as power, squareroot or divis
#### Some common formulas:
- Sum of 1 to N = (n+1) * n/2
- Sum of 1 to N = (n+1) \* n/2
- Sum of GP = 2<sup>0</sup> + 2<sup>1</sup> + 2<sup>2</sup> + 2<sup>3</sup> + ... 2<sup>n</sup> = 2<sup>n+1</sup> - 1
- Permutations of N = N! / (N-K)!
- Combinations of N = N! / (K! * (N-K)!)
- Combinations of N = N! / (K! \* (N-K)!)
#### Practice Questions
@ -449,7 +451,7 @@ To determine if two strings are anagrams, there are a few plausible approaches:
### Palindrome
A palindrome is a word, phrase, number, or other sequence of characters which reads the same backward as forward, such as *madam* or *racecar*.
A palindrome is a word, phrase, number, or other sequence of characters which reads the same backward as forward, such as _madam_ or _racecar_.
Here are ways to determine if a string is a palindrome:
@ -498,7 +500,6 @@ If the question involves summation of nodes along the way, be sure to check whet
You should be very familiar with writing pre-order, in-order, and post-order traversal recursively. As an extension, challenge yourself by writing them iteratively. Sometimes interviewers ask candidates for the iterative approach, especially if the candidate finishes writing the recursive approach too quickly.
#### Corner Cases
- Empty tree.
@ -561,9 +562,9 @@ Be familiar with implementing, from scratch, a `Trie` class and its `add`, `remo
#### Notes
If you see a top or lowest *k* being mentioned in the question, it is usually a signal that a heap can be used to solve the problem, such as in [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/).
If you see a top or lowest _k_ being mentioned in the question, it is usually a signal that a heap can be used to solve the problem, such as in [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/).
If you require the top *k* elements use a Min Heap of size *k*. Iterate through each element, pushing it into the heap. Whenever the heap size exceeds *k*, remove the minimum element, that will guarantee that you have the *k* largest elements.
If you require the top _k_ elements use a Min Heap of size _k_. Iterate through each element, pushing it into the heap. Whenever the heap size exceeds _k_, remove the minimum element, that will guarantee that you have the _k_ largest elements.
- Given a set of rectangles represented by a height and an interval along the y-axis, determine the size of its union. ([Solution](https://www.geeksforgeeks.org/divide-and-conquer-set-7-the-skyline-problem/))
- Given an array, find the longest arithmetic progression. ([Solution](https://www.geeksforgeeks.org/longest-arithmetic-progression-dp-35/))
- Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
- Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
- E.g. `[100, 4, 200, 1, 3, 2] => 4`. Explanation: The longest consecutive elements sequence is `[1, 2, 3, 4]`. Therefore its length is 4. Note: Your algorithm should run in O(n) complexity. ([Solution](https://www.geeksforgeeks.org/longest-consecutive-subsequence/))
#### Medium
- Given a list of item prices, find all possible combinations of items that sum a particular value `K`. ([Solution](https://www.geeksforgeeks.org/combinational-sum/))
- Given an array of integers find whether there is a sub-sequence that sums to 0 and return it. ([Solution](https://www.geeksforgeeks.org/find-if-there-is-a-subarray-with-0-sum/))
- E.g. `[1, 2, -3, 1]` => `[1, 2, -3]` or `[2, -3, 1]`
- Trapping rain water: You have an array with the heights of an island (at point 1, point 2 etc) and you want to know how much water would remain on this island (without flowing away). ([Solution](https://www.geeksforgeeks.org/trapping-rain-water/))
#### Easy
- Implement a circular buffer using an array. ([Solution](https://www.geeksforgeeks.org/circular-queue-set-1-introduction-array-implementation/))
- Given an array of integers, print out a histogram using the said array; include a base layer (all stars) ([Solution](https://www.geeksforgeeks.org/program-make-histogram-array/))
- Given an array and an index, find the product of the elements of the array except the element at that index. ([Solution](https://www.geeksforgeeks.org/a-product-array-puzzle/))
- Given 2 separate arrays, write a method to find the values that exist in both arrays and return them. ([Solution](https://www.geeksforgeeks.org/union-and-intersection-of-two-sorted-arrays-2/))
- Given an input array and another array that describes a new index for each element, mutate the input array so that each element ends up in their new index ([Solution](https://www.geeksforgeeks.org/reorder-a-array-according-to-given-indexes/))
- Discuss the runtime of the algorithm and how you can be sure there would not be any infinite loops
- Given an array of non-negative numbers, find continuous subarray with sum to S. ([Solution 1](https://www.geeksforgeeks.org/find-subarray-with-given-sum/)) ([Solution 2](http://blog.gainlo.co/index.php/2016/06/01/subarray-with-given-sum/))
- Given an array of non-negative numbers, find continuous subarray with sum to S. ([Solution 1](https://www.geeksforgeeks.org/find-subarray-with-given-sum/)) ([Solution 2](http://blog.gainlo.co/index.php/2016/06/01/subarray-with-given-sum/))
- Given an array of numbers list out all triplets that sum to 0. Do so with a running time of less than O(n^3). ([Solution 1](https://www.geeksforgeeks.org/find-triplets-array-whose-sum-equal-zero/)) ([Solution 2](http://blog.gainlo.co/index.php/2016/07/19/3sum/))
- Given an array of numbers list out all quadruplets that sum to 0. Do so with a running time of less than O(n^4). ([Solution](https://www.geeksforgeeks.org/find-four-numbers-with-sum-equal-to-given-sum/))
- Given an array of integers, find the subarray with the largest sum. ([Solution](https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/))
@ -42,6 +44,7 @@ Arrays
- E.g., `[2, 5, 3, 2, 1, 3, 4, 5, 1]` returns 4, because it is the only value that appears in the array only once.
#### Other
- In an array of arrays, e.g. given `[[], [1, 2, 3], [4, 5], [], [], [6, 7], [8], [9, 10], [], []]`, print: `1, 2, 3, 4, 5, 6, 7, 8, 9, 10`.
- Implement an iterator that supports `hasNext()`, `next()` and `remove()` methods.
- Paginate an array with constraints, such as skipping certain items.
- Given a flight itinerary consisting of starting city, destination city, and ticket price (2D list) - find the optimal price flight path to get from start to destination. (A variation of Dynamic Programming Shortest Path)
- Given some coin denominations and a target value `M`, return the coins combination with the minimum number of coins.
- Time complexity: `O(MN)`, where N is the number of distinct type of coins.
- Space complexity: `O(M)`.
- Given a set of numbers in an array which represent a number of consecutive days of Airbnb reservation requested, as a host, pick the sequence which maximizes the number of days of occupancy, at the same time, leaving at least a 1-day gap in-between bookings for cleaning.
- The problem reduces to finding the maximum sum of non-consecutive array elements.
- E.g.
~~~
```
// [5, 1, 1, 5] => 10
The above array would represent an example booking period as follows -
// Dec 1 - 5
@ -22,6 +23,7 @@ Dynamic Programming
Similarly,
// [3, 6, 4] => 7
// [4, 10, 3, 1, 5] => 15
~~~
- Given a list of denominations (e.g., `[1, 2, 5]` means you have coins worth $1, $2, and $5) and a target number `k`, find all possible combinations, if any, of coins in the given denominations that add up to `k`. You can use coins of the same denomination more than once.
```
- Given a list of denominations (e.g., `[1, 2, 5]` means you have coins worth $1, $2, and \$5) and a target number `k`, find all possible combinations, if any, of coins in the given denominations that add up to `k`. You can use coins of the same denomination more than once.
- You are climbing a flight of stairs. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? E.g. Input: 3, Output: 3. Explanation: `[1, 1, 1], [1, 2], [2, 1]`.
- Given a list of schedules, provide a list of times that are available for a meeting.
```
[
[[4,5], [6,10], [12,14]],
@ -12,6 +12,7 @@ Interval
Example Output:
[[0,4], [11,12], [16,23]]
```
- You have a number of meetings (with their start and end times). You need to schedule them using the minimum number of rooms. Return the list of meetings in every room.
- Interval ranges:
- Given 2 interval ranges, create a function to tell me if these ranges intersect. Both start and end are inclusive: `[start, end]`
@ -21,7 +22,7 @@ Interval
- E.g. `[1, 4]` and `[3, 6]` => `[1, 6]`
- Now create a function that takes a group of unsorted, unorganized intervals, merge any intervals that intersect and sort them. The result should be a group of sorted, non-intersecting intervals.
- Now create a function to merge a new interval into a group of sorted, non-intersecting intervals. After the merge, all intervals should remain
non-intersecting.
non-intersecting.
- Given a list of meeting times, check if any of them overlap. The follow-up question is to return the minimum number of rooms required to accommodate all the meetings.
- Given a linked list, in addition to the next pointer, each node has a child pointer that can point to a separate list. With the head node, flatten the list to a single-level linked list.
- You're given a 3 x 3 board of a tile puzzle, with 8 tiles numbered 1 to 8, and an empty spot. You can move any tile adjacent to the empty spot, to the empty spot, creating an empty spot where the tile originally was. The goal is to find a series of moves that will solve the board, i.e. get `[[1, 2, 3], [4, 5, 6], [7, 8, - ]]` where - is the empty tile.
- Boggle implementation. Given a dictionary, and a matrix of letters, find all the words in the matrix that are in the dictionary. You can go across, down or diagonally.
- You are given a 7 digit phone number, and you should find all possible letter combinations based on the digit-to-letter mapping on numeric pad and return only the ones that have valid match against a given dictionary of words.
- Give all possible letter combinations from a phone number.
@ -9,4 +8,4 @@ Permutation
- E.g. when `N` is `3`, we should get `((()))`, `(()())`, `(())()`, `()(())`, `()()()`.
- Implement a Queue class from scratch with an existing bug, the bug is that it cannot take more than 5 elements.
- Implement a Queue using two stacks. You may only use the standard `push()`, `pop()`, and `peek()` operations traditionally available to stacks. You do not need to implement the stack yourself (i.e. an array can be used to simulate a stack).
- Output list of strings representing a page of hostings given a list of CSV strings.
- Given a list of words, find the word pairs that when concatenated form a palindrome.
@ -42,7 +41,7 @@ String
- E.g. `1122344`, next: `21221324`, next: `12112211121214`.
- Count and say problem.
- Compress a string by grouping consecutive similar questions together:
- E.g. `'aaabbbcc' =>`'a3b3c2'`.
- E.g. `'aaabbbcc' =>`'a3b3c2'`.
- You have a string consisting of open and closed parentheses, but parentheses may be imbalanced. Make the parentheses balanced and return the new string.
- Given a set of strings, return the smallest subset that contains prefixes for every string.
- E.g. `['foo', 'foog', 'food', 'asdf']` => `['foo', 'asdf']`.
> A common optimization is to store feed content together with feedID in user-feed table so that we don't need to join the feed table any more. This approach is called denormalization, which means by adding redundant data, we can optimize the read performance (reducing the number of joins).
>
> The disadvantages are obvious:
>
> - Data redundancy. We are storing redundant data, which occupies storage space (classic time-space trade-off).
> - Data consistency. Whenever we update a feed, we need to update both feed table and user-feed table. Otherwise, there is data inconsistency. This increases the complexity of the system.
> - Remember that there's no one approach always better than the other (normalization vs denormalization). It's a matter of whether you want to optimize for read or write.
@ -76,9 +76,9 @@ TODO
- The most straightforward way is to fetch posts from all the people you follow and render them sorted by time.
- There can be many posts to fetch. How many posts should you fetch?
- What are the pagination approaches and the pros and cons of each approach?
- Offset by page size
- Offset by time
- What are the pagination approaches and the pros and cons of each approach?
- Offset by page size
- Offset by time
- What data should the post contain when you initially fetch them?
- Lazy loading approach for loading associated data: media, comments, people who liked the post.
- Given an IPv4 IP address p and an integer n, return a list of CIDR strings that most succinctly represents the range of IP addresses from p to (p + n).
- Describe what happens when you enter a url in the web browser.
Design a snake game that is to be played in web browser.
Client: React + Redux
Rendering:
Pixel-based graphics. Depending on the intended resolution, can divide the screen into N * M pixels. Can dynamically calculate the size of each pixel.
Pixel-based graphics. Depending on the intended resolution, can divide the screen into N \* M pixels. Can dynamically calculate the size of each pixel.
Fruit: One pixel.
Snake body: One pixel width made up of connected pixels.
Model:
```js
{
fruit: {
x, y
@ -23,7 +24,9 @@ Model:
speed: 500,
points: 0
}
```
```js
function update() {
next_loc = points[0] + (x, y) # Depends on the direction
if (snake.points.find(next_loc) > 0) {
@ -33,39 +36,41 @@ function update() {
if (!isEqual(next_loc, fruit)) {
pts = points.removeLast();
} else {
generate_fruit();
generateFruit();
points++;
}
snake.points = [next_loc, ...pts];
// Boundary checking -> die
}
```
function generate_fruit() {
```js
function generateFruit() {
// Cannot generate on my own body.
// First approach: while on body, generate
let next_fruit_location = random_location();
while (snake.points.find(next_fruit_location) > 0) {
next_fruit_location = random_location();
next_fruit_location = random_location();
}
fruit = next_fruit_location
fruit = next_fruit_location;
// Second approach: brute force
for (let i = 0; i <rows;i++){
for (let j = 0; j <cols;j++){
let point = { x: i, y: j }
let point = { x: i, y: j };
if (snake.points.find(next_fruit_location) === -1) {
fruit = point
fruit = point;
}
}
}
// Third approach: brute force with random
const available_points = []
const available_points = [];
for (let i = 0; i <rows;i++){
for (let j = 0; j <cols;j++){
let point = { x: i, y: j }
let point = { x: i, y: j };
if (snake.points.find(next_fruit_location) === -1) {
@ -11,10 +10,9 @@ All these items will change based on your specific company and needs but these i
- **Strengths** - Ask the interviewee what they would consider to be their strengths and maybe rate themselves. This gives you a good idea where to start asking technical questions and sets a baseline for expected knowledge of each subject.
- **Keep Things Loose** - This is of course dependent on your industry but try to keep make the interviewee comfortable. Many people get nervous when trying to perform at their best for others and a technical interview is no different. A suggestion is to start with a personal question such as "What are some of your hobbies?" or "What do you like to do for fun?" These types of questions can help relax an interviewee and allows them to perform better.
- **Understand The Position** - Understand that a junior level candidate isn't going to have as much knowledge about languages and frameworks as a senior candidate will.
- **Save Time For Questions** - The interviewee may have questions for you! Give them the ability to ask. Maybe offer up a few questions if they have none, (ie. "What is the typical day here like for my position?", "What is your favorite part about working at __?")
- **Save Time For Questions** - The interviewee may have questions for you! Give them the ability to ask. Maybe offer up a few questions if they have none, (ie. "What is the typical day here like for my position?", "What is your favorite part about working at \_\_?")
## Tech Question Technique
- **Tools** - Using a text editor such as Sublime or Atom will give the interviewee syntax highlighting but doesn't show compiler errors which can be a help.
- **Nitpicking** - Sometimes pseudocode is okay. If testing in C# do you really need the interviewee to write `Console.WriteLine()` or is `Print()` good enough?
-**Keep Dialog Open** - Don't leave the interviewee alone or sit quietly by as they attempt to code. Give some subtle hints like "I see you're doing ____, can you think of any other ways to accomplish this?" It's unlikely that the interviewee will be working in a silo should they get the job, is there any reason they should be during the interview?
- **Nitpicking** - Sometimes pseudocode is okay. If testing in C# do you really need the interviewee to write `Console.WriteLine()` or is `Print()` good enough? -**Keep Dialog Open** - Don't leave the interviewee alone or sit quietly by as they attempt to code. Give some subtle hints like "I see you're doing \_\_\_\_, can you think of any other ways to accomplish this?" It's unlikely that the interviewee will be working in a silo should they get the job, is there any reason they should be during the interview?
The following interview formats are based on my experience interviewing with Bay Area companies. 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 you might 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.
@ -4,124 +4,124 @@ Here are some good questions to ask at the end of the interview, extracted from
### 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?
- **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?
- **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?
- **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?
### 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?
- 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?
- **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?
### 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?
- 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?
- **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?
* [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)
- [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)
The following content is by Christina Ng and rephrased for the purpose of this handbook. You can follow her on [Medium](https://medium.com/@christinang89) or [Quora](https://www.quora.com/profile/Christina-Ng).
## Table of Contents
1. [How Your Resume is Screened](#how-your-resume-is-screened)
1. [10 Ways To Improve Your Resume](#10-ways-to-improve-your-resume)
1. [How Your Resume is Screened](#how-your-resume-is-screened)
1. [10 Ways To Improve Your Resume](#10-ways-to-improve-your-resume)
## How Your Resume is Screened
@ -78,7 +77,7 @@ Information nobody needs to know:
Ideally, keep it short, concise, but as detailed as possible.
#### 3. GPA does matter
#### 3. GPA does matter
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.**
@ -92,7 +91,7 @@ Also, when you list your GPA/results, try to benchmark it. Instead of simply lis
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.
**"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.
@ -133,7 +132,7 @@ Ideally, if your resume is good enough, the recruiter should already know what y
- 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.
Ideally, you want the project section to demonstrate your personality and skills, and be the talking point during the interview.
"Tell me about your journey into tech. How did you get interested in coding, and why was web development a good fit for you? How is that applicable to our _____ role or company goals?"
"Tell me about your journey into tech. How did you get interested in coding, and why was web development a good fit for you? How is that applicable to our **\_** role or company goals?"
### The Elevator Pitch
@ -14,8 +13,8 @@ The Elevator Pitch is an indispensable tool for you as you move forward in your
- Tell them who you are, who you work for (or school and major), and what you do.
- KISS (Keep It Simple, Stupid)
- Tell them some highlights from your favorite / most impressive projects.
- Do not delve into the depths of how you reverse engineered a game and decrypted a packet to predict when to use your DKP on a drop. Tell them the executive summary: "I reverse engineered X game by decrypting Y packet to predict Z." If this catches their interest, they *will* ask further questions on their own.
- Why do *they* want *you*?
- Do not delve into the depths of how you reverse engineered a game and decrypted a packet to predict when to use your DKP on a drop. Tell them the executive summary: "I reverse engineered X game by decrypting Y packet to predict Z." If this catches their interest, they _will_ ask further questions on their own.
- Why do _they_ want _you_?
- This is where you use your knowledge of the company, knowledge of their technology stack(s), your unique talent that they want, etc. in order to solidify your ability to contribute to their company.
- PRACTICE!
- Lastly, you must practice your pitch! Having a great, succinct summary of your skills only helps if you can actually deliver it rapidly! You should practice keeping a quick but easy-to-follow pace that won't overwhelm them but won't bore them. It's a precarious balance, but can be ironed out with practice.
@ -60,13 +59,13 @@ Prepare a self introduction that follows the following outline (inspired by "Cra
An example of the above could be:
> I'm John Doe and currently a Software Engineer at Google.
>
>
> My background is in Computer Science, where I received my bachelor's degree at MIT and my Master's degree at Stanford. I mainly did research on how to decrease complexity of search algorithms.
>
>
> After university, I started to work at Microsoft as a Software Engineer. It was a great experience as I was working in the Office team contributing to MS Word and MS Powerpoint. I learned a lot about C# and .NET back then. After about two years, I got an offer from Google where I have been working since then. I'm now leading the Search Optimization team and have gained a lot of knowledge in scalability and domain knowledge. My daily tasks consist of optimizing search queries and mentoring junior engineers.
>
>
> Outside of work I develop a on open source projects written in Python. Examples of some open source projects I created are <insertexamples>.
>
>
> I'm now seeking new job opportunities in the Boston area since I'm relocating for personal reasons. In particular I think Boston Dynamics is a perfect fit for my interests as well as my skill set.