前言
對(duì)過去的兩三年做個(gè)總結(jié),或許能幫助到些人,或者從中能得一些建議。這次出去面試主要是兩個(gè)星期的時(shí)間,第一個(gè)星期主要是投簡(jiǎn)歷,第二個(gè)星期主要是面試,一天安排了2-3個(gè)面試。
一、如何準(zhǔn)備面試呢?面試的注意事項(xiàng)有哪些呢?

下面是我總結(jié)的一些準(zhǔn)備面試的Tips以及面試必備的注意事項(xiàng):
1.準(zhǔn)備一份自己的自我介紹,面試的時(shí)候根據(jù)面試對(duì)象適當(dāng)進(jìn)行修改(突出重點(diǎn),突出自己的優(yōu)勢(shì)在哪里,切忌流水賬);
2.注意隨身帶上自己的成績(jī)單和簡(jiǎn)歷復(fù)印件;(有的公司在面試前都會(huì)讓你交一份成績(jī)單和簡(jiǎn)歷當(dāng)做面試中的參考。)
3.如果需要筆試就提前刷一些筆試題,大部分在線筆試的類型是選擇題+編程題,有的還會(huì)有簡(jiǎn)答題。(平時(shí)空閑時(shí)間多的可以刷一下筆試題目(牛客網(wǎng)上有很多),但是不要只刷面試題,不動(dòng)手code,程序員不是為了考試而存在的。)另外,注意抓重點(diǎn),因?yàn)轭}目太多了,但是有很多題目幾乎次次遇到,像這樣的題目一定要搞定。
4.提前準(zhǔn)備技術(shù)面試。 搞清楚自己面試中可能涉及哪些知識(shí)點(diǎn)、那些知識(shí)點(diǎn)是重點(diǎn)。面試中哪些問題會(huì)被經(jīng)常問到、自己改如何回答。(強(qiáng)烈不推薦背題)
第一: 通過背這種方式你能記住多少?能記住多久?
第二: 背題的方式的學(xué)習(xí)很難堅(jiān)持下去!
5.面試之前做好定向復(fù)習(xí)。 也就是專門針對(duì)你要面試的公司來復(fù)習(xí)。比如你在面試之前可以在網(wǎng)上找找有沒有你要面試的公司的面經(jīng)。
6.準(zhǔn)備好自己的項(xiàng)目介紹。 如果有項(xiàng)目的話,技術(shù)面試第一步,面試官一般都是讓你自己介紹一下你的項(xiàng)目。你可以從下面幾個(gè)方向來考慮:
①對(duì)項(xiàng)目整體設(shè)計(jì)的一個(gè)感受(面試官可能會(huì)讓你畫系統(tǒng)的架構(gòu)圖;
②在這個(gè)項(xiàng)目中你負(fù)責(zé)了什么、做了什么、擔(dān)任了什么角色;
③ 從這個(gè)項(xiàng)目中你學(xué)會(huì)了那些東西,使用到了那些技術(shù),學(xué)會(huì)了那些新技術(shù)的使用;
④項(xiàng)目描述中,最好可以體現(xiàn)自己的綜合素質(zhì),比如你是如何協(xié)調(diào)項(xiàng)目組成員協(xié)同開發(fā)的或者在遇到某一個(gè)棘手的問題的時(shí)候你是如何解決的又或者說你在這個(gè)項(xiàng)目用了什么技術(shù)實(shí)現(xiàn)了什么功能
提前知道有哪些技術(shù)問題常問: iOS底層原理、熱修復(fù),算法題等等問題我覺得面試中實(shí)在太常見了,好好準(zhǔn)備!后面的文章會(huì)我會(huì)分類詳細(xì)介紹到那些問題最常問。
提前熟悉一些常問的非技術(shù)問題: 面試的時(shí)候有一些常見的非技術(shù)問題比如“面試官問你的優(yōu)點(diǎn)是什么,應(yīng)該如何回答?”、“面試官問你的缺點(diǎn)是什么,應(yīng)該如何回答?”、“如果面試官問"你有什么問題問我嗎?"時(shí),你該如何回答”等等,對(duì)于這些問題,如何回答自己心里要有個(gè)數(shù),別面試的時(shí)候出了亂子。
6.面試之后記得復(fù)盤。 面試遭遇失敗是很正常的事情,所以善于總結(jié)自己的失敗原因才是最重要的。如果失敗,不要灰心;如果通過,切勿狂喜。
二、面試主要印象比較深的知識(shí)點(diǎn):

kvo的實(shí)現(xiàn)原理
消息調(diào)用的過程
get和post的區(qū)別
http有哪些部分
tcp和udp的區(qū)別
消息轉(zhuǎn)發(fā)機(jī)制
線程死鎖的四個(gè)條件
進(jìn)程和線程的區(qū)別
1.介紹一下你的項(xiàng)目,任務(wù)分工,做了哪些工作?介紹內(nèi)容
2、網(wǎng)絡(luò)相關(guān)的:項(xiàng)目里面使用到什么網(wǎng)絡(luò)庫(kù),用過ASIHTTP庫(kù)嗎
3、斷點(diǎn)續(xù)傳怎么實(shí)現(xiàn)?需要設(shè)置什么?
4.為什么要使用HTTP???為什么不直接用TCP
5.MVVM如何實(shí)現(xiàn)綁定
6.block和通知的區(qū)別,分別適用什么場(chǎng)景
7、算法。連續(xù)問了好幾個(gè),都是數(shù)組,層層遞進(jìn)的,但是我忘了,只記得最后是找出數(shù)組中重復(fù)的數(shù)字
8、如何hook一個(gè)對(duì)象的方法,而不影響其它對(duì)象?
9、項(xiàng)目里面遇到過死鎖嗎?怎么解決?數(shù)據(jù)庫(kù)訪問本來就是線程安全的,不會(huì)造成死鎖啊。什么是死鎖?
10、GCD和NSOperation的區(qū)別?
11、HTTP請(qǐng)求的哪些方法用過?什么時(shí)候選擇get、post、put?
12、線程同步的方式
13、block和通知的區(qū)別,分別適用什么場(chǎng)景
14、把一個(gè)鏈表比某個(gè)值大的放在左邊,比它小的放在右邊
以上的面試題,主要是iOS底層原理和算法和應(yīng)用知識(shí),需要面試之前造造火箭的,還需要平時(shí)的耕耘、積累和總結(jié)。
三、真題(附答案)

1、1、如何令自己所寫的對(duì)象具有拷貝功能?
如果想讓自己的類具備copy方法,并返回不可邊類型,必須遵循nscopying協(xié)議,并
且實(shí)現(xiàn)
- (id)copyWithZone:(NSZone *)zone
如果讓??的類具備mutableCopy方法,并且放回可變類型,必須遵守
NSMutableCopying,并實(shí)現(xiàn)- (id)mutableCopyWithZone:(nullable NSZone *)zone
注意:再此說的copy對(duì)應(yīng)不可邊類型和mutableCopy對(duì)應(yīng)不可邊類型?法,都是遵從
系統(tǒng)規(guī)則?已。如果你想實(shí)現(xiàn)自己的規(guī)則,也是可以的。
1、 2、iOS 中的多線程?
iOS中的多線程,是Cocoa框架下的多線程,通過Cocoa的封裝,可以讓我們更為方
便的使?線程,做過C++的同學(xué)可能會(huì)對(duì)線程有更多的理解,比如線程的創(chuàng)立,信號(hào)
量、共享變量有認(rèn)識(shí),Cocoa框架下會(huì)方便很多,它對(duì)線程做了封裝,有些封裝,可
以讓我們創(chuàng)建的對(duì)象,本身便擁有線程,也就是線程的對(duì)象化抽象,從而減少我們的
工程,提供程序的健壯性。
- GCD是(Grand Central Dispatch)的縮寫 ,從系統(tǒng)級(jí)別提供的?個(gè)易?地多線程類
庫(kù),具有運(yùn)?時(shí)的特點(diǎn),能充分利?多核?硬件。GCD的API接?為C語(yǔ)?的函數(shù),函
數(shù)參數(shù)中多數(shù)有Block,關(guān)于Block的使用參看這?,為我們提供強(qiáng)?的“接?”,對(duì)于
GCD的使?參?本? - NSOperation與Queue
NSOperation是一個(gè)抽象類,它封裝了線程的細(xì)節(jié)實(shí)現(xiàn),我們可以通過子類化該對(duì)
象,加上NSQueue來同?向?qū)ο蟮乃季S,管理多線程程序。具體可參看這個(gè):一個(gè)基
于NSOperation的多線程網(wǎng)絡(luò)訪問的項(xiàng)目。 - NSThread
NSThread是?個(gè)控制線程執(zhí)行的對(duì)象,它不如NSOperation抽象,通過它我們可以?
便的得到一個(gè)線程,并控制它。但NSThread的線程之間的并發(fā)控制,是需要我們?自己
來控制的,可以通過NSCondition實(shí)現(xiàn)。
參看 iOS多線程編程之NSThread的使用
1、 3、內(nèi)存管理的幾條原則時(shí)什么?按照默認(rèn)法則.那些關(guān)鍵字生成的對(duì)象?
需要手動(dòng)釋放?在和property結(jié)合的時(shí)候怎樣有效的避免內(nèi)存泄露?
誰(shuí)申請(qǐng),誰(shuí)釋放
遵循Cocoa Touch的使用原則;
內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”,對(duì)于“過早釋放”需要注意@property
設(shè)置特性時(shí),?定要?對(duì)特性關(guān)鍵字,對(duì)于“內(nèi)存泄漏”,一定要申請(qǐng)了要負(fù)責(zé)釋放,
要細(xì)心。
關(guān)鍵字alloc 或new 生成的對(duì)象需要手動(dòng)釋放;
設(shè)置正確的property屬性,對(duì)于retain需要在合適的地方釋放
更多面試題
........純手打字 有完整的150道面試題文檔需要可以點(diǎn)擊下方
最后本人自己整理的一些面試進(jìn)階資料,有iOS底層視頻+BAT面試專題PDF+核心筆記等資料+2020年《大廠最新常問iOS面試題+答案》。希望能夠幫助到大家提升技術(shù)。
如果大家想要獲取的話,可以簡(jiǎn)信我【666】或者點(diǎn)擊【社區(qū)】查看直接獲取哦~
喜歡本文的話,不妨順手給我點(diǎn)個(gè)小贊、評(píng)論區(qū)留言或者轉(zhuǎn)發(fā)支持一下唄~
面試資料展示一小部分目錄:
