版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
iOS基础测试题(含详细答案解析)适用场景:iOS开发入门考核、岗位基础自测、实习生能力测评考试时长:60分钟满分:100分一、单项选择题(共10题,每题3分,共30分)1.以下不属于iOS开发主流编程语言的是()A.SwiftB.Objective-CC.KotlinD.C++2.Swift中,用来声明不可变常量的关键字是()A.varB.letC.staticD.final3.iOS应用的主程序入口方法是()A.viewDidLoadB.mainC.didFinishLaunchingWithOptionsD.awakeFromNib4.以下关于UIViewController生命周期的执行顺序,正确的是()A.viewDidLoad->viewWillAppear->viewDidAppearB.viewWillAppear->viewDidLoad->viewDidAppearC.viewDidLoad->viewDidAppear->viewWillAppearD.viewWillAppear->viewDidAppear->viewDidLoad5.Swift中可选类型(Optional)的核心作用是()A.简化代码书写B.处理值可能为空的场景,规避空值崩溃C.提升代码运行速度D.方便类型转换6.下列哪种方式不属于iOS页面跳转常用方式()A.UINavigationControllerpushB.present模态跳转C.tabBar切换D.startActivity跳转7.Objective-C中,属性修饰符strong的作用是()A.弱引用,不持有对象B.强引用,持有对象,防止对象被释放C.仅用于基本数据类型D.保证线程安全8.Swift中闭包的默认特性不包括()A.可以捕获上下文变量B.可以作为参数、返回值使用C.必须声明参数类型D.支持尾随闭包简写9.iOS中用来实现列表展示的核心控件是()A.UIViewB.UILabelC.UITableViewD.UIButton10.以下不属于iOS内存崩溃常见原因的是()A.野指针访问B.数组越界C.正常的页面跳转D.循环引用二、判断题(共10题,每题2分,共20分,对的打√,错的打×)1.Swift是静态类型语言,变量类型一旦确定不可随意更改。()2.viewDidLoad方法在控制器生命周期中只会执行一次。()3.weak修饰的对象会被系统自动置空,不会产生野指针。()4.Swift中数组和字典默认是可变类型。()5.present模态跳转的页面,只能通过dismiss方式关闭。()6.Objective-C不支持面向对象特性。()7.可选链(?)可以有效避免多层调用中的空值崩溃。()8.UITableView刷新数据必须调用reloadData方法。()9.循环引用只会出现在Block闭包中。()10.iOS应用开发只能使用Xcode工具完成。()三、简答题(共4题,每题8分,共32分)1.简述UIViewController中viewDidLoad、viewWillAppear、viewDidAppear三个方法的调用时机和使用场景。2.详细说明Swift中strong、weak、unowned三种引用的区别及适用场景。3.解释iOS中循环引用的产生原因,以及两种常用的解决方案。4.简述UITableView实现列表展示的核心代理方法和数据源方法的作用。四、实操分析题(共1题,18分)现有一个iOS项目场景:首页列表点击单元格跳转详情页,详情页有网络请求加载数据,返回首页后再次进入详情页,页面无数据刷新,且偶尔出现页面卡死、内存上涨的问题。请分析该场景中可能存在的代码问题,并给出对应的修复方案。详细答案解析一、单项选择题答案及解析1.答案:C解析:Kotlin是安卓开发主流语言,不适用于iOS开发。Swift、Objective-C是iOS核心开发语言,C++可用于iOS混合开发。2.答案:B解析:let声明不可变常量,var声明可变变量;static用于静态属性/方法,final用于禁止重写、继承。3.答案:B解析:main函数是iOS项目程序入口,负责启动程序、开启运行循环;didFinishLaunchingWithOptions是应用启动完成回调,viewDidLoad是控制器视图加载完成回调。4.答案:A解析:控制器视图加载顺序:先执行viewDidLoad(视图初始化加载,仅一次),再执行viewWillAppear(视图即将展示),最后执行viewDidAppear(视图完全展示)。5.答案:B解析:可选类型是Swift核心特性,专门用于处理变量可能为nil的场景,强制开发者处理空值,从根源减少空指针崩溃问题。6.答案:D解析:startActivity是安卓Android页面跳转方法,iOS无该API;push、present、tabBar切换是iOS三大主流页面跳转方式。7.答案:B解析:strong是强引用,会持有对象引用计数,只要有强引用存在,对象就不会被系统回收;weak是弱引用,不持有对象。8.答案:C解析:Swift闭包支持类型推断,无需强制声明参数和返回值类型,可通过上下文自动识别;其余选项均是闭包核心特性。9.答案:C解析:UITableView是iOS原生列表展示控件,用于展示大量结构化数据;UIView是所有控件父类,UILabel用于文本展示,UIButton是按钮控件。10.答案:C解析:数组越界、野指针访问、循环引用都是iOS开发中高频内存崩溃、闪退原因;正常页面跳转是系统规范操作,不会引发内存问题。二、判断题答案及解析1.√解析:Swift为静态强类型语言,变量定义后类型固定,无法直接赋值不同类型数据。2.√解析:viewDidLoad在控制器视图首次加载初始化时执行,生命周期内仅执行一次。3.√解析:weak弱引用对象,当原对象被释放后,weak修饰的变量会自动置为nil,避免野指针。4.×解析:Swift中let声明的数组、字典是不可变类型,var声明的才是可变类型,默认无关键字时需区分修饰符。5.√解析:present模态弹出的页面,独立于导航栈,只能通过dismiss方法关闭,无法通过pop返回。6.×解析:Objective-C是标准的面向对象开发语言,支持类、对象、继承、多态、封装等核心特性。7.√解析:可选链?可自动判断调用链路中是否存在空值,遇到nil直接返回nil,终止调用,有效避免崩溃。8.√解析:UITableView数据更新需主动调用reloadData,触发数据源方法重新加载数据、刷新页面。9.×解析:循环引用不仅出现在Block中,两个对象互相强引用、代理使用strong修饰等场景都会产生循环引用。10.√解析:Xcode是苹果官方唯一指定的iOS、macOS开发工具,项目编写、编译、打包、调试均需依托Xcode。三、简答题答案解析1.三个核心方法调用时机及使用场景(1)viewDidLoad:控制器视图加载初始化完成时调用,整个生命周期仅执行一次。主要用于初始化页面控件、加载静态数据、配置基础UI属性,不适合放置频繁刷新的逻辑。(2)viewWillAppear:页面即将展示在屏幕上时调用,每次页面出现都会执行。主要用于刷新页面动态数据、开启定时器、开启网络监听、更新页面状态等需要频繁触发的逻辑。(3)viewDidAppear:页面已经完全展示在屏幕上时调用,每次页面展示都会执行。主要用于执行页面展示后的延时操作、开启动画、统计页面曝光、处理页面展示后的交互逻辑。2.strong、weak、unowned引用区别及适用场景(1)strong(强引用):默认引用方式,会持有对象,让对象引用计数+1,只要有强引用,对象就不会被释放。适用场景:页面核心数据、控件对象、需要长期持有使用的对象。(2)weak(弱引用):不持有对象,引用计数不变化,原对象释放后,该引用自动置nil,安全无野指针。适用场景:代理、视图父子引用、避免循环引用的场景。(3)unowned(无主引用):不持有对象,引用计数不变化,原对象释放后,该引用不会置nil,再次访问会直接崩溃。适用场景:明确对象生命周期一致、绝对不会提前释放的场景,性能略优于weak。3.循环引用成因及解决方案成因:两个或多个对象之间互相使用强引用持有对方,导致系统无法判定对象释放时机,引用计数无法归零,对象永久驻留内存,造成内存泄漏。常见场景:对象互持、Block闭包持有控制器、代理强引用。解决方案:(1)打破强引用闭环:将其中一方的强引用改为weak弱引用,破除互相持有关系;(2)Block场景使用弱self:在闭包外使用[weakself]/[unownedself]修饰,避免闭包强持有控制器;(3)代理统一使用weak修饰,禁止strong修饰代理属性。4.UITableView核心代理、数据源方法作用(1)数据源方法(UITableViewDataSource):主要负责提供列表数据和单元格数量,是列表展示的核心数据支撑。numberOfRowsInSection:返回对应分组的单元格行数,决定列表展示条数;cellForRowAt:根据索引创建、复用单元格,赋值展示数据。(2)代理方法(UITableViewDelegate):主要负责处理列表的样式、交互、布局逻辑。heightForRowAt:设置单元格高度;didSelectRowAt:监听单元格点击事件,处理跳转、交互逻辑;willDisplayCell:单元格即将展示时的样式微调、动画配置。四、实操分析题答案解析1.核心问题梳理(1)数据不刷新问题:详情页网络请求写在viewDidLoad中,仅首次进入执行,二次进入页面不会重新请求数据,导致数据不更新;(2)页面卡死、内存上涨问题:详情页网络请求未取消、闭包强引用控制器、定时器未销毁,造成内存泄漏;反复进出页面不断创建请求和定时器,堆积大量无效资源,最终导致页面卡顿、内存飙升。2.具体修复方案(1)解决数据不刷新问题:将详情页网络请求逻辑从viewDidLoad迁移至viewWillAppear方法,每次页面展示都会重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校长征主题课程资源库建设方案
- (正式版)DB15∕T 3318-2024 《农业生产社会化服务 农产品营销服务规范》
- 三角函数和差化积后的极限拆分
- 湖南省株洲市石峰区2027届九年级数学第一学期期末复习检测模拟试题含解析
- 2026年部编版七年级历史三国两晋南北朝单元测试卷及答案
- 2026年湖南省湘教版初中生物下册第5章知识点巩固习题及答案
- 2026年人教版小学四年级英语下册第11单元课后练习题及答案
- 吉林省长春市新朝阳实验学校2027届七上数学期末学业水平测试模拟试题含解析
- 2027届河北省石家庄市外国语学校数学七年级第一学期期末检测试题含解析
- 2026年工程机械维修岗位考核题库及答案
- 字母圈圈养协议书
- 《外科学》课件-无菌术
- GB/T 24628-2025医疗保健产品灭菌生物与化学指示物测试设备
- 2024年度北京市存量房交易定金合同
- 物流企业运营绩效考核制度
- 2024桥式门式起重机大修项目及其技术标准
- DL∕T 1475-2015 电力安全工器具配置与存放技术要求
- 中药炮制工职业道德
- MOOC 研究生学术规范与学术诚信-南京大学 中国大学慕课答案
- 慢性伤口护理健康宣教课件
- 人民币收藏培训知识
评论
0/150
提交评论