先簡單說說我最近的面試經歷吧。面試的公司很多,大部分最后都能得到令人滿意的結果,我將這些體會記錄下來,面了這么多公司,如果不留下什么,那豈不是太浪費了。對于我來說,這也是一次自我檢查,在這次面試中總結經驗,認清自己,同時希望這些對即將換工作或者打算看看其他機會的你有一些幫助。
以下的部分有具體的面試經歷,也有自己的一些總結面試必備技能和自己的一些感想。
為何離開小米?
離開小米的主要原因是:我的職業規劃與小米給我的規劃不相符,還有就是流程化的東西太繁瑣,自己有一些不適應,所以選擇離開了小米。非常感謝我周總(直接領導)和冰冰(師傅),在小米的這一年中給予我非常多的幫助,在我跟領導溝通要離開的想法時,領導開誠布公的跟我聊了很多,最終我還是下定決定要離開小米,領導建議我先去面試一些公司,等找到合適的再走,裸辭的話心態上都會有一些問題,這樣的領導真是沒話說了,在小米很多領導都是不放人的,很多都把員工的下一家拖黃了才放人。在這一年獲得的成績:
1、二等獎轉正績效是A
2、年終績效 A+,獲得明日之星
準備
其實我很早就開始準備了,準確來說也不算準備,只是一直在總結iOS相關方面的知識,因為在華為雖然工作有時候比較多,但是還是有大把時間可以自己學習一些感興趣的方向。從過完年回來,我就有計劃的復習和總結了一些知識。
看過的書籍,這里并不是泛泛的讀一遍,而是詳細理解了大多數內容,通俗一點就是可以用自己的話將相應的知識解讀出 來 。
Android開發藝術探索》(這本書真心不錯,我反復讀了4、5遍)、《iOS群英傳》(比較接近開發使用,因為做過一些應用開發,讀起來還是比較簡單的,讀了2遍)、《劍指offer》(感覺面試中碰到的算法,70%都能找到相應的題目,保證所有的題都可以手寫出來就行)。4個月精讀了以上書籍,還有其他的都是簡單了解,這里就不列舉了,讀完這些書,應該可以讓你上一個層次吧(媽媽再也不用擔心我面試啦…)。
刷題,主要是LeetCode(大概刷了300道題左右,每天3-6道,堅持下來,需要多復習,因為很多題過一段時間會忘記),還有看過一些牛課網。
看別人的面試經驗,主要在網上,這里我列舉兩個比較好的。
1、 iOS客戶端面試題集錦
2、 iOS阿里面試題錦集
投遞簡歷
一份好的簡歷是非常有必要的,需要突出你的重點和閃光點,具體怎么寫簡歷可以參考
CodeKK說簡歷
有了一份好簡歷,接下來就是投遞簡歷,一般是:拉鉤+BOSS直聘+內推,從我這次面試機會來看,三者比例是2:2:1,也可能我工作經驗還不到一年,內推滴滴、阿里和騰訊直接就把我的簡歷刷掉了,但是內推也是具體到某個部門,如果被刷掉也不要灰心,現在大公司基本上各個部門都有自己的hr,可以在拉頭和BOSS上多投遞一些,萬一其他部門看中你呢?
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼'亮子',不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!
面試經歷
這里我僅僅記錄一些問過的題目(能記住的),答案我就不寫出來,基本上都可以在網上找到相應的答案。
一面
1、iOS一些優化方案
2、最常用的版本控制工具是什么,能大概講講原理么
3、UNIX常用命令
4、c語言在iOS開發中的重要性
5、源代碼管理工具的作用
二面
二面面試官是Eva?反正應該不是做iOS的,iOS的相關知識問的也不多,大多是項目上的東西。
atomic的多線程安全
聊項目,都具體做了什么。
nonatomic在自己管理內存的環境
三面
應該是Eva吧,主要了解一些個人的情況,以及一些項目,最后問了期望的薪資,然后當場就給了offer。
畢竟1年多沒有面試了,第一場面試還是給我了很大的自信,也知道現在自己大概能要多少工資是合適的,所以大佬們準備跳槽的時候,最好先面幾家小公司,這些還是一個很不錯的公司,整體的辦公環境挺好的,現在也處于盈利狀態,在教育類的app中也排的上名次。
快手
快手就在五道口地鐵站出口不遠地方,能看到很顯眼的LOGO,看上去很霸氣的樣子,但是當我進入到快手前臺的時候,連一個標示符都沒有, 一度以為自己走進了假快手,好吧,我是來面試,這些都不重要,接下來接待的人員把我領進了一個小屋里,等待面試的開始。
一面
面試官是一個很fashion的人,是從小米核心部門過來的,是iOS小組的領導。
問了關于數據庫的一些問題,SQLite的相關操作,沒辦法,我在華為唯一一個做的和iOS相關的項目,但是不太擅長數據庫。 網絡相關的問題,網絡的五層模型,又問了TCP和TIP,還有iOS相關的長連接,這里問的比較深。
開始iOS相關的知識,視覺控制器的生命周期(view的生命周期)內存告急的處理(手動釋放不可見視圖的內存和成員變量)
第一面這就算過關了等待二面。
二面
問了項目相關的問題,這部分根據自己的項目經驗,由于大家的經驗都不同,這里我就不詳細說了。
設定一個場景,怎么去實現相應的功能,因為快手這個部門想做社交,因此這里是問我是如何實現微信的聯系人頁面(包括與服務端有什么樣的交互)
最后也是一個算法,寫出所有數組的子序列
二面面試官是這個組的Eva,跟我講了現在這個組的發展情況和快手現在的情況,由于快手成長很快,所以不能僅僅依靠一個APP,還需要在其他方面進行一些嘗試,而這個組的任務就是在一些方面做一些嘗試,大概就是這個樣子。
二面也順利通過,接下來就是HR面了,這時候正好是12點,他們要去吃飯,不過快手是提供午餐和晚餐的,第一個面試官帶給我一份飯,還不錯,后來HR跟我說,現在只是過渡時期,后面午餐和晚餐會改成自助餐的形式。
三面
HR上來很親切,問了我一些面試的情況,難不難之類的,然后又聊了聊我大學和研究生情況,我只想說我“too simple , too naive “,大概了解我后,只跟我聊我的不足,以此來壓低我期望的薪水。說了一下薪資期望,加了微信,讓我回去等待,說發offer大概是2周時間,因為需要走各種審批流程,讓我不要著急。
快手是一個很年輕的公司,技術還是需要一定的積累,希望不要像小咖秀一樣曇花一現。
美團外賣
一面
1、簡歷上寫的項目問了一遍,然后開始問知識點。
2、volley的源代碼,在圖片緩存部分討論了挺長時間,http中緩存機制,
3、視覺控制器的生命周期
4、數據庫
5、多線程(NSTread、NSOPeration、GCDA+block)
6、http協議get post的區別
7、手機適配一些方案
8、真機調試、項目上線注意事項
9、靜態方法是否能被重寫
這些大概聊了1個半小時,開始的時候還有些緊張,慢慢聊開了,就好多了,面試官的語速有點快,老是需要面試官重復一遍,我也不經意間語速也變快了,不過能看出來面試官還是很厲害的。
二面
2次握手和3次揮手的原因,以及為什么需要這樣做。
1、id和nill代表什么(nill和NULL的區別)
2、向一個nill對象發送消息會發生什么?
3、進程與線程區別
4、寫一個NSString類的實現
5、http中的同步和異步
聊了一些項目上做的東西,問了問職業規劃 由于二面面試官不是做iOS,本來面試我的人臨時開會去了,所以這一輪面試沒怎么問iOS相關知識,不過二面面試官一直是微笑,所以這一輪很輕松,更像是一起討論問題。
面試完已經是下午4:30了,由于面試當天是星期五,而周五美團的會議比較多,所以等了會,二面面試官說三面面試官在開會,面試另約時間,我還是說這次一次面試完吧,這一等就等了2個半小時,期間hr跟我說三面面試官是個大牛。
三面
我認為iOS做的優秀的幾個地方,然后又根據我說的問了問比較深入問題。
1、iOS是如何進行資源管理的。
2、Python比較重要的幾個特性
3、網絡五層結構,每一層協議,由于我網絡不是很好,還問了一些其他的問題(例如MAC地址和ip地址的區別等)。
為什么離開原來公司,以及職業規劃,然后因為面試完大概就晚上8點了,就先讓我回去,下周讓HR跟我聯系,我想這是應該通過面試了吧。
美團技術還是很厲害的,從面試官的水平就可以看出來,尤其是外賣核心部門,辦公環境是不錯,但是感覺就是有點亂,不知道是不是因為今天面試的人很多,基本上一直有很多人來回走動,有一些嘈雜。
百度
夢寐以求的百度終于找我來面試了,之前不管是內推還是網絡上投遞都被拒絕了,原因是我工作不到一年,沒辦法誰讓馬云爸爸太厲害,我投遞的是杭州的天貓,是做虛擬現實的小組(剛聽到這個名字感覺和自己不太相符),這是我到面試完后,才知道的,面試官也跟我說iOS上的需求可能不會很多,更多的是AR技術在iOS上的應用,包含OpenGL等技術。
一面
詢問了我博客上寫的一些東西,從項目立意談起,到設計,再到詳細的技術實現,可謂是面面俱到,由于自己寫的博客還是比較熟悉,回答的還不錯。
1、GLSurfaceView的相關知識,OpenGL,Shader,繪制流程。
2、詢問當前做的項目,以及到具體的實現和優化。
3、多進程間的通訊,Binder機制。
4、詢問看過哪些框架源碼,EventBus,Volley講了一下。
大概聊了一個小時左右,聊得還可以,基本上都回答上了,中間給了我很多建議,不懂的地方,也會仔細跟我講解一番,其實有一半的時間都是跟我聊產品,為什么這個產品好,怎樣做才能迎合市場,然后怎么設計整個產品等,感覺跟我現在水平不是一個層次的,果然,第二天就給我發了一封郵件,說我現在暫時不太合適投遞的崗位。
面試結果
除了阿里淘寶外,其他的公司基本都拿到offer,這段時間把小米這邊的工作都交接完,休息幾天,如果有空的話回家停幾天。
最后總結
自己對于互聯網有一些小小的見解:隨著資本的冷卻,整個互聯網市場也逐漸的冷靜下來。iOS應用開發從一開始能說幾個四大組件的名詞,能隨便寫個監聽事件,就能拿到高達上萬的月薪的時代了。歸根到底并不是工作難找了,而是iOS應用開發工程師這個職位已經趨于正常,再也不是沒什么技術也能拿高工資的香餑餑。當然這個也不是絕對的,對于中高級的開發人員來說,市場還是比較缺少的,尤其是知名企業對于招聘員工來說,不僅要求有過硬的技術,還要求有高素質,好的教育背景等等??偟膩碚f,高工資可以給你,但是前提條件是你要足夠優秀,或者說讓面試官覺得你很優秀。
其實面試過程就是一個把你自己推銷給別人的過程,對于我們(畢業不久的同學,因為我畢業不到一年)來說就是要讓面試官感覺你技術好,有培養價值。感慨有點多了,還是來點干貨吧,大概列舉一下每一輪面試的大概范圍和深度,但是也不是絕對的,還是要看具體情況。
筆試
近一段時間的面試經歷來說,一、二面的問題沒有什么很大的區別(公司基本上都有3面技術面,但是也有例外,我在美團就是2面技術面。),基本上都是一線開發人員。主要考察你是否有牢固的基礎知識和是否在平常開發中能熟練使用。
是否能講解清楚你所做的項目,以及使用到的相關知識。
1、iOS基礎知識
2、Python基礎知識,大概是多線程,線程安全,集合類,JVM,類相關知識等。
3、iOS一些源碼的閱讀
4、優秀的第三方框架源碼閱讀
四面
一般公司都是三輪技術面,但是也有四輪技術面的,不過不多。很多公司基本上每一輪面試官都會記錄他所詢問的問題,以便給下一輪面試官作參考,還有就是避免對同一個知識點多次詢問。所以到了這輪面試,基本上不會再詢問比較基礎的知識。
會從兩個方面考察,
1、廣度:比較新的技術(多線程,插件化等),http協議,數據庫,iOS(一般不會詢問之前面試官問過的問題)。
2、深度:一般會通過1或2個問題來考察,例如:項目中的貢獻,所做的優化。設計能力,基本上不多,這個要看面試的崗位,因為我這里面試的只是高級開發,并不是架構。
工作中的亮點和突出。
HR面
基本上到了這輪,你就算通過面試了。hr會詢問一些你的經歷,最主要的還是和你商定薪資待遇。在這輪,大家應該要對自己的薪資水平有一個大體的了解,一般都是在原來的工資基礎上增長20%~30%的樣子,當然,如果你在面試過程中表現非常優秀,也可以不受這個限制。當然如果公司誠心要你,就算你要的工資過高,hr也會委婉的告訴你,不會直接把你pass。
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼'亮子',不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!