iOS面試--最新快手iOS面試題

背景

面的是快手X3崗位,視頻面試事扭,不支持周末捎稚,但是可以選擇晚上時(shí)間。視頻面試是通過徘箝希客網(wǎng)進(jìn)行的今野,以下是記下來的各輪面試題,對(duì)于一些iOS基礎(chǔ)知識(shí)就不做解答了罐农。

一面

1条霜、用遞歸寫一個(gè)算法,計(jì)算從1到100的和涵亏。

func sum(value: Int) -> Int {
    if value <= 0 {
        return 0
    }
    var number = value
    return value + sum(value: number - 1)
}
// 計(jì)算過程
let result = sum(value: 100)
print(result)
復(fù)制代碼

寫完算法之后又圍繞著問了幾個(gè)問題宰睡,都是算法基礎(chǔ):

  • 算法的時(shí)間復(fù)雜度是多少
  • 遞歸會(huì)有什么缺點(diǎn)
  • 不用遞歸能否實(shí)現(xiàn),復(fù)雜度能否降到O(1)

2气筋、property的作用是什么拆内,有哪些關(guān)鍵詞,分別是什么含義宠默?

3麸恍、父類的property是如何查找的?

4搀矫、NSArray抹沪、NSDictionary應(yīng)該如何選關(guān)鍵詞?

5艾君、copymuteCopy有什么區(qū)別采够,深復(fù)制和淺復(fù)制是什么意思,如何實(shí)現(xiàn)深復(fù)制冰垄?

6蹬癌、用runtime做過什么事情权她?runtime中的方法交換是如何實(shí)現(xiàn)的?

7逝薪、講一下對(duì)KVC合KVO的了解隅要,KVC是否會(huì)調(diào)用setter方法?

8董济、__block有什么作用

9步清、說一下對(duì)GCD的了解,它有那些方法虏肾,分別是做什么用的廓啊?

10、對(duì)二叉樹是否了解封豪?

面試官是想接著問這方面的問題的谴轮。我當(dāng)時(shí)說了不了解,然后就沒有后續(xù)了吹埠。

二面

1第步、ARC和MRC的區(qū)別,iOS是如何管理引用計(jì)數(shù)的缘琅,什么情況下引用計(jì)數(shù)加1什么情況引用計(jì)數(shù)減一粘都?

2、在MRC下執(zhí)行[object autorelease]會(huì)發(fā)生什么刷袍,autorelease是如何實(shí)現(xiàn)的翩隧?

3、OC如何實(shí)現(xiàn)多繼承做个?

這個(gè)當(dāng)時(shí)沒有答好鸽心。其實(shí)借助于消息轉(zhuǎn)發(fā),protocol和類別都可以間接實(shí)現(xiàn)多繼承居暖。

4顽频、對(duì)設(shè)計(jì)模式有什么了解,講一下其中一種是如何使用的太闺。

5糯景、有沒有哪個(gè)開源庫(kù)讓你用的很舒服,講一下讓你舒服的地方省骂。

6蟀淮、一張100*100,RGBA的png圖像解壓之后占多大內(nèi)存空間钞澳。

5怠惶、算法題

題目:給定一個(gè)個(gè)數(shù)字arr,判斷數(shù)組arr中是否所有的數(shù)字都只出現(xiàn)過一次轧粟。

這個(gè)并沒有要求寫出來策治,說是提供思路就行了脓魏。我當(dāng)時(shí)給的方案是在便利數(shù)組的時(shí)候,用一個(gè)字典把便利的元素存起來通惫,如果在后面的便利過程中新元素在字典中存在過就說明茂翔,有重復(fù)數(shù)字出現(xiàn)。時(shí)間復(fù)雜度是O(n)履腋。

當(dāng)時(shí)也問了有沒有辦法進(jìn)行優(yōu)化珊燎,我當(dāng)時(shí)想到了將數(shù)組轉(zhuǎn)成Set,然后和原數(shù)組比較遵湖,兩個(gè)集合的數(shù)量是否變化悔政。

