首先聲明展哭,這一篇文章并非完全原創(chuàng),它的靈感來源于一篇我最近在Medium上讀到的英文博客:ABC: Always Be Coding扼菠。我在這篇文章的基礎(chǔ)上做了一些修改以及加入了一些我個人的感受。
首先坝咐,我們來做一個簡單的測試循榆,測試一下大家的面試情況。x是你拿到offer的數(shù)量墨坚,y是你進入到二輪面試的數(shù)量秧饮,我們來根據(jù)一下公式來計算一下分數(shù):。我算了一下自己的泽篮,從畢業(yè)至今盗尸,一共拿過大大小小7家公司的offer,進入二輪面試沒有拿到offer的有3家帽撑。這樣算下來的分數(shù)是125.4泼各,大家可以算算自己的,一般120以上算是不錯亏拉,如果分數(shù)在90以下的話扣蜻,這篇文章就非常值得一看了逆巍。
本文當中包含很多建議,這些建議大概可以分為技術(shù)建議(Technical Tips)以及總體建議(General Tips)兩個部分莽使,我們一個一個來看锐极,首先是大家最關(guān)心的技術(shù)建議。
技術(shù)建議
always be coding
這個很好理解芳肌,和practice makes perfect是一個意思灵再,即孰能手巧。編程既然是一門技術(shù)活那么一定的訓練量就是必須的亿笤,也一定會有一個熟能生巧的過程翎迁。一段代碼或者是一個算法第一次寫起來非常費勁是正常的,經(jīng)過多次練習之后责嚷,會迅速熟悉起來鸳兽,之后再來寫就要容易多了。
但是由于不同的語言以及不同的人學習曲線可能不同罕拂,所以很多人會在自己進入熟練階段之前就放棄揍异,這無疑是非常可惜的爆班。最好的練習方式就是專注練習衷掷,也就是有明確的目標,知道練習的對象以及目的是什么柿菩。這樣有兩個好處一個是不會陷入迷茫戚嗅,第二個可以通過記錄練習的結(jié)果來清晰地獲得反饋,既可以調(diào)整練習的頻率以及強度枢舶,也可以對自己的進度有所了解懦胞。
這一塊大家應該都有所了解,就不多贅述了凉泄。
精通至少一門多范式語言
首先解釋一下多范式的含義躏尉,范式是編程當中經(jīng)常出現(xiàn)的一門術(shù)語『笾冢看起來很玄乎胀糜,但是它表示的意思非常簡單就是編程所使用的方法,比如面向?qū)ο缶褪且环N編程范式蒂誉,同樣函數(shù)式編程也是一種范式教藻,面向過程也是一種范式。所以多范式語言也就是擁有多種編程范式的語言右锨,比如我們常用的C++括堤、Java、Python等都是多范式語言。
這里的英文原文用的單詞是master痊臭,這也是我翻譯成精通的原因哮肚。也就是說對于這一門語言僅僅是粗淺的會使用以及熟悉是不夠的,必須要對語言的方方面面都有所了解广匙,一些常用特性更是了如指掌允趟,這樣才稱得上是精通。精通一門語言的好處非常多鸦致,既可以幫助我們學習其他以這門語言為基礎(chǔ)的技術(shù)潮剪,并且也會大大提升我們的開發(fā)能力以及學習其他語言和特性的能力,是非常非常重要的分唾。
當然C++除外抗碰,因為沒有人能精通C++,就連C++的作者也覺得自己只精通了80%绽乔。
打基礎(chǔ)而不是背題
很多人會在面試之前瘋狂在網(wǎng)上搜索面經(jīng)弧蝇,這是非常好的行為,可以幫助我們了解到應聘公司的提問范圍以及面試風格折砸。但是這應當是準備階段做的事看疗,而不是面試前臨時抱佛腳做的。相比于死記硬背面試的時候可能會出現(xiàn)的題目睦授,我們更應該打好我們的編程(算法)基礎(chǔ)两芳。
夯實基礎(chǔ)的一個表現(xiàn)是搞清楚常用算法的復雜度,大家可以看下cheatsheet去枷,當中包含了所有常用算法的復雜度以及一些其他的基本信息怖辆。
推薦閱讀:吊打字節(jié)面試官的算法筆記?在GitHub上也已經(jīng)標星76.8K删顶?
當然僅僅知道復雜度還是不夠的竖螃,還需要自己親手實現(xiàn)一下這些算法,比如Dijkstra算法逗余,F(xiàn)loyd-Warshall算法特咆、旅行商問題、A*算法猎荠、布隆過濾器坚弱、BFS蜀备、DFS以及各種排序算法关摇、最近點對問題等等。想要做點這些沒有其他任何取巧的辦法碾阁,只有剛才說的always be coding.
另外输虱,適當?shù)木毩曇彩潜夭豢缮俚摹_@里作者推薦了著名的編程競賽網(wǎng)站TopCoder脂凶,我個人感覺TopCoder的曲線略微陡峭宪睹,可以使用codeforces代替愁茁,LeetCode中的題目質(zhì)量沒有大家想象的那么高,不要過度依賴LeetCode亭病。作者提到刷題至少需要40小時以上的時間鹅很,并且需要涵蓋各種算法。比如遞歸罪帖、模式匹配促煮、貪心、動態(tài)規(guī)劃整袁、圖論等等菠齿。
Heck提到他花了兩周的時間投入在TopCoder當中,就是簡單的重復重復再重復坐昙。兩周結(jié)束之后他甚至可以做到單手閉眼寫出Dijkstra算法(當然是玩笑)绳匀。但這里面的道理是明確的,就像Eric Schmidt說的那樣炸客,Repetition doesn't spoil the prayer疾棵,重復永不辜負。
自己造輪子
不要依賴語言當中現(xiàn)成的各種數(shù)據(jù)結(jié)構(gòu)的庫嚷量,盡可能自己動手實現(xiàn)一下陋桂。
對于這一點我也非常贊同,雖然現(xiàn)在各種庫都非常完善蝶溶,但是只會使用它們和真正了解掌握它們其實是兩碼事嗜历。很多細節(jié)和道理是只有親自實現(xiàn)一下才能get到的,比如hashmap為什么不是線程安全的抖所,為什么hashmap的數(shù)組長度永遠是2的冪梨州?這些問題如果不親自動手,單單看博客文章是很難理解深刻的田轧。即使記住了暴匠,過后也很容易忘記。
讓coding變得簡單
對于工程師來說編程可能是整個工作當中最簡單的部分傻粘,因為在開始編碼之前你需要對項目以及功能進行設(shè)計每窖,甚至還需要對架構(gòu)進行設(shè)計。這需要你對相關(guān)領(lǐng)域有著非常豐富的經(jīng)驗以及了解弦悉,在編碼完成了之后窒典,可能需要對性能進行測試,對項目投入使用進行維護稽莉,這當中一定會出現(xiàn)大量的問題需要解決和修復瀑志。這兩點都比單純的編碼要困難,所以不要讓自己害怕編碼,編程其實是很單純的工作劈猪,可以讓人全身投入昧甘,要盡量學會享受這個過程。
其次是訓練自己白板編程的能力战得,其實不只是谷歌充边,現(xiàn)在各大公司都越來越喜歡在面試中添加白板編程的環(huán)節(jié)。對于許多人來說在面試官的注視并且沒有IDE的幫助下進行白板編程并不是那么一件容易的事情常侦,這是需要訓練的痛黎。如果大家想要去外企以及一些比較著名的公司,那么白板編程的能力是必不可少的刮吧。
總體建議
做好準備工作
如果你在面試的時候你對于正在面試的公司湖饱,他們的業(yè)務,他們現(xiàn)在做的事情杀捻,以及目標一無所知的話井厌,那么最好放棄。
如果是大公司可能還好致讥,但如果是小公司的話仅仆,這種情況一定會扣不少分。對自己未來可能的雇主做基本的了解也是職業(yè)素養(yǎng)之一垢袱,這除了可以體現(xiàn)我們的專業(yè)性之外其實對我們自己的職業(yè)生涯的發(fā)展也是非常有幫助的墓拜。我們對未來雇主的了解越多,其實也說明了我們對于自己職業(yè)生涯規(guī)劃越清晰请契,知道自己下一份工作是什么樣的咳榜。長遠來看,這是非常關(guān)鍵的爽锥。
不做假設(shè)
如果一些問題不是百分百確定涌韩,不要想當然,一定要查閱資料或者是找人求證氯夷。無論是在面試還是在實際工作當中都是如此臣樱,對此我也非常非常贊同。
很多人會習慣性地對一些問題做假設(shè)腮考,尤其是不是非常熟悉或者是了解的事情雇毫。比如遇到了某一個報錯信息,通過某一個命令解決了踩蔚,他們就會下意識地覺得這個命令就是針對這個報錯信息的棚放,而不去細究這其中的原理究竟是什么。很有可能之后因為其他原因遇到了同樣的報錯信息寂纪,他們就歇菜了席吴。
所以對不是完全了解的事情不要做假設(shè),不知道就去了解捞蛋、學習孝冒,千萬不能想當然。
熱情
如果你自己對一件事情不在意拟杉,別人也同樣不會在意庄涡,因此保持熱情非常重要,它可以讓你充滿了干勁搬设。因為人往往只能在自己有熱情的領(lǐng)域做出成績穴店,所以問一問自己,我們有讓自己充滿了熱情的事情嗎拿穴?
比如說想要自己做一個個人網(wǎng)站或者是APP泣洞?比如說想要自己做一臺無人機?還是想要做好自己的一個技術(shù)博客呢默色?其實對什么有熱情不重要的球凰,重要的是讓自己找到這么一個充滿熱情的領(lǐng)域。
總結(jié)
說到這里腿宰,如果我告訴你們Heck沒有讀過大學呕诉,大家會不會感到很震驚呢?
其實我倒不覺得意外吃度,因為從字里行間我能感覺到這是一個對于技術(shù)以及自己有著非常高要求的人甩挫,并且對于生活和編程充滿了熱情。有熱情它并不一定可以讓我們把一件事情做好做成功椿每,但是它可以推動著我們朝著成功的方向不斷努力伊者,路途遠并不可怕,可怕的是沒有動力了间护。
最后删壮,讓我們再回顧一下那一句經(jīng)典的忠告吧:
Always be coding.
今天的文章就到這里,衷心祝愿大家每天都有所收獲兑牡。如果還喜歡今天的內(nèi)容的話央碟,請來一個三連支持吧~(點贊、關(guān)注均函、轉(zhuǎn)發(fā))
推薦閱讀:
為什么阿里巴巴的程序員成長速度這么快,看完他們的內(nèi)部資料我懂了
開辟鴻蒙,誰做系統(tǒng)如迟,聊聊華為微內(nèi)核
看完三件事??
如果你覺得這篇內(nèi)容對你還蠻有幫助收毫,我想邀請你幫我三個小忙:
點贊攻走,轉(zhuǎn)發(fā),有你們的 『點贊和評論』此再,才是我創(chuàng)造的動力昔搂。
關(guān)注公眾號 『 Java斗帝 』,不定期分享原創(chuàng)知識输拇。
同時可以期待后續(xù)文章ing??