卓同学的 Swift 面试题
2017-03-15 本文已影响7753人
没故事的卓同学
我觉得应该掌握的知识点,没有实际意义。
- 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)都可以,要怎么表示。
欢迎关注我的微博:@没故事的卓同学