我是如何準(zhǔn)備技術(shù)面試的
目前拿到的知名公司的offer是騰訊和新美大(大眾點(diǎn)評(píng)、美團(tuán))。一直想寫一篇面經(jīng)分享給大家,但因?yàn)橐恍┈嵥榈氖虑椋鸵恢钡⒄`著。
今天就特意拿出一些時(shí)間去寫它。很多人都分享了很多的面經(jīng),而且還有好多面試題目在很多社區(qū)都有相關(guān)的資料。很多面試題也都有相關(guān)的解析,但是僅僅是刷這些面試題其實(shí)并不一定可以找到自己心儀的工作。下面就主要介紹下我是如何在面試前做準(zhǔn)備工作的。
我經(jīng)歷的一些面試
因?yàn)榇笕?,從今?月份開(kāi)始,自己開(kāi)始找工作,開(kāi)始也不明白該怎么做,就簡(jiǎn)單寫了一了一份簡(jiǎn)歷,簡(jiǎn)歷上就是一些自己相關(guān)的學(xué)習(xí)經(jīng)歷。最開(kāi)始的時(shí)候 選擇了一些自己覺(jué)得可以的小公司,并且獲得了一些面試機(jī)會(huì),***次面試很緊張,不知道該跟面試官說(shuō)什么,不知道該如何去介紹自己,不知道該怎么做,就是傻 傻的一頓被問(wèn),正如你所想的,我不可能所有的問(wèn)題答的都很好,因?yàn)榛旧厦嬖嚬偈窍氲绞裁淳蛦?wèn)什么(他可能是準(zhǔn)備好的問(wèn)題,但是我真的覺(jué)得我的***次面試 是他想到什么就問(wèn)什么)。
面試結(jié)束后,我就好好總結(jié)了下,然后又開(kāi)始了第二家。這么經(jīng)歷了幾次就發(fā)現(xiàn),自己不在那么緊張了,自己開(kāi)始占據(jù)主動(dòng)權(quán),***著面試官走。所以現(xiàn)在回 憶一下,多面一些還是能增長(zhǎng)很多經(jīng)驗(yàn)的。不管是你表達(dá)能力的提升,我所經(jīng)歷的面試官人都非常好,開(kāi)始可能會(huì)很緊張,但是后來(lái)感覺(jué)就像是在聊天,兩個(gè)志同道 合的人聊著同一個(gè)話題,從這個(gè)聊天的過(guò)程當(dāng)中也收獲了很多自己不知道的東西。
新美大面試經(jīng)歷
美大的面試官一定要點(diǎn)個(gè)贊,其實(shí)面過(guò)以后會(huì)發(fā)現(xiàn),不要很緊張什么。美大的面試官很隨和具體的面試問(wèn)題就不說(shuō)了,基本上一面的時(shí)候還是很關(guān)注基礎(chǔ)的, 然后***的20分鐘左右都是聊一些經(jīng)驗(yàn),我當(dāng)時(shí)是說(shuō)起了一個(gè)話題,因?yàn)殚_(kāi)始的時(shí)候聊一些基礎(chǔ),然后就是聊到我的項(xiàng)目中的圖片的動(dòng)態(tài)緩存方案,就一直在聊這 個(gè),***又提起了組件化的開(kāi)發(fā)方案,我們***就是一直在聊這個(gè)話題。一面就***接到通知就過(guò)了。
二面的時(shí)候,就是視頻面,在一個(gè)平臺(tái)上,可以視頻,并且我在那個(gè)平臺(tái)上寫的代碼對(duì)方也是可以看見(jiàn),給大家一個(gè)建議,別人看你寫代碼你可能會(huì)很緊張, 但是不要太慌張,我感覺(jué)正常發(fā)揮就好了,對(duì)方主要還是想看看的代碼的風(fēng)格怎么樣?是不是很規(guī)范,注釋啊,還有一些變量的命名啊,這些是否很規(guī)范。另一個(gè)就 是想看大家的處理能力,其實(shí)給你的題目都不是很難,都是一些簡(jiǎn)單的基礎(chǔ)的東西,不會(huì)說(shuō)讓你現(xiàn)場(chǎng)寫出一個(gè)什么很麻煩的布局,很牛的特效的。
這次面試大概經(jīng)歷了一個(gè)小時(shí)左右,***一部分時(shí)間還聊了很多生活上的事情。例如就是來(lái)到美大后準(zhǔn)備想學(xué)一些什么???你對(duì)美大哪一方面的技術(shù)很感興趣 ???就是這些,喜歡什么就聊一些什么就可以了。整體的兩輪面試還是學(xué)到很多東西的,畢竟現(xiàn)在在學(xué)校不知道外面的公司是什么樣的,通過(guò)面試官還是能了解到外 面很多東西的。
騰訊的面試經(jīng)歷
騰訊的面試就是自己經(jīng)歷了騰訊的筆試,然后一面,二面,***HR面,然后等消息,***得到offer。筆試的話基本上就是一些基礎(chǔ)知識(shí),像數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)組成原理,操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)這些。上課認(rèn)真聽(tīng)聽(tīng),筆試前刷一些題目問(wèn)題還是不大的。
騰訊一面,主要就是聊一些基礎(chǔ),我是去面移動(dòng)客戶端,但是整個(gè)面試移動(dòng)相關(guān)的問(wèn)題很少,主要還是在圍繞著一些基礎(chǔ)再聊。如果你想拿到騰訊的 offer,我覺(jué)得基礎(chǔ)是非常重要的。面試題的話,我覺(jué)得這個(gè)其實(shí)沒(méi)什么可提的,因?yàn)檫@些題目都是不固定的,面試官主要還是在圍繞著你的簡(jiǎn)歷再跟你聊,你 的簡(jiǎn)歷中寫到你的APP中涉及過(guò)下載,那么網(wǎng)絡(luò)必問(wèn),問(wèn)什么?我覺(jué)得TCP,HTTP都是值得問(wèn)的。有一本書叫《程序員的自我修養(yǎng)》 我覺(jué)得這本書有時(shí)間還是很需要去讀一下的。我見(jiàn)到過(guò)很多人吐槽說(shuō),我是去面iOS,面試我的竟然是一個(gè)Android的,從我個(gè)人的角度來(lái)看,無(wú)論是 iOS,還是Android在很多的設(shè)計(jì)思想上面還是有很多相通的地方的。說(shuō)出你的想法就可以了。我個(gè)人覺(jué)得思想還是很重要的。
騰訊二面給我***的印象就是面試官說(shuō)的一句話,挑一個(gè)你覺(jué)得可以的項(xiàng)目,然后我們聊一些東西。從這句話我感覺(jué)很多人都能夠感覺(jué)出來(lái),二面主要還是聊 你的,一定給有一個(gè)項(xiàng)目才行。并且好好去準(zhǔn)備這個(gè)東西。同樣沒(méi)有什么具體的問(wèn)題,每個(gè)人的項(xiàng)目都不一樣,實(shí)現(xiàn)方案也不可能完全一樣。所以聊的東西也就不可 能完全一樣。二面什么太多的經(jīng)驗(yàn),主要還是認(rèn)真的去準(zhǔn)備一個(gè)項(xiàng)目。
面試前的準(zhǔn)備
這是我最想跟大家聊的東西,因?yàn)殛P(guān)于面試前的準(zhǔn)備,或者是準(zhǔn)備什么還是很有必要重點(diǎn)分享下的。
很多人面試的時(shí)候不知道說(shuō)什么,同樣很多人都說(shuō)要***著面試官,不要被面試官***。但是該怎么做呢?難道我們不讓面試官說(shuō)話?我們給面試官規(guī)定題目?這都是不現(xiàn)實(shí)的,對(duì)吧?但是通過(guò)一些準(zhǔn)備,還是可以實(shí)現(xiàn)讓我們?nèi)ソo面試官”規(guī)定題目”的,怎么做?舉一些簡(jiǎn)單的例子
例如:你的簡(jiǎn)歷當(dāng)中寫到自己對(duì)Socket有一些了解,那么很自然的就會(huì)聊到TCP,你提前好好準(zhǔn)備下,你自己都是可以預(yù)知的,當(dāng)面試官問(wèn)聽(tīng)到你 Socket的時(shí)候,自然就會(huì)走到TCP上。如何準(zhǔn)備?很多人上網(wǎng)上查了一些,TCP很經(jīng)典的就是連接的三次握手,斷開(kāi)時(shí)的四次揮手。你也簡(jiǎn)單的查了一下 三次握手什么樣,四次揮手什么樣,但是這僅僅就夠了嗎?我們?yōu)槭裁床辉谕顚尤?zhǔn)備下呢?例如連接為什么是三次,斷開(kāi)為什么是四次?連接如果兩次會(huì)發(fā)生 什么?三次握手中總共發(fā)送了三個(gè)包,那么僅僅就是做了三個(gè)作用嗎?更往深處可能會(huì)涉及到TCP的頭部結(jié)構(gòu),以及TCP連接,斷開(kāi)時(shí)SYN,F(xiàn)IN,ACK 的有效值設(shè)置又是什么樣的?我相信你把這些都說(shuō)出來(lái)肯定是會(huì)被加分的。當(dāng)然你想很好的說(shuō)出來(lái)不是說(shuō)你面試前查查就可以了,肯定是需要去好好的去理解的。這也就是我說(shuō)的面試前的準(zhǔn)備,不要為了面試而面試,而是要為了面試而去學(xué)習(xí),提升自己。
我可以再舉個(gè)簡(jiǎn)單的例子,關(guān)于圖片緩存這個(gè)東西,在iOS,Android中有很多動(dòng)態(tài)的圖片緩存解決方案。你的簡(jiǎn)中如果寫到做過(guò)相關(guān)的操作,我覺(jué) 得這個(gè)東西還是很值得去問(wèn)的。明知道會(huì)被問(wèn),面試前肯定要好好準(zhǔn)備下啊。準(zhǔn)備的過(guò)程當(dāng)中我覺(jué)得需要總結(jié)出自己的方案中優(yōu)點(diǎn)有哪些,缺點(diǎn)有哪些,針對(duì)你的缺 點(diǎn)你準(zhǔn)備怎么做,或者說(shuō)你可以針對(duì)你知道的一些知名的開(kāi)源庫(kù)是如何解決的,你有什么可以借鑒的,這樣我感覺(jué)你肯定是要被加分的,最起碼你是閱讀過(guò)開(kāi)源庫(kù), 并且認(rèn)真的去思考過(guò)。
我就見(jiàn)過(guò)有人被問(wèn)到如何做圖片緩存的時(shí)候,他就簡(jiǎn)單的說(shuō)了一句通過(guò)URL下載圖片然后保存起來(lái),以便利用。這個(gè)話題當(dāng)中有很多東西都是可以去值得聊 的,就說(shuō)這么一句話,我覺(jué)得面試官不可能得到他想要的答案,他沒(méi)有得到答案,肯定是要去接著問(wèn)你的。這個(gè)時(shí)候你就會(huì)顯著的很被動(dòng),接下來(lái)就是要被面試官***著走了。有人會(huì)問(wèn)有什么可以聊的?
我舉一些簡(jiǎn)單的例子,例如圖片的緩存方案肯定是要涉及到圖片的下載問(wèn)題,既然是下載,那么下載進(jìn)度信息的回調(diào)你怎么做的?下載失敗怎么辦?下載完成 的回調(diào)怎么做的?下載肯定涉及到多線程的下載,那么這些線程你是如果管理的?線程管理器的結(jié)構(gòu)又是什么樣的?甚至是一個(gè)URL下載連接正在被下載,另一個(gè) 地方發(fā)起了一個(gè)相同URL的下載,這種情況我認(rèn)為為了節(jié)省資源不應(yīng)該在新開(kāi)一個(gè)線程去下載,那么這種情況你有做處理嗎?如何做的?其實(shí)有很多值得考慮的問(wèn) 題和值得去說(shuō)的。做緩存,你做的是磁盤緩存???還是內(nèi)存緩存?還是兩者都有?是否支持磁盤空間大小的設(shè)置,圖片有效期的設(shè)置如何做的,圖片的清理工作,我 相信無(wú)論在iOS還是Android那些知名的開(kāi)源庫(kù)不可能就是簡(jiǎn)單的有一個(gè)清理方案,肯定是支持部分清理,或者全部清理,部分清理的依據(jù)又是什么?例如 依據(jù)圖片的有效期來(lái)做清理,過(guò)了我們?cè)O(shè)定的有效期,這個(gè)時(shí)候我們就需要去清理掉這部分內(nèi)容。另外如果如果所有緩存文件的總大小超過(guò)這一大小,則會(huì)按照文件 ***修改時(shí)間的逆序,以每次一半的遞歸來(lái)移除那些過(guò)早的文件,直到緩存的實(shí)際大小小于我們?cè)O(shè)置的***使用空間。這些東西都是有很多值得去說(shuō)的,當(dāng)然你只要 去感悟的越深,理解的越深,就會(huì)體會(huì)的越深,表達(dá)的就會(huì)越好。
剛剛提到的東西我覺(jué)得聊個(gè)20分鐘還是很容易的,因?yàn)檫@個(gè)里面存在的東西和值得注意的地方太多了。準(zhǔn)備好一個(gè)項(xiàng)目,找出你項(xiàng)目中的一個(gè)亮點(diǎn),然后認(rèn)真的去總結(jié), 并且看一些別人的方案,看看有哪些你沒(méi)有的,你沒(méi)有的就是你方案的缺陷,看看該怎么解決。我覺(jué)得,缺陷還是很重要的,沒(méi)有什么很***的解決方案,方案好也 僅僅是針對(duì)滿足了現(xiàn)在的所有業(yè)務(wù)需求而談的。針對(duì)你的業(yè)務(wù)需求,談出你的設(shè)計(jì)理念。項(xiàng)目不用多,認(rèn)真的去總結(jié)一個(gè)就可以了。關(guān)鍵是很多人做了很多項(xiàng)目,但是卻沒(méi)有認(rèn)真的去體會(huì)總結(jié)一個(gè),做了也是白做,僅僅是代碼熟練度增加了而已。
后話
不要為了面試而面試,要為了提高而學(xué)習(xí),提高了自然也就能從容的面對(duì)知名公司的面試了。