# Interview
本小節主要總結一些面試相關的優質資源。
### Facebook workshop - Crush Your Coding Interview
Facebook 每年的5月份左右會在中國大陸的清北復交浙等高校做技術講座,基本模式是兩到三個工程師進行現場分享,Frank 會著重介紹一些面試流程和簡歷撰寫的細節,信息量非常大!其他幾個工程師則是介紹自己在 Facebook 所做的產品和企業文化,全程約兩個半小時,后面是 Q & A 環節,對提問者有各種小禮物送出。我會說我拿到了F的官方T恤了嗎 :) 質地還不錯,布料摸起來比較舒服,logo 也不太明顯。強烈推薦在這五所高校附近的 CSer 們前去圍觀!本校的就更不要錯過了啦~
咳咳,進入正題,以下為自己對當晚 Facebook 工程師經驗分享的一些總結,部分參考自浙大一位童鞋的總結[Facebook 交流](#)。
大致的 slides 如下,沒有在網上找到公開的,以下是自己根據照片總結的。
### Resume
#### What to include on your resume
1. University, degree, expected graduation date
- Highly recommended including GPA with scale/ranking
1. Projects
- Industry experience (internships, competition, full-time)
- Interesting projects
- Links where applicable (github, apps, websites)
學校/學位/畢業時間(方便 HR 知道你何時畢業篩選簡歷),GPA 最好能附上權重,不同的學校 GPA 總分不一樣。
#### Writing a great resume
1. Focus on what you did
1. Focus on Impact(metrics and numbers are a plus)
1. Be specific and concise (1 page if at all possible)
1. Pro tip: alawys start with an active verb
- example: built, optimized, improved, doubled, etc
1. Don't include
- Age, photo, ID number
提供客觀數據,具體且簡短,多使用動詞如『優化』、『提高』等,不要在簡歷中包含年齡,照片,ID 號,有些東西與法律相關。
### Coding interview
#### Goals of a coding interview
Protip: Think out loud!
1. How you think and tackle technical problems
1. How you consider engineering trade offs (speed vs. time)
1. How you communicate in English about codes
1. Limits of what you know
- Don't feel bad if you don't get all answers right
#### What is covered?
Use your comfortable coding language (C++ Java would be better)
之前聽 Google 的工程師說是盡量使用 C++ 和 Java 實現。
1. Data structures and algorithms
- implement, not memorize
- discuss complexity (space and time trade-offs)
- Common library functions are fair game
1. Specific questions about concepts are rare
- Unless you claim to be an export or need the concept
#### During the interview
1. Clarify your understanding
- ask questions until you fully understand problem space and constraints
- validate or state any assumptions
- draw pictures to help you better understand problems
1. Focus on getting a working solution first
- handle corner cases
1. Iterate
1. 舉一兩個例子,有可能的話還可以在白板上畫出來幫助理解。問題的限制不是那么明確,確定和面試官理解的是同一個問題。
1. 嘗試獲得一個能工作的 code
1. 進行迭代,尋找更好的方法。記住測試自己的代碼,選擇簡單但是典型的測試案例。
不要立即寫代碼,先明確思路,再寫代碼。Done is better than perfect
能否修改原數組,空間限制,時間限制。
大體方案要和面試官討論。一定要和面試官多交流,思考過程和方法。
be yourself, 坦白地說出自己不懂的地方,沒什么不好的,把知道的地方說清楚。
最近做的/最喜歡的/最具挑戰性的項目是什么,不只是要把項目背景說出來,還要說出為什么喜歡,有哪些挑戰,推理過程。
#### 項目討論的框架
1. context: 簡要描述項目背景,為什么要做,意義和影響何在。讓面試官快速了解。
1. action: 你在這個項目中做了什么,貢獻是什么。
1. result: 項目的結果,失敗的項目也可以講,在這個項目中學到了什么,得到了什么樣的成長。
簡歷中提到的技術一定要熟悉。站在面試官的角度問自己會問自己什么問題。
面試之后,可以問面試官問題,著重問自己關心的問題。
### behavior question
1. motivation:動機從何而來,整個過程中做了什么。
1. passion: 激情,哪種產品讓你特別興奮,為什么。
1. team pair: 團隊合作? 這里忘了
1. disagreement: 怎么處理不同意見和沖突。
回答要具體,跟自己有關系,而不是泛泛而談。
#### 總結
1. Think out loud, 不用擔心自己的英語,把主要意思表達清楚就好了.
1. 面試中多問問題,充分理解題意。
1. 不要寫 shit code, 提供典型案例測試自己的代碼
1. 多練習,可以找幾個小伙伴進行模擬面試,交換角色,在白板上多寫代碼。
1. 電話面試找一個安靜的地方,把雙手解放出來,便于寫代碼。
### Reference
本小節部分摘自九章微信的分享。
- [www.geeksforgeeks.org](http://www.geeksforgeeks.org/) - 非常著名的漏題網站之一。上面會時不時的有各種公司的面試真題漏出。有一些題也會有解法分析。
- [Programming Interview Questions | CareerCup](http://www.careercup.com/) - CC150作者搞的網站,也是著名的漏題網站之一。大家會在上面討論各個公司的面試題。
- [Glassdoor – Get Hired. Love Your Job.](http://www.glassdoor.com/index.htm) - 一個給公司打分的網站,類似yelp的公司版。會有一些人在上面討論面試題,適合你在面某個公司的時候專門去看一下。
- [面經網 | 匯集熱氣騰騰的求職咨詢](http://www.themianjing.com/) - 面經網。應該是個人經營的一個積累面經的網站。面經來源主要是一畝三分地,mitbbs之類的地方。
- [一畝三分地論壇-美國加拿大留學申請|工作就業|英語考試|學習生活信噪比最高的網站](http://www.1point3acres.com/bbs/) - 人氣非常高的論壇。
- [待字閨中(JobHunting)版 | 未名空間(mitbbs.com)](http://www.mitbbs.com/bbsdoc/JobHunting.html) jobhunting版,美華人找工作必上。
- [程序員面試:電話面試問答Top 50 - 博客 - 伯樂在線](http://blog.jobbole.com/84618/) - 其實不僅僅只是 Top 50,擴展連接還給出了其他參考。
- [想加入硅谷頂級科技公司,你該知道這些](http://mp.weixin.qq.com/s?__biz=MzA4ODM1MTMzMQ==&mid=205185140&idx=2&sn=7682772b799b0542de2f1a5cd13ad292&scene=1#rd) - 數據工程師董飛的求職分享,涵蓋硅谷公司的招聘流程,簡歷的書寫,面試中的考察內容,選拔標準等。Evernote [備份鏈接](https://www.evernote.com/shard/s165/sh/4ef5916a-2db5-4d2e-b71b-68da38a92d41/cb6705242283b700)
- [求職在美國,面試攻略我知道 on Vimeo](https://vimeo.com/113182965) - Coursera 數據工程師董飛的視頻分享。
- Facebook 交流
> .
[Facebook學長交流分享 - biaobiaoqi - 博客園](http://www.cnblogs.com/biaobiaoqi/p/3753750.html)
> - Facebook 工程師的經驗分享,Frank 對面試和簡歷部分的分享極其詳細,信息量很大。
[ ?](# "Jump back to footnote [Facebook 交流] in the text.")
- Preface
- Part I - Basics
- Basics Data Structure
- String
- Linked List
- Binary Tree
- Huffman Compression
- Queue
- Heap
- Stack
- Set
- Map
- Graph
- Basics Sorting
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Bucket Sort
- Counting Sort
- Radix Sort
- Basics Algorithm
- Divide and Conquer
- Binary Search
- Math
- Greatest Common Divisor
- Prime
- Knapsack
- Probability
- Shuffle
- Basics Misc
- Bit Manipulation
- Part II - Coding
- String
- strStr
- Two Strings Are Anagrams
- Compare Strings
- Anagrams
- Longest Common Substring
- Rotate String
- Reverse Words in a String
- Valid Palindrome
- Longest Palindromic Substring
- Space Replacement
- Wildcard Matching
- Length of Last Word
- Count and Say
- Integer Array
- Remove Element
- Zero Sum Subarray
- Subarray Sum K
- Subarray Sum Closest
- Recover Rotated Sorted Array
- Product of Array Exclude Itself
- Partition Array
- First Missing Positive
- 2 Sum
- 3 Sum
- 3 Sum Closest
- Remove Duplicates from Sorted Array
- Remove Duplicates from Sorted Array II
- Merge Sorted Array
- Merge Sorted Array II
- Median
- Partition Array by Odd and Even
- Kth Largest Element
- Binary Search
- Binary Search
- Search Insert Position
- Search for a Range
- First Bad Version
- Search a 2D Matrix
- Search a 2D Matrix II
- Find Peak Element
- Search in Rotated Sorted Array
- Search in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array II
- Median of two Sorted Arrays
- Sqrt x
- Wood Cut
- Math and Bit Manipulation
- Single Number
- Single Number II
- Single Number III
- O1 Check Power of 2
- Convert Integer A to Integer B
- Factorial Trailing Zeroes
- Unique Binary Search Trees
- Update Bits
- Fast Power
- Hash Function
- Count 1 in Binary
- Fibonacci
- A plus B Problem
- Print Numbers by Recursion
- Majority Number
- Majority Number II
- Majority Number III
- Digit Counts
- Ugly Number
- Plus One
- Linked List
- Remove Duplicates from Sorted List
- Remove Duplicates from Sorted List II
- Remove Duplicates from Unsorted List
- Partition List
- Two Lists Sum
- Two Lists Sum Advanced
- Remove Nth Node From End of List
- Linked List Cycle
- Linked List Cycle II
- Reverse Linked List
- Reverse Linked List II
- Merge Two Sorted Lists
- Merge k Sorted Lists
- Reorder List
- Copy List with Random Pointer
- Sort List
- Insertion Sort List
- Check if a singly linked list is palindrome
- Delete Node in the Middle of Singly Linked List
- Rotate List
- Swap Nodes in Pairs
- Remove Linked List Elements
- Binary Tree
- Binary Tree Preorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal II
- Maximum Depth of Binary Tree
- Balanced Binary Tree
- Binary Tree Maximum Path Sum
- Lowest Common Ancestor
- Invert Binary Tree
- Diameter of a Binary Tree
- Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal
- Subtree
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Serialization
- Binary Search Tree
- Insert Node in a Binary Search Tree
- Validate Binary Search Tree
- Search Range in Binary Search Tree
- Convert Sorted Array to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Binary Search Tree Iterator
- Exhaustive Search
- Subsets
- Unique Subsets
- Permutations
- Unique Permutations
- Next Permutation
- Previous Permuation
- Unique Binary Search Trees II
- Permutation Index
- Permutation Index II
- Permutation Sequence
- Palindrome Partitioning
- Combinations
- Combination Sum
- Combination Sum II
- Minimum Depth of Binary Tree
- Word Search
- Dynamic Programming
- Triangle
- Backpack
- Backpack II
- Minimum Path Sum
- Unique Paths
- Unique Paths II
- Climbing Stairs
- Jump Game
- Word Break
- Longest Increasing Subsequence
- Palindrome Partitioning II
- Longest Common Subsequence
- Edit Distance
- Jump Game II
- Best Time to Buy and Sell Stock
- Best Time to Buy and Sell Stock II
- Best Time to Buy and Sell Stock III
- Best Time to Buy and Sell Stock IV
- Distinct Subsequences
- Interleaving String
- Maximum Subarray
- Maximum Subarray II
- Longest Increasing Continuous subsequence
- Longest Increasing Continuous subsequence II
- Graph
- Find the Connected Component in the Undirected Graph
- Route Between Two Nodes in Graph
- Topological Sorting
- Word Ladder
- Bipartial Graph Part I
- Data Structure
- Implement Queue by Two Stacks
- Min Stack
- Sliding Window Maximum
- Longest Words
- Heapify
- Problem Misc
- Nuts and Bolts Problem
- String to Integer
- Insert Interval
- Merge Intervals
- Minimum Subarray
- Matrix Zigzag Traversal
- Valid Sudoku
- Add Binary
- Reverse Integer
- Gray Code
- Find the Missing Number
- Minimum Window Substring
- Continuous Subarray Sum
- Continuous Subarray Sum II
- Longest Consecutive Sequence
- Part III - Contest
- Google APAC
- APAC 2015 Round B
- Problem A. Password Attacker
- Microsoft
- Microsoft 2015 April
- Problem A. Magic Box
- Problem B. Professor Q's Software
- Problem C. Islands Travel
- Problem D. Recruitment
- Microsoft 2015 April 2
- Problem A. Lucky Substrings
- Problem B. Numeric Keypad
- Problem C. Spring Outing
- Microsoft 2015 September 2
- Problem A. Farthest Point
- Appendix I Interview and Resume
- Interview
- Resume