前言
對過去的兩三年做個總結(jié)毛嫉,或許能幫助到些人,或者從中能得一些建議川无。這次出去面試主要是兩個星期的時間呛占,第一個星期主要是投簡歷,第二個星期主要是面試舀透,一天安排了2-3個面試栓票。
一、如何準備面試呢愕够?面試的注意事項有哪些呢走贪?
下面是我總結(jié)的一些準備面試的Tips以及面試必備的注意事項:
1.準備一份自己的自我介紹,面試的時候根據(jù)面試對象適當進行修改(突出重點惑芭,突出自己的優(yōu)勢在哪里坠狡,切忌流水賬);
2.注意隨身帶上自己的成績單和簡歷復(fù)印件遂跟;(有的公司在面試前都會讓你交一份成績單和簡歷當做面試中的參考逃沿。)
3.如果需要筆試就提前刷一些筆試題,大部分在線筆試的類型是選擇題+編程題幻锁,有的還會有簡答題凯亮。(平時空閑時間多的可以刷一下筆試題目(牛客網(wǎng)上有很多)哄尔,但是不要只刷面試題假消,不動手code,程序員不是為了考試而存在的岭接。)另外富拗,注意抓重點,因為題目太多了鸣戴,但是有很多題目幾乎次次遇到啃沪,像這樣的題目一定要搞定。
4.提前準備技術(shù)面試窄锅。 搞清楚自己面試中可能涉及哪些知識點创千、那些知識點是重點。面試中哪些問題會被經(jīng)常問到酬滤、自己改如何回答签餐。(強烈不推薦背題)
第一: 通過背這種方式你能記住多少?能記住多久盯串?
第二: 背題的方式的學(xué)習(xí)很難堅持下去氯檐!
5.面試之前做好定向復(fù)習(xí)。 也就是專門針對你要面試的公司來復(fù)習(xí)体捏。比如你在面試之前可以在網(wǎng)上找找有沒有你要面試的公司的面經(jīng)冠摄。
6.準備好自己的項目介紹糯崎。 如果有項目的話,技術(shù)面試第一步河泳,面試官一般都是讓你自己介紹一下你的項目沃呢。你可以從下面幾個方向來考慮:
①對項目整體設(shè)計的一個感受(面試官可能會讓你畫系統(tǒng)的架構(gòu)圖;
②在這個項目中你負責了什么拆挥、做了什么薄霜、擔任了什么角色;
③ 從這個項目中你學(xué)會了那些東西纸兔,使用到了那些技術(shù)惰瓜,學(xué)會了那些新技術(shù)的使用;
④項目描述中汉矿,最好可以體現(xiàn)自己的綜合素質(zhì)崎坊,比如你是如何協(xié)調(diào)項目組成員協(xié)同開發(fā)的或者在遇到某一個棘手的問題的時候你是如何解決的又或者說你在這個項目用了什么技術(shù)實現(xiàn)了什么功能
提前知道有哪些技術(shù)問題常問: iOS底層原理、熱修復(fù)洲拇,算法題等等問題我覺得面試中實在太常見了奈揍,好好準備!后面的文章會我會分類詳細介紹到那些問題最常問赋续。
提前熟悉一些常問的非技術(shù)問題: 面試的時候有一些常見的非技術(shù)問題比如“面試官問你的優(yōu)點是什么男翰,應(yīng)該如何回答?”、“面試官問你的缺點是什么纽乱,應(yīng)該如何回答?”奏篙、“如果面試官問"你有什么問題問我嗎?"時,你該如何回答”等等,對于這些問題迫淹,如何回答自己心里要有個數(shù),別面試的時候出了亂子为严。
6.面試之后記得復(fù)盤敛熬。 面試遭遇失敗是很正常的事情,所以善于總結(jié)自己的失敗原因才是最重要的第股。如果失敗应民,不要灰心;如果通過夕吻,切勿狂喜诲锹。
二、面試主要印象比較深的知識點:
kvo的實現(xiàn)原理
消息調(diào)用的過程
get和post的區(qū)別
http有哪些部分
tcp和udp的區(qū)別
消息轉(zhuǎn)發(fā)機制
線程死鎖的四個條件
進程和線程的區(qū)別
1.介紹一下你的項目涉馅,任務(wù)分工,做了哪些工作归园?介紹內(nèi)容
2、網(wǎng)絡(luò)相關(guān)的:項目里面使用到什么網(wǎng)絡(luò)庫稚矿,用過ASIHTTP庫嗎
3庸诱、斷點續(xù)傳怎么實現(xiàn)捻浦?需要設(shè)置什么?
4.為什么要使用HTTP桥爽?朱灿??為什么不直接用TCP
5.MVVM如何實現(xiàn)綁定
6.block和通知的區(qū)別钠四,分別適用什么場景
7盗扒、算法。連續(xù)問了好幾個缀去,都是數(shù)組侣灶,層層遞進的,但是我忘了朵耕,只記得最后是找出數(shù)組中重復(fù)的數(shù)字
8炫隶、如何hook一個對象的方法,而不影響其它對象阎曹?
9伪阶、項目里面遇到過死鎖嗎?怎么解決处嫌?數(shù)據(jù)庫訪問本來就是線程安全的栅贴,不會造成死鎖啊。什么是死鎖熏迹?
10檐薯、GCD和NSOperation的區(qū)別?
11注暗、HTTP請求的哪些方法用過坛缕?什么時候選擇get、post捆昏、put赚楚?
12、線程同步的方式
13骗卜、block和通知的區(qū)別宠页,分別適用什么場景
14、把一個鏈表比某個值大的放在左邊寇仓,比它小的放在右邊
以上的面試題举户,主要是iOS底層原理和算法和應(yīng)用知識,需要面試之前造造火箭的遍烦,還需要平時的耕耘俭嘁、積累和總結(jié)。
三乳愉、真題(附答案)
1兄淫、1屯远、如何令自己所寫的對象具有拷貝功能?
如果想讓自己的類具備copy方法,并返回不可邊類型捕虽,必須遵循nscopying協(xié)議慨丐,并
且實現(xiàn)
- (id)copyWithZone:(NSZone *)zone
如果讓??的類具備mutableCopy方法,并且放回可變類型泄私,必須遵守
NSMutableCopying房揭,并實現(xiàn)- (id)mutableCopyWithZone:(nullable NSZone *)zone
注意:再此說的copy對應(yīng)不可邊類型和mutableCopy對應(yīng)不可邊類型?法,都是遵從
系統(tǒng)規(guī)則?已晌端。如果你想實現(xiàn)自己的規(guī)則捅暴,也是可以的。
1咧纠、 2蓬痒、iOS 中的多線程?
iOS中的多線程漆羔,是Cocoa框架下的多線程梧奢,通過Cocoa的封裝,可以讓我們更為方
便的使?線程演痒,做過C++的同學(xué)可能會對線程有更多的理解亲轨,比如線程的創(chuàng)立,信號
量鸟顺、共享變量有認識惦蚊,Cocoa框架下會方便很多,它對線程做了封裝讯嫂,有些封裝蹦锋,可
以讓我們創(chuàng)建的對象,本身便擁有線程欧芽,也就是線程的對象化抽象晕粪,從而減少我們的
工程,提供程序的健壯性渐裸。
- GCD是(Grand Central Dispatch)的縮寫 ,從系統(tǒng)級別提供的?個易?地多線程類
庫装悲,具有運?時的特點昏鹃,能充分利?多核?硬件。GCD的API接?為C語?的函數(shù)诀诊,函
數(shù)參數(shù)中多數(shù)有Block洞渤,關(guān)于Block的使用參看這?,為我們提供強?的“接?”属瓣,對于
GCD的使?參?本? - NSOperation與Queue
NSOperation是一個抽象類载迄,它封裝了線程的細節(jié)實現(xiàn)讯柔,我們可以通過子類化該對
象,加上NSQueue來同?向?qū)ο蟮乃季S护昧,管理多線程程序魂迄。具體可參看這個:一個基
于NSOperation的多線程網(wǎng)絡(luò)訪問的項目。 - NSThread
NSThread是?個控制線程執(zhí)行的對象惋耙,它不如NSOperation抽象捣炬,通過它我們可以?
便的得到一個線程,并控制它绽榛。但NSThread的線程之間的并發(fā)控制湿酸,是需要我們?自己
來控制的,可以通過NSCondition實現(xiàn)灭美。
參看 iOS多線程編程之NSThread的使用
1推溃、 3、內(nèi)存管理的幾條原則時什么届腐?按照默認法則.那些關(guān)鍵字生成的對象?
需要手動釋放铁坎?在和property結(jié)合的時候怎樣有效的避免內(nèi)存泄露?
誰申請梯捕,誰釋放
遵循Cocoa Touch的使用原則厢呵;
內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”,對于“過早釋放”需要注意@property
設(shè)置特性時傀顾,?定要?對特性關(guān)鍵字襟铭,對于“內(nèi)存泄漏”,一定要申請了要負責釋放短曾,
要細心寒砖。
關(guān)鍵字alloc 或new 生成的對象需要手動釋放;
設(shè)置正確的property屬性嫉拐,對于retain需要在合適的地方釋放
以下文章可以做一個學(xué)習(xí)參考:
GCD面試要點
block面試要點
Runtime面試要點
RunLoop面試要點
內(nèi)存管理面試要點
MVC哩都、MVVM面試要點
網(wǎng)絡(luò)性能優(yōu)化面試要點
網(wǎng)絡(luò)編程面試要點
KVC&KVO面試要點
數(shù)據(jù)存儲面試要點
混編技術(shù)面試要點
設(shè)計模式面試要點
UI面試要點