收錄:zhangferry

都說(shuō)今年互聯(lián)網(wǎng)行情很差,iOS行情更差。但到底怎么樣呢,不能光聽(tīng)別人說(shuō),而要自己走出去看一看。我的面試的階段基本都在3月份,準(zhǔn)備的階段則要再往前推個(gè)半個(gè)月吧。期間約到了不少一二線互聯(lián)網(wǎng)公司面試機(jī)會(huì),前期由于準(zhǔn)備不足也錯(cuò)失了一些機(jī)會(huì),在之后的面試中不斷總結(jié)經(jīng)驗(yàn),越來(lái)越有信心了,最終選擇了愛(ài)奇藝。整體來(lái)看求職情況還算可以,不是很好但也不是很差,其中會(huì)帶有一定運(yùn)氣成分,所以要換工作的話一定不要裸辭。
這里總結(jié)下這段時(shí)間的面試經(jīng)歷和一些心得,后面會(huì)附上期間遇到的面試題,大家可以嘗試作答一下。
求職準(zhǔn)備
如果確定了想要換工作就應(yīng)該為求職做準(zhǔn)備了。
知識(shí)準(zhǔn)備
在確定了換工作的想法之后,我們就應(yīng)該為面試做準(zhǔn)備了。在回顧知識(shí)點(diǎn)的時(shí)候我建議分類(lèi)去梳理:OC語(yǔ)法,Runtime,Runloop,多線程,性能優(yōu)化等,這些是優(yōu)先級(jí)高的內(nèi)容,其次是網(wǎng)絡(luò)知識(shí),數(shù)據(jù)結(jié)構(gòu)與算法等計(jì)算機(jī)通識(shí)知識(shí)。
有一本書(shū)非常推薦:《Objective-C高級(jí)編程》,建議精讀。
開(kāi)源庫(kù)的話看Runtime(最新為可編譯799.1版本)吧,把類(lèi)的定義,Runloop,weak,Autoreleasepool相關(guān)的代碼都看下。
數(shù)據(jù)結(jié)構(gòu)與算法,按照類(lèi)別刷個(gè)幾十題應(yīng)該能應(yīng)付大多數(shù)情況了,iOS面試一般不會(huì)有太難的算法題。
簡(jiǎn)歷
簡(jiǎn)歷是求職的第一步,也是你能否獲得面試機(jī)會(huì)的敲門(mén)磚,我們一定要好好打磨下。下面是我在脈脈上看到的HR在篩選簡(jiǎn)歷時(shí)主要關(guān)注的點(diǎn):

