From d2c2453554e31eb9ac5e1e2c837dc3f5f26fa414 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Sun, 14 Jul 2019 16:11:44 -0700 Subject: [PATCH] misc: prettier format all files --- algorithms/README.md | 37 ++--- algorithms/array.md | 11 +- algorithms/bit-manipulation.md | 3 +- algorithms/dynamic-programming.md | 12 +- algorithms/geometry.md | 3 +- algorithms/graph.md | 3 +- algorithms/hash-table.md | 3 +- algorithms/heap.md | 3 +- algorithms/interval.md | 7 +- algorithms/linked-list.md | 3 +- algorithms/math.md | 3 +- algorithms/matrix.md | 3 +- algorithms/oop.md | 3 +- algorithms/permutation.md | 5 +- algorithms/queue.md | 3 +- algorithms/sorting-searching.md | 3 +- algorithms/stack.md | 3 +- algorithms/string.md | 5 +- algorithms/topics.md | 3 +- algorithms/tree.md | 3 +- design/README.md | 3 +- design/collaborative-editor.md | 3 +- design/news-feed.md | 10 +- design/search-engine.md | 3 +- domain/databases.md | 3 +- domain/networking.md | 3 +- domain/security.md | 3 +- domain/snake-game/snake-game.md | 28 ++-- domain/software-engineering.md | 3 +- interviewers/basics.md | 8 +- non-technical/behavioral.md | 3 +- non-technical/cover-letter.md | 3 +- non-technical/interview-formats.md | 3 +- non-technical/negotiation.md | 3 +- non-technical/psychological-tricks.md | 3 +- non-technical/questions-to-ask.md | 188 +++++++++++++------------- non-technical/resume.md | 13 +- non-technical/self-introduction.md | 9 +- preparing/README.md | 11 +- 39 files changed, 201 insertions(+), 221 deletions(-) diff --git a/algorithms/README.md b/algorithms/README.md index 0dbdb9e8..91600164 100644 --- a/algorithms/README.md +++ b/algorithms/README.md @@ -1,5 +1,4 @@ -Algorithm Questions -== +# Algorithm Questions 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 kth 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 kth 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 = 20 + 21 + 22 + 23 + ... 2n = 2n+1 - 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. #### Practice Questions diff --git a/algorithms/array.md b/algorithms/array.md index 83a75f9d..4da89ef7 100644 --- a/algorithms/array.md +++ b/algorithms/array.md @@ -1,26 +1,28 @@ -Arrays -== +# Arrays #### Hard + - 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. diff --git a/algorithms/bit-manipulation.md b/algorithms/bit-manipulation.md index 76aa4153..91fcaa69 100644 --- a/algorithms/bit-manipulation.md +++ b/algorithms/bit-manipulation.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/dynamic-programming.md b/algorithms/dynamic-programming.md index 6e78630a..15dc4649 100644 --- a/algorithms/dynamic-programming.md +++ b/algorithms/dynamic-programming.md @@ -1,14 +1,15 @@ -Dynamic Programming -== +# Dynamic Programming - 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]`. diff --git a/algorithms/geometry.md b/algorithms/geometry.md index 062f861b..90be3b8a 100644 --- a/algorithms/geometry.md +++ b/algorithms/geometry.md @@ -1,5 +1,4 @@ -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? diff --git a/algorithms/graph.md b/algorithms/graph.md index 119000ba..2bca4ee2 100644 --- a/algorithms/graph.md +++ b/algorithms/graph.md @@ -1,5 +1,4 @@ -Graph -== +# Graph - Given a list of sorted words from an alien dictionary, find the order of the alphabet. - Alien Dictionary Topological Sort question. diff --git a/algorithms/hash-table.md b/algorithms/hash-table.md index c8655047..fe896662 100644 --- a/algorithms/hash-table.md +++ b/algorithms/hash-table.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/heap.md b/algorithms/heap.md index 1e68064f..a181b520 100644 --- a/algorithms/heap.md +++ b/algorithms/heap.md @@ -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. diff --git a/algorithms/interval.md b/algorithms/interval.md index 5dd3e373..e01d7e4f 100644 --- a/algorithms/interval.md +++ b/algorithms/interval.md @@ -1,7 +1,7 @@ -Interval -== +# Interval - 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. - [Source](http://blog.gainlo.co/index.php/2016/07/12/meeting-room-scheduling-problem/) - If you have a list of intervals, how would you merge them? diff --git a/algorithms/linked-list.md b/algorithms/linked-list.md index 8dd1dbdd..6e72102d 100644 --- a/algorithms/linked-list.md +++ b/algorithms/linked-list.md @@ -1,5 +1,4 @@ -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/) diff --git a/algorithms/math.md b/algorithms/math.md index fdff1ce5..da13084b 100644 --- a/algorithms/math.md +++ b/algorithms/math.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/matrix.md b/algorithms/matrix.md index a0977e9e..815f22d0 100644 --- a/algorithms/matrix.md +++ b/algorithms/matrix.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/oop.md b/algorithms/oop.md index 0df9cc2d..4554570a 100644 --- a/algorithms/oop.md +++ b/algorithms/oop.md @@ -1,5 +1,4 @@ -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? diff --git a/algorithms/permutation.md b/algorithms/permutation.md index 00116bf6..af9c3148 100644 --- a/algorithms/permutation.md +++ b/algorithms/permutation.md @@ -1,5 +1,4 @@ -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. @@ -9,4 +8,4 @@ Permutation - 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]]`. + - 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]]`. diff --git a/algorithms/queue.md b/algorithms/queue.md index 31612de9..fcec6148 100644 --- a/algorithms/queue.md +++ b/algorithms/queue.md @@ -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). diff --git a/algorithms/sorting-searching.md b/algorithms/sorting-searching.md index 4b36ba95..1ce6e879 100644 --- a/algorithms/sorting-searching.md +++ b/algorithms/sorting-searching.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/stack.md b/algorithms/stack.md index 063e3a64..740d7f56 100644 --- a/algorithms/stack.md +++ b/algorithms/stack.md @@ -1,5 +1,4 @@ -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. diff --git a/algorithms/string.md b/algorithms/string.md index 1134886d..24208d1c 100644 --- a/algorithms/string.md +++ b/algorithms/string.md @@ -1,5 +1,4 @@ -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. @@ -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']`. diff --git a/algorithms/topics.md b/algorithms/topics.md index 9718e7e7..02064ff3 100644 --- a/algorithms/topics.md +++ b/algorithms/topics.md @@ -1,5 +1,4 @@ -Topics -== +# Topics ## Arrays diff --git a/algorithms/tree.md b/algorithms/tree.md index be7720db..9e7f9969 100644 --- a/algorithms/tree.md +++ b/algorithms/tree.md @@ -1,5 +1,4 @@ -Tree -== +# Tree - Find the height of a tree. - Find the longest path from the root to leaf in a tree. diff --git a/design/README.md b/design/README.md index 08004f55..7a94f8f7 100644 --- a/design/README.md +++ b/design/README.md @@ -1,5 +1,4 @@ -Design Questions -== +# Design Questions ## Guides diff --git a/design/collaborative-editor.md b/design/collaborative-editor.md index 2f9427c1..be6218db 100644 --- a/design/collaborative-editor.md +++ b/design/collaborative-editor.md @@ -1,5 +1,4 @@ -Collaborative Document Editor -== +# Collaborative Document Editor ## Variants diff --git a/design/news-feed.md b/design/news-feed.md index 8dccbfd2..2c729f5f 100644 --- a/design/news-feed.md +++ b/design/news-feed.md @@ -1,5 +1,4 @@ -News Feed -== +# News Feed ## Variants @@ -68,6 +67,7 @@ TODO > 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. - Media diff --git a/design/search-engine.md b/design/search-engine.md index 4703313b..7b38c5a8 100644 --- a/design/search-engine.md +++ b/design/search-engine.md @@ -1,5 +1,4 @@ -Search Engine -== +# Search Engine ###### References diff --git a/domain/databases.md b/domain/databases.md index 80b17257..35f54ef2 100644 --- a/domain/databases.md +++ b/domain/databases.md @@ -1,5 +1,4 @@ -Databases -== +# Databases ## General diff --git a/domain/networking.md b/domain/networking.md index cc56fc9d..d86e50f8 100644 --- a/domain/networking.md +++ b/domain/networking.md @@ -1,5 +1,4 @@ -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. diff --git a/domain/security.md b/domain/security.md index da4312b1..bfb6d823 100644 --- a/domain/security.md +++ b/domain/security.md @@ -1,5 +1,4 @@ -Security -== +# Security ## Encryption diff --git a/domain/snake-game/snake-game.md b/domain/snake-game/snake-game.md index 6f7f1fc4..3565f415 100644 --- a/domain/snake-game/snake-game.md +++ b/domain/snake-game/snake-game.md @@ -1,17 +1,18 @@ -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. +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) { available_points.push(point); } @@ -75,3 +80,4 @@ function generate_fruit() { } setInterval(update, speed); +``` diff --git a/domain/software-engineering.md b/domain/software-engineering.md index dfb3251c..e4e7a2ec 100644 --- a/domain/software-engineering.md +++ b/domain/software-engineering.md @@ -1,5 +1,4 @@ -Software Engineering -== +# Software Engineering ## What is the difference between an interface and abstract class? diff --git a/interviewers/basics.md b/interviewers/basics.md index c50bc9c3..e91e7a31 100644 --- a/interviewers/basics.md +++ b/interviewers/basics.md @@ -1,5 +1,4 @@ -Basics -== +# Basics ## Disclaimer @@ -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? diff --git a/non-technical/behavioral.md b/non-technical/behavioral.md index 9895bc49..c96f6834 100644 --- a/non-technical/behavioral.md +++ b/non-technical/behavioral.md @@ -1,5 +1,4 @@ -Behavioral -== +# Behavioral Learn the [STAR](https://en.wikipedia.org/wiki/Situation,_task,_action,_result) format. From Wikipedia: diff --git a/non-technical/cover-letter.md b/non-technical/cover-letter.md index 2047a3a5..3229620d 100644 --- a/non-technical/cover-letter.md +++ b/non-technical/cover-letter.md @@ -1,5 +1,4 @@ -Cover Letter -== +# Cover Letter - A short introduction describing who you are and what you're looking for. - What projects have you enjoyed working on? diff --git a/non-technical/interview-formats.md b/non-technical/interview-formats.md index b3f17746..17448070 100644 --- a/non-technical/interview-formats.md +++ b/non-technical/interview-formats.md @@ -1,5 +1,4 @@ -Interview Formats -== +# Interview Formats 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. diff --git a/non-technical/negotiation.md b/non-technical/negotiation.md index 1f6d7dbe..e63d339f 100644 --- a/non-technical/negotiation.md +++ b/non-technical/negotiation.md @@ -1,5 +1,4 @@ -Negotiation -== +# Negotiation ### Ten Rules of Negotiation diff --git a/non-technical/psychological-tricks.md b/non-technical/psychological-tricks.md index 6a3b50a6..80e60e25 100644 --- a/non-technical/psychological-tricks.md +++ b/non-technical/psychological-tricks.md @@ -1,5 +1,4 @@ -Psychological Tricks -== +# Psychological Tricks Here are some psychological tricks that will help you ace a job interview. diff --git a/non-technical/questions-to-ask.md b/non-technical/questions-to-ask.md index 03b244b9..9682f91e 100644 --- a/non-technical/questions-to-ask.md +++ b/non-technical/questions-to-ask.md @@ -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? ###### References -* [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/) -* [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433) -* [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask) -* [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/) -* [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/) -* [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/) -* [A developer's guide to interviewing](https://medium.freecodecamp.org/how-to-interview-as-a-developer-candidate-b666734f12dd) -* [Questions I'm asking in interviews 2017](https://cternus.net/blog/2017/10/10/questions-i-m-asking-in-interviews-2017/) -* [What are good questions to ask during a software developer interview when asked "Do you have any questions now?"](https://www.quora.com/What-are-good-questions-to-ask-during-a-software-developer-interview-when-asked-do-you-have-any-questions-now/answer/John-L-Miller) -* [What are some good questions to ask when interviewing someone for a manager position?](https://www.quora.com/What-are-some-good-questions-to-ask-when-interviewing-someone-for-a-manager-position/answer/David-Seidman) +- [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/) +- [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433) +- [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask) +- [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/) +- [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/) +- [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/) +- [A developer's guide to interviewing](https://medium.freecodecamp.org/how-to-interview-as-a-developer-candidate-b666734f12dd) +- [Questions I'm asking in interviews 2017](https://cternus.net/blog/2017/10/10/questions-i-m-asking-in-interviews-2017/) +- [What are good questions to ask during a software developer interview when asked "Do you have any questions now?"](https://www.quora.com/What-are-good-questions-to-ask-during-a-software-developer-interview-when-asked-do-you-have-any-questions-now/answer/John-L-Miller) +- [What are some good questions to ask when interviewing someone for a manager position?](https://www.quora.com/What-are-some-good-questions-to-ask-when-interviewing-someone-for-a-manager-position/answer/David-Seidman) diff --git a/non-technical/resume.md b/non-technical/resume.md index 0c6290f6..24208c7f 100644 --- a/non-technical/resume.md +++ b/non-technical/resume.md @@ -1,12 +1,11 @@ -Resume -== +# Resume 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. #### 10. Online profile/other interests diff --git a/non-technical/self-introduction.md b/non-technical/self-introduction.md index 7e5e0fea..182283ae 100644 --- a/non-technical/self-introduction.md +++ b/non-technical/self-introduction.md @@ -1,9 +1,8 @@ -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 @@ -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. diff --git a/preparing/README.md b/preparing/README.md index 9f24d6f7..83a103cd 100644 --- a/preparing/README.md +++ b/preparing/README.md @@ -1,5 +1,4 @@ -Preparing for a Coding Interview -== +# Preparing for a Coding Interview ### Picking a Programming Language @@ -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 . -> +> > 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. **Upon Getting the Question**