2021最新—Swift面试题

#初级

  • String 与 NSString 的关系与区别
  • 怎么获取一个 String 的长度
  • 如何截取 String 的某段字符串
  • throws 和 rethrows 的用法与作用
  • try? 和 try!是什么意思
  • associatedtype 的作用
  • 什么时候使用 final
  • public 和 open 的区别
  • 声明一个只有一个参数没有返回值闭包的别名

高级

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

一.Swift和OC的区别?

  • 1.swift是静态语言,有类型推断,OC是动态语言。
  • 2.swift面向协议编程,OC面向对象编程
  • 3.swift注重值类型,OC注重引用类型。
  • 4.swift支持泛型,OC只支持轻量泛型
  • 5.swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,OC支持动态派发(消息派发)方式。
  • 6.swift支持函数式编程
  • 7.swift的协议不仅可以被类实现,也可以被struct和enum实现
  • 8.swift有元组类型、支持运算符重载
  • 9.swift支持命名空间
  • 10.swift支持默认参数
  • 11.swift比oc代码更加简洁

二、swift的派发机制

  • 1.函数的派发机制:静态派发(直接派发)、函数表派发、消息派发
  • 2.swift派发机制总结:
  • 1.swift中所有值类型:struct、enum使用直接派发。
  • 2.swift中协议的extensions(类似于OC的分类)使用直接派发,初始声明函数使用函数表派发
  • 3.swift中class中extensions使用直接派发,初始化声明函数使用函数表派发,dynamic修饰的函数使用消息派发。
  • 4.swift中NSObject的子类用@nonobjc或final修饰的函数使用直接派发,初始声明函数使用函数表派发,dynamic修饰的extensions使用消息派发
  • 3.swift中函数派发查看方式:可将swift代码转换为SIL(中间码)
swiftc -emit-silgen -O example.swift

三、swift显示指定派发方式?

  • 1.添加final关键字的函数使用直接派发
  • 2.添加static关键字函数使用直接派发
  • 3.添加dynamic关键字函数使用消息派发
  • 4.添加@objc关键字的函数使用消息派发
  • 5.添加@inline关键字的函数告诉编译器可以使用直接派发

四、Struct和Class区别?

  • 1.Struct不支持继承、Class支持继承
  • 2.Struct是值类型,Class是引用类型
  • 3.Struct无法修改自身属性值,函数需要添加mutating关键字
  • 4.Struct初始化方法是基于属性的
  • 5.Struct不需要deinit方法,因为值类型不关心引用计数,Class需要deinit方法。

五、Swift中的常量和OC中的常量有啥区别?

OC中的常量(const)是编译期决定的,Swift中的常量(let)是运行时确定的

六、swift中mutating的作用?

    swift中协议是可以被Struct和enum实现的,mutating关键字是为了能在被修饰的函数中修改struct或enum的变量值。对Class完全透明。

七、final关键词的用法

 final关键词的作用:它修饰的类、方法、变量是不能被继承或重写的,编译器会报错。它可以显示的指派函数的派发机制。

八、lazy关键词的用法

 lazy关键词的作用:指定延迟加载(懒加载),懒加载存储属性只会在首次使用时才会计算初始值属性。
 lazy修饰的属性非线程安全的。

精选全网 · iOS面试题答案PDF文集

   最新 初级iOS 面试题 最新 中级iOS 面试题 最新 高级iOS 面试题 《BAT面试资料全集》 《BAT大厂常问iOS面试题》    《2021年面试真题》 《iOS中级到高级面试题完整版》 字节跳动,京东,小米,腾讯、头条、阿里、美团等公司21年的面试真题

资料下载地址:

获取地址:https://docs.qq.com/doc/DVU5LY1Bsb3dSZ3Nn

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...