iOS 開發(fā)大廠面試通關指南:67 個必知問題术吗!

前言:

我們都知道,面試可能會讓人感到壓力山大——不管你是第一次參加面試的新手帆精,還是已經有幾年開發(fā)經驗做背書的業(yè)內人士较屿,面試都會帶來壓力。

作為一名面試者卓练,你必須好好準備隘蝎,以展現出自己最好的一面,而想要在一場1小時左右的談話中做到這一點是很困難的昆庇。作為開發(fā)人員末贾,我們通常不情愿去用心學習文檔闸溃,甚至很多簡單的東西還需要臨時去Google搜索整吆。這沒關系拱撵,沒人會要求我們記住一切知識點……但如果是面試的話那就不一樣了。

作為一名面試官表蝙,面試可能也不是那么簡單的拴测。你想為公司招募一個非常適合你們團隊的人,但你沒有太多時間去了解對方府蛇。你必須知道應該問哪些問題集索,以及注意自己舉止的方式——你不想讓面試者感到不舒服,否則你可能會因此而做出一些錯誤的判斷汇跨,從而錯過一個優(yōu)秀的開發(fā)者务荆。

差不多雙方都需要為面試做準備,我希望這篇文章能夠幫你在將來的面試中準備地更加充分一些穷遂。

問題

一條簡短的提示:我是不會提供這些問題的完整答案的(只有一些我個人預期你至少應該了解的基礎)函匕,因為我認為,如果你自己去尋找答案蚪黑,應該能準備得更好盅惜。閱讀有關特定主題的文章會是一個不錯的選擇,可以為你提供更多信息忌穿,從而助你在面試中發(fā)揮得更好抒寂。

不過,或早或晚掠剑,我很可能會在自己的博客中對所有內容進行講解屈芜。

如果你正在面試,或者正準備跳槽澡腾,不妨看看我精心總結的iOS大廠面試資料https://gitee.com/Mcci7/i-oser 來獲取一份詳細的大廠面試資料 為你的跳槽加薪多一份保障

一般性問題

iOS(或任何其他平臺)的面試不會只涉及技術問題的沸伏。盡管你會在簡歷上寫一些有關以前的工作和項目的信息,但空間有限动分,無法把所有細節(jié)展開講毅糟。為這類問題做一些準備——避免自己在面試時手足無措。

1.到目前為止澜公,你參與過哪些項目姆另?都用到了哪些技術?你就詳細講講某些有趣的項目坟乾,談談這些項目用的是什么技術和框架就可以迹辐。

2.你是否參與過開源項目?你在其中擔任什么角色甚侣?即使你只是某個開源項目的貢獻者明吩,這也會為你大大加分。如果你現在想得到第一份工作殷费,開源項目是一種能證明你技術的好方法印荔。如果你是某個廣受歡迎repo的維護者低葫,那就更好了。

3.你以前所在的團隊有多大仍律?你有過在任何一個項目中擔任leader的經歷嗎嘿悬?這個問題只是為了了解你過去是獨自工作,在一個較大的團隊中工作水泉,遠程協作善涨,還是僅與本地的開發(fā)者合作。

4.你知識儲備的來源是什么草则?平時會看一些博客或者播客(podcast)內容嗎钢拧?舉幾個例子吧。如果你平時確實看炕横,那就表明編程不僅是你的工作娶靡,還是你的一個業(yè)余愛好,所以相比其他不做這些事情的人看锉,你就是更好的人選姿锭。

5.你是否曾有過Scrum / Agile開發(fā)經歷?你是怎么看待這種開發(fā)方式的伯铣?在你看來呻此,什么時候該用,什么時候不該用腔寡?這只是一個簡短的問題焚鲜,是為了了解你是否懂得Scrum自有其適用的地方,但不必一直使用放前。

6.你對code review有何看法忿磅?這也是一個簡短的問題,用來測試你是否屬于看重code review的那一類人凭语。

7.你是否會去參加一些會議或一些當地的見面會葱她?這些活動中你最喜歡哪個?我認為這并不是什么嚴肅的問題——如果你不喜歡參加似扔,并不能代表你是一個糟糕的開發(fā)者吨些,你可能只是內向而已。但是炒辉,如果你可以在那種會議上為公司做宣傳豪墅,或者發(fā)表個演講的話,那公司是會很喜聞樂見的黔寇。

Swift和Objective-C

iOS開發(fā)并不僅僅意味著Swift偶器。很多項目的某些部分仍然在用Objective-C——甚至有的項目完全是用Objective-C編寫的。而且,在某些(不太常見)的情況下屏轰,C和C ++技能也可能會有用术裸。