7、因?yàn)槲腋榻B自己Swift用的多一些延旧,然后問了些Swift跟OC的區(qū)別卓箫,各自的優(yōu)缺點(diǎn)。

8垄潮、為什么離職,有什么職業(yè)規(guī)劃闷盔。

三面

1弯洗、給定一個(gè)Int型數(shù)組,用里面的元素組成一個(gè)最大數(shù)逢勾,因?yàn)閿?shù)字可能非常大牡整,用字符串輸出。

輸入: [3,30,34,5,9]
輸出: 9534330
復(fù)制代碼

這個(gè)是leetcode的179題溺拱,難度中等逃贝。面試官讓先說思路,再去做題迫摔。事先說一下這個(gè)題我沒有做過沐扳。當(dāng)時(shí)的思路是用冒泡法進(jìn)行排序,排序的前提是將較少位數(shù)的數(shù)字進(jìn)行循環(huán)補(bǔ)齊句占,例如3和30的比較沪摄,變成33和30的比較,34和4的比較變成34和44的比較纱烘,然后將結(jié)果從大到小整合成字符串輸出杨拐。

但是做題是卻發(fā)現(xiàn)沒那么簡(jiǎn)單,位數(shù)的補(bǔ)齊對(duì)于2位和3位數(shù)的比較還需要求位數(shù)的最小公倍數(shù)擂啥,將他們都轉(zhuǎn)成6位數(shù)才能比較哄陶。在掙扎了5分鐘做了就做罷了。

后來再去做這道題哺壶,其實(shí)這就是一個(gè)排序而已屋吨,只不過他的規(guī)則是按高位優(yōu)先級(jí)更高的原則蜒谤,而這一點(diǎn)跟字符串的比較保持一致,如果再加一些Swift的高階函數(shù)离赫,就可以寫成:

func largestNumber(_ nums: [Int]) -> String {
    let sort = nums.map {"\($0)"}.sorted { (lStr, rStr) -> Bool in
        return lStr + rStr > rStr + lStr
    }
    let result = sort.joined()
    if result.prefix(1) == "0" {
        return "0"
    } else {
        return result
    }
}
復(fù)制代碼

image

2芭逝、項(xiàng)目中有這么一個(gè)方法func findfile(dir: String suffix: String) -> [String] ,可以通過輸入文件夾目錄渊胸,和后綴檢索出所需的文件旬盯。

例如需要在某個(gè)文件中檢索txt文件或者mp4文件,那就傳入dir和suffix就行了◆崦停現(xiàn)在又有一些需求胖翰,例如需要檢索utf8格式的txt或者h(yuǎn)264編碼的mp4,也會(huì)有一些例如查找最近一周更新過的文件這樣的需求切厘,你如何優(yōu)化這個(gè)類萨咳,讓它滿足這些情況疫稿?

我首先想到的是這么多需求不可能一個(gè)方法就完成培他,需要根據(jù)不同場(chǎng)景拆出不同的方法,但是這些同屬于文件操作遗座,會(huì)有一個(gè)共同使用的方法就是檢索文件途蒋。這個(gè)方法需要傳入文件目錄号坡,然后遞歸的返回當(dāng)前目錄所有文件路徑。外部不同場(chǎng)景的調(diào)用邏輯就用一個(gè)enum完成宽堆,不同值對(duì)應(yīng)相同范圍的不同種類腌紧。

面試官比較關(guān)注內(nèi)部共用的文件檢索怎么寫,他說子文件如果過多怎么辦日麸,如何優(yōu)化寄啼。我有點(diǎn)懵,查找文件至少是要遍歷一遍的代箭,子文件過多墩划,這個(gè)應(yīng)該是沒法優(yōu)化的啊。中間卡了一段時(shí)間嗡综,后來他給了提示說是不是可以用block實(shí)現(xiàn)乙帮,將文件路徑返回出去,由外部決定當(dāng)前文件是否可用极景,最終外部的調(diào)用類是這個(gè)樣子察净。

