卓同窗的 Swift 面試題


我以爲應該掌握的知識點,沒有實際意義。

  • 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
          }
      }
    }複製代碼
  • 如何讓自定義對象支持字面量初始化

哲學部分

  • 爲何數組索引越界會崩潰,而字典用下標取值時 key 沒有對應值的話返回的是 nil 不會崩潰。
  • 一個函數的參數類型只要是數字(Int、Float)均可以,要怎麼表示。

歡迎關注個人微博:@沒故事的卓同窗數組

相關文章
相關標籤/搜索