但是,我倒不是很擔心這一點亭枷,因為如果面試針對某些特定的需要這些知識的項目,那么職位描述里面很有可能會提到搀崭。另外叨粘,一些有關Bash和Ruby的基礎知識可能會給你帶來巨大的優(yōu)勢,因為有時我們可能需要寫一些腳本瘤睹。

下面這些問題的順序是隨機的升敲。

8.你如何描述Swift這門語言?這是一種面向協議編程的類型安全語言轰传。然后對方可能會追問一些后續(xù)的問題驴党,可能會讓你進一步解釋“面向協議”的含義等等。

var和let有什么區(qū)別获茬?你會在struct中選擇哪個作為property港庄?為什么?第一個是非乘∏基礎的問題鹏氧,而第二個可能比較棘手,因為它需要視情況而定佩谣。

10.什么是lazy property把还?如果你寫Swift代碼已經有一段時間了,那至少要使用過一次lazy property茸俭,這樣才能更好地了解它的優(yōu)點和缺點吊履。

11.什么是optional?其背后的機制是什么调鬓?什么是unconditional unwrapping 艇炎?這個的答案你大概知道。

12.如何unwrap一個optional值腾窝?附加問題:什么是optional chaining冕臭,optional binding以及nil-coalescing operator?舉例說明你會在何種情況下選用哪種方法燕锥。這道題很簡單辜贵,但目的只在于看你是否知道其中的區(qū)別,而guard并不總是首選归形。

class和struct有什么區(qū)別托慨?舉例說明分別什么情況下應該選用。你可以深入講講這一點暇榴,例如厚棵,它們是如何保存在內存中的(棧/堆)等等蕉世。

14.什么是closure?這個你應該知道的吧婆硬?

15.weak和unowned是什么意思狠轻?二者有什么不同?最好知道它們之間的區(qū)別以及何時使用unowned彬犯。雖然你每次都用weak可能也ok向楼,但unowned也是自有其用途的。

16.舉例說明從標準庫進行收集操作的方法谐区。map和reduce各有什么作用湖蜕,以及這些方法如何在日常開發(fā)中發(fā)揮作用?

17.什么是autoclosure宋列?這可能看起來像是一個簡單的問題昭抒,但autoclosure的內容可能比你想象的要多——比如,它是如何影響性能的炼杖。

mutating關鍵字是什么意思灭返?舉一些例子說明一下。

19.escaping和unescaping分別是什么意思坤邪?這是個簡單的問題婆殿。但你還記得哪個是默認選項嗎?

20.(如果求職者會Objective-C):Swift和Objective-C有什么區(qū)別罩扇?你分別喜歡這兩種語言的什么特性婆芦?隨便說點什么都行——如果你對兩種語言都有經驗,你就會知道在每種語言身上你最喜歡或最想念的是什么喂饥。

21.你聽說過method swizzling嗎消约?是什么意思?在Swift中可以用嗎员帮?魔法……隨便說點你知道的信息——例如為什么這樣是危險的或粮,等等。

NSArray和NSSet有什么區(qū)別捞高?不要只說集合包含獨特的元素氯材,還要進一步說明它在不同情況下是如何表現的。

23.(如果求職者會Objective-C):Objective-C中的atomic/nonatomic是什么硝岗?

24.什么是KVO和KVC氢哮?這是另外一個很大的題目,所以至少要了解一些基本知識型檀。

25.什么是應用程序和控制器生命周期冗尤?這是一個簡短的問題。

26.什么是核心數據(Core Data)?這是一個很大的話題——你可能永遠都用不到Core Data裂七,但也要了解一些基本知識皆看。

27.你在架構上有什么經驗?你最喜歡哪種背零,為什么腰吟?你可能需要了解MVVM(這是最常見的一種),因此徙瓶,請閱讀此類內容以及與coordinator有關的內容毛雇。

28.你是否會將struct或class用在MVVM中的視圖模型里?視圖模型不一定總是一個class倍啥。

29.如何管理代碼中的依賴(dependency)?你是使用依賴注入框架/工具澎埠,還是手動進行虽缕?或者你只使用單例(singleton)?

30.什么是REST蒲稳?POST和GET方法有什么區(qū)別氮趋?這個是必備知識。

31.你是否編寫過網絡層江耀?簡要說明你以前是如何做的/將要如何做剩胁?你只需根據你自己的經驗來解釋即可。

32.你是否使用過Alamofire祥国,或其他任何網絡框架昵观?有些人用網絡框架,有些人不用舌稀。你平時用不用啊犬?