//我的方案
//func findDir(_ dir: String) -> [String]
//block方案
func findDir(_ dir: String, block: ((String) -> Bool))
復(fù)制代碼

我想來確實(shí)沒毛病驾茴,用block返回內(nèi)容至少不會(huì)將該目錄的所有文件都由一個(gè)對(duì)象持有,而前面一堆的鋪墊其實(shí)也都是為驗(yàn)證block方案的好處氢卡。

其實(shí)事后想下這個(gè)問題沒啥難的锈至,這種寫法自己也有寫過,但當(dāng)時(shí)就是沒想起來译秦,可能前面一圈的鋪墊給我?guī)税上考瘢f虧也不虧,以后多多努力吧筑悴。

總結(jié)

整體來看们拙,快手的面試題跟我在別處看到的iOS面試題對(duì)比要簡(jiǎn)單些。一面主要是基礎(chǔ)知識(shí)阁吝,二面考察更全面一些砚婆,更多讓自己談一些對(duì)技術(shù)的理解,三面則是更偏實(shí)踐一些突勇。

算法雖然三輪都有装盯,但相對(duì)比較簡(jiǎn)單,即使寫不出來甲馋,有思路也是可以的验夯。當(dāng)然寫出來肯定是加分項(xiàng),所以大家準(zhǔn)備面試時(shí)摔刁,應(yīng)該都看一下。算法相關(guān)的海蔽,排序共屈,數(shù)組,二叉樹党窜,這幾類是重點(diǎn)拗引。

收錄:原文地址

以下文章可以做一個(gè)學(xué)習(xí)參考:
GCD面試要點(diǎn)
block面試要點(diǎn)
Runtime面試要點(diǎn)
RunLoop面試要點(diǎn)
內(nèi)存管理面試要點(diǎn)
MVC、MVVM面試要點(diǎn)
網(wǎng)絡(luò)性能優(yōu)化面試要點(diǎn)
網(wǎng)絡(luò)編程面試要點(diǎn)
KVC&KVO面試要點(diǎn)
數(shù)據(jù)存儲(chǔ)面試要點(diǎn)
混編技術(shù)面試要點(diǎn)
設(shè)計(jì)模式面試要點(diǎn)
UI面試要點(diǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幌衣,一起剝皮案震驚了整個(gè)濱河市矾削,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豁护,老刑警劉巖哼凯,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異楚里,居然都是意外死亡断部,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門班缎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝴光,“玉大人她渴,你說我怎么就攤上這事∶锼睿” “怎么了趁耗?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)疆虚。 經(jīng)常有香客問我苛败,道長(zhǎng),這世上最難降的妖魔是什么装蓬? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任著拭,我火速辦了婚禮,結(jié)果婚禮上牍帚,老公的妹妹穿的比我還像新娘儡遮。我一直安慰自己,他們只是感情好暗赶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布鄙币。 她就那樣靜靜地躺著,像睡著了一般蹂随。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岳锁,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音激率,去河邊找鬼咳燕。 笑死乒躺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘉冒。 我是一名探鬼主播曹货,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼顶籽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了银觅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慨仿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镰吆,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年万皿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牢硅。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹬耘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出减余,到底是詐尸還是另有隱情综苔,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布位岔,位于F島的核電站如筛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抒抬。R本人自食惡果不足惜杨刨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望擦剑。 院中可真熱鬧妖胀,春花似錦、人聲如沸惠勒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捉撮。三九已至,卻和暖如春妇垢,著一層夾襖步出監(jiān)牢的瞬間巾遭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工闯估, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灼舍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓涨薪,卻偏偏與公主長(zhǎng)得像骑素,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刚夺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容