iOS 开发笔试题及参考答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

iOS开发笔试题及参考答案

一、选择题(每题5分,共30分)

下列关于iOS中ARC的描述,错误的是()

A.ARC是自动引用计数,编译期自动插入retain/release代码

B.ARC下不能使用autoreleasepool

C.ARC会自动管理Objective-C对象的内存,基本数据类型需手动管理

D.ARC下strong指针会增加对象引用计数,weak指针不会

关于UIViewController的生命周期,正确的调用顺序是()

A.init→loadView→viewDidLoad→viewWillAppear→viewDidAppear

B.init→viewDidLoad→loadView→viewWillAppear→viewDidAppear

C.loadView→init→viewDidLoad→viewDidAppear→viewWillAppear

D.init→viewWillAppear→loadView→viewDidLoad→viewDidAppear

下列哪种方式不能实现多线程编程()

A.NSThread

B.GCD

C.NSOperationQueue

D.NSNotificationCenter

关于iOS中的沙盒目录,说法错误的是()

A.Documents目录可存储用户生成的数据,iTunes同步时会备份

B.Library/Caches目录适合存储缓存数据,系统可能在低内存时清理

C.tmp目录用于存储临时文件,应用退出后数据会保留

D.沙盒目录下的文件不能被其他应用直接访问

下列关于UIView和CALayer的关系,描述正确的是()

A.UIView是CALayer的子类

B.UIView负责事件处理,CALayer负责界面渲染

C.一个UIView只能对应一个CALayer

D.CALayer可以直接响应触摸事件

关于Objective-C中分类(Category)的说法,错误的是()

A.分类可以为已存在的类添加方法

B.分类可以添加属性,但需要手动实现setter/getter方法

C.分类可以重写原类的方法

D.分类不能添加实例变量

二、简答题(每题10分,共40分)

简述iOS中strong、weak、assign、copy四种属性修饰符的区别及使用场景。

什么是RunLoop?它的主要作用是什么?iOS中有哪些常见的RunLoop模式?

简述GCD的核心概念,以及dispatch_sync和dispatch_async的区别。

解释iOS中的内存泄漏,常见的内存泄漏场景有哪些?如何排查和解决?

三、编程题(每题15分,共30分)

实现一个方法,将一个NSArray中的字符串按首字母大小写不敏感的方式排序(要求使用Objective-C)。

设计一个简单的UITableView列表,实现数据加载、单元格复用,以及点击单元格弹出提示(要求使用Swift)。

参考答案

一、选择题

B(ARC下可以使用autoreleasepool,用于手动管理自动释放池)

A(UIViewController生命周期核心顺序:初始化→加载视图→视图加载完成→视图即将显示→视图已显示)

D(NSNotificationCenter是通知中心,用于跨组件通信,不涉及多线程)

C(tmp目录存储临时文件,应用退出后系统会清理该目录下的数据)

B(UIView是CALayer的代理,负责事件处理;CALayer负责绘制和动画,是视图的底层渲染核心)

C(分类不建议重写原类方法,会导致方法覆盖且无法调用原实现,如需修改原类逻辑建议使用继承)

二、简答题

属性修饰符区别及场景:

strong:强引用,引用计数+1,对象生命周期与引用者绑定,用于修饰需要长期持有、不希望被释放的对象(如控制器持有视图)。

weak:弱引用,引用计数不增加,对象释放后指针自动置为nil,避免野指针,用于修饰可能出现循环引用的对象(如delegate、IBOutlet)。

assign:用于修饰基本数据类型(int、float等),不涉及引用计数,若修饰对象会导致野指针(对象释放后指针不置空)。

copy:拷贝对象,创建新的副本,引用计数独立,用于修饰不可变对象(如NSString、NSArray),避免被外部可变对象意外修改(如用NSMutableString给NSString属性赋值时,copy

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档