卓同學(xué)的 Swift 面試題


我覺得應(yīng)該掌握的知識(shí)點(diǎn),沒有實(shí)際意義。

  • class 和 struct 的區(qū)別
  • 不通過繼承,代碼復(fù)用(共享)的方式有哪些
  • Set 獨(dú)有的方法有哪些?
  • 實(shí)現(xiàn)一個(gè) min 函數(shù),返回兩個(gè)元素較小的元素
  • map、filter、reduce 的作用
  • map 與 flatmap 的區(qū)別
  • 什么是 copy on write
  • 如何獲取當(dāng)前代碼的函數(shù)名和行號(hào)
  • 如何聲明一個(gè)只能被類 conform 的 protocol
  • guard 使用場(chǎng)景
  • defer 使用場(chǎng)景
  • String 與 NSString 的關(guān)系與區(qū)別
  • 怎么獲取一個(gè) String 的長(zhǎng)度
  • 如何截取 String 的某段字符串
  • throws 和 rethrows 的用法與作用
  • try? 和 try!是什么意思
  • associatedtype 的作用
  • 什么時(shí)候使用 final
  • public 和 open 的區(qū)別
  • 聲明一個(gè)只有一個(gè)參數(shù)沒有返回值閉包的別名
  • Self 的使用場(chǎng)景
  • dynamic 的作用
  • 什么時(shí)候使用 @objc
  • Optional(可選型) 是用什么實(shí)現(xiàn)的
  • 如何自定義下標(biāo)獲取
  • ?? 的作用
  • lazy 的作用
  • 一個(gè)類型表示選項(xiàng),可以同時(shí)表示有幾個(gè)選項(xiàng)選中(類似 UIViewAnimationOptions ),用什么類型表示
  • inout 的作用
  • Error 如果要兼容 NSError 需要做什么操作
  • 下面的代碼都用了哪些語(yǔ)法糖
[1, 2, 3].map{ $0 * 2 }
  • 什么是高階函數(shù)
  • 如何解決引用循環(huán)
  • 下面的代碼會(huì)不會(huì)崩潰,說出原因
var mutableArray = [1,2,3]
for _ in mutableArray {
    mutableArray.removeLast()
}
  • 給集合中元素是字符串的類型增加一個(gè)擴(kuò)展方法,應(yīng)該怎么聲明
  • 定義靜態(tài)方法時(shí)關(guān)鍵字 static 和 class 有什么區(qū)別

高級(jí)

  • 一個(gè) Sequence 的索引是不是一定從 0 開始?
  • 數(shù)組都實(shí)現(xiàn)了哪些協(xié)議
  • 如何自定義模式匹配
  • autoclosure 的作用
  • 編譯選項(xiàng) whole module optmization 優(yōu)化了什么
  • 下面代碼中 mutating 的作用是什么
struct Person {

    var name: String {
        mutating get {
            return store
        }
    }
}
  • 如何讓自定義對(duì)象支持字面量初始化
  • dynamic framework 和 static framework 的區(qū)別是什么

哲學(xué)部分

  • 為什么數(shù)組索引越界會(huì)崩潰,而字典用下標(biāo)取值時(shí) key 沒有對(duì)應(yīng)值的話返回的是 nil 不會(huì)崩潰。
  • 一個(gè)函數(shù)的參數(shù)類型只要是數(shù)字(Int、Float)都可以,要怎么表示。

歡迎關(guān)注我的微博:@沒故事的卓同學(xué)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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