- class 和 struct 的區別
- 不經過繼承,代碼複用(共享)的方式有哪些
- Set 獨有的方法有哪些?
- 實現一個 min 函數,返回兩個元素較小的元素
- map、filter、reduce 的做用
- map 與 flatmap 的區別
- 什麼是 copy on write
- 如何獲取當前代碼的函數名和行號
- 如何聲明一個只能被類 conform 的 protocol
- guard 使用場景
- defer 使用場景
- String 與 NSString 的關係與區別
- 怎麼獲取一個 String 的長度
- 如何截取 String 的某段字符串
- throws 和 rethrows 的用法與做用
- try? 和 try!是什麼意思
- associatedtype 的做用
- 何時使用 final
- public 和 open 的區別
- 聲明一個只有一個參數沒有返回值閉包的別名
- Self 的使用場景
- dynamic 的做用
- 何時使用 @objc
- Optional(可選型) 是用什麼實現的
- 如何自定義下標獲取
- ?? 的做用
- lazy 的做用
- 一個類型表示選項,能夠同時表示有幾個選項選中(相似 UIViewAnimationOptions ),用什麼類型表示
- inout 的做用
- Error 若是要兼容 NSError 須要作什麼操做
- 下面的代碼都用了哪些語法糖
[1, 2, 3].map{ $0 * 2 }複製代碼
- 什麼是高階函數
- 如何解決引用循環
- 下面的代碼會不會崩潰,說出緣由
var mutableArray = [1,2,3]
for _ in mutableArray {
mutableArray.removeLast()
}複製代碼
- 給集合中元素是字符串的類型增長一個擴展方法,應該怎麼聲明
- dynamic framework 和 static framework 的區別是什麼
高級
- 一個 Sequence 的索引是否是必定從 0 開始?
- 數組都實現了哪些協議
- 如何自定義模式匹配
- autoclosure 的做用
- 編譯選項 whole module optmization 優化了什麼
下面代碼中 mutating 的做用是什麼swift
struct Person {
var name: String {
mutating get {
return store
}
}
}複製代碼
- 如何讓自定義對象支持字面量初始化