推薦閱讀:iOS開發(fā)——BAT面試題合集(持續(xù)更新中)
從篩選第一份簡歷,準(zhǔn)備面試題,到成功招到兩個(gè)人一共花了兩個(gè)星期多一點(diǎn),總體來說還是比較順利的。兩位通過者都比較穩(wěn)重踏實(shí)险污,而且對(duì)技術(shù)也比較有追求。這也可能和我篩選簡歷比較謹(jǐn)慎有關(guān)系富岳,這次篩選簡歷所花費(fèi)的精力是不比面試花費(fèi)的少的蛔糯。
雖然時(shí)間跨度不是很長,但是畢竟是第一次窖式,所以有些感觸蚁飒,想總結(jié)出來分享給大家。這篇總結(jié)分為兩個(gè)部分:
第一部分是我當(dāng)時(shí)準(zhǔn)備的面試題
第二部分是我的心得
我重點(diǎn)在本文的第二部分說一下這次面試別人的心得體會(huì)萝喘。而關(guān)于第一部分的面試題淮逻,文中不提供答案(因?yàn)椴皇潜疚牡闹攸c(diǎn))
第一部分:面試題
注意琼懊,下面這些題只是我準(zhǔn)備的題庫。在實(shí)際面試的時(shí)候我會(huì)根據(jù)面試者的水平抽出相應(yīng)的題目來出的爬早。
技術(shù)基礎(chǔ)
1哼丈、我們說的Objective-C是動(dòng)態(tài)運(yùn)行時(shí)語言是什么意思?
2筛严、講一下MVC和MVVM醉旦,MVP?
3桨啃、為什么代理要用weak车胡?代理的delegate和dataSource有什么區(qū)別?block和代理的區(qū)別?
4照瘾、屬性的實(shí)質(zhì)是什么匈棘?包括哪幾個(gè)部分?屬性默認(rèn)的關(guān)鍵字都有哪些析命?@dynamic關(guān)鍵字和@synthesize關(guān)鍵字是用來做什么的主卫?
5、屬性的默認(rèn)關(guān)鍵字是什么鹃愤?
6队秩、NSString為什么要用copy關(guān)鍵字,如果用strong會(huì)有什么問題昼浦?(注意:這里沒有說用strong就一定不行。使用copy和strong是看情況而定的)
7筒主、如何令自己所寫的對(duì)象具有拷貝功能?
8关噪、簡述kvo、kvc乌妙、Delegate他們之間的區(qū)別使兔?
9、include與#import的區(qū)別藤韵?#import與@class的區(qū)別虐沥?
10、nonatomic和atomic的區(qū)別泽艘?atomic是絕對(duì)的線程安全么欲险?為什么?如果不是匹涮,那應(yīng)該如何實(shí)現(xiàn)天试?
11、Objective-C與C然低、C+++之間的聯(lián)系和區(qū)別喜每?
12务唐、UICollectionView自定義layout如何實(shí)現(xiàn)?
13带兜、進(jìn)程和線程的區(qū)別枫笛?同步異步的區(qū)別?并行和并發(fā)的區(qū)別刚照?
14刑巧、線程間通信?
15涩咖、GCD的一些常用的函數(shù)海诲?(group,barrier檩互,信號(hào)量特幔,線程同步)
16、如何訪問并修改一個(gè)類的私有屬性闸昨?
17蚯斯、數(shù)據(jù)持久化的幾個(gè)方案(fmdb用沒用過)
18、說一下AppDelegate的幾個(gè)方法饵较?從后臺(tái)到前臺(tái)調(diào)用了哪些方法拍嵌?第一次啟動(dòng)調(diào)用了哪些方法?從前臺(tái)到后臺(tái)調(diào)用了哪些方法循诉?
19横辆、NSCache優(yōu)于NSDictionary的幾點(diǎn)?
20茄猫、知不知道Designated Initializer狈蚤?使用它的時(shí)候有什么需要注意的問題?
21划纽、實(shí)現(xiàn)description方法能取到什么效果脆侮?
22、objc使用什么機(jī)制管理對(duì)象內(nèi)存勇劣?
中級(jí)Block
1靖避、block的實(shí)質(zhì)是什么?一共有幾種block比默?都是什么情況下生成的幻捏?
2、使用系統(tǒng)的某些block api命咐,是否考慮引用循環(huán)問題粘咖?
3、談?wù)刡lock的理解侈百?并寫出一個(gè)使用block執(zhí)行UIVew動(dòng)畫瓮下?
Runtime
1翰铡、runtime如何實(shí)現(xiàn)weak屬性?
2讽坏、runtime如何通過selector找到對(duì)應(yīng)的IMP地址锭魔?
3、能否向編譯后得到的類中增加實(shí)例變量路呜?能否向運(yùn)行時(shí)創(chuàng)建的類中添加實(shí)例變量迷捧?為什么?
4胀葱、runtime如何實(shí)現(xiàn)weak變量的自動(dòng)置nil漠秋?
5、在開發(fā)中如何使用runtime抵屿?什么應(yīng)用場景庆锦?
類結(jié)構(gòu)
1、isa指針轧葛?(對(duì)象的isa搂抒,類對(duì)象的isa,元類的isa都要說)
2尿扯、類方法和實(shí)例方法有什么區(qū)別求晶?
3、介紹一下分類衷笋,能用分類做什么芳杏?內(nèi)部是如何實(shí)現(xiàn)的?它為什么會(huì)覆蓋掉原來的方法辟宗?
4蚜锨、運(yùn)行時(shí)能增加成員變量么?能增加屬性么慢蜓?如果能,如何增加郭膛?如果不能晨抡,為什么?
5则剃、objc中向一個(gè)nil對(duì)象發(fā)送消息將會(huì)發(fā)生什么耘柱?(返回值是對(duì)象,是標(biāo)量棍现,結(jié)構(gòu)體)
高級(jí)
1调煎、UITableview的優(yōu)化方法(緩存高度,異步繪制己肮,減少層級(jí)士袄,hide悲关,避免離屏渲染)
2、有沒有用過運(yùn)行時(shí)娄柳,用它都能做什么寓辱?(交換方法,創(chuàng)建類赤拒,給新創(chuàng)建的類增加方法秫筏,改變isa指針)
3、看過哪些第三方框架的源碼挎挖?都是如何實(shí)現(xiàn)的这敬?(如果沒有,問一下多圖下載的設(shè)計(jì))
4蕉朵、SDWebImage的緩存策略崔涂?
5、AFN為什么添加一條常駐線程墓造?
6堪伍、KVO的使用?實(shí)現(xiàn)原理觅闽?(為什么要?jiǎng)?chuàng)建子類來實(shí)現(xiàn))
7帝雇、KVC的使用?實(shí)現(xiàn)原理蛉拙?(KVC拿到key以后尸闸,是如何賦值的?知不知道集合操作符孕锄,能不能訪問私有屬性吮廉,能不能直接訪問_ivar)
項(xiàng)目
1、有已經(jīng)上線的項(xiàng)目么畸肆?
2宦芦、項(xiàng)目里哪個(gè)部分是你個(gè)人獨(dú)自完成的?(找一個(gè)亮點(diǎn)問一下如何實(shí)現(xiàn)的效果)
3轴脐、開發(fā)過程中遇到過什么困難调卑,是如何解決的?
學(xué)習(xí)
1大咱、遇到一個(gè)問題完全不能理解的時(shí)候恬涧,是如何幫助自己理解的?舉個(gè)例子碴巾?
2溯捆、有看書的習(xí)慣么?最近看的一本是什么書厦瓢?有什么心得提揍?
3啤月、有沒有使用一些筆記軟件?會(huì)在多平臺(tái)同步以及多渠道采集么碳锈?(如果沒有顽冶,問一下是如何復(fù)習(xí)知識(shí)的)
4、有沒有使用清單類售碳,日歷類的軟件强重?(如果沒有,問一下是如何安排贸人,計(jì)劃任務(wù)的)
5间景、平常看博客么艺智?有沒有自己寫過倘要?(如果寫,有哪些收獲十拣?如果沒有寫封拧,問一下不寫的原因)
6、有關(guān)技術(shù)類的問題可以在評(píng)論區(qū)留言夭问,我重點(diǎn)說一下這輪面試的心得和體會(huì)泽西。
第二部分:心得
A、面試者千萬不要答非所問
如果讓我選一個(gè)讓面試官覺得印象減分的點(diǎn)缰趋,答非所問應(yīng)該是首當(dāng)其沖的捧杉。
B、面試者一定要知道面試官問的點(diǎn)是什么秘血。
如果在知道面試官問的點(diǎn)味抖,但是自己卻不知道答案的時(shí)候,可以提出思路灰粮,思考過程仔涩。其實(shí)有幾次面試者在我的引導(dǎo)下很容易就把答案說出來了,認(rèn)清問題的點(diǎn)是解決問題的一半粘舟。
如果沒有理解好面試官問的問題熔脂,一定要事先和面試官確認(rèn)好。
其實(shí)這也屬于溝通能力的一點(diǎn):如果不能保證和對(duì)方溝通內(nèi)容的一致性蓖乘,自己弄個(gè)filter把對(duì)方的話都曲解了,以后合作的時(shí)候又怎能保證溝通好呢韧骗?
C嘉抒、面試者一定不要來得太早
這里說的來得太早,是來得太早并告知面試官自己已經(jīng)來了袍暴。
因?yàn)樵诩s定好的面試時(shí)間之前些侍,往往面試官還有別的事情在做隶症,如果他知道你來的很早,就可能會(huì)擾亂他的計(jì)劃岗宣。有一位面試者早來了1個(gè)小時(shí)蚂会,結(jié)果把我們的面試計(jì)劃打亂了,而且正好是我的第一次面試耗式,所以真的是有點(diǎn)措手不及胁住。
求職者和公司定下來的時(shí)間屬于一個(gè)約定,約定是要遵守的刊咳。而且遵守約定同樣也是對(duì)對(duì)方的尊重彪见。如果入職之前都沒能把握好,入職之后又如何能保證把握好呢娱挨?
D余指、實(shí)踐與理論的脫節(jié),讓人很不安
能做出來項(xiàng)目跷坝,但是基礎(chǔ)知識(shí)很薄弱
幾乎每位面試者都能給我展示他做的一些app酵镜,雖然沒有很難的功能,但也都算是有板有眼柴钻』淳拢可讓我比較意外的是,雖然能做出有模有樣的app顿颅,但當(dāng)我問到很多基礎(chǔ)的問題的時(shí)候卻答不上來缸濒,比如屬性和成員變量的區(qū)別,屬性的默認(rèn)關(guān)鍵字粱腻,Designated Initializer的概念等等庇配。。
這不禁讓我懷疑他們的代碼的穩(wěn)定性绍些,更懷疑他們治學(xué)捞慌,做技術(shù)的態(tài)度。
雖說技術(shù)活需要實(shí)踐的磨練柬批,但和理論脫節(jié)的技術(shù)是鉆不深的啸澡。可能有人會(huì)說我的面試題過于理論氮帐,實(shí)際中用不到嗅虏。但有些時(shí)候,在實(shí)際開發(fā)中遇到的一些問題往往就是因?yàn)橐恍┖芑镜臇|西沒有弄清導(dǎo)致的上沐,相信你我都深有體會(huì)皮服。
而且,我們都知道技術(shù)的提升是階梯式的。什么是階梯式的呢龄广?就是可能我們會(huì)有比較長的時(shí)間才會(huì)有一個(gè)突破硫眯。但這個(gè)突破來的有多快,提升的有多高择同,是跟平時(shí)每個(gè)細(xì)小知識(shí)點(diǎn)的掌握程度是分不開的两入。
因?yàn)橹R(shí)也是有復(fù)利效應(yīng)的,準(zhǔn)確地掌握越多的知識(shí)點(diǎn)敲才,在以后的學(xué)習(xí)過程中裹纳,這些知識(shí)點(diǎn)相互之間想成的積極作用會(huì)越來越大:對(duì)新知識(shí)的理解更快,對(duì)問題的定位會(huì)更準(zhǔn)归斤,解決問題的方法也會(huì)越多痊夭。相反,如果你每個(gè)問題都得過且過脏里,這些結(jié)果的復(fù)合作用就會(huì)導(dǎo)致你今后很難會(huì)有所突破了她我。
E、真的可能被簡歷騙到
上家的薪資很高迫横,但是實(shí)際能力很不符
有一位面試者在簡歷里號(hào)稱上一個(gè)工作拿了15k番舆,但當(dāng)我問到NSString屬性使用strong還是copy作為關(guān)鍵字的時(shí)候他卻說是strong,甚至連delegate都拿不準(zhǔn)使用strong還是weak矾踱,我就有些奇怪了恨狈。
看技術(shù)博客和技術(shù)書籍的人還是很少的
只依賴于公司里的項(xiàng)目應(yīng)該是不夠的,畢竟不是每個(gè)公司里都有上乘的代碼和技術(shù)
面試了大概20個(gè)人呛讲,但是真正有看過技術(shù)博客和技術(shù)書籍的真的不多禾怠,更別提Github了。不過其中一位面試通過者是有g(shù)ithub賬號(hào)的贝搁,并且有幾個(gè)小項(xiàng)目吗氏,印象非常好,加了不少分雷逆。
我相信在這一行的未來弦讽, 簡歷里面github賬號(hào)和博客絕對(duì)會(huì)越來越受重視 :
1、一方面簡歷真的是應(yīng)接不暇膀哲,而且同時(shí)千篇一律往产,很難找出亮點(diǎn)。
2某宪、另一方面仿村,如果可以把自己的代碼和成長展示給招聘公司,就會(huì)使得自己的能力在公司面前變得更加純粹和透明兴喂,更有助于找到適合你自己的公司蔼囊。
喜歡的話可以點(diǎn)個(gè)贊+1或關(guān)注多多支持哦包颁!
另外小編給大家推薦一個(gè)iOS技術(shù)交流群:638302184!群內(nèi)提供數(shù)據(jù)結(jié)構(gòu)與算法压真、底層進(jìn)階、swift蘑险、逆向滴肿、整合面試題等免費(fèi)資料
外加附上一份收集的各大廠面試題(附答案) ! 群文件直接獲取
各大廠面試題
文章來源網(wǎng)絡(luò) 如有侵權(quán)請(qǐng)聯(lián)系小編刪除