為何很多有不少編程經(jīng)驗,技術(shù)能力不錯的程序員,去心儀公司面試找工作時卻總是失敗?至于失敗的原因,可能很多人都沒意識到過。下面就來簡單為程序員們分析下原因所在。
01 想要通關(guān)面試,千萬別讓數(shù)據(jù)結(jié)構(gòu)拖了后腿
很多公司,比如 BAT、Google、Facebook,甚至以技術(shù)作為支撐的中小型互聯(lián)網(wǎng)公司,面試的時候都喜歡考數(shù)據(jù)結(jié)構(gòu)、算法,讓人現(xiàn)場寫代碼。
有些人雖然技術(shù)不錯,但每次去面試都會“跪”在算法上,很是可惜。那你有沒有想過,為什么這些大公司都喜歡考算法呢?
校招的時候,參加面試的學(xué)生通常沒有實際項目經(jīng)驗,公司只能考察他們的基礎(chǔ)知識是否牢固。社招就更不用說了,越是厲害的公司,越是注重考察數(shù)據(jù)結(jié)構(gòu)與算法這類基礎(chǔ)知識。相比短期能力,他們更看中你的長期潛力。
02 穩(wěn)固的基礎(chǔ)知識,決定了你的高度
你是不是覺得數(shù)據(jù)結(jié)構(gòu)和算法,跟操作系統(tǒng)、計算機網(wǎng)絡(luò)一樣,是脫離實際工作的知識?可能除了面試,這輩子也用不著?
可是你聽說過技術(shù)過時,什么時候聽說過算法過時,不僅沒有過時,因為機器學(xué)習(xí)、大數(shù)據(jù)的要求,算法變得越來越重要了。
當(dāng)然,也有很多人說,自己實際工作中根本用不到數(shù)據(jù)結(jié)構(gòu)和算法。所以,就算不懂這塊知識,只要 Java API、開發(fā)框架用得熟練,照樣可以把代碼寫得“飛”起來。
你別忘了,我們學(xué)任何知識都是為了“用”的,是為了解決實際工作問題的,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法自然也不例外。
03 業(yè)務(wù)開發(fā)工程師,你真的愿意做一輩子 CRUD boy 嗎?
如果你是一名業(yè)務(wù)開發(fā)工程師,你可能要說,我整天就是做數(shù)據(jù)庫 CRUD(增刪改查),哪里用得到數(shù)據(jù)結(jié)構(gòu)和算法啊?
是的,對于大部分業(yè)務(wù)開發(fā)來說,我們平時可能更多的是利用已經(jīng)封裝好的現(xiàn)成的接口、類庫來堆砌、翻譯業(yè)務(wù)邏輯,很少需要自己實現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法。
但是,不需要自己實現(xiàn),并不代表什么都不需要了解。
小編來舉一個你非常熟悉的例子:如何實時地統(tǒng)計業(yè)務(wù)接口的 99% 響應(yīng)時間?
你可能最先想到,每次查詢時,從小到大排序所有的響應(yīng)時間,如果總共有 1200 個數(shù)據(jù),那第 1188 個數(shù)據(jù)就是 99% 的響應(yīng)時間。很顯然,每次用這個方法查詢的話。
都要排序,效率是非常低的。但是,如果你知道“堆”這個數(shù)據(jù)結(jié)構(gòu),用兩個堆可以非常高效地解決這個問題。
04 不僅要關(guān)注功能的實現(xiàn),還有關(guān)注代碼質(zhì)量
對編程還有追求?不想被行業(yè)淘汰?那就不要只會寫湊合能用的代碼!
小編覺得,面試時的競爭其實就在細節(jié)。
這些細節(jié)包括:你用的算法是不是夠優(yōu)化,數(shù)據(jù)存取的效率是不是夠高,內(nèi)存是不是夠節(jié)省等等。這些累積起來,決定了一個框架是不是優(yōu)秀。所以,如果你還不懂?dāng)?shù)據(jù)結(jié)構(gòu)和算法,不懂得如何提高代碼的質(zhì)量,還是抓緊時間補一補吧。
服務(wù)熱線
0356-3043986