2021最新—Swift面试题

2020年6月最新iOS面试题总结(答案篇) 之前发了这篇iOS面试总结(2020年6月),没想到挺受大家欢迎,本来是没打算为它写答案,但有几个人建议我最好出一篇答案,提的人多了我就答应了下来。因为最近比较忙,断断续续总算补完了,就有了这篇文章,希望它对大家还有用处。这些都属于参考答案,如果大家感觉有不对不准确的地方也欢迎指出,我会及时更新。 关于面试题 打个比方,如果把找工作理解成考大学,面试就是高考,市面上的“真题”就是模拟试卷。我们会很容易倾向于在面试前寻找对应公司的面试“真题”,重点准备,期待“押题”成功。但实际上,即使面试同一家公司,它会有. 阅读详情

#初级

  • 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

iOS 面试 Swift基础题 1)赋值也被称为装包的过程(wrap),optional类型会获取当前值的类型和具体值,如int类型的数字100.当一个optional类型被赋值为这个值时,其实optional记录了对应的类型(some)int,和值部分(wrapped)100.2)取值也被称为解包的过程(unwrap),optional根据记录的类型(some)如上面说的int,和值部分(wrapped)100,新建一个some(wrapped)同int(100)返回给程序。在 Swift 中,值类型,存放在栈区; 阅读详情

相关推荐

2025 Swift 最新面试题及答案

关键字用于限制类、属性和方法的继承和重写,从而提高代码的安全性和稳定性。以上是 Swift 和 SwiftUI 中监听属性值变化的几种方法,开发者可以根据具体需求选择适合的方法。这样做可以确保类的实现不会被修改或扩展,从而提高代码的安全性和稳定性。(扩展)允许你在不修改原始代码的情况下,扩展现有类型的功能,包括类、结构体、枚举和协议。是一种强大的工具,用于扩展已有类型的功能,使代码更加模块化、易于维护和扩展。是用于处理不同类型的实例的机制,而泛型则是一种编写灵活、可重用代码的机制。:通过在类的定义前加上。

CallAuxiliary Blog 8318

Swift算法面试题2022(附答案)

现在面试太卷了,手撕算法成家常便饭,我们虽然不是算法岗,但是常见的简单算法题还是要掌握一点。

Spencer Yang的博客 2312

Swift面试题2024(附答案)

iOS面试还有人要吗?不重要,这里有一些Swift开发基础面试题,有需要的自取,希望能帮到你!

Spencer Yang的博客 4011

Swift面试题2021(附答案)

