卓同学的 Swift 面试题

卓同学的 Swift 面试题_第1张图片

我觉得应该掌握的知识点,没有实际意义。

  • 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()
}
  • 给集合中元素是字符串的类型增加一个扩展方法,应该怎么声明
  • 定义静态方法时关键字 static 和 class 有什么区别

高级

  • 一个 Sequence 的索引是不是一定从 0 开始?
  • 数组都实现了哪些协议
  • 如何自定义模式匹配
  • autoclosure 的作用
  • 编译选项 whole module optmization 优化了什么
  • 下面代码中 mutating 的作用是什么
struct Person {

    var name: String {
        mutating get {
            return store
        }
    }
}
  • 如何让自定义对象支持字面量初始化
  • dynamic framework 和 static framework 的区别是什么

哲学部分

  • 为什么数组索引越界会崩溃,而字典用下标取值时 key 没有对应值的话返回的是 nil 不会崩溃。
  • 一个函数的参数类型只要是数字(Int、Float)都可以,要怎么表示。

欢迎关注我的微博:@没故事的卓同学

你可能感兴趣的:(卓同学的 Swift 面试题)