33.如何在Swift中解析JSON?如何在Swift中解析XML壁查?JSON的那一題很簡單觉至。如果你知道的話,也順便討論一下你的密鑰解碼策略睡腿。XML有點被人們遺忘了语御,但是對于某些項目,你可能仍然需要XML席怪。

34.什么是certificate pinning应闯?如何在iOS應用程序中實現?這題不會也沒關系挂捻,但是如果知道會很加分孽锥!

35.如何允許不安全的連接?這是可行的嗎?能通過應用審查嗎惜辑?知道什么說什么就行——例如唬涧,可以談談在什么情況下是可以做到這一點的。

36.我們應該如何處理后臺操作盛撑?至少要知道一種方法碎节。

GCD和NSOperation之間有什么異同?GCD可能使用起來更方便抵卫,但是知道應該何時使用NSOperation是加分項狮荔。

38.什么是串行/并行隊列(serial/concurrent queue)?分別舉例說明應該何時使用介粘。

39.什么是dispatch group殖氏?知道會加分。

40.你最喜歡創(chuàng)建視圖的方式是什么姻采?為什么雅采?界面生成器(Interface builder),代碼約束(constraints in code)慨亲,手動框架計算(manual frame calculating)——每種都各有什么優(yōu)點和缺點婚瓜?你傾向于用哪一種,為什么刑棵?

41.如何構建能夠支持不同屏幕尺寸的視圖巴刻?size class,用戶界面的術語等等

42.單元中的reuseIdentifier是什么蛉签,prepareForReuse方法是做什么的胡陪?這題你必須會,因為table和collection通常都是應用程序中的核心元素碍舍。

43.什么是UIStackView督弓?你以前用過嗎?到目前為止你可能已經了解堆棧視圖(stack view)了乒验,只需說出你對這個問題的了解即可愚隧,例如如何制作動畫,等等锻全。

44.什么是internalContentSize狂塘?它真的很好用。

45.你是否曾經寫過自定義控制器轉換鳄厌?怎樣才能做到荞胡?這個不經常用到,但是如果用到了了嚎,最好記得back gesture以及如何實現泪漂。

46.frame和bounds有什么區(qū)別廊营?這是“面試必問”的一道題。但是有些開發(fā)人員并不知道答案萝勤。

Constraint priorities, hugging priority, 以及compression resistance priority:它們是什么露筒,以及它們是如何工作的?希望你不是那類一遇到約束沖突敌卓,就把所有約束的優(yōu)先級都設置為999的人慎式。

48.你在iOS中制作過的最復雜的動畫是什么?你是怎么做的趟径?如果你做過一些精美的東西瘪吏,那就自信地說出來吧。

49.在不嵌套多個UIView.animate方法的前提下蜗巧,如何做出復雜的動畫掌眠?我想我們雖然很少有機會(有需求)去做這件事,但是也許有一天你會需要去做幕屹。

50.(如果求職者懂Objective-C):copy和retain之間有什么區(qū)別蓝丙?也許知道答案的人會逐年減少,但是無論如何香嗓,如果你懂Objective-C迅腔,大概就會知道装畅。

51.你會怎樣存儲敏感的用戶數據靠娱?這題只是為了檢查你對數據安全性是否有所了解。

52.什么是defer掠兄?它們以怎樣的順序被執(zhí)行等等像云。

53.什么是泛化(generics)?描述一下泛化是如何改善我們的生活的蚂夕,并從Swift標準庫里舉例說明迅诬。

面試問題可能并不僅僅與代碼有關,因此也需要在有關iOS開發(fā)的一般性知識方面做好準備婿牍。

54.請說出在創(chuàng)建一個新項目后侈贷,需要先做哪幾件事。拜托了等脂,請不要說你要先設置CocoaPods俏蛮。不要誤會,把CocoaPods作為依賴管理器(dependency manager)并沒有錯上遥,但首先應該做的不是這個搏屑。

55.你用依賴管理器嗎?你更喜歡哪個粉楚?這里的答案并沒有好壞——只是為了知道你的偏好而已辣恋。但是亮垫,最好了解每個管理器都各有什么優(yōu)缺點。

56.什么是配置(debug伟骨,發(fā)布)饮潦?你是否會創(chuàng)建自定義的配置?我不清楚有多少項目會用自定義配置底靠。無論如何害晦,在某些情況下我們可能會用到。

57.你使用Xcode的工具嗎暑中?哪些壹瘟?希望你至少會用Leaks。

58.你如何找到并解決內存泄漏問題鳄逾?如果你有響應性編程的經驗稻轨,那么你可以談談,并順便說說在響應式編程中這種問題更難解決雕凹。

