Swift经典面试题总结

"在swift中什么时候用结构体,什么时候用类?

1、到底是用类的做法优于用结构体,还是用结构体的做法优于类。函数式编程倾向于值类型,面向对象编程更喜欢类。

2、类和结构体有许多不同的特性

-类支持继承、结构体不支持

-类是引用类型、结构体是值类型

3、在运行时,结构体的在性能方面更优于类,原因是结构体的方法调用是静态绑定,而类的方法调用是动态实现的。这就是尽可能得使用结构体代替类的又一个好的原因。

4、并没有通用的规则决定结构体和类哪一个更好用。一般的建议是使用最小的工具来完成你的目标,但是有一个好的经验是多使用结构体,除非你用了继承和引用语义。

"什么是泛型?泛型用来解决什么问题

1、泛型是用来使类型和算法安全的工作的一种类型。在swift中,函数和数据结构中都可以使用泛型,例如类、结构体和枚举

2、泛型一般是用来解决代码复用的问题。

"对一个optional变量拆包有多少种方法?并在安全方面进行评价。

1、强制拆包 !操作符——不安全

2、隐式拆包变量声明——大多数情况下不安全

3、可选绑定——安全

4、自判断链接(optional chaining)——安全

5、nil coalescing 运算符(空值合并运算符)——安全

6、Swift 2.0 的新特性 guard 语句——安全

7、Swift 2.0 的新特性optional pattern(可选模式)

"下面的功能特性都包含在Swift中吗?

1、泛型类

2、泛型结构体

3、泛型协议

答案: Swift 包含1和2特性。泛型可以在类、结构体、枚举、全局函数或者方法中使用。

3是通过typealias部分实现的。typealias不是一个泛型类型,它只是一个占位符的名字。它通常是作为关联类型被引用,只有协议被一个类型引用的时候它才被定义。

"引用类型和值类型

引用类型如类,引用的是地址,有可能a和b都变

值类型,复制的是值,一个值得改变不会影响另一个

你可能感兴趣的:(Swift经典面试题总结)