parent
789add546f
commit
1311262d8a
@ -1,7 +1,6 @@
|
||||
Bit Manipulation
|
||||
==
|
||||
# Bit Manipulation
|
||||
|
||||
- How do you verify if an interger is a power of 2?
|
||||
- Write a program to print the binary representation of an integer.
|
||||
- Write a program to print out the number of 1 bits in a given integer.
|
||||
- Write a program to determine the largest possible integer using the same number of 1 bits in a given number.
|
||||
* How do you verify if an interger is a power of 2?
|
||||
* Write a program to print the binary representation of an integer.
|
||||
* Write a program to print out the number of 1 bits in a given integer.
|
||||
* Write a program to determine the largest possible integer using the same number of 1 bits in a given number.
|
||||
|
@ -1,7 +1,6 @@
|
||||
Geometry
|
||||
==
|
||||
# Geometry
|
||||
|
||||
- You have a plane with lots of rectangles on it, find out how many of them intersect.
|
||||
- Which data structure would you use to query the k-nearest points of a set on a 2D plane?
|
||||
- Given many points, find k points that are closest to the origin.
|
||||
- How would you triangulate a polygon?
|
||||
* You have a plane with lots of rectangles on it, find out how many of them intersect.
|
||||
* Which data structure would you use to query the k-nearest points of a set on a 2D plane?
|
||||
* Given many points, find k points that are closest to the origin.
|
||||
* How would you triangulate a polygon?
|
||||
|
@ -1,10 +1,9 @@
|
||||
Graph
|
||||
==
|
||||
# Graph
|
||||
|
||||
- Given a list of sorted words from an alien dictionary, find the order of the alphabet.
|
||||
- Alien Dictionary Topological Sort question.
|
||||
- Find if a given string matches any path in a labeled graph. A path may contain cycles.
|
||||
- Given a bipartite graph, separate the vertices into two sets.
|
||||
- You are a thief trying to sneak across a rectangular 100 x 100m field. There are alarms placed on the fields and they each have a circular sensing radius which will trigger if anyone steps into it. Each alarm has its own radius. Determine if you can get from one end of the field to the other end.
|
||||
- Given a graph and two nodes, determine if there exists a path between them.
|
||||
- Determine if a cycle exists in the graph.
|
||||
* Given a list of sorted words from an alien dictionary, find the order of the alphabet.
|
||||
* Alien Dictionary Topological Sort question.
|
||||
* Find if a given string matches any path in a labeled graph. A path may contain cycles.
|
||||
* Given a bipartite graph, separate the vertices into two sets.
|
||||
* You are a thief trying to sneak across a rectangular 100 x 100m field. There are alarms placed on the fields and they each have a circular sensing radius which will trigger if anyone steps into it. Each alarm has its own radius. Determine if you can get from one end of the field to the other end.
|
||||
* Given a graph and two nodes, determine if there exists a path between them.
|
||||
* Determine if a cycle exists in the graph.
|
||||
|
@ -1,7 +1,6 @@
|
||||
Hash Table
|
||||
==
|
||||
# Hash Table
|
||||
|
||||
- Describe an implementation of a least-used cache, and big-O notation of it.
|
||||
- A question involving an API's integration with hash map where the buckets of hash map are made up of linked lists.
|
||||
- Implement data structure `Map` storing pairs of integers (key, value) and define following member functions in O(1) runtime: `void insert(key, value)`, `void delete(key)`, `int get(key)`, `int getRandomKey()`.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/08/14/uber-interview-question-map-implementation/).
|
||||
* Describe an implementation of a least-used cache, and big-O notation of it.
|
||||
* A question involving an API's integration with hash map where the buckets of hash map are made up of linked lists.
|
||||
* Implement data structure `Map` storing pairs of integers (key, value) and define following member functions in O(1) runtime: `void insert(key, value)`, `void delete(key)`, `int get(key)`, `int getRandomKey()`.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/08/14/uber-interview-question-map-implementation/).
|
||||
|
@ -1,5 +1,4 @@
|
||||
Heap
|
||||
==
|
||||
# Heap
|
||||
|
||||
- Merge `K` sorted lists together into a single list.
|
||||
- Given a stream of integers, write an efficient function that returns the median value of the integers.
|
||||
* Merge `K` sorted lists together into a single list.
|
||||
* Given a stream of integers, write an efficient function that returns the median value of the integers.
|
||||
|
@ -1,12 +1,11 @@
|
||||
Linked List
|
||||
==
|
||||
# Linked List
|
||||
|
||||
- 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.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/06/12/flatten-a-linked-list/)
|
||||
- Reverse a singly linked list. Implement it recursively and iteratively.
|
||||
- Convert a binary tree to a doubly circular linked list.
|
||||
- Implement an LRU cache with O(1) runtime for all its operations.
|
||||
- Check distance between values in linked list.
|
||||
- A question involving an API's integration with hash map where the buckets of hash map are made up of linked lists.
|
||||
- Given a singly linked list (a list which can only be traversed in one direction), find the item that is located at 'k' items from the end. So if the list is a, b, c, d and k is 2 then the answer is 'c'. The solution should not search the list twice.
|
||||
- How can you tell if a Linked List is a Palindrome?
|
||||
* 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.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/06/12/flatten-a-linked-list/)
|
||||
* Reverse a singly linked list. Implement it recursively and iteratively.
|
||||
* Convert a binary tree to a doubly circular linked list.
|
||||
* Implement an LRU cache with O(1) runtime for all its operations.
|
||||
* Check distance between values in linked list.
|
||||
* A question involving an API's integration with hash map where the buckets of hash map are made up of linked lists.
|
||||
* Given a singly linked list (a list which can only be traversed in one direction), find the item that is located at 'k' items from the end. So if the list is a, b, c, d and k is 2 then the answer is 'c'. The solution should not search the list twice.
|
||||
* How can you tell if a Linked List is a Palindrome?
|
||||
|
@ -1,20 +1,19 @@
|
||||
Math
|
||||
==
|
||||
# Math
|
||||
|
||||
- Create a square root function.
|
||||
- Given a string such as "123" or "67", write a function to output the number represented by the string without using casting.
|
||||
- Make a program that can print out the text form of numbers from 1 - 1000 (ex. 20 is "twenty", 105 is "one hundred and five").
|
||||
- Write a function that parses Roman numerals.
|
||||
- E.g. `XIV` returns `14`.
|
||||
- Write in words for a given digit.
|
||||
- E.g. `123` returns `one hundred and twenty three`.
|
||||
- Given a number `N`, find the largest number just smaller than `N` that can be formed using the same digits as `N`.
|
||||
- Compute the square root of `N` without using any existing functions.
|
||||
- Given numbers represented as binary strings, and return the string containing their sum.
|
||||
- E.g. `add('10010', '101')` returns `'10111'`.
|
||||
- Take in an integer and return its english word-format.
|
||||
- E.g. 1 -> "one", -10,203 -> "negative ten thousand two hundred and three".
|
||||
- Write a function that returns values randomly, according to their weight. Suppose we have 3 elements with their weights: A (1), B (1) and C (2). The function should return A with probability 25%, B with 25% and C with 50% based on the weights.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/11/11/uber-interview-question-weighted-random-numbers/)
|
||||
- Given a number, how can you get the next greater number with the same set of digits?
|
||||
- [Source](http://blog.gainlo.co/index.php/2017/01/20/arrange-given-numbers-to-form-the-biggest-number-possible/)
|
||||
* Create a square root function.
|
||||
* Given a string such as "123" or "67", write a function to output the number represented by the string without using casting.
|
||||
* Make a program that can print out the text form of numbers from 1 - 1000 (ex. 20 is "twenty", 105 is "one hundred and five").
|
||||
* Write a function that parses Roman numerals.
|
||||
* E.g. `XIV` returns `14`.
|
||||
* Write in words for a given digit.
|
||||
* E.g. `123` returns `one hundred and twenty three`.
|
||||
* Given a number `N`, find the largest number just smaller than `N` that can be formed using the same digits as `N`.
|
||||
* Compute the square root of `N` without using any existing functions.
|
||||
* Given numbers represented as binary strings, and return the string containing their sum.
|
||||
* E.g. `add('10010', '101')` returns `'10111'`.
|
||||
* Take in an integer and return its english word-format.
|
||||
* E.g. 1 -> "one", -10,203 -> "negative ten thousand two hundred and three".
|
||||
* Write a function that returns values randomly, according to their weight. Suppose we have 3 elements with their weights: A (1), B (1) and C (2). The function should return A with probability 25%, B with 25% and C with 50% based on the weights.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/11/11/uber-interview-question-weighted-random-numbers/)
|
||||
* Given a number, how can you get the next greater number with the same set of digits?
|
||||
* [Source](http://blog.gainlo.co/index.php/2017/01/20/arrange-given-numbers-to-form-the-biggest-number-possible/)
|
||||
|
@ -1,18 +1,17 @@
|
||||
Matrix
|
||||
==
|
||||
# Matrix
|
||||
|
||||
- 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.
|
||||
- The values of the matrix will represent numbers of carrots available to the rabbit in each square of the garden. If the garden does not have an exact center, the rabbit should start in the square closest to the center with the highest carrot count. On a given turn, the rabbit will eat the carrots available on the square that it is on, and then move up, down, left, or right, choosing the square that has the most carrots. If there are no carrots left on any of the adjacent squares, the rabbit will go to sleep. You may assume that the rabbit will never have to choose between two squares with the same number of carrots. Write a function which takes a garden matrix and returns the number of carrots the rabbit eats. You may assume the matrix is rectangular with at least 1 row and 1 column, and that it is populated with non-negative integers. For example,
|
||||
- Example: `[[5, 7, 8, 6, 3], [0, 0, 7, 0, 4], [4, 6, 3, 4, 9], [3, 1, 0, 5, 8]]` should return `27`.
|
||||
- Print a matrix in a spiral fashion.
|
||||
- In the Game of life, calculate how to compute the next state of the board. Follow up was to do it if there were memory constraints (board represented by a 1 TB file).
|
||||
- Grid Illumination: Given an NxN grid with an array of lamp coordinates. Each lamp provides illumination to every square on their x axis, every square on their y axis, and every square that lies in their diagonal (think of a Queen in chess). Given an array of query coordinates, determine whether that point is illuminated or not. The catch is when checking a query all lamps adjacent to, or on, that query get turned off. The ranges for the variables/arrays were about: 10^3 < N < 10^9, 10^3 < lamps < 10^9, 10^3 < queries < 10^9.
|
||||
- You are given a matrix of integers. Modify the matrix such that if a row or column contains a 0, make the values in the entire row or column 0.
|
||||
- Given an N x N matrix filled randomly with different colors (no limit on what the colors are), find the total number of groups of each color - a group consists of adjacent cells of the same color touching each other.
|
||||
- You have a 4 x 4 board with characters. You need to write a function that finds if a certain word exists in the board. You can only jump to neighboring characters (including diagonally adjacent).
|
||||
- Count the number of islands in a binary matrix of 0's and 1's.
|
||||
- Check a 6 x 7 Connect 4 board for a winning condition.
|
||||
- Given a fully-filled Sudoku board, check whether fulfills the Sudoku condition.
|
||||
- Implement a function that checks if a player has won tic-tac-toe.
|
||||
- Given an N x N matrix of 1's and 0's, figure out if all of the 1's are connected.
|
||||
* 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.
|
||||
* The values of the matrix will represent numbers of carrots available to the rabbit in each square of the garden. If the garden does not have an exact center, the rabbit should start in the square closest to the center with the highest carrot count. On a given turn, the rabbit will eat the carrots available on the square that it is on, and then move up, down, left, or right, choosing the square that has the most carrots. If there are no carrots left on any of the adjacent squares, the rabbit will go to sleep. You may assume that the rabbit will never have to choose between two squares with the same number of carrots. Write a function which takes a garden matrix and returns the number of carrots the rabbit eats. You may assume the matrix is rectangular with at least 1 row and 1 column, and that it is populated with non-negative integers. For example,
|
||||
* Example: `[[5, 7, 8, 6, 3], [0, 0, 7, 0, 4], [4, 6, 3, 4, 9], [3, 1, 0, 5, 8]]` should return `27`.
|
||||
* Print a matrix in a spiral fashion.
|
||||
* In the Game of life, calculate how to compute the next state of the board. Follow up was to do it if there were memory constraints (board represented by a 1 TB file).
|
||||
* Grid Illumination: Given an NxN grid with an array of lamp coordinates. Each lamp provides illumination to every square on their x axis, every square on their y axis, and every square that lies in their diagonal (think of a Queen in chess). Given an array of query coordinates, determine whether that point is illuminated or not. The catch is when checking a query all lamps adjacent to, or on, that query get turned off. The ranges for the variables/arrays were about: 10^3 < N < 10^9, 10^3 < lamps < 10^9, 10^3 < queries < 10^9.
|
||||
* You are given a matrix of integers. Modify the matrix such that if a row or column contains a 0, make the values in the entire row or column 0.
|
||||
* Given an N x N matrix filled randomly with different colors (no limit on what the colors are), find the total number of groups of each color - a group consists of adjacent cells of the same color touching each other.
|
||||
* You have a 4 x 4 board with characters. You need to write a function that finds if a certain word exists in the board. You can only jump to neighboring characters (including diagonally adjacent).
|
||||
* Count the number of islands in a binary matrix of 0's and 1's.
|
||||
* Check a 6 x 7 Connect 4 board for a winning condition.
|
||||
* Given a fully-filled Sudoku board, check whether fulfills the Sudoku condition.
|
||||
* Implement a function that checks if a player has won tic-tac-toe.
|
||||
* Given an N x N matrix of 1's and 0's, figure out if all of the 1's are connected.
|
||||
|
@ -1,8 +1,7 @@
|
||||
Object-Oriented Programming
|
||||
==
|
||||
# Object-Oriented Programming
|
||||
|
||||
- How would you design a chess game? What classes and objects would you use? What methods would they have?
|
||||
- How would you design the data structures for a book keeping system for a library?
|
||||
- Explain how you would design a HTTP server? Give examples of classes, methods, and interfaces. What are the challenges here?
|
||||
- Discuss algorithms and data structures for a garbage collector?
|
||||
- How would you implement an HR system to keep track of employee salaries and benefits?
|
||||
* How would you design a chess game? What classes and objects would you use? What methods would they have?
|
||||
* How would you design the data structures for a book keeping system for a library?
|
||||
* Explain how you would design a HTTP server? Give examples of classes, methods, and interfaces. What are the challenges here?
|
||||
* Discuss algorithms and data structures for a garbage collector?
|
||||
* How would you implement an HR system to keep track of employee salaries and benefits?
|
||||
|
@ -1,12 +1,11 @@
|
||||
Permutation
|
||||
==
|
||||
# Permutation
|
||||
|
||||
- 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.
|
||||
- Generate all subsets of a string.
|
||||
- Print all possible `N` pairs of balanced parentheses.
|
||||
- E.g. when `N` is `2`, the function should print `(())` and `()()`.
|
||||
- E.g. when `N` is `3`, we should get `((()))`, `(()())`, `(())()`, `()(())`, `()()()`.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/12/23/uber-interview-questions-permutations-parentheses/)
|
||||
- Given a list of arrays, return a list of arrays, where each array is a combination of one element in each given array.
|
||||
- E.g. If the input is `[[1, 2, 3], [4], [5, 6]]`, the output should be `[[1, 4, 5], [1, 4, 6], [2, 4, 5], [2, 4, 6], [3, 4, 5], [3, 4, 6]]`.
|
||||
* 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.
|
||||
* Generate all subsets of a string.
|
||||
* Print all possible `N` pairs of balanced parentheses.
|
||||
* E.g. when `N` is `2`, the function should print `(())` and `()()`.
|
||||
* E.g. when `N` is `3`, we should get `((()))`, `(()())`, `(())()`, `()(())`, `()()()`.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/12/23/uber-interview-questions-permutations-parentheses/)
|
||||
* Given a list of arrays, return a list of arrays, where each array is a combination of one element in each given array.
|
||||
* E.g. If the input is `[[1, 2, 3], [4], [5, 6]]`, the output should be `[[1, 4, 5], [1, 4, 6], [2, 4, 5], [2, 4, 6], [3, 4, 5], [3, 4, 6]]`.
|
||||
|
@ -1,5 +1,4 @@
|
||||
Queue
|
||||
==
|
||||
# Queue
|
||||
|
||||
- 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).
|
||||
* 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).
|
||||
|
@ -1,16 +1,15 @@
|
||||
Sorting and Searching
|
||||
==
|
||||
# Sorting and Searching
|
||||
|
||||
- Sorting search results on a page given a certain set of criteria.
|
||||
- Sort a list of numbers in which each number is at a distance `K` from its actual position.
|
||||
- Given an array of integers, sort the array so that all odd indexes are greater than the even indexes.
|
||||
- Given users with locations in a list and a logged-in user with locations, find their travel buddies (people who shared more than half of your locations).
|
||||
- Search for an element in a sorted and rotated array.
|
||||
- [Source](http://blog.gainlo.co/index.php/2017/01/12/rotated-array-binary-search/)
|
||||
- Sort a list where each element is no more than k positions away from its sorted position.
|
||||
- Search for an item in a sorted, but rotated, array.
|
||||
- Merge two sorted lists together.
|
||||
- Give 3 distinct algorithms to find the K largest values in a list of N items.
|
||||
- Find the minimum element in a sorted rotated array in faster than O(n) time.
|
||||
- Write a function that takes a number as input and outputs the biggest number with the same set of digits.
|
||||
- [Source](http://blog.gainlo.co/index.php/2017/01/20/arrange-given-numbers-to-form-the-biggest-number-possible/)
|
||||
* Sorting search results on a page given a certain set of criteria.
|
||||
* Sort a list of numbers in which each number is at a distance `K` from its actual position.
|
||||
* Given an array of integers, sort the array so that all odd indexes are greater than the even indexes.
|
||||
* Given users with locations in a list and a logged-in user with locations, find their travel buddies (people who shared more than half of your locations).
|
||||
* Search for an element in a sorted and rotated array.
|
||||
* [Source](http://blog.gainlo.co/index.php/2017/01/12/rotated-array-binary-search/)
|
||||
* Sort a list where each element is no more than k positions away from its sorted position.
|
||||
* Search for an item in a sorted, but rotated, array.
|
||||
* Merge two sorted lists together.
|
||||
* Give 3 distinct algorithms to find the K largest values in a list of N items.
|
||||
* Find the minimum element in a sorted rotated array in faster than O(n) time.
|
||||
* Write a function that takes a number as input and outputs the biggest number with the same set of digits.
|
||||
* [Source](http://blog.gainlo.co/index.php/2017/01/20/arrange-given-numbers-to-form-the-biggest-number-possible/)
|
||||
|
@ -1,9 +1,8 @@
|
||||
Stack
|
||||
==
|
||||
# Stack
|
||||
|
||||
- Implementation of an interpreter for a small language that does multiplication/addition/etc.
|
||||
- Design a `MinStack` data structure that supports a `min()` operation that returns the minimum value in the stack in O(1) time.
|
||||
- Write an algorithm to determine if all of the delimiters in an expression are matched and closed.
|
||||
- E.g. `{ac[bb]}`, `[dklf(df(kl))d]{}` and `{[[[]]]}` are matched. But `{3234[fd` and `{df][d}` are not.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/09/30/uber-interview-question-delimiter-matching/)
|
||||
- Sort a stack in ascending order using an additional stack.
|
||||
* Implementation of an interpreter for a small language that does multiplication/addition/etc.
|
||||
* Design a `MinStack` data structure that supports a `min()` operation that returns the minimum value in the stack in O(1) time.
|
||||
* Write an algorithm to determine if all of the delimiters in an expression are matched and closed.
|
||||
* E.g. `{ac[bb]}`, `[dklf(df(kl))d]{}` and `{[[[]]]}` are matched. But `{3234[fd` and `{df][d}` are not.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/09/30/uber-interview-question-delimiter-matching/)
|
||||
* Sort a stack in ascending order using an additional stack.
|
||||
|
@ -1,58 +1,57 @@
|
||||
String
|
||||
==
|
||||
# String
|
||||
|
||||
- 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.
|
||||
- Find the most efficient way to identify what character is out of place in a non-palindrome.
|
||||
- Implement a simple regex parser which, given a string and a pattern, returns a boolean indicating whether the input matches the pattern. By simple, we mean that the regex can only contain the following special characters: `*` (star), `.` (dot), `+` (plus). The star means that there will be zero or more of the previous character in that place in the pattern. The dot means any character for that position. The plus means one or more of previous character in that place in the pattern.
|
||||
- Find all words from a dictionary that are x edit distance away.
|
||||
- Given a string IP and number n, print all CIDR addresses that cover that range.
|
||||
- Write a function called `eval`, which takes a string and returns a boolean. This string is allowed 6 different characters: `0`, `1`, `&`, `|`, `(`, and `)`. `eval` should evaluate the string as a boolean expression, where `0` is `false`, `1` is `true`, `&` is an `and`, and `|` is an `or`.
|
||||
- E.g `"(0 | (1 | 0)) & (1 & ((1 | 0) & 0))"`
|
||||
- Given a pattern string like `"abba"` and an input string like `"redbluebluered"`, return `true` if and only if there's a one to one mapping of letters in the pattern to substrings of the input.
|
||||
- E.g. `"abba"` and `"redbluebluered"` should return `true`.
|
||||
- E.g. `"aaaa"` and `"asdasdasdasd"` should return `true`.
|
||||
- E.g. `"aabb"` and `"xyzabcxzyabc"` should return `false`.
|
||||
- If you received a file in chunks, calculate when you have the full file. Quite an open-ended question. Can assume chunks come with start and end, or size, etc.
|
||||
- Given a list of names (strings) and the width of a line, design an algorithm to display them using the minimum number of lines.
|
||||
- Design a spell-checking algorithm.
|
||||
- Count and say problem.
|
||||
- Longest substring with `K` unique characters.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/04/12/find-the-longest-substring-with-k-unique-characters/)
|
||||
- Given a set of random strings, write a function that returns a set that groups all the anagrams together.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/05/06/group-anagrams/)
|
||||
- Given a string, find the longest substring without repeating characters. For example, for string `'abccdefgh'`, the longest substring is `'cdefgh'`.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/10/07/facebook-interview-longest-substring-without-repeating-characters/)
|
||||
- Given a string, return the string with duplicate characters removed.
|
||||
- Write a function that receives a regular expression (allowed chars = from `'a'` to `'z'`, `'*'`, `'.'`) and a string containing lower case english alphabet characters and return `true` or `false` whether the string matches the regex.
|
||||
- E.g. `'ab*a'`, `'abbbbba'` => `true`.
|
||||
- E.g. `'ab*b.'`, `'aba'` => `true`.
|
||||
- E.g. `'abc*'`, `'acccc'` => `false`.
|
||||
- Given a rectangular grid with letters, search if some word is in the grid.
|
||||
- Given two strings representing integer numbers (`'123'` , `'30'`) return a string representing the sum of the two numbers: `'153'`.
|
||||
- A professor wants to see if two students have cheated when writing a paper. Design a function `hasCheated(String s1, String s2, int N)` that evaluates to `true` if two strings have a common substring of length `N`.
|
||||
- Follow up: Assume you don't have the possibility of using `String.contains()` and `String.substring()`. How would you implement this?
|
||||
- Print all permutations of a given string.
|
||||
- Parse a string containing numbers and `'+'`, `'-'` and parentheses. Evaluate the expression. `-2+(3-5)` should return `-4`.
|
||||
- Output a substring with at most `K` unique characters.
|
||||
- E.g. `'aabc'` and `k` = 2 => `'aab'`.
|
||||
- Ensure that there are a minimum of `N` dashes between any two of the same characters of a string.
|
||||
- E.g. `n = 2, string = 'ab-bcdecca'` => `'ab--bcdec--ca'`.
|
||||
- Find the longest palindrome in a string.
|
||||
- Give the count and the number following in the series.
|
||||
- E.g. `1122344`, next: `21221324`, next: `12112211121214`.
|
||||
- Count and say problem.
|
||||
- Compress a string by grouping consecutive similar questions together:
|
||||
- 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']`.
|
||||
- Write a function that would return all the possible words generated when using a phone (pre-smartphone era) numpad to type.
|
||||
- Given a dictionary and a word, find the minimum number of deletions needed on the word in order to make it a valid word.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/04/29/minimum-number-of-deletions-of-a-string/)
|
||||
- How to check if a string contains an anagram of another string?
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/04/08/if-a-string-contains-an-anagram-of-another-string/)
|
||||
- Find all k-lettered words from a string.
|
||||
- Given a string of open and close parentheses, find the minimum number of edits needed to balance a string of parentheses.
|
||||
- Run length encoding - Write a string compress function that returns `'R2G1B1'` given `'RRGB'`.
|
||||
- Write a function that finds all the different ways you can split up a word into a concatenation of two other words.
|
||||
* 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.
|
||||
* Find the most efficient way to identify what character is out of place in a non-palindrome.
|
||||
* Implement a simple regex parser which, given a string and a pattern, returns a boolean indicating whether the input matches the pattern. By simple, we mean that the regex can only contain the following special characters: `*` (star), `.` (dot), `+` (plus). The star means that there will be zero or more of the previous character in that place in the pattern. The dot means any character for that position. The plus means one or more of previous character in that place in the pattern.
|
||||
* Find all words from a dictionary that are x edit distance away.
|
||||
* Given a string IP and number n, print all CIDR addresses that cover that range.
|
||||
* Write a function called `eval`, which takes a string and returns a boolean. This string is allowed 6 different characters: `0`, `1`, `&`, `|`, `(`, and `)`. `eval` should evaluate the string as a boolean expression, where `0` is `false`, `1` is `true`, `&` is an `and`, and `|` is an `or`.
|
||||
* E.g `"(0 | (1 | 0)) & (1 & ((1 | 0) & 0))"`
|
||||
* Given a pattern string like `"abba"` and an input string like `"redbluebluered"`, return `true` if and only if there's a one to one mapping of letters in the pattern to substrings of the input.
|
||||
* E.g. `"abba"` and `"redbluebluered"` should return `true`.
|
||||
* E.g. `"aaaa"` and `"asdasdasdasd"` should return `true`.
|
||||
* E.g. `"aabb"` and `"xyzabcxzyabc"` should return `false`.
|
||||
* If you received a file in chunks, calculate when you have the full file. Quite an open-ended question. Can assume chunks come with start and end, or size, etc.
|
||||
* Given a list of names (strings) and the width of a line, design an algorithm to display them using the minimum number of lines.
|
||||
* Design a spell-checking algorithm.
|
||||
* Count and say problem.
|
||||
* Longest substring with `K` unique characters.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/04/12/find-the-longest-substring-with-k-unique-characters/)
|
||||
* Given a set of random strings, write a function that returns a set that groups all the anagrams together.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/05/06/group-anagrams/)
|
||||
* Given a string, find the longest substring without repeating characters. For example, for string `'abccdefgh'`, the longest substring is `'cdefgh'`.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/10/07/facebook-interview-longest-substring-without-repeating-characters/)
|
||||
* Given a string, return the string with duplicate characters removed.
|
||||
* Write a function that receives a regular expression (allowed chars = from `'a'` to `'z'`, `'*'`, `'.'`) and a string containing lower case english alphabet characters and return `true` or `false` whether the string matches the regex.
|
||||
* E.g. `'ab*a'`, `'abbbbba'` => `true`.
|
||||
* E.g. `'ab*b.'`, `'aba'` => `true`.
|
||||
* E.g. `'abc*'`, `'acccc'` => `false`.
|
||||
* Given a rectangular grid with letters, search if some word is in the grid.
|
||||
* Given two strings representing integer numbers (`'123'` , `'30'`) return a string representing the sum of the two numbers: `'153'`.
|
||||
* A professor wants to see if two students have cheated when writing a paper. Design a function `hasCheated(String s1, String s2, int N)` that evaluates to `true` if two strings have a common substring of length `N`.
|
||||
* Follow up: Assume you don't have the possibility of using `String.contains()` and `String.substring()`. How would you implement this?
|
||||
* Print all permutations of a given string.
|
||||
* Parse a string containing numbers and `'+'`, `'-'` and parentheses. Evaluate the expression. `-2+(3-5)` should return `-4`.
|
||||
* Output a substring with at most `K` unique characters.
|
||||
* E.g. `'aabc'` and `k` = 2 => `'aab'`.
|
||||
* Ensure that there are a minimum of `N` dashes between any two of the same characters of a string.
|
||||
* E.g. `n = 2, string = 'ab-bcdecca'` => `'ab--bcdec--ca'`.
|
||||
* Find the longest palindrome in a string.
|
||||
* Give the count and the number following in the series.
|
||||
* E.g. `1122344`, next: `21221324`, next: `12112211121214`.
|
||||
* Count and say problem.
|
||||
* Compress a string by grouping consecutive similar questions together:
|
||||
* 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']`.
|
||||
* Write a function that would return all the possible words generated when using a phone (pre-smartphone era) numpad to type.
|
||||
* Given a dictionary and a word, find the minimum number of deletions needed on the word in order to make it a valid word.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/04/29/minimum-number-of-deletions-of-a-string/)
|
||||
* How to check if a string contains an anagram of another string?
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/04/08/if-a-string-contains-an-anagram-of-another-string/)
|
||||
* Find all k-lettered words from a string.
|
||||
* Given a string of open and close parentheses, find the minimum number of edits needed to balance a string of parentheses.
|
||||
* Run length encoding - Write a string compress function that returns `'R2G1B1'` given `'RRGB'`.
|
||||
* Write a function that finds all the different ways you can split up a word into a concatenation of two other words.
|
||||
|
@ -1,36 +1,35 @@
|
||||
Tree
|
||||
==
|
||||
# Tree
|
||||
|
||||
- Find the height of a tree.
|
||||
- Find the longest path from the root to leaf in a tree.
|
||||
- Find the deepest left leaf of a tree.
|
||||
- Print all paths of a binary tree.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/04/15/print-all-paths-of-a-binary-tree/)
|
||||
- Second largest element of a BST.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/06/03/second-largest-element-of-a-binary-search-tree/)
|
||||
- Given a binary tree and two nodes, how to find the common ancestor of the two nodes?
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/07/06/lowest-common-ancestor/)
|
||||
- Find the lowest common ancestor of two nodes in a binary search tree.
|
||||
- Print the nodes in an n-ary tree level by level, one printed line per level.
|
||||
- Given a directory of files and folders (and relevant functions), how would you parse through it to find equivalent files?
|
||||
- Write a basic file system and implement the commands ls, pwd, mkdir, create, rm, cd, cat, mv.
|
||||
- Compute the intersection of two binary search trees.
|
||||
- Given a binary tree, output all the node to leaf paths of it.
|
||||
- Given a string of characters without spaces, is there a way to break the string into valid words without leftover characters?
|
||||
- Print a binary tree level by level.
|
||||
- Determine if a binary tree is "complete" (i.e, if all leaf nodes were either at the maximum depth or max depth-1, and were 'pressed' along the left side of the tree).
|
||||
- Find the longest path in a binary tree. The path may start and end at any node.
|
||||
- Determine if a binary tree is a BST.
|
||||
- Given a binary tree, serialize it into a string. Then deserialize it.
|
||||
- Print a binary tree by column.
|
||||
- Given a node, find the next element in a BST.
|
||||
- Find the shortest subtree that consist of all the deepest nodes. The tree is not binary.
|
||||
- Print out the sum of each row in a binary tree.
|
||||
- Pretty print a JSON object.
|
||||
- Convert a binary tree to a doubly circular linked list.
|
||||
- Find the second largest number in a binary tree.
|
||||
- Given a tree, find the longest branch.
|
||||
- Convert a tree to a linked list.
|
||||
- Given two trees, write code to find out if tree A is a subtree of tree B.
|
||||
- Deepest node in a tree.
|
||||
- [Source](http://blog.gainlo.co/index.php/2016/04/26/deepest-node-in-a-tree/)
|
||||
* Find the height of a tree.
|
||||
* Find the longest path from the root to leaf in a tree.
|
||||
* Find the deepest left leaf of a tree.
|
||||
* Print all paths of a binary tree.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/04/15/print-all-paths-of-a-binary-tree/)
|
||||
* Second largest element of a BST.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/06/03/second-largest-element-of-a-binary-search-tree/)
|
||||
* Given a binary tree and two nodes, how to find the common ancestor of the two nodes?
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/07/06/lowest-common-ancestor/)
|
||||
* Find the lowest common ancestor of two nodes in a binary search tree.
|
||||
* Print the nodes in an n-ary tree level by level, one printed line per level.
|
||||
* Given a directory of files and folders (and relevant functions), how would you parse through it to find equivalent files?
|
||||
* Write a basic file system and implement the commands ls, pwd, mkdir, create, rm, cd, cat, mv.
|
||||
* Compute the intersection of two binary search trees.
|
||||
* Given a binary tree, output all the node to leaf paths of it.
|
||||
* Given a string of characters without spaces, is there a way to break the string into valid words without leftover characters?
|
||||
* Print a binary tree level by level.
|
||||
* Determine if a binary tree is "complete" (i.e, if all leaf nodes were either at the maximum depth or max depth-1, and were 'pressed' along the left side of the tree).
|
||||
* Find the longest path in a binary tree. The path may start and end at any node.
|
||||
* Determine if a binary tree is a BST.
|
||||
* Given a binary tree, serialize it into a string. Then deserialize it.
|
||||
* Print a binary tree by column.
|
||||
* Given a node, find the next element in a BST.
|
||||
* Find the shortest subtree that consist of all the deepest nodes. The tree is not binary.
|
||||
* Print out the sum of each row in a binary tree.
|
||||
* Pretty print a JSON object.
|
||||
* Convert a binary tree to a doubly circular linked list.
|
||||
* Find the second largest number in a binary tree.
|
||||
* Given a tree, find the longest branch.
|
||||
* Convert a tree to a linked list.
|
||||
* Given two trees, write code to find out if tree A is a subtree of tree B.
|
||||
* Deepest node in a tree.
|
||||
* [Source](http://blog.gainlo.co/index.php/2016/04/26/deepest-node-in-a-tree/)
|
||||
|
@ -1,94 +1,93 @@
|
||||
Design Questions
|
||||
==
|
||||
# Design Questions
|
||||
|
||||
## Guides
|
||||
|
||||
- https://github.com/donnemartin/system-design-primer
|
||||
- https://github.com/checkcheckzz/system-design-interview
|
||||
- https://github.com/shashank88/system_design
|
||||
- https://gist.github.com/vasanthk/485d1c25737e8e72759f
|
||||
- http://www.puncsky.com/blog/2016/02/14/crack-the-system-design-interview/
|
||||
- https://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/
|
||||
- http://blog.gainlo.co/index.php/2017/04/13/system-design-interviews-part-ii-complete-guide-google-interview-preparation/
|
||||
* https://github.com/donnemartin/system-design-primer
|
||||
* https://github.com/checkcheckzz/system-design-interview
|
||||
* https://github.com/shashank88/system_design
|
||||
* https://gist.github.com/vasanthk/485d1c25737e8e72759f
|
||||
* http://www.puncsky.com/blog/2016/02/14/crack-the-system-design-interview/
|
||||
* https://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/
|
||||
* http://blog.gainlo.co/index.php/2017/04/13/system-design-interviews-part-ii-complete-guide-google-interview-preparation/
|
||||
|
||||
## Flow
|
||||
|
||||
#### A. Understand the problem and scope
|
||||
|
||||
- Define the use cases, with interviewer's help.
|
||||
- Suggest additional features.
|
||||
- Remove items that interviewer deems out of scope.
|
||||
- Assume high availability is required, add as a use case.
|
||||
* Define the use cases, with interviewer's help.
|
||||
* Suggest additional features.
|
||||
* Remove items that interviewer deems out of scope.
|
||||
* Assume high availability is required, add as a use case.
|
||||
|
||||
#### B. Think about constraints
|
||||
|
||||
- Ask how many requests per month.
|
||||
- Ask how many requests per second (they may volunteer it or make you do the math).
|
||||
- Estimate reads vs. writes percentage.
|
||||
- Keep 80/20 rule in mind when estimating.
|
||||
- How much data written per second.
|
||||
- Total storage required over 5 years.
|
||||
- How much data reads per second.
|
||||
* Ask how many requests per month.
|
||||
* Ask how many requests per second (they may volunteer it or make you do the math).
|
||||
* Estimate reads vs. writes percentage.
|
||||
* Keep 80/20 rule in mind when estimating.
|
||||
* How much data written per second.
|
||||
* Total storage required over 5 years.
|
||||
* How much data reads per second.
|
||||
|
||||
#### C. Abstract design
|
||||
|
||||
- Layers (service, data, caching).
|
||||
- Infrastructure: load balancing, messaging.
|
||||
- Rough overview of any key algorithm that drives the service.
|
||||
- Consider bottlenecks and determine solutions.
|
||||
* Layers (service, data, caching).
|
||||
* Infrastructure: load balancing, messaging.
|
||||
* Rough overview of any key algorithm that drives the service.
|
||||
* Consider bottlenecks and determine solutions.
|
||||
|
||||
Source: https://github.com/jwasham/coding-interview-university#system-design-scalability-data-handling
|
||||
|
||||
## Grading Rubrics
|
||||
|
||||
- Problem Solving - How systematic is your approach to solving the problem step-by-step? Break down a problem into its core components.
|
||||
- Communication - How well do you explain your idea and communicate it with others?
|
||||
- Evaluation - How do you evaluate your system? Are you aware of the trade-offs made? How can you optimize it?
|
||||
- Estimation - How fast does your system need to be? How much space does it need? How much load will it experience?
|
||||
* Problem Solving - How systematic is your approach to solving the problem step-by-step? Break down a problem into its core components.
|
||||
* Communication - How well do you explain your idea and communicate it with others?
|
||||
* Evaluation - How do you evaluate your system? Are you aware of the trade-offs made? How can you optimize it?
|
||||
* Estimation - How fast does your system need to be? How much space does it need? How much load will it experience?
|
||||
|
||||
## Specific Topics
|
||||
|
||||
- URL Shortener
|
||||
- http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener
|
||||
- http://blog.gainlo.co/index.php/2016/03/08/system-design-interview-question-create-tinyurl-system/
|
||||
- https://www.interviewcake.com/question/python/url-shortener
|
||||
- Collaborative Editor
|
||||
- http://blog.gainlo.co/index.php/2016/03/22/system-design-interview-question-how-to-design-google-docs/
|
||||
- Photo Sharing App
|
||||
- http://blog.gainlo.co/index.php/2016/03/01/system-design-interview-question-create-a-photo-sharing-app/
|
||||
- Social Network Feed
|
||||
- http://blog.gainlo.co/index.php/2016/02/17/system-design-interview-question-how-to-design-twitter-part-1/
|
||||
- http://blog.gainlo.co/index.php/2016/02/24/system-design-interview-question-how-to-design-twitter-part-2/
|
||||
- http://blog.gainlo.co/index.php/2016/03/29/design-news-feed-system-part-1-system-design-interview-questions/
|
||||
- Trending Algorithm
|
||||
- http://blog.gainlo.co/index.php/2016/05/03/how-to-design-a-trending-algorithm-for-twitter/
|
||||
- Facebook Chat
|
||||
- http://blog.gainlo.co/index.php/2016/04/19/design-facebook-chat-function/
|
||||
- Key Value Store
|
||||
- http://blog.gainlo.co/index.php/2016/06/14/design-a-key-value-store-part-i/
|
||||
- http://blog.gainlo.co/index.php/2016/06/21/design-key-value-store-part-ii/
|
||||
- Recommendation System
|
||||
- http://blog.gainlo.co/index.php/2016/05/24/design-a-recommendation-system/
|
||||
- Cache System
|
||||
- http://blog.gainlo.co/index.php/2016/05/17/design-a-cache-system/
|
||||
- E-commerce Website
|
||||
- http://blog.gainlo.co/index.php/2016/08/22/design-ecommerce-website-part/
|
||||
- http://blog.gainlo.co/index.php/2016/08/28/design-ecommerce-website-part-ii/
|
||||
- Web Crawler
|
||||
- http://blog.gainlo.co/index.php/2016/06/29/build-web-crawler/
|
||||
- http://www.makeuseof.com/tag/how-do-search-engines-work-makeuseof-explains/
|
||||
- https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Chris-Heller
|
||||
- YouTube
|
||||
- http://blog.gainlo.co/index.php/2016/10/22/design-youtube-part/
|
||||
- http://blog.gainlo.co/index.php/2016/11/04/design-youtube-part-ii/
|
||||
- Hit Counter
|
||||
- http://blog.gainlo.co/index.php/2016/09/12/dropbox-interview-design-hit-counter/
|
||||
- Facebook Graph Search
|
||||
- Design [Lyft Line](https://www.lyft.com/line).
|
||||
- Design a promo code system (with same promo code, randomly generated promo code, and promo code with conditions).
|
||||
- Model a university.
|
||||
- How would you implement Pacman?
|
||||
- Sketch out an implementation of Asteroids.
|
||||
- Implement a spell checker.
|
||||
- Design the rubik cube.
|
||||
- Design a high-level interface to be used for card games (e.g. poker, blackjack etc).
|
||||
* URL Shortener
|
||||
* http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener
|
||||
* http://blog.gainlo.co/index.php/2016/03/08/system-design-interview-question-create-tinyurl-system/
|
||||
* https://www.interviewcake.com/question/python/url-shortener
|
||||
* Collaborative Editor
|
||||
* http://blog.gainlo.co/index.php/2016/03/22/system-design-interview-question-how-to-design-google-docs/
|
||||
* Photo Sharing App
|
||||
* http://blog.gainlo.co/index.php/2016/03/01/system-design-interview-question-create-a-photo-sharing-app/
|
||||
* Social Network Feed
|
||||
* http://blog.gainlo.co/index.php/2016/02/17/system-design-interview-question-how-to-design-twitter-part-1/
|
||||
* http://blog.gainlo.co/index.php/2016/02/24/system-design-interview-question-how-to-design-twitter-part-2/
|
||||
* http://blog.gainlo.co/index.php/2016/03/29/design-news-feed-system-part-1-system-design-interview-questions/
|
||||
* Trending Algorithm
|
||||
* http://blog.gainlo.co/index.php/2016/05/03/how-to-design-a-trending-algorithm-for-twitter/
|
||||
* Facebook Chat
|
||||
* http://blog.gainlo.co/index.php/2016/04/19/design-facebook-chat-function/
|
||||
* Key Value Store
|
||||
* http://blog.gainlo.co/index.php/2016/06/14/design-a-key-value-store-part-i/
|
||||
* http://blog.gainlo.co/index.php/2016/06/21/design-key-value-store-part-ii/
|
||||
* Recommendation System
|
||||
* http://blog.gainlo.co/index.php/2016/05/24/design-a-recommendation-system/
|
||||
* Cache System
|
||||
* http://blog.gainlo.co/index.php/2016/05/17/design-a-cache-system/
|
||||
* E-commerce Website
|
||||
* http://blog.gainlo.co/index.php/2016/08/22/design-ecommerce-website-part/
|
||||
* http://blog.gainlo.co/index.php/2016/08/28/design-ecommerce-website-part-ii/
|
||||
* Web Crawler
|
||||
* http://blog.gainlo.co/index.php/2016/06/29/build-web-crawler/
|
||||
* http://www.makeuseof.com/tag/how-do-search-engines-work-makeuseof-explains/
|
||||
* https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Chris-Heller
|
||||
* YouTube
|
||||
* http://blog.gainlo.co/index.php/2016/10/22/design-youtube-part/
|
||||
* http://blog.gainlo.co/index.php/2016/11/04/design-youtube-part-ii/
|
||||
* Hit Counter
|
||||
* http://blog.gainlo.co/index.php/2016/09/12/dropbox-interview-design-hit-counter/
|
||||
* Facebook Graph Search
|
||||
* Design [Lyft Line](https://www.lyft.com/line).
|
||||
* Design a promo code system (with same promo code, randomly generated promo code, and promo code with conditions).
|
||||
* Model a university.
|
||||
* How would you implement Pacman?
|
||||
* Sketch out an implementation of Asteroids.
|
||||
* Implement a spell checker.
|
||||
* Design the rubik cube.
|
||||
* Design a high-level interface to be used for card games (e.g. poker, blackjack etc).
|
||||
|
@ -1,6 +1,5 @@
|
||||
Search Engine
|
||||
==
|
||||
# Search Engine
|
||||
|
||||
###### References
|
||||
|
||||
- [How Do Search Engines Work?](http://www.makeuseof.com/tag/how-do-search-engines-work-makeuseof-explains/)
|
||||
* [How Do Search Engines Work?](http://www.makeuseof.com/tag/how-do-search-engines-work-makeuseof-explains/)
|
||||
|
@ -1,8 +1,7 @@
|
||||
Databases
|
||||
==
|
||||
# Databases
|
||||
|
||||
## General
|
||||
|
||||
- How should you store passwords in a database?
|
||||
- http://www.geeksforgeeks.org/store-password-database/
|
||||
- https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/
|
||||
* How should you store passwords in a database?
|
||||
* http://www.geeksforgeeks.org/store-password-database/
|
||||
* https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/
|
||||
|
@ -1,6 +1,5 @@
|
||||
Networking
|
||||
==
|
||||
# Networking
|
||||
|
||||
- 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.
|
||||
- Define UDP/TCP and give an example of both.
|
||||
* 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.
|
||||
* Define UDP/TCP and give an example of both.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,77 +1,25 @@
|
||||
Snake Game
|
||||
==
|
||||
# Snake Game
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Fruit: One pixel.
|
||||
Snake body: One pixel width made up of connected pixels.
|
||||
Fruit: One pixel. Snake body: One pixel width made up of connected pixels.
|
||||
|
||||
Model:
|
||||
{
|
||||
fruit: {
|
||||
x, y
|
||||
},
|
||||
snake: {
|
||||
points: [(x, y), ...] # head is at index 0
|
||||
direction: north/south/east/west
|
||||
}
|
||||
speed: 500,
|
||||
points: 0
|
||||
}
|
||||
Model: { fruit: { x, y }, snake: { points: [(x, y), ...] # head is at index 0 direction: north/south/east/west } speed: 500, points: 0 }
|
||||
|
||||
function update() {
|
||||
next_loc = points[0] + (x, y) # Depends on the direction
|
||||
if (snake.points.find(next_loc) > 0) {
|
||||
// die
|
||||
}
|
||||
let pts = snake.points;
|
||||
if (!isEqual(next_loc, fruit)) {
|
||||
pts = points.removeLast();
|
||||
} else {
|
||||
generate_fruit();
|
||||
points++;
|
||||
}
|
||||
snake.points = [next_loc, ...pts];
|
||||
function update() { next_loc = points[0] + (x, y) # Depends on the direction if (snake.points.find(next_loc) > 0) { // die } let pts = snake.points; if (!isEqual(next_loc, fruit)) { pts = points.removeLast(); } else { generate_fruit(); points++; } snake.points = [next_loc, ...pts];
|
||||
|
||||
// Boundary checking -> die
|
||||
}
|
||||
// Boundary checking -> die }
|
||||
|
||||
function generate_fruit() {
|
||||
// Cannot generate on my own body.
|
||||
function generate_fruit() { // 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();
|
||||
}
|
||||
fruit = next_fruit_location
|
||||
// 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(); } 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 }
|
||||
if (snake.points.find(next_fruit_location) === -1) {
|
||||
fruit = point
|
||||
}
|
||||
}
|
||||
}
|
||||
// Second approach: brute force for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { let point = { x: i, y: j } if (snake.points.find(next_fruit_location) === -1) { fruit = point } } }
|
||||
|
||||
// Third approach: brute force with random
|
||||
const available_points = []
|
||||
for (let i = 0; i < rows; i++) {
|
||||
for (let j = 0; j < cols; j++) {
|
||||
let point = { x: i, y: j }
|
||||
if (snake.points.find(next_fruit_location) === -1) {
|
||||
available_points.push(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
fruit = _.sample(available_points);
|
||||
}
|
||||
// Third approach: brute force with random const available*points = [] for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { let point = { x: i, y: j } if (snake.points.find(next_fruit_location) === -1) { available_points.push(point); } } } fruit = *.sample(available_points); }
|
||||
|
||||
setInterval(update, speed);
|
||||
|
@ -1,22 +1,21 @@
|
||||
Software Engineering
|
||||
==
|
||||
# Software Engineering
|
||||
|
||||
## What is the difference between an interface and abstract class?
|
||||
|
||||
**Abstract Class**
|
||||
|
||||
- For an abstract class, a method must be declared as abstract. An abstract method doesn't have an implementation.
|
||||
- The Abstract methods can be declared with Access modifiers like public, internal, protected, etc. When implementing these methods in a subclass, you must define them with the same (or a less restricted) visibility.
|
||||
- Abstract classes can contain variables and concrete methods.
|
||||
- A class can Inherit only one Abstract class. Hence multiple inheritance is not possible for an Abstract class.
|
||||
- Abstract is object-oriented. It offers the basic data an 'object' should have and/or functions it should be able to do. It is concerned with the object's basic characteristics: what it has and what it can do. Hence objects which inherit from the same abstract class share the basic characteristics (generalization).
|
||||
- Abstract class establishes "is a" relation with concrete classes.
|
||||
* For an abstract class, a method must be declared as abstract. An abstract method doesn't have an implementation.
|
||||
* The Abstract methods can be declared with Access modifiers like public, internal, protected, etc. When implementing these methods in a subclass, you must define them with the same (or a less restricted) visibility.
|
||||
* Abstract classes can contain variables and concrete methods.
|
||||
* A class can Inherit only one Abstract class. Hence multiple inheritance is not possible for an Abstract class.
|
||||
* Abstract is object-oriented. It offers the basic data an 'object' should have and/or functions it should be able to do. It is concerned with the object's basic characteristics: what it has and what it can do. Hence objects which inherit from the same abstract class share the basic characteristics (generalization).
|
||||
* Abstract class establishes "is a" relation with concrete classes.
|
||||
|
||||
**Interface**
|
||||
|
||||
- For an interface, all the methods are abstract by default. So one cannot declare variables or concrete methods in interfaces.
|
||||
- All methods declared in an interface must be public.
|
||||
- Interfaces cannot contain variables and concrete methods except constants.
|
||||
- A class can implement many interfaces. Hence multiple interface inheritance is possible.
|
||||
- Interface is functionality-oriented. It defines functionalities an object should have. Regardless what object it is, as long as it can do these functionalities, which are defined in the interface, it's fine. It ignores everything else. An object/class can contain several (groups of) functionalities; hence it is possible for a class to implement multiple interfaces.
|
||||
- Interface provides "has a" capability for classes.
|
||||
* For an interface, all the methods are abstract by default. So one cannot declare variables or concrete methods in interfaces.
|
||||
* All methods declared in an interface must be public.
|
||||
* Interfaces cannot contain variables and concrete methods except constants.
|
||||
* A class can implement many interfaces. Hence multiple interface inheritance is possible.
|
||||
* Interface is functionality-oriented. It defines functionalities an object should have. Regardless what object it is, as long as it can do these functionalities, which are defined in the interface, it's fine. It ignores everything else. An object/class can contain several (groups of) functionalities; hence it is possible for a class to implement multiple interfaces.
|
||||
* Interface provides "has a" capability for classes.
|
||||
|
@ -1,14 +1,13 @@
|
||||
Caching
|
||||
==
|
||||
# Caching
|
||||
|
||||
WIP.
|
||||
|
||||
## Glossary
|
||||
|
||||
- **Cookies**
|
||||
* **Cookies**
|
||||
|
||||
#### References
|
||||
|
||||
- [A Tale of Four Caches](https://calendar.perfplanet.com/2016/a-tale-of-four-caches/)
|
||||
- [Web Caching Basics: Terminology, HTTP Headers, and Caching Strategies](https://www.digitalocean.com/community/tutorials/web-caching-basics-terminology-http-headers-and-caching-strategies)
|
||||
- [This browser tweak saved 60% of requests to Facebook](https://code.facebook.com/posts/557147474482256/this-browser-tweak-saved-60-of-requests-to-facebook/)
|
||||
* [A Tale of Four Caches](https://calendar.perfplanet.com/2016/a-tale-of-four-caches/)
|
||||
* [Web Caching Basics: Terminology, HTTP Headers, and Caching Strategies](https://www.digitalocean.com/community/tutorials/web-caching-basics-terminology-http-headers-and-caching-strategies)
|
||||
* [This browser tweak saved 60% of requests to Facebook](https://code.facebook.com/posts/557147474482256/this-browser-tweak-saved-60-of-requests-to-facebook/)
|
||||
|
@ -1,14 +1,14 @@
|
||||
Design Questions
|
||||
==
|
||||
# Design Questions
|
||||
|
||||
## Autocomplete Widget
|
||||
|
||||
Talk me through a full stack implementation of an autocomplete widget. A user can type text into it, and get back results from a server.
|
||||
- How would you design a frontend to support the following features:
|
||||
- Fetch data from a backend API
|
||||
- Render results as a tree (items can have parents/children - it's not just a flat list)
|
||||
- Support for checkbox, radio button, icon, and regular list items - items come in many forms
|
||||
- What does the component's API look like?
|
||||
- What does the backend API look like?
|
||||
- What perf considerations are there for complete-as-you-type behavior? Are there any edge cases (for example, if the user types fast and the network is slow)?
|
||||
- How would you design the network stack and backend in support of fast performance: how do your client/server communicate? How is your data stored on the backend? How do these approaches scale to lots of data and lots of clients?
|
||||
|
||||
* How would you design a frontend to support the following features:
|
||||
* Fetch data from a backend API
|
||||
* Render results as a tree (items can have parents/children - it's not just a flat list)
|
||||
* Support for checkbox, radio button, icon, and regular list items - items come in many forms
|
||||
* What does the component's API look like?
|
||||
* What does the backend API look like?
|
||||
* What perf considerations are there for complete-as-you-type behavior? Are there any edge cases (for example, if the user types fast and the network is slow)?
|
||||
* How would you design the network stack and backend in support of fast performance: how do your client/server communicate? How is your data stored on the backend? How do these approaches scale to lots of data and lots of clients?
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,10 @@
|
||||
Networking
|
||||
==
|
||||
# Networking
|
||||
|
||||
WIP.
|
||||
|
||||
## Glossary
|
||||
|
||||
- **JSON**
|
||||
- **RPC**
|
||||
- **HTTP**
|
||||
- **HTTP/2**
|
||||
* **JSON**
|
||||
* **RPC**
|
||||
* **HTTP**
|
||||
* **HTTP/2**
|
||||
|
@ -1,8 +1,7 @@
|
||||
Cover Letter
|
||||
==
|
||||
# Cover Letter
|
||||
|
||||
- A short introduction describing who you are and what you're looking for.
|
||||
- What projects have you enjoyed working on?
|
||||
- Which have you disliked? What motivates you?
|
||||
- Links to online profiles you use (GitHub, Twitter, etc).
|
||||
- A description of your work history (whether as a resume, LinkedIn profile, or prose).
|
||||
* A short introduction describing who you are and what you're looking for.
|
||||
* What projects have you enjoyed working on?
|
||||
* Which have you disliked? What motivates you?
|
||||
* Links to online profiles you use (GitHub, Twitter, etc).
|
||||
* A description of your work history (whether as a resume, LinkedIn profile, or prose).
|
||||
|
@ -1,27 +1,26 @@
|
||||
Psychological Tricks
|
||||
==
|
||||
# Psychological Tricks
|
||||
|
||||
Here are some psychological tricks that will help you ace a job interview.
|
||||
|
||||
- Tailor your answers to the interviewer's age.
|
||||
- Generation Y interviewers (between 20 and 30): Bring along visual samples of your work and highlight your ability to multitask.
|
||||
- Generation X interviewers (between 30 and 50): Emphasize your creativity and mention how work/life balance contributes to your success.
|
||||
- Baby Boomer interviewers (between 50 and 70): Show that you work hard and demonstrate respect for what they've achieved.
|
||||
- Hold your palms open or steeple your hands.
|
||||
- Find something in common with your interviewer.
|
||||
- Mirror the interviewer's body language.
|
||||
- Compliment the interviewer and the organization without self-promoting.
|
||||
- Specifically, the students who ingratiated themselves praised the organization and indicated their enthusiasm for working there, and complimented the interviewer. They didn't play up the value of positive events they took credit for or take credit for positive events even if they weren't solely responsible.
|
||||
- Show confidence and deference simultaneously.
|
||||
- In a job interview, that means showing deference to your interviewer, while also demonstrating self-confidence. One way to do that is to say something like, "I love your work on [whatever area]. It reminds me of my work on [whatever area]."
|
||||
- Emphasize how you took control of events in your previous jobs.
|
||||
- To impress your interviewer, you should talk about past work experiences where you took initiative.
|
||||
- Be candid about your weaknesses.
|
||||
- It's wiser to say something genuine like, "I'm not always the best at staying organized," which sounds more honest, and could make your interviewer more inclined to recommend you for the position.
|
||||
- Speak expressively.
|
||||
- Showcase your potential.
|
||||
- You might be tempted to tell your interviewer all about your past accomplishments — but research suggests you should focus more on what you could do in the future, if the organization hires you.
|
||||
* Tailor your answers to the interviewer's age.
|
||||
* Generation Y interviewers (between 20 and 30): Bring along visual samples of your work and highlight your ability to multitask.
|
||||
* Generation X interviewers (between 30 and 50): Emphasize your creativity and mention how work/life balance contributes to your success.
|
||||
* Baby Boomer interviewers (between 50 and 70): Show that you work hard and demonstrate respect for what they've achieved.
|
||||
* Hold your palms open or steeple your hands.
|
||||
* Find something in common with your interviewer.
|
||||
* Mirror the interviewer's body language.
|
||||
* Compliment the interviewer and the organization without self-promoting.
|
||||
* Specifically, the students who ingratiated themselves praised the organization and indicated their enthusiasm for working there, and complimented the interviewer. They didn't play up the value of positive events they took credit for or take credit for positive events even if they weren't solely responsible.
|
||||
* Show confidence and deference simultaneously.
|
||||
* In a job interview, that means showing deference to your interviewer, while also demonstrating self-confidence. One way to do that is to say something like, "I love your work on [whatever area]. It reminds me of my work on [whatever area]."
|
||||
* Emphasize how you took control of events in your previous jobs.
|
||||
* To impress your interviewer, you should talk about past work experiences where you took initiative.
|
||||
* Be candid about your weaknesses.
|
||||
* It's wiser to say something genuine like, "I'm not always the best at staying organized," which sounds more honest, and could make your interviewer more inclined to recommend you for the position.
|
||||
* Speak expressively.
|
||||
* Showcase your potential.
|
||||
* You might be tempted to tell your interviewer all about your past accomplishments — but research suggests you should focus more on what you could do in the future, if the organization hires you.
|
||||
|
||||
###### References
|
||||
|
||||
- [Business Insider](http://www.businessinsider.com/psychological-tricks-to-ace-job-interview-2015-11)
|
||||
* [Business Insider](http://www.businessinsider.com/psychological-tricks-to-ace-job-interview-2015-11)
|
||||
|
@ -1,110 +1,109 @@
|
||||
Questions to Ask
|
||||
==
|
||||
# Questions to Ask
|
||||
|
||||
Here are some good questions to ask at the end of the interview, extracted from various sources. The ones in **bold** are the ones that tend to make the interviewer go "That's a good question" and pause and think for a bit.
|
||||
|
||||
### General
|
||||
|
||||
- **What are you most proud about in your career so far?**
|
||||
- **What is the most important/valuable thing you have learnt from working here?**
|
||||
- How do your clients and customers define success?
|
||||
- What would you change around here if you could?
|
||||
- What are some weaknesses of the organization?
|
||||
- What does a typical day look like for you?
|
||||
- What do you think the company can improve at?
|
||||
- How would you see yourself growing at this company in the next few years?
|
||||
- Was there a time where you messed up and how was it handled?
|
||||
- Why did you choose to come to this company?
|
||||
- When you were last interviewing, what were some of your other options, and what made you choose this company?
|
||||
- What was something you wish someone would have told you before you joined?
|
||||
- What was your best moment so far at the company?
|
||||
* **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?**
|
||||
- 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?
|
||||
- If you hire person, what do you have for him to study product you're working on and processes in general? Do you have 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?
|
||||
* **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?**
|
||||
* 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?
|
||||
* If you hire person, what do you have for him to study product you're working on and processes in general? Do you have 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?
|
||||
|
||||
### 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)
|
||||
* 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)
|
||||
|
||||
### 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?**
|
||||
- **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?
|
||||
* **How do you train/ramp up engineers who are new to the team?**
|
||||
* **What does success look like for your team?**
|
||||
* **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?
|
||||
|
||||
### 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?
|
||||
|
||||
###### References
|
||||
|
||||
- [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/)
|
||||
- [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433)
|
||||
- [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask)
|
||||
- [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/)
|
||||
- [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/)
|
||||
- [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/)
|
||||
- [A developer's guide to interviewing](https://medium.freecodecamp.org/how-to-interview-as-a-developer-candidate-b666734f12dd)
|
||||
- [Questions I'm asking in interviews 2017](https://cternus.net/blog/2017/10/10/questions-i-m-asking-in-interviews-2017/)
|
||||
* [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/)
|
||||
* [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433)
|
||||
* [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask)
|
||||
* [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/)
|
||||
* [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/)
|
||||
* [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/)
|
||||
* [A developer's guide to interviewing](https://medium.freecodecamp.org/how-to-interview-as-a-developer-candidate-b666734f12dd)
|
||||
* [Questions I'm asking in interviews 2017](https://cternus.net/blog/2017/10/10/questions-i-m-asking-in-interviews-2017/)
|
||||
|
@ -1,27 +1,26 @@
|
||||
Self Introduction
|
||||
==
|
||||
# Self Introduction
|
||||
|
||||
You can rephrase the question like this:
|
||||
|
||||
"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
|
||||
|
||||
The Elevator Pitch is an indispensable tool for you as you move forward in your career. An Elevator Pitch is just that -- you pitch yourself to an executive that you want to impress and only have a short elevator ride to do so. Whether you're at a job fair with hundreds of other candidates and you have limited time or you are simply explaining who you are to a potential connection or client, it is important to be able to clearly and accurately describe your knowledge and skillset quickly and succinctly. Here are some tips to develop a good Elevator Pitch:
|
||||
|
||||
- Sell yourself
|
||||
- The whole point of this is to get you a job or make a connection that benefits your career.
|
||||
- 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*?
|
||||
- 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.
|
||||
* Sell yourself
|
||||
* The whole point of this is to get you a job or make a connection that benefits your career.
|
||||
* 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_?
|
||||
* 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.
|
||||
|
||||
Having an Elevator Pitch on hand is a great way to create a network and happen upon new job opportunities. There will often be times when you can't prepare for an interview or meeting, and it is incredibly handy to have a practiced pitch.
|
||||
|
||||
###### References
|
||||
|
||||
- [8 Secrets to Software Engineer Self Introduction](http://blog.gainlo.co/index.php/2016/10/14/8-secretes-software-engineer-self-introduction)
|
||||
* [8 Secrets to Software Engineer Self Introduction](http://blog.gainlo.co/index.php/2016/10/14/8-secretes-software-engineer-self-introduction)
|
||||
|
Loading…
Reference in new issue