1、Swift和Objective-C有什么区别? 1)Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 2)Swift面向协议编程,Objective-C面向对象编程 3)Swift注重值类型,Objective-C注重引用类型 4)Swift支持泛型,Objective-C只支持轻量泛型(给集合添加泛型) 5)Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动态派发(消息派发)方式 6)Swift支持函数式编程(高阶函

Spencer Yang的博客 1万+

Swift 面试题及答案整理,最新面试题

在Swift中,类的继承关系和协议的实现提供了运行时多态性,使得同一接口可以有多个实现,具体使用哪个实现在运行时通过动态派发来决定。这些函数接受一或多个函数作为输入,并返回一个新的集合,使得你可以用更少、更清晰的代码来执行复杂的操作。通过使用协议,你可以定义一组应该由特定类型实现的相关方法和属性,从而实现接口的抽象和多态性。来调用抛出错误的函数,分别表示:检查错误并使用do-catch处理、将结果转换为可选值(如果发生错误则结果为nil)、断言调用不会抛出错误(如果实际抛出错误,则会触发运行时错误)。

知识极客 6863

2020,300道高级iOS开发面试题(最新整理)

这个栏目将持续更新–请iOS的小伙伴关注! 一:知名大厂iOS开发面试题篇 1、腾讯—最新iOS面试题总结 2、百度—最新iOS面试题总结 3、头条—最新iOS面试题总结 4、阿里—最新iOS面试题总结 5、美团—最新iOS面试题总结 6、某大厂—最新iOS面试题总结 7、抖音–最新iOS面试题总结 8、拼多多–最新iOS面试题总结 9、快手–最新iOS面试题总结 10、虎牙–最新iOS面试题总结 11、iOS面试–最新快手iOS面试题 12、iOS面试–字节跳动最新iOS开发面试题 13、(最新)iO.

D_猿员的博客 7028

swift ~ 2020年 swift面试题

联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄 QQ群:807236138群称:iOS技术交流学习群 一、面试题 1、说说你认识的Swift是什么? Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。 2、举例说明Swift里面有哪些是 Objective-C中没有的? Swift...

石虎 1万+

Swift面试题2025(附答案)

AI焦虑时代,iOS面试还有人要吗?不重要,这里有一些Swift开发基础面试题,有需要的自取,希望能帮到你!

Spencer Yang的博客 2094

swift-最新面试题二

函数是一种合并两个序列的函数,它接受两个序列作为输入,并将它们的元素一一对应地组合成元组,然后返回一个包含这些元组的序列。3114. 替换字符可以得到的最晚时间,这个题的一个题解就可以使用zip函数和高阶函数allSatisfy来实现,代码里面有两种写法其实都是一样的,注释掉的那种是隐藏了参数类型。这样,如果序列中的所有元素都满足这个条件,即如果输入字符串中的每个字符要么是问号,要么与对应的时间字符串中的字符相等,那么。函数用于对集合中的每个元素应用一个指定的转换闭包,然后返回一个包含转换结果的新集合。

m0_61164038的博客 346

【iOS面试题二】Swift编程语言

基础语法、枚举、结构体、类、扩展、协议、泛型、并发和其他

tospery的专栏 2567

Swift面试题2024:从基础到高阶的全面解析

本文全面解析2024年Swift面试题,涵盖从基础语法到高阶特性的关键知识点。包括字符串处理、可选类型、函数错误处理、值类型与引用类型对比、Swift与Objective-C差异、高阶函数优化、协议与泛型应用、多线程安全实践等核心内容,帮助开发者系统掌握iOS开发必备技能。

weixin_29245767的博客 394

Swift中常见的面试题

Swift中常见的面试题汇整

eastWind1101的博客 2287

Swift 面试题总结

扩展可以给当前的类型添加新的行为,但是不能改变本身的类型或者本身的接口。如果你添加一个新的可存储的属性,你需要额外的内存来存储新的值。注意:在运行时,结构体的在性能方面更优于类,原因是结构体的方法调用是静态绑定,而类的方法调用是动态实现的。一般的建议是使用最小的工具来完成你的目标,但是有一个好的经验是多使用结构体,除非你用了继承和引用语义。2、解决强引用的循环问题——当两个实例对象相互引用,并且对引用的实例对象的值要求不能为 nil 时候。类型的属性,它总是在它的拥有者初始化之后再初始化。

qq_42772492的博客 698

2019最新iOS面试题及答案

1. Object-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-C的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。 2. import 跟#in...

bie4584的博客 5255

【面试系列】Swift 高频面试题及详细解答

面试内容包括类型擦除、关联类型、Result 类型、依赖注入、属性包装器、自动闭包、内存泄漏、元类型、动态派发和逃逸闭包等关键概念和技术。类型擦除和关联类型提升了泛型编程的灵活性和通用性,Result 类型改善了错误处理,依赖注入和属性包装器增强了代码的可测试性和复用性。自动闭包简化了 API 调用,内存泄漏检测和预防保证了应用性能,元类型和动态派发支持反射和动态调用,而逃逸闭包用于异步操作。这些知识点和技术能够帮助开发者编写更健壮、高效和可维护的代码。

在路上的专栏 3153

win10系统下使用Mask_Rcnn训练自己的数据

版权所有,翻版必究。https://mp.youkuaiyun.com/console/editor/html/106094147 运行环境:WIN10,pycharm,相应的CUDA,CUDNN,tensorflow1.15.0,tensorflow-gpu-1.14.0,Anaconda3 第一步:Mask RCNN开源项目:https://github.com/matterport/Mask_RCNN 第一步:数据准备 首先安装labelme进行数据的标注。安装方法pip install labe

fightingxyz的博客 1750

Swift面试题总结(一)

1、Swift比Objective-C有什么优势? Swift速度更快,运算性能更高。 Swift语法简单易读,代码更少,更加清晰,易于维护 Swift更加安全,它是类型安全的语言 Swift泛型,结构体,枚举都很强大 Swift便捷的函数式编程 Swift类型推断 2、Swift 是面向对象还是函数式编程语言? Swift既是面向对象的,又是函数式的编程语言 说Swift是面向对象的语言,是因为Swift支持类的封装,继承和多态 说Swift是函数式编程语言,是因为Swift支持map、reduce、fi

u010186280的博客 5789

(王道考研计算机网络)第三章数据链路层-第一节:数据链路层功能概述

文章目录一:本章概述二:数据链路层基本概念三:数据链路层功能概述(1)为网络层提供服务(2)链路管理(3)组帧(4)流量控制(5)差错控制 本章是计算机网络中入门较难的一章,如果没有接触过相关内容,可能会止步于一些晦涩难懂的术语。本节内容希望大家可以用心看一看,对于大家入门是很有帮助的 一:本章概述 数据链路层位于物理层之上,主要作用就是提高物理层传输比特流的能力,使物理层可能出现差错的连接转变为逻辑上无差错的数据链路,同时向网络层提供服务。本章学习的主要就是数据链路层的功能和应用 数据链路层功能 封

快乐江湖的博客 2469

swift ~面试题(Optional)

联系人:石虎 QQ:1224614774昵称:嗡嘛呢叭咪哄 QQ群:807236138群称:iOS 技术交流学习群 一、面试题 class Person { var name: String var age: Int init(name: String, age: Int) { self.na...

石虎 1309

YOLOv5源码逐行超详细注释与解读(3)——训练部分train.py

全网最详细的YOLOv5项目源码解读之训练部分train. py。全文近5万字!代码逐行注释,逐段讲解,小白入门必备!

路人贾的博客 3万+

【Python爬虫系列】_005.浏览器开发者工具(详解)

Elements(元素)分析当前页面节点,用来辅助书写BS或者XPath这里面的数据与源代码有区别,不一定准确(避坑)Console(控制台)这个除了查看错误信息、打印调试信息(console.log())、写一些测试脚本以外,还可以当作Javascript API查看用例如我想查看console都有哪些方法和属性,我可以直接在Console中输入"console"并执行后续学js逆向的时候需要用到Sources(源代码)与在网页页面,鼠标右键——查看网页源代码 内容一致。

weixin_50296259的博客 422

Swift面试题,看这些就够了

最近看到一篇写swift面试题的文章,写的非常好,特此翻译过来供大家查阅,每个问题都会提供答案。 书面问题 初学者 Question #1 请用更好的方式写这个for循环: for var i = 0; i 5; i++ { print("Hello!") } Answer: for _ in 0...4 {

kidd风的博客 1万+

100天精通Python(基础篇)——第4天:数据类型全解析_从基础到转换

数据类型全解析_从基础到转换

努力让自己发光,对的人才能迎着光而来 11万+
上一篇: iOS入门、还是老手,都是值得收藏的一个资源文档
下一篇: 最新iOS面试题:如何优化 App 的的包大小?(③系列更新)
iOSvv
博客等级 码龄7年 20粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值