59.什么是持續(xù)集成(continuous integration殴俱,CI)?你用過嗎枚抵?配置過嗎线欲?有很多種類型,最好知道一兩個汽摹。

60.你是否有向App Store發(fā)布應用程序的經驗李丰?你是否曾經在app審查方面遇到過任何問題?只需說自己的經驗之談即可逼泣。如果你曾經用IAP發(fā)布過應用程序趴泌,就可以提一提。如果你曾經與審查人員有過什么有趣的對話拉庶,也可以說說嗜憔。

61.你在單元測試方面有過經驗嗎?UI測試呢氏仗?每個人都說他們會寫測試吉捶,但真的如此嗎?如果你曾使用過任何框架來幫助測試皆尔,也提一下呐舔。

62.你是否曾經開發(fā)過測試驅動項目(TDD)?做過的同學請舉手床佳。

63.你每天都使用的開發(fā)工具有哪些滋早?可以是一些代碼格式化程序或同步器之類的——隨便什么都行。如果你的工具是自己寫的砌们,請務必提及杆麸!

64.什么是SOLID搁进?你能列出并描述這些原則嗎?如果你知道它的含義昔头,就說明你已經為面試做好了準備饼问。但是,如果能舉出一些例子揭斧,那會更好莱革。

65.什么是聲明式編程(declarative programming)?你是否嘗試過SwiftUI讹开?SwiftUI越來越受歡迎了盅视,誰知道呢,也許幾年后旦万,它將變成寫iOS應用程序的唯一方法闹击。因此,最好至少知道它的存在成艘。我認為現在還沒有人會要求開發(fā)者擁有豐富的SwiftUI開發(fā)經驗赏半,但是如果你曾嘗試過,那會是加分項淆两。

66.什么是響應式編程(reactive programming)断箫?你是否有使用Rx框架和/或Apple’s Combine的經驗?Apple也采用這種方式秋冰,所以如果你還沒有嘗試過仲义,那么現在正是去了解一些基礎知識的好時機。

如果你正在面試丹莲,或者正準備跳槽光坝,不妨看看我精心總結的iOS大廠面試資料https://gitee.com/Mcci7/i-oser 來獲取一份詳細的大廠面試資料 為你的跳槽加薪多一份保障

67.你為什么要離開原先的工作尸诽?你對新工作有什么期待嗎甥材?坦誠地說就可以。你所追求的大概率是更高的薪水性含,但除此之外洲赵,一定還有其他東西吧!

以上只是面試官可能會提的一些問題商蕴。

結論

最好能始終跟上iOS世界的變化叠萍,那對你來說是很有利的。閱讀博客绪商,收聽播客苛谷,關注有關Apple開發(fā)人員的新聞,即使你有很大概率在新工作中并不需要知道所有那些知識格郁,對新知識持開放態(tài)度總是好的腹殿,并且独悴,你可以讓面試官知道你一直在不斷的學習。

祝你在面試中能有好運氣——不管你是面試者還是面試官锣尉。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末刻炒,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子自沧,更是在濱河造成了極大的恐慌坟奥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拇厢,死亡現場離奇詭異爱谁,居然都是意外死亡,警方通過查閱死者的電腦和手機孝偎,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門赘淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饿悬,你說我怎么就攤上這事檬洞。” “怎么了雨效?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵迅涮,是天一觀的道長。 經常有香客問我徽龟,道長叮姑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任据悔,我火速辦了婚禮传透,結果婚禮上,老公的妹妹穿的比我還像新娘极颓。我一直安慰自己朱盐,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布菠隆。 她就那樣靜靜地躺著兵琳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骇径。 梳的紋絲不亂的頭發(fā)上躯肌,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音破衔,去河邊找鬼清女。 笑死,一個胖子當著我的面吹牛晰筛,可吹牛的內容都是我干的嫡丙。 我是一名探鬼主播忠售,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迄沫!你這毒婦竟也來了稻扬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤羊瘩,失蹤者是張志新(化名)和其女友劉穎泰佳,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體尘吗,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡逝她,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了睬捶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黔宛。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖擒贸,靈堂內的尸體忽然破棺而出臀晃,到底是詐尸還是另有隱情,我是刑警寧澤介劫,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布徽惋,位于F島的核電站,受9級特大地震影響座韵,放射性物質發(fā)生泄漏险绘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一誉碴、第九天 我趴在偏房一處隱蔽的房頂上張望宦棺。 院中可真熱鬧,春花似錦黔帕、人聲如沸代咸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侣背。三九已至白华,卻和暖如春慨默,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弧腥。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工厦取, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人管搪。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓虾攻,卻偏偏與公主長得像铡买,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霎箍,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容