本文僅以我的經歷和我的觀點做爲參考。如能受益,不勝榮幸。
本文會不斷的修正,更新。但願經過你們的互動最後能寫出一份閱者受益的文章。
本文純手打,會有錯別字,歡迎指出,虛心接受及時更改。
小馬過河,大牛以爲輕鬆,松鼠以爲可怕。java
灣區求職經驗分享:我是如何經過三個月努力拿到Google offer,歡迎踊躍提問!node
有朋友指出「三個月」是否是譁衆取寵博取眼球。其實我確實是實話實說(詳見下文)三個月。我只是想分享如何高效的作題,讓你們少走彎路。那些刷五遍十遍的朋友,在我看來是走了彎路的,若是你們都能一兩遍作懂,何樂不爲?python
本人背景介紹:程序員
實習經歷web
簡歷的意義:簡歷到底有多重要?是否是要把簡歷寫的很Fancy?寫的比較多比較誇張會不會被問到?面試
對於New Grad來講,簡歷只是敲門磚,好的簡歷的目的是讓HR注意到你「哎喲,這個New Grad不錯,給ta安排一個面試吧」。因此,你的最終目的仍是有面試機會。好的簡歷可以幫助你經過機器篩選和HR的篩選,可是不少時候,簡歷普通也是能夠拿到面試機會的。「簡歷普通」不表明「簡歷寫的差」,下面我會詳細說明一下。算法
一個優秀的簡歷大概的樣子:數據庫
Name: John Doe Email:jd@gmail.com Phone:xxx-xxx-xxxx EDUCATION: 08/2014 - 05/2016 University of Southern California (USC) M. S. in Computer Science Los Angeles, USA GPA: 3.80 ...... //這個沒什麼說的,簡單明瞭就好 EXPERIENCE: 2015/05-2015/08 : Amazon Inc, Seattle, WA Position: SDE Internship - Design and develop a realtime data aggregation workflow... - Use AWS Kinesis to consume the original chunk of data... - Develop a Java data processor that runs on AWS EC2... 2014/07-2015/01 ...... //寫一下本身曾經在哪工做/實習過,大概作了什麼內容用了什麼技術。 PROJECTS: Web Search Engines on Arctic Data Information Retrieval - Build a search engine based on Apache Solr for polar data analyzation. - Design and develop web crawler to fetch data from polar science website - Use SimHash algorithm for near-duplicates deduplication. - Build a web search engine and apply page rank. ...... //須要對project技術性的描述。項目名稱,以後以bullet point的形式寫用了什麼技術,實現了什麼東西。 SKILLS: - Programming Languages: Java, Python, PHP, JavaScript - Operating Systems: RHEL, Debian, Mac OS X Data Analysis: Hortonwork; AWS EC2, S3, CloudWatch, Kinesis; NoSQL, RDB - Web: LAMP ...... //SKILLS的建議是,不要寫本身不會的,你寫Python就要期待面試會用Python面你。任何寫在SKILLS上的東西都會被問到。
總結:編程
標準是:任何寫到簡歷上的東西面試官問道均可以詳盡流暢的表達清楚。用了什麼技術?哪些service?「看你簡歷寫用AWS EC2了,給我詳細講一下AWS EC2和你使用的時候遇到的困難」這類問題。設計模式
實習的重要性:
若是說一個「完美的簡歷」是100%的話,一個好的工做/實習經歷決定了這份簡歷的50%-80%,若是能夠儘可能去大公司實習,儘可能多去幾個不一樣的公司實習。除了實習以外:論文、Project、名校會分剩下的20%-50%。4.0會是一個小小的Plus,除此以外在3.0-3.9之間沒什麼區別,可是不要低於3.0,其實除了Oracle以外沒多少人會看GPA。
若是說你沒有實習經歷,最好的建議是用從如今到畢業的這段時間給本身多找幾個實習。
若是說你已經畢業或立刻畢業沒有時間實習,那麼就把在學校作過的Proj多寫一些。
三個月的過程:
2015年12月從特斯拉實習結束,到2016年4月面試完谷歌,一共四個多月時間。元旦給本身放了兩週假期,過年給本身放了兩週假期,中間再穿插着出去玩。連續的用在刷題的日子大概有三個月。我是天天「全職刷題」的,分派給天天的任務(x道題)會被我分紅上午a道,下午b道,晚上c道。若是提早完成,剩餘時間自由支配,放鬆一下。
從2015年12月開始刷題,就給本身制定了一個作題計劃,在衣櫃的鏡子(沒有白板-。-)上製做了一個表格,這個表格是我天天自我check的參考。原計劃是兩個月作完全部題(約340),但事實是一直到找到工做也沒有真的作完全部題。最後作了250道unlock的和全部lock的題(咱們幾個朋友合買了一個leetcode會員)。
我以前的基礎:
本科沒有學過編程,研究生上的算法課也上的不是很懂,不少課堂上的概念反而是刷題的時候才理解。
2015年初,在面Amazon Intern的時候刷過一次題,作了大約100個 easy 和 medium。在學校一邊上課一邊作題,三天打魚兩天曬網效果很差,只學了個皮毛。
2015年末翻看作過的題,基本忘光了。乾脆搞個新帳號從新開始。此次是每作一道題進行一次總結。翻看leetcode的熱門評論,把本身的解題思路和別人比本身寫得好的解題思路都詳細的記在筆記本上。遇到一道新題就嘗試理解,歸類,翻出老題作對比,寫code,看熱門答案,更正、優化本身的答案,爲何他能想出這個解,搜一下相關不熟悉的知識點。
這個方法開始起步會特別慢,沒有什麼成就感。可是效果出奇的好,刷了一半,只要作過的題,理解的十分透徹。遇到一個考到的算法或者數據結構,好比trie tree,就會回去看全部trie tree分類的題,主要是看題目,回憶解法,若是想不起來或者不是很自信,再寫一次。反之很熟悉,腦子裏過一遍就繼續下去。看完trie tree也會想到Binary Search Tree, Segment Tree, Binary Index Tree。腦子裏對這些數據結構過一遍。
這樣作題到後來的感受就是,everything is connected. 隨便給一個題,就能找出這個題和什麼題是相似的,或者其本質是這個算法的變形。簡而言之,明確的感受到,本身學懂了。
刷題是枯燥的,若是你想着用毅力用堅持,只會讓它更枯燥。毅力是必須的可是堅持每每是痛苦的,何不讓這個過程變的快樂。這個年代人人都是千里馬,可是伯樂不常有。咱們只能作本身的伯樂,給本身制定最合適的訓練方法,因人而異因地制宜,本身既是「運動員」也是「教練」,畢竟仍是本身最瞭解本身。時不時給本身一些獎勵,給本身放一個小假出去轉轉。
其實辛苦幾個月,沒那麼難。和農民伯伯同樣,種地是辛苦的,但是豐收是喜悅的。當你發現你努力了一個月以後,作過的題能夠駕輕就熟,還能夠給別人講的頭頭是道,仍是十分有成就感的。畢竟才幾百道題嘛,比上高考差遠了。作到爐火純青很難,可是駕輕就熟仍是指日可待的。
怎麼刷題:
最多被問到的問題是:刷題刷多少遍纔夠?我想說,答案因人而異,我一遍都沒刷完,感受就夠了。由於刷題的目的並非爲了刷多少遍,而是爲了作懂題。舉個例子,參加太高考的都知道,高考是不會出你作過的題的,那作《5年高考3年模擬》還有用嗎?答案是確定的。刷算法題和作高考練習題的意義是同樣的,你的目的是理解出題人想要考你什麼,如何解題,幾種思路,最後寫出最優解。
如何「一遍都沒刷完」而作懂題?
「善於總結」是核心。仍是拿高考舉例子,「不會作的題和作錯的題」遠比「作對的題」有意義,只有從錯題中才能進步。作算法題也是同樣的,不要在爛熟於心的題上面浪費時間,把時間用在錯的,不理解的題上面。
拿到一道題,怎麼作?
就拿Merge k sorted Lists這一題舉例子:
Merge k sorted linked lists and return it as one sorted list. [Java]
1) First think about a simple merge idea. Go through k head elements each time, they are the smallest among their list, k pointers and totally nk elements.
time: O(nk^2) space:O(k);
[CODE] 略,本身寫一下把,這個簡單
2) Use heap. This is a classic question for heap. each time we change a heap value we only use Log(k) time
time: O(nkLogk) space:O(k)
1) A comparator used can be passed to Collections.sort(coll,comparator)
2) In java, heap is implemented as PriorityQueue. The constructor
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
constructor is initialized with capacity and compare rule.
3) Java anonymous class is used to simply create and use this comparator
4) The node inside list could be null
5) PriorityQueue use poll() method to pop out it’s first element
public class Solution { private static final Comparator<ListNode> comp = new Comparator<ListNode>(){ public int compare(ListNode x, ListNode y){ return x.val-y.val; } }; public ListNode mergeKLists(List<ListNode> lists) { if(lists.size()==0) return null; Queue<ListNode> heap = new PriorityQueue(lists.size(),comp); for(ListNode node : lists){ if(node!=null) heap.add(node); } ListNode dummy = new ListNode(0); ListNode p = dummy; //heap did not implement isEmpty method while(heap.size()>0){ ListNode node = heap.poll(); if(node.next != null) heap.add(node.next); p.next = node; p=p.next; } return dummy.next; } }
一、這一題明顯是考Heap的,若是對Java PriorityQueue不夠了解的,就應該去複習一下。Java7和Java8不太同樣,Java8在傳入comparator再也不須要給定size。
二、代碼中寫到了Collections.sort()
,和在sort中寫匿名類。
三、爲何要寫dummy?在那些題中須要寫dummy而return dummy.next。那些題不須要?
四、爲何用Queue interface,用List->LinkedList能夠嗎,是否要複習總結一下list,queue和它們的implementation? 若是對Object Oriented 不熟悉的,是否要再看看繼承(Inheritence)和多態(Polymorphism)。那再往深處想想,Abstract Class 和 Interface 的區別,優缺點呢?
這些 Java 基礎就是作題的時候要想,不是很理解就要及時解決。基礎很差的同窗,剛開始作會比較慢,因此一道題作完過去了大半天,這很正常,等作多了,爛熟於心了,作題就快了。每次作題也都是對知識點的強化。
代碼[CODE]部分和代碼上面我本身的思考筆記都是寫在Evernote上的,每次寫完代碼要把遇到這個題時候的想法,解題思路,看完別人答案以後本身的理解,基於答案對本身code的改進寫進去。
Design:
Design能夠基本分紅Object-oriented Design(OOD)
和 System Design(SysD)
. 簡單說一下個人理解:
OOD: 面向對象設計,顧名思義,針對開發過程當中的結構,關係,邏輯進行設計。好比說:設計電梯;設計五子棋;設計各類遊戲等
SysD: 更可能是scalability側重。好比:DB(Master-slave),sharding,Cache(Redis, Memcached), Load-balancing等等
OOD 推薦:
SysD 推薦:
hiredintech
http://highscalability.com
一、 這個準備但是沒有盡頭的。對New Grad來講不必在這上面投入太多時間。我用了兩週時間,OOD和SysD各一週。
二、SysD把hiredintech網站的這個教程看兩遍,尤爲是Harvard 的那個1小時45分鐘的視頻,我前後看了三遍。第一次徹底不懂講什麼,只是記筆記聽課。而後上highscalability.com 看了幾個例子。搜了搜全部視頻裏介紹到到概念。再看第二遍1.5倍速,基本理解透徹。面試前2倍速看了一半,回憶一下。
三、 OOD沒有盡頭。最起碼記住,理解,會用Singleton和Factory這兩個。剩下的吹牛逼就行。OOD不多有絕對的正確或者錯誤。一般看你能不能說出這樣設計的優勢和缺點,選擇的得失。
四、不要在design上面花太多時間。這東西,你不用也記不住,也不理解。抽出兩三週好好理解幾個例題就好,記筆記,onsite以前再複習一下。
五、 SysD我跟着Harvard的lecture畫了一個有廣泛適用性的圖,不一樣的公司/業務scalability均可以套用。仔細看lecture。
面試Pipeline:
HR安排面試 -> (HR聊天) -> (OA) -> 電面 (x 2) -> onsite -> (加面)
備註:(括號內容)或許有,或許沒有。
最關鍵的是如何讓HR把你放進pipeline,給你安排面試。有幾種方式:海投 < 校園招聘 < 內推< 直接和 HR 聯繫
因此說,最好的狀況是,HR主動聯繫你。說明ta對你感興趣。那麼ta必定會給你安排進面試pipeline。那麼如何作到讓 HR 主動聯繫你呢?
一、優秀的簡歷(經歷);
二、 LinkedIn Allstar;
三、Hackathon,Hackerrank 等活動/平臺比較出衆;
4.、從有面試的人手裏得到 HR 的Email,主動和 HR 聯繫,毛遂自薦。
1和4結合效果最好。推薦你們把簡歷寫好,而後從你周圍面試的朋友那裏要到 HR 聯繫方式,而後毛遂本身。
主動聯繫HR:
前文說到,能直接和 HR 聯繫是最好的。簡單粗暴的方法是,從朋友那裏要到 HR 的聯繫方式,主動發 Email 過去,自我描述外加簡歷。一般 HR 都會很快的回覆你。
標題能夠用:Strong Background Candidate You Might be Interested. 內容:簡單介紹一下本身,和本身作過的proj。感受和貴公司方向/產品/文化很match。 附件:簡歷
最好是直接聯繫校園招聘的 HR。HR的 level 和 focus 有不少,有些是專門招聘大牛的,工資,面試等都是單獨談的。有些是面對New Grad。有些面對普通跳槽的。有些公司HR是跟組的,好比Apple,某組的hr專門爲這個組來找人。
一般狀況下,若是HR認爲你不match,會給你推薦給你對應level的HR/別的組的HR。
電面:
電面「一般」比Onsite簡單,可是這個「一般」在Google Uber等「比較火」的公司這裏不適用。Google的面經能夠說「深不見底」,因此若是你是aim the top的話,仍是推薦把題目作到融會貫通。
Onsite:
我的感受onsite沒有必然比電面難或者簡單。出什麼題,隨機性很大。一個面試官大概有準備的題會有三五道,ta一般從本身熟悉的三五道題裏出題來考你。
考覈的內容是:
對問題的抽象和理解:這裏期待你回答的內容是:」這道題能夠抽象成拓撲排序,有些步驟須要在其餘步驟以前執行,若是沒有造成cycle那麼整個就能完成。」 可以庖丁解牛的把這道題的本質分析清楚,剩下的就是實現了。固然,有些題沒有見過,猛一看並不能說出個一二三來,那麼就須要和麪試官溝通了。
溝通能力:如何同面試官溝通?遇到一個沒有見過的題,或者遇到寫到一半寫不下去卡了,這時候就須要「試探」面試官了。假如遇到一個有關比較大小的題,你不會,你總能想到 1排序 2DP 3divide conquer 那麼你就說,目前我有幾個不成熟的想法:1,2,3. 可是不肯定哪一個更合適,你怎麼看?一個通情達理的面試官馬上就理解了,他會說,能夠從排序試試。這裏的核心思想是,不要不會就不說話,要去旁敲側擊試探性的提出幾個假設,看面試官怎麼回答。
Coding:和麪試官「商量」的差很少,肯定了思路,就能夠開始寫了。寫代碼其實沒什麼說的,刷題都刷夠了。這裏的建議是,白板寫代碼最好本身帶筆,我面試都是本身帶「粗細程度爲fine的黑紅藍綠白板筆」(amazon買的),由於細一點的筆方便我寫的清楚,節約白板空間,減小塗抹,清晰好看,和麪試官講本身代碼時候用另外一種顏色,清晰明瞭。
再有就是代碼風格「努力讓每一個函數在20行以內」,能單獨寫成一個函數的儘可能單獨寫出來,由於白板都是長寬的,豎着寫得多了再拐彎就很差看,容易出錯。好比
isGraphVerticallySymmetric()
Given a list of dots, return true iff the graph in the dot can form a vertically symmetric graph.
EX: 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 return true; 0 1 0 1 0 0 1 1 0 0 return false;
分析:
For each x, find all it’s y and put it into a list. HashMap<Integer, List<Integer>>
For each x, calculate its list of y's symmetric middle point.
If pre_middle_point != cur_middle_point return false.
那麼分析中能夠看出須要兩個獨立的函數,結構以下:
isGraphVerticallySymmetric() preProcessGraphToMap() calculateAndCompareMiddlePoint() calculateMidPointOfList()
而isGraphVerticallySymmetric()
分別調用這兩個函數就能完成判斷。寫calculateAndCompareMiddlePoint()
中發現能夠單獨再寫一個calculate的函數,compare比較簡單就在calculate函數以後作判斷便可。[這一題挺不錯的,建議你們本身寫寫加深理解]。
那麼白板上應該有四個函數,每一個函數都不會很長,邏輯清晰,代碼明瞭。(optional)代碼很好地寫完以後,還有時間有思路的話,能夠口頭聊一聊一些比較有創意的解法,展示智力優越性。
總結:好的面試過程就像給一個不會這道題的學生講課同樣。要想辦法十分清晰的給對方講懂。若是有不明白的地方就多溝通,這樣就算最壞結果你沒有完整的寫出代碼,那麼面試官也會以爲你思路清晰邏輯正確,雖然代碼能力欠佳。給你一箇中等評分。儘可能不要得到差評。
1)Q:幾月份開始投簡歷,幾月份開始面試比較合適?
公司與之間公司不同,Google, Uber, Amazon這一類的「人才飢渴」的公司是一年四季都在招聘的。而大多數小公司是按人頭招聘的。
2)從開始投簡歷到面試,中間時間可否充分刷題?
建議作題作到基礎知識紮實(好比上面講的從一道題回憶java基礎)Leetcode Easy和 Medium均可以作懂,就能夠開始投了。固然,hard題也是很重要的,可是刷題是沒有盡頭的,從開始投簡歷找工做到找到工做一般會有一兩個月時間,這段時間一方面複習easy 和med,一方面作作hard刷刷面經。
3)學校career fair有多大意義?
有些同窗是從學校career fair被招聘到的,可是我我的不是很建議在career fair上投大公司。
一、人多,扎堆,來CF的人也記不住你是誰;
二、你的目的是 HR 把你放進hiring pipeline裏,開始面試過程,然而CF和這個關係並不大;
三、若是能夠,在CF開始前半個月開始找人內推或者主動聯繫HR比較合適。
4)除了算法還面別的嗎?
面試隨機性很大,若是面試官想面你design那就面。從經驗來看,Uber必定是會面design的,而FMAG(Facebook, Microsoft, Amazon, Google) 大概10%的機率會面你design。
5)特斯拉實習時候是畢業了嗎?
USC能夠選擇最後一個學期全職實習,因此那是我最後一個學期。我我的不推薦畢業以後還去實習。若是能夠,儘可能拿full time。
6)可否分享一下面經?
Sorry, 簽定了保密協議,並且本身也是實名寫這個經驗貼,不方便分享面經。
7)您當時也是EE2CS這麼一個過程 就是可否請問本科結束到去美帝之間這段時間 請問您有作什麼準備 以及如何去自學相關的CS知識呢? 經過什麼樣的途徑 須要學習些什麼呢?而後到了美帝之後又該如何進一步地提高本身的實力以及相關CS的知識儲備呢? 以及怎麼去多作一些Project呢?
當時自學java,python,數據庫等。後來發現仍是差的太多。研究生第一年很是痛苦,天天白天上課晚上本身補習白天不會不懂的知識點。第二年就好多了。學習的方法我以爲你們都知道,無外乎擠出時間補足本身的短板吧。全部知識儲備也都是基於學校課程,刷題和實習。
8)想請問下刷題如何能作到觸類旁通?我目前的問題就是碰到新題目沒有思路,不知道如何開始寫?請問你在這方面有什麼經驗嗎?
「遇到新題沒有思路」通常是這個題型沒有見過。若是是比較偏的,冷門的題型這很正常,總會有沒有見過的題。可是若是看答案以後發現是經常使用的數據結構、考點、算法、那麼就說明是本身掌握的還不夠。針對: Array, BFS, DFS, Backtracking, Binary Search, DP, Graph, Hash Table, LinkedList, 各類tree (Segment, Tire, Binary Indexed), Topological Sort 等常見類型的題都應該熟練的掌握。
9)地理位置優點,性別優點?
從周圍的朋友的面試觀察來看,確實存在地理優點和性別優點。
一、若是你距離公司不遠,好比公司在灣區,你也在灣區。公司會更願意給你面試機會,對於公司來講成本低。這個現象在小公司尤其明顯,小公司hr是要考慮節約開支的。大公司好不少,你只要優秀,總會給你面試機會。
二、若是你是女性,那麼恭喜你,你比男性程序員有優點。不管是公司會想辦法平衡那女比例,仍是大部分面試官看到女性都會有「手下留情」,這兩方面來看。我知道的周圍的女性程序員,bar一般比男性程序員低一些。(只是低一些,你真作不出來誰也幫不了你。可能會面試題不那麼變態,想不出來多給你一次提示 etc)
10)樓主在面狗家以前面過幾個onsite啊?
沒面過,谷歌是我第一個真正意義上的onsite,以前tesla的return offer onsite也沒有考什麼技術或算法。不過我十分不推薦把谷歌放在第一個來onsite。有一些onsite經驗以後再去你最想去的公司。谷歌面試較難,作好充分準備。
11)More coming
······
關於內推和」熟人「:僅就我所知道的谷歌而言,每週入職的Noogler (New Googler) 在150 - 200之間。公司對人才能夠用「飢渴」來形容。在我看來,你簡歷(經歷,背景)優秀,刷題刷到位(不要當炮灰),我就願意推你。我認爲不合適的,我天然會告訴你哪裏還須要提升。內部推薦系統只是填一個表格交一份簡歷而已。HR會再次審覈,ta看完簡歷以後再決定是否給你聯繫,是否把你放入面試的pipeline。我只推薦well prepared的人。熟不熟不要緊。
我的不推薦把Google當作第一個去面試的公司。谷歌的面試仍是頗有難度的,先面一些其餘公司做爲鍛鍊,對面試過程有足夠了解。
一、若是你知足如下條件,歡迎聯繫我內推 If you think you are ready, shot me: **shaoyili@usc.edu with the following content:**
必須有:
自我介紹:
感興趣的職位三個
(New Grad除外,NG的職位一般是 University Graduate - North America)
最好有:
二、若是你如今在灣區或者將來計劃去灣區從事編程工做,歡迎加入微信羣聊,加diycode.cc 社區發起人微信,他會拉你入羣(微信號:jixiaohua888,備註,灣區交流)
首先澄清這裏不是說「理工科 > 文科」。這裏只是說一種思惟方式。這部分和麪試沒有直接關係,可是我的感受這是從開始學習編程,到如今,這三年最大的收穫。簡單粗暴的來講是:遇到一個問題,抽象這個問題,這個問題大概分爲多少小的目標,如何達成一個個目標從而解決這個問題。
舉例:1)面試算法題
抽象:
遇到一個算法題,這個算法題能夠被抽象歸類成另外一種題。化未知爲已知。
好比,Find the Duplicate Number 的本質就是Linked List Cycle。你們能夠作一下理解一下。
再好比,橫着作 two sum, three sum, four sum, 3Sum Smaller 等題目。理解他們相同和不一樣是什麼。
劃分 小的問題不須要劃分,可是大的問題,複雜的問題一般須要劃分紅一個個小的問題去實現。好比上文Onsite分析的那一題,就是把一個複雜的問題分爲幾個小問題去解決。分別把小問題解決以後,整個大的問題也就獲得瞭解決。這樣作更有邏輯更清晰,不容易出錯,化大爲小各個擊破下降難度。
舉例:2)畢業生刷題找工做
問題:
畢業須要找工做,找工做須要刷題。
抽象
化未知爲已知。刷題沒有作過,可是中考考高仍是經歷過的。那時候對於作題,練習,準備考試的這一套方法應該依然適用。
劃分
也至關於制定計劃。我計劃三個月找到工做,那麼我先制定一個兩個月的計劃,一方面留有裕量,另外一方面好的複習應該兩三輪,那麼剩下的的時間再來複習一次/兩次。
指定具體計劃,前幾周先把easy和med的作掉,由於效益最大化原則,用最少的時間作最大的cover。後面對簡單題理解充分以後難題就不那麼難了。
把任務分到天天作什麼,天天的任務分到上午作什麼,下午作什麼。晚上根據狀況能夠有bonus。充分利用天天的時間。
實現
獎懲機制,完成要對本身有所獎勵,物質/精神。沒有完成要寫下爲何沒有完成,可控因素,不可控因素,計劃制定不合理等。
過於難的題能夠推後/放棄,時間有限,若是須要未來再回頭作說不定就迎刃而解。
這個世界上太多千里馬,太少伯樂。與其等待伯樂,不如作本身的伯樂。
舉例:3)其餘
馬拉松,這個相比不用多說,馬拉松哪怕是對於專業運動員也是超出人類極限運動。把26 mile劃分紅26份,每次完成1 mile就對本身進行一次確定。心中永遠只有下一個目標。
schedule;大公司的業務制定和實現,KPI考覈;國家的「五年計劃」;
總結
1) 凡事預則立,不預則廢。
2) 一個優秀的人應該具備很好解決問題的能力。遇到問題,分析問題,劃分問題,執行力。
3) 不要亂了陣腳,鬍子眉毛一把抓。計劃才能高效。
4) 計劃趕不上變化,不斷調整。不斷調整算法,達到實時的最優解。
CS學多了
1)出個門都想着路線最優解,出去一趟,順便取個信,丟個垃圾。怎樣路程最短。
2)作什麼事,本能的會在腦裏子列舉0,1,2,3,4個步驟去解決。
3)總會想這個事會不會有edge case。
4)考慮周全,留有餘地: extensibility, scalability。
5)受不了別人問問題不先Google。
6)受不了闡述不清晰。(說一個面經兩句話說完了,沒有完整的把題說完,沒有例子,沒有本身的理解)
這些都是編程裏深入理解到的,發現對現實生活也頗有幫助。
共勉。