今天突然想聊聊面試了,最近有很多朋友讓我看簡歷,也有很多朋友跟我吐槽說:面試被虐了,簡直慘不忍睹,都有點(diǎn)懷疑自己的能力了。其實(shí),我想說:正常。之所以這么說是很多朋友可能沒有認(rèn)清一些問題,哪些問題呢?兩點(diǎn):一是,沒有認(rèn)清自己;二是,沒有了解公司。
其實(shí)說實(shí)話,作為程序員,最起碼得有80%的人都想進(jìn)入大公司工作,比如:BAT ,小米,滴滴,今日頭條,美團(tuán)等這樣的大公司或者移動(dòng)互聯(lián)網(wǎng)界的明星企業(yè)。進(jìn)大公司的好處顯而易見,福利好,待遇高,工作穩(wěn)定,不像很多創(chuàng)業(yè)小公司說倒閉就倒閉,尤其是移動(dòng)互聯(lián)網(wǎng)進(jìn)入下半場之后,很多創(chuàng)業(yè)公司都相繼倒閉,而且移動(dòng)開發(fā)者也越來越飽和,隨著程序員越來越多,自然就進(jìn)入了激烈競爭的惡劣環(huán)境,優(yōu)勝劣汰的自然規(guī)律是不可逃避,也規(guī)避不了的。據(jù) GitHub 統(tǒng)計(jì),就今年一年加入 GitHub 的中國程序員就有 70 萬,自己想想吧,競爭得有多激烈。
即使有20%的程序員不想進(jìn)入大公司,也無非就是要么就是認(rèn)清了自己的現(xiàn)實(shí),自己并不是那么天賦異稟,也并不是那么熱愛編程,有自知之明的心態(tài),在個(gè)小公司干也挺好,倒閉了大不了再換,反正 BAT ,我也進(jìn)不去。要么就是人家就是 BAT 的大神想出來創(chuàng)業(yè)當(dāng)移動(dòng)互聯(lián)界的創(chuàng)業(yè)家,想功成名就,即使創(chuàng)業(yè)失敗,我依然可以鶴立雞群,瀟灑回到 BAT 的世界,帥氣的依靠自己在業(yè)界的名聲依然能夠得到一份好的工作。
說著說著,好像有點(diǎn)二八定律的感覺。NO,上面的80%和20%是我自己的不完全統(tǒng)計(jì),不必當(dāng)真,舉個(gè)例子而已。具體關(guān)于程序員應(yīng)該選擇大公司還是小公司,請大家移步我的這篇文章《程序員是該選擇大公司,還是小公司?你會如何抉擇呢?》。
面試準(zhǔn)則
關(guān)于面試這件事,我們得知道一個(gè)面試準(zhǔn)則,尤其是在移動(dòng)互聯(lián)網(wǎng)進(jìn)入下半場的今天。最近很多朋友面試受挫,并不是說技術(shù)有多差,但是就是很受打擊,因?yàn)樵谫Y本寒冬的今天,移動(dòng)互聯(lián)網(wǎng)的下半場,程序員要想過上好日子,就得去大公司,現(xiàn)在已經(jīng)逐步進(jìn)入拼技術(shù)的時(shí)代了,所以技術(shù)依然越來越重要,這是在小公司無法體現(xiàn)和提升的。而他們之所以受打擊是因?yàn)槠綍r(shí)做項(xiàng)目,做產(chǎn)品也可以獨(dú)立完成,甚至很好的完成,但是面試失敗的面試是基礎(chǔ)太差。所以,你在小公司確實(shí)可以能夠很好的掌握并做一個(gè)項(xiàng)目,但是大公司重視的是你的基礎(chǔ)啊。所以要清楚這么一個(gè)準(zhǔn)則:面試,大公司重基礎(chǔ),小公司重能力(這里的能力指:能不能馬上上手做一個(gè)項(xiàng)目的能力)。
進(jìn)一步解釋一下,為什么我在上面說:現(xiàn)在已經(jīng)逐步進(jìn)入拼技術(shù)的時(shí)代了?首先,移動(dòng)互聯(lián)網(wǎng)剛剛興起的前10年是一個(gè)高速發(fā)展,高速擴(kuò)張,野蠻收割的時(shí)代,就是不論技術(shù)好還是差,只要能夠馬上做出產(chǎn)品來就好技術(shù),就會通過營銷,運(yùn)營,資本等手段獲得用戶,而獲得用戶,占領(lǐng)市場之后,就到了拼技術(shù),拼品質(zhì)的時(shí)代了。而現(xiàn)在移動(dòng)互聯(lián)網(wǎng)的下半場就是一個(gè)拼技術(shù)的時(shí)代了。舉個(gè)簡單的例子,微博,你做出來很容易,但是做好就很難了。明星出個(gè)軌,公布個(gè)戀情分分鐘就會讓你癱瘓,這不是產(chǎn)品,營銷,資本能夠解決的問題,這是技術(shù)才能夠解決的問題。你會做微博不是能力,你能讓微博不癱瘓才是能力。前幾天在知乎上看到一個(gè)問題特別有意思,問:做一個(gè)微信很難么?有一個(gè)回答很對,說:做一個(gè)微信,10個(gè)人用不難,100個(gè)不難,讓近10億的用戶用,就難了。此處省略一萬字,這個(gè)話題要是聊透,其實(shí)能夠還寫一篇文章。
面試準(zhǔn)備
我在前面說了,面試慘不忍睹的就是由兩個(gè)問題導(dǎo)致的,一是,沒有認(rèn)清自己;二是,沒有了解公司??偨Y(jié)成一句話就是準(zhǔn)備不足。
我們既然了解了面試準(zhǔn)則,就應(yīng)該對癥下藥才行,這樣才不至于慘不忍睹。大公司既然重基礎(chǔ),那么面試前一定要好好學(xué)習(xí)和準(zhǔn)備一下這方面的知識。干什么事之前,一定要充分了解情況,古人說的話,還是挺對的,畢竟是2000多年來總結(jié)出來的經(jīng)驗(yàn),面試就是戰(zhàn)場,知己知彼才能百戰(zhàn)不殆。
舉個(gè)例子:小猿在一家創(chuàng)業(yè)公司從事了兩年的 Android 開發(fā),能夠獨(dú)立開發(fā)一款軟件,技術(shù)還是可以的,效率挺高的,總能快速完成經(jīng)理交給的任務(wù),平時(shí)也會在 GitHub 上提交一些開源代碼,分享了一些開源庫,star 數(shù)五六百,好的上千,熟悉使用 RxJava,Retrofit等網(wǎng)絡(luò)框架,還會 MVP,MVVM 這樣的架構(gòu)。感覺自己去 BAT 這樣的公司面試沒問題,可是,還是被打擊到了。人家回復(fù)說:學(xué)習(xí)能力,開源精神都挺好的,就是基礎(chǔ)太差??吹搅藛??會使用框架,封裝個(gè)簡單的庫,能夠做出產(chǎn)品來并不是多大的能力,做好是需要基礎(chǔ)的。
上面的例子的問題,典型就是不了解自己,也不了解大公司的套路,準(zhǔn)備不足,所以才失敗的。平時(shí)學(xué)習(xí)的時(shí)候,應(yīng)該要知其然知其所以然才行,然后再多學(xué)學(xué)算法,原理和一些計(jì)算機(jī)基礎(chǔ)就更完美了。并不是會做就行,基礎(chǔ)扎實(shí),才能做得更好。
要想成就不敗金身,那我們就一起來知己知彼一下。那大公司到底喜歡面試什么樣的問題呢?我該如何準(zhǔn)備呢?我通過朋友了解到,總結(jié)之后就兩點(diǎn):算法和原理。說這些都是概念,來點(diǎn)實(shí)際的,給大家舉一些例子:
- 翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表
- 合并多個(gè)單有序鏈表(假設(shè)都是遞增的)
- 堆排序過程,時(shí)間復(fù)雜度,空間復(fù)雜度
- 快速排序的時(shí)間復(fù)雜度,空間復(fù)雜度
- HashSet與HashMap怎么判斷集合元素重復(fù)
- 邏輯地址與物理地址,為什么使用邏輯地址
- 一個(gè)無序,不重復(fù)數(shù)組,輸出N個(gè)元素,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度、空間復(fù)雜度。手寫算法
- 二叉樹,給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑
- 數(shù)據(jù)結(jié)構(gòu)中堆的概念,堆排序
- 圖:有向無環(huán)圖的解釋
- LRUCache原理
- ThreadLocal 原理
- HashMap源碼,SpareArray原理
- Https請求慢的解決辦法,DNS,攜帶數(shù)據(jù),直接訪問IP
- https相關(guān),如何驗(yàn)證證書的合法性,https中哪里用了對稱加密,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解
- 是否熟悉Android jni開發(fā),jni如何調(diào)用java層代碼
- Android系統(tǒng)為什么會設(shè)計(jì)ContentProvider,進(jìn)程共享和線程安全問題
- RxJava的功能與原理實(shí)現(xiàn)
- 適配器模式,裝飾者模式,外觀模式的異同?
- 靜態(tài)內(nèi)部類的設(shè)計(jì)意圖。
- 多線程:怎么用、有什么問題要注意;Android線程有沒有上限,然后提到線程池的上限
- 點(diǎn)擊事件被攔截,但是想傳到下面的view,如何操作?
- Android中進(jìn)程內(nèi)存的分配,能不能自己分配定額內(nèi)存
- 序列化的作用,以及 Android 兩種序列化的區(qū)別。
- 前臺切換到后臺,然后再回到前臺,Activity生命周期回調(diào)方法。彈出Dialog,生命值周期回調(diào)方法。
好了,就先舉這些例子,以上的問題來自于 BAT ,小米,滴滴,360,今日頭條,愛奇藝等。你們先感受一下,是不是會被虐呢?通過上述面試題大家也基本看到了,有算法,有原理。
你只要在面試前,認(rèn)真準(zhǔn)備,充足準(zhǔn)備,應(yīng)該不會有多大的困難。其實(shí)大部分程序員面試大公司失敗的原因是自己準(zhǔn)備不足。大公司去校招成功率比較大的原因是大學(xué)學(xué)的一些基礎(chǔ)沒有忘掉,而現(xiàn)在的你,只注重實(shí)戰(zhàn),而不注重基礎(chǔ)。但是在拼技術(shù)的時(shí)代,基礎(chǔ)很重要,基礎(chǔ)和原理懂得的更多,做的東西才會更加牢固。
積累才是根本
前面說了,通過了解面試準(zhǔn)則,面試準(zhǔn)備,那都是一種臨時(shí)抱佛腳的方法,讓你快速面試成功的一種捷徑罷了。其實(shí)平時(shí)的學(xué)習(xí)和積累才是根本。通過了解大公司的要求,我們在小公司也應(yīng)該時(shí)刻嚴(yán)格要求自己,不要只注重實(shí)戰(zhàn),不要不在乎性能而僅僅去說我實(shí)現(xiàn)了就好。
我們在平時(shí)的工作和學(xué)習(xí)的過程中,要時(shí)刻保持學(xué)習(xí)之心,不僅僅注重業(yè)務(wù)的實(shí)現(xiàn),有時(shí)間拿起書來看看基礎(chǔ)和原理,了解一些源碼,多做一些思考,其實(shí)總會慢慢進(jìn)步的。
再啰里啰嗦的舉個(gè)例子吧,比如:你最近看到社區(qū)里流行使用 MVP 模式,你就會去看一下 MVP 后,找一個(gè)開源的模板,下載下來,自己也開始用,不要僅僅停留在使用上,你應(yīng)該思考:為什么大家都喜歡使用 MVP 模式?這樣做的好處是什么?我還能在這樣的基礎(chǔ)上做優(yōu)化嗎?舉一反三的把自己問倒,打破砂鍋問到底要用到自己身上。
總結(jié)
說一千道一萬,不如自己去行動(dòng)。要想在移動(dòng)互聯(lián)網(wǎng)的下半場是自己占有一席之地,那就得從現(xiàn)在開始,從今天開始,馬上嚴(yán)格要求自己,既重視業(yè)務(wù)實(shí)現(xiàn)能力,也重視基礎(chǔ)和原理。基礎(chǔ)夯實(shí)好了,高樓才能夠平地而起,穩(wěn)如泰山。什么高并發(fā)導(dǎo)致的崩潰啊,什么明星緋聞啊,你的前端不怕,后端更不用怕。下次吹??梢赃@么說:三對明星同時(shí)出軌,我的程序也不會癱瘓。