我在今年1月份的時(shí)候嘗試投過(guò)幾次簡(jiǎn)歷,并沒(méi)有太好的結(jié)果,后來(lái)進(jìn)行了一些調(diào)整優(yōu)化。3月份再投的時(shí)候相對(duì)好了些,陸續(xù)收到了些回應(yīng)。本人之前并沒(méi)有大廠經(jīng)歷,不是一流本科,但也能收到不少大廠的面試機(jī)會(huì),所以我感覺(jué)自己的簡(jiǎn)歷內(nèi)容還是起到了一定的作用的。
上面有提到“高光時(shí)刻”,可以理解成亮點(diǎn)。怎么讓自己的簡(jiǎn)歷跟同能力水平的求職者不同,那就是找到屬于我們的亮點(diǎn)。有一個(gè)建議,我們?cè)趯?xiě)簡(jiǎn)歷時(shí),可以刻意夸大自己的能力,或者寫(xiě)我們想成為的樣子,再之后我們就對(duì)著簡(jiǎn)歷讓這些內(nèi)容一一實(shí)現(xiàn),讓它們變成自己的亮點(diǎn)。一定要注意不能只吹牛,不落實(shí),因?yàn)楸话l(fā)現(xiàn)“造假”可是很?chē)?yán)重的。
簡(jiǎn)歷投遞
以我的經(jīng)歷來(lái)說(shuō),相對(duì)靠譜的簡(jiǎn)歷投遞方式有:Boss直聘、脈脈、內(nèi)推。
需要注意的是,Boss直聘和脈脈只有別人聯(lián)系你,你再投遞,反饋率才會(huì)高一些。如果是你主動(dòng)聯(lián)系的招聘方,那大概率是不會(huì)收到回應(yīng)的。推測(cè)很多企業(yè)并沒(méi)有很多的招聘崗位也會(huì)把招聘信息掛在上面,這種時(shí)候HR是不會(huì)關(guān)注投遞的簡(jiǎn)歷的。這也是為什么能看到很多人曬出投遞上百個(gè)簡(jiǎn)歷確一個(gè)回應(yīng)的都沒(méi)有的情況,不要?dú)怵H,這不一定代表你能力不行。
等招聘者聯(lián)系是相對(duì)被動(dòng)的,主動(dòng)出擊會(huì)更有效。那就是尋找內(nèi)推,一般公司內(nèi)推都有獎(jiǎng)勵(lì)的,所以公司內(nèi)部人員都樂(lè)意去發(fā)布職位獲取內(nèi)推人選。脈脈,掘金,V2EX,一些知名公眾號(hào)都能發(fā)現(xiàn)不少內(nèi)推崗位,我們可以自己去挖掘。
面試流程
目前互聯(lián)網(wǎng)公司大部分是2輪技術(shù)面+1輪HR,或三輪技術(shù)面+1輪HR。目前的面試形式多為視頻面試,也有些是電話面試。視頻面試的話,如果是通過(guò)Zoom,企業(yè)微信,釘釘?shù)纫话闶遣豢疾焓謱?xiě)代碼的。如果是通過(guò)??途W(wǎng),一般是會(huì)考察手寫(xiě)代碼的。對(duì)于手寫(xiě)代碼,僅有算法題會(huì)要求準(zhǔn)確性,可運(yùn)行,對(duì)于設(shè)計(jì)類(lèi)題目,我們寫(xiě)出偽代碼即可。
如果到了HR輪基本說(shuō)明我們已經(jīng)通過(guò)了面試,如果確定入職,接下來(lái)就是背調(diào),薪資證明,學(xué)歷證明,入職體檢等一系列操作。
面試題
作為一個(gè)開(kāi)發(fā)者,有一個(gè)學(xué)習(xí)的氛圍跟一個(gè)交流圈子特別重要,這是一個(gè)我的iOS交流群:891 488 181 ,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗(yàn),討論技術(shù), 大家一起交流學(xué)習(xí)成長(zhǎng)!
以下是我面試過(guò)程中遇到的面試題,其中網(wǎng)絡(luò)和多線程問(wèn)題已經(jīng)分成兩篇單獨(dú)講解了,這里就去除了這兩部分。
Swift
因?yàn)槲易罱鼉赡甓嘁恢痹谟肧wift,面試開(kāi)始的自我介紹環(huán)節(jié),我也會(huì)著重提這一點(diǎn)。但是很不幸,我得到的答案基本都是:面試主要考察OC。這也說(shuō)明了大部分公司對(duì)Swift態(tài)度還是非常保守的,所以除非招聘信息里寫(xiě)了要求Swift技能,否則我們是沒(méi)有必要專(zhuān)門(mén)準(zhǔn)備Swift相關(guān)面試的。
當(dāng)然面試過(guò)程中也遇到了幾個(gè)Swift問(wèn)題:
1、Swift中struct和class有什么區(qū)別?
2、Swift中的方法調(diào)用有哪些形式?
3、Swift和OC有什么區(qū)別?
4、從OC向Swift遷移的時(shí)候遇到過(guò)什么問(wèn)題?
5、怎么理解面向協(xié)議編程?
OC語(yǔ)法
1、Block是如何實(shí)現(xiàn)的?Block對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)是什么樣子的?__block的作用是什么?它對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)又是什么樣子的?
2、GCD中的Block是在堆上還是棧上?
3、NSCoding協(xié)議是干什么用的?
4、KVO的實(shí)現(xiàn)原理
5、NSOperation有哪些特性比著GCD有哪些優(yōu)點(diǎn),它有哪些API?
6、NSNotificaiton是同步還是異步的,如果發(fā)通知時(shí)在子線程,接收在哪個(gè)線程?
UI
1、事件響應(yīng)鏈?zhǔn)侨绾蝹鬟f的?
2、什么是異步渲染?
3、layoutsubviews是在什么時(shí)機(jī)調(diào)用的?
4、一張圖片的展示經(jīng)歷了哪些步驟?
5、什么是離屏渲染,什么情況會(huì)導(dǎo)致離屏渲染?
6、CoreAnimation這個(gè)框架的作用什么,它跟UIKit的關(guān)系是什么?
引用計(jì)數(shù)
1、ARC方案的原理是什么?它是在什么時(shí)候做的隱式添加release操作?
2、循環(huán)引用有哪些場(chǎng)景,如何避免?
3、為什么當(dāng)我們?cè)谑褂胋lock時(shí)外面是weak 聲明一個(gè)weakSelf,還要在block內(nèi)部使用strong再持有一下?
4、Autoreleasepool是實(shí)現(xiàn)機(jī)制是什么?它是什么時(shí)候釋放內(nèi)部的對(duì)象的?它內(nèi)部的數(shù)據(jù)結(jié)構(gòu)是什么樣的?當(dāng)我提到哨兵對(duì)象時(shí),會(huì)繼續(xù)問(wèn)哨兵對(duì)象的作用是什么,為什么要設(shè)計(jì)它?
5、哪些對(duì)象會(huì)放入到Autoreleasepool中?
6、weak的實(shí)現(xiàn)原理是什么?當(dāng)引用對(duì)象銷(xiāo)毀是它是如何管理內(nèi)部的Hash表的?(這里要參閱weak源碼)
Runtime
1、消息發(fā)送的流程是怎樣的?
2、關(guān)聯(lián)對(duì)象時(shí)什么情況下會(huì)導(dǎo)致內(nèi)存泄露?
3、消息轉(zhuǎn)發(fā)的流程是什么?
4、category能否添加屬性,為什么?能否添加實(shí)例變量,為什么?
5、元類(lèi)的作用是什么?
6、類(lèi)方法是存儲(chǔ)到什么地方的?類(lèi)屬性呢?
7、講幾個(gè)runtime的應(yīng)用場(chǎng)景
Runloop
1、講一下對(duì)Runloop的理解?
2、可以用Runloop實(shí)現(xiàn)什么功能?
性能優(yōu)化
1、對(duì)TableView進(jìn)行性能優(yōu)化有哪些方式?
2、Xcode的Instruments都有哪些調(diào)試的工具?
3、講一下你做過(guò)的性能優(yōu)化的事情。
4、如何檢測(cè)卡頓,都有哪些方法?
5、縮小包體積有哪些方案?
計(jì)算機(jī)相關(guān)
1、項(xiàng)目編譯的流程是什么?手機(jī)上的應(yīng)用程序自點(diǎn)擊圖標(biāo)開(kāi)始到首屏內(nèi)容展示都經(jīng)歷了哪些步驟?
2、對(duì)于基本數(shù)據(jù)類(lèi)型,一般是存儲(chǔ)到棧中的,它有沒(méi)有可能存在堆上,什么情況下會(huì)存儲(chǔ)到堆上?
3、數(shù)據(jù)庫(kù)中的事務(wù)是什么意思?
4、使用過(guò)什么數(shù)據(jù)庫(kù)(我回答的Sqlite,Realm),Realm在使用時(shí)有哪些注意事項(xiàng),如何實(shí)現(xiàn)批量操作?
5、LRU算法是否了解,如何實(shí)現(xiàn)一套LRU算法?
6、知道哪些設(shè)計(jì)模式,怎么理解設(shè)計(jì)模式的作用?
7、如果有1000萬(wàn)個(gè)Int類(lèi)型的數(shù)字,如何對(duì)他們排序?
8、設(shè)計(jì)一套數(shù)據(jù)庫(kù)方案,實(shí)現(xiàn)類(lèi)似微信的搜索關(guān)鍵詞能快速檢索出包含該字符串的聊天信息,并展示對(duì)應(yīng)數(shù)量(聊天記錄的數(shù)據(jù)量較大)。
簡(jiǎn)歷相關(guān)問(wèn)題
1、Lottie實(shí)現(xiàn)動(dòng)畫(huà)效果的原理是什么?
2、OClint實(shí)現(xiàn)靜態(tài)分析的原理是什么,它是如何做到的?
3、MVVM和MVC有什么區(qū)別?
4、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(qū)別是什么?
5、了解Flutter嗎?它有沒(méi)有使用UIKit?它是如何渲染UI的?
6、二進(jìn)制重排的核心依據(jù)是什么?
7、如何設(shè)計(jì)一套切換主題的方案?
8、AVPlayer和IJKPlayer有什么區(qū)別?用IJKPlayer如何實(shí)現(xiàn)一個(gè)緩存視頻列表每條視頻前1s的內(nèi)容?
9、類(lèi)似微博的短視頻列表,滑動(dòng)停留播放,如何實(shí)現(xiàn)?
10、使用python做過(guò)哪些事?如何理解腳本語(yǔ)言?
數(shù)據(jù)結(jié)構(gòu)與算法
1、什么是Hash表,什么是Hash碰撞,解決Hash碰撞有什么方法?
2、如何遍歷二叉樹(shù)?
3、簡(jiǎn)述下快速排序的過(guò)程,時(shí)間復(fù)雜度是多少?
4、有一個(gè)整數(shù)數(shù)組,如何只遍歷一遍就實(shí)現(xiàn)讓該數(shù)組奇數(shù)都在前面,偶數(shù)都在后面?
5、假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢?
6、給出一個(gè) 32 位的有符號(hào)整數(shù),你需要將這個(gè)整數(shù)中每位上的數(shù)字進(jìn)行反轉(zhuǎn)。leetcode 7
7、有紅、黃、藍(lán)三種顏色的氣球。在??屯鯂?guó),1個(gè)紅氣球+1個(gè)黃氣球+1個(gè)藍(lán)氣球可以?xún)稉Q一張彩票。
2個(gè)紅氣球+1個(gè)黃氣球可以?xún)稉Q1個(gè)藍(lán)氣球。
2個(gè)黃氣球+1個(gè)藍(lán)氣球可以?xún)稉Q1個(gè)紅氣球。
2個(gè)藍(lán)氣球+1個(gè)紅氣球可以?xún)稉Q1個(gè)黃氣球。
現(xiàn)在牛牛有a個(gè)紅氣球,b個(gè)黃氣球, c個(gè)藍(lán)氣球,牛牛想知道自己最多可以?xún)稉Q多少?gòu)埐势薄?/p>
軟技能
1、做過(guò)哪些工作職責(zé)之外的事情?
2、經(jīng)歷過(guò)最難的一次業(yè)務(wù)開(kāi)發(fā)是什么樣的,最終怎么解決的?
3、最近有學(xué)習(xí)什么新技術(shù)嗎?有何收獲?
4、你最擅長(zhǎng)iOS哪方面的知識(shí)?怎么體現(xiàn)出來(lái)的?
5、常用哪些開(kāi)源庫(kù),有沒(méi)有研究過(guò)他們的原理?
6、如何保持個(gè)人成長(zhǎng)?
流程型問(wèn)題
流程性問(wèn)題基本都會(huì)包含下面四個(gè),最好提前準(zhǔn)備好
1、請(qǐng)做下自我介紹。
2、你有什么問(wèn)題要問(wèn)我的嗎?
3、為什么離職?
4、對(duì)下份工作的期望是什么樣的?
這些問(wèn)題看似不起眼,但其實(shí)還挺重要的,很有可能面試官就是通過(guò)這幾個(gè)問(wèn)題決定了要不要你通過(guò)面試。
自我介紹就不說(shuō)了,簡(jiǎn)明扼要介紹自己近幾年的經(jīng)歷和成績(jī)就行,控制在一分鐘以?xún)?nèi)。
第二個(gè),最好不要直接說(shuō)沒(méi)有問(wèn)題了,提問(wèn)面試官是我們整個(gè)面試過(guò)程中少有的掌握主動(dòng)權(quán)的時(shí)刻,它可以體現(xiàn)我們自主思考的能力。最好提前了解下公司和招聘需求,準(zhǔn)備幾個(gè)問(wèn)題,或者面試過(guò)程中提出我們產(chǎn)生的一些疑問(wèn)。
離職原因,這個(gè)如實(shí)回答即可,只要不說(shuō)是因?yàn)殄X(qián)或者跟領(lǐng)導(dǎo)同事不和基本都沒(méi)有問(wèn)題。
下份工作的期望,這個(gè)就看各自的需求吧。
總結(jié)
通過(guò)這些面試題,我們可以看出一些端倪。
1、面試官更喜歡“刨根問(wèn)底”,對(duì)著一個(gè)概念不斷的往深處延展,不斷深入的問(wèn)。這類(lèi)問(wèn)題會(huì)有很大的區(qū)分度,第一問(wèn)第二問(wèn)第三問(wèn)難度逐次提高,用于篩選不同的面試者。這也提醒我們某些知識(shí)點(diǎn)不光要知道原理,還要知道為什么這么設(shè)計(jì),這么設(shè)計(jì)的好處是什么。
2、問(wèn)題范圍更全面化,特別是二面時(shí),問(wèn)題不再局限于iOS端,而是更通用的計(jì)算機(jī)方向問(wèn)題,這個(gè)需要我們平常多積累;還有就是開(kāi)始重視個(gè)人軟技能,學(xué)習(xí)能力和上進(jìn)心。
3、圍繞簡(jiǎn)歷,還記得上面說(shuō)過(guò)寫(xiě)簡(jiǎn)歷時(shí)要吹牛逼嗎。在面試的時(shí)候一定要把他們成為自己真正掌握的知識(shí)。
4、注重軟技能,這個(gè)比前面幾條作用稍微小些,但是如果被問(wèn)到了,而我們也有很好的貼合點(diǎn),那絕對(duì)就是加分項(xiàng)。我的一次經(jīng)歷是,當(dāng)我向面試官說(shuō)自己有寫(xiě)博客的習(xí)慣,他問(wèn)我是否知道m(xù)edium,我說(shuō)知道,還翻譯過(guò)幾篇里面的文章,接著說(shuō)了些我理解的國(guó)內(nèi)外博客平臺(tái)的現(xiàn)狀分析。這種情況就屬于加分項(xiàng)了。
另外面試是一次考察自己知識(shí)掌握程度的考核,考的好能提升自己自信心,考的不好可以幫助我們定位自身問(wèn)題,不管怎么說(shuō)都是不虧的。面試還可以幫助我們了解市場(chǎng)行情,薪資待遇,自身競(jìng)爭(zhēng)力,流行技術(shù)棧等一系列情況。所以真的建議即使不考慮換工作,每年固定時(shí)間也可以出去面試幾次。
文章到這里就結(jié)束了,你也可以私信我及時(shí)獲取最新資料以及面試相關(guān)資料。如果你有什么意見(jiàn)和建議歡迎給我留言。