2022年iOS面试题(附答案).pdf

上传人:奔*** 文档编号:89652451 上传时间:2023-05-08 格式:PDF 页数:4 大小:650.49KB
返回 下载 相关 举报
2022年iOS面试题(附答案).pdf_第1页
第1页 / 共4页
2022年iOS面试题(附答案).pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年iOS面试题(附答案).pdf》由会员分享,可在线阅读,更多相关《2022年iOS面试题(附答案).pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022年最新iOS面 试 题(附答案)最近大家都要准备去面试或者已经在面试的这里我给大家准备了梃多资料,可以私信我拿,看看了解下。底下就是我整理出来的一些面试题iO S类(class)和结构体(struct)有什么区别?Sw ift中,类是引用类型结构体是值类型。值类型在传递和赋值时将进行复制而引用类型则只会使用引用对象的一个“指向”。所以他们两者之间的区别就是两个类型的区别。举个简单的例子,代码如下1234567891011121314151617181920class Temperature var value:Float=37.0)class Person var temp:Tempe

2、rature?func sick()temp?.value=41.0)let A=Person()let B=Person()let temp=Temperature()A.temp=tempB.temp=temp复制代码有想要领取免费资料的可以进裙或者加好友领取这里有一个iOS交流圈:可以来了解分享BAT,阿里面试题、面试经验讨论技术裙里资料直接下载就行大家一起交流学习!有想要的面试资料或者其他资料也可以找我欢迎咨询!需要的可自行下载A.sickQ 这段代码,由于Temperature是class 为引用类型故A的tem p和B的temp指向同一个对象。A的temp修改了 B的tem p也随

3、之修改。这样A和B的tem p的值都被改成了41.0。如果将Temperature改为struct,为 值 类 型则A的tem p修改不影 响B的te m p。内存中引用类型诸如类是在堆(heap)上而值类型诸如结构体实在栈(stack)上进行存储和操作。相比于栈上的操作,堆上的操作更加复杂耗时,所以苹果官方推荐使用结构体这样可以提高App运行的效率。class有这几个功能struct没有 的:class可以继承,这样子类可以使用父类的特性和方法类型转换可以在runtime的时候检查和解释一个实例的类型可以用deinit来释放资源-个类可以被多次引用struct也有这样几个优势:结构较小,适用

4、于复制操作,相比于一个class的实例被多次引用更加安全。无须担心内存memory leak或者多线程冲突问题什么是GCD?谈谈你对GCD的理解?GCD是Grand Central Dispatch的缩写。Grand Central Dispatch(GCD)是Apple开发的一个多核编程的较新的解决方法。在Mac OS X 10.6雪豹中首次推出并在最近引入到了iOS4.0。GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等复杂的异步编程问题。GCD可以完成很多事情但是这里仅关注在iOS应用中实现多线程所需的一些基础知识。在开始之前,需

5、要理解是要提供给GCD队列的是代码块,用于在系统或者用户创建的的队列上调度运行。声明一个队列如下会返回一个用户创建的队列:1 dispatch_queue_t myQueue=dispatch_queue_create(com.iphonedevblog.post,NULL);2复制代码3其 中,第一个参数是标识队列的第二个参数是用来定义队列的参数(目前不支持,因此传入NULL)。执行一个队列如下会异步执行传入的代码:dispatch_async(myQueue,Aself doSomething;首先传入之前创建的队列然后提供由队列运行的代码块声明并执行一个队列如果不需要保留要运行的队列的引

6、用可以通过如下代码实现之前的功能:dispatch_async(dispatch_queue_create(com.iphonedevblog.post,NULL),八selfdoSomething;);如果需要暂停一个 队 列,可以调用如下代码。暂停一个队列会阻it和该队列相关的所有代码运行。dispatch_suspend(myQueue);暂停一个队列如果暂停一个队列不要忘记恢复。暂停和恢复的操作和内存管理中的retain和release类似。调用dispatch_suspend会增加暂停计数而dispatch,esume则会减少。队列只有在暂停计数变成零的情况下才开始运行。dispat

7、ch_resume(myQueue);恢复一个队列从队列中在主线程运行代码有些操作无法在异步队列运行因此必须在主线程(每个应用都有一个)上运行。UI绘图以及任何对NSNotificationCenter的调用必须在主线程长进行。在另一个队列中访问主线程并运行代码的示例如下:dispatch.syncCdispatch-geLmain.queueO,A selfdismissLoginWindow;);注 意,dispatch_suspend(UZXdispatch_resume)在主线程上不起作用。使用GCD,可以让你的程序不会失去响应.多线程不容易使用用了GCD 会让它变得简单。你无需专门进

8、行线程管理,很 棒!12345678910dispatch_queue_t t1=dispatch_queue_create(1,NULL);dispatch_queue_t t2=dispatch_queue_create(,2,NULL);dispatch_async(t1,Aself printl;);dispatch_async(t2,A self print2;);复制代码iOS自动释放池是什么,如何工作?当您向一个对象发送一个autorelease消息时 Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送

9、消息。当程序执行到作用域结束的位置时自动释放池就会被释放池中的所有对象也就被释放。1、object-c是通过一种referring counting”(引用计数)的方式来管理内存的,对象在开始分配内存(alloc)的时候引用计数为一,以后每当碰到有copy,retain的时候引用计数都会加一,每当碰到release和autorelease的时候引用计数就会减一,如果此对象的计数变为了0,就会被系统销毁.2、NSAutoreleasePool就 是 用 来 做 引 用 计 数 的 管 理 工 作 的,这 个 东 西 一 般 不 用 你 管 的.3、autorelease和release没什么区别

10、,只是引用计数减一的时机不同而已autorelease会在对象的使用真正结束的时候才做引用计数减一.i O S-个tableview是否可以关联两个不同的数据源?你会怎么处理?答 案:首先我们从代码来看数据源如何关联上的,其实是在数据源关联的*方法里实现的。因此我们并不关心如何去关联他,他怎么笑联 上方法只是让我返回根据自己的需要去设置如相关的数据源。因 此,我觉得可以设置多个数据源啊,但是有个问题是,你这是想干嘛呢?想让列表如何显示不同的数据源分区块显示?iOS类别的作用?继承和类别在实现中有何区别?竺 幸category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加不能删

11、除修改。并且如果类别和原来类中的方法产生名称 冲 突则类别将覆盖原来的方法因为类别具有更高的优先级。类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。(2)创建对私有方法的前向弓佣。(3)向对象添加非正式协议。继承可以增加修改或者删除方法,并且可以增加属性。从输入url到页面展示到底发生了什么 1、输入地址 2、浏览器查找域名的IP地址 3、浏览器向web服务器发送一个HTTP请求 4、服务器的永久重定向响应 5、浏览器跟踪重定向地址 6、服务器处理请求 7、服务器返回一个HTTP响应 8、浏览器显示HTML 9、浏览器发送请求获取嵌入在HTML中的资源(如图片、音频 视

12、频、CSS、JS等 等)iOS中持久化方式有哪些?属性列表文件-NSUseDefaults的存 储实际是本地生成一个plist文件,将所需属性存储在plist文件中对象归档一本地创建文件并写入数据,文件类型不限SQLite数据库-本地创建数据库文件,进行数据处理CoreData-同数据库处理思想相同,但实现方式不同你在开发过程中常用到哪些定时器定时器时间会有误差吗如果有,为什么会有误差?iOS中常NSTimer、CADisplayLink GCD定 时 器其中NSTimer、CADisplayLink基于NSRunLoop实 现故存在误差,GCD定时器只依赖系统内核相对一前两者是比较准时的。误

13、差原因是:与NSRunLoop机制有关因为RunLoop每跑完一次圈再去检查当前累计时间是否已经达到定时设置的间隔时间,如果未达到RunLoop将进入下一轮任务待任务结束之后再去检查当前累计时间而此时的累计时间可能已经超过了定时器的间隔时间,故会存 在误差。怎样防止指针的越界使用问题?必须让指针指向一个有效的内存地址,1 防It数组越界2、防止向一块内存中拷贝过多的内容3、防止使用空指针4、防止改变const修改的指针5、防止改变指向静态存储区的内容6、防止两次释放一个指针7、防止使用野指针.iOS你 在 项 目 中 用 过runtime吗?举个例子Objective-C语言是一门动态语言编译

14、器不需要关心接受消息的对象是何种类型,接收消息的对象问题也要在运行时处理。pragramming层面的runtime主要体现在以下几个方面:关联对象 Associated Objects 消息发送Messaging 消息转发 Message Forwarding 方法调配 Method Swizzling 类 对 象 NS Proxy Foundation|Apple Developer Documentation KVC、KVO About Key-Value Coding有想要领取免费资料的可以进裙或者加好友领取这里有一个iOS交流圈:可以来了解,分享BAT,阿里面试题、面试经验讨论技术裙里资料直接下载就行,大家一起交流学习!iOS隹序氏曰试 15,殖精选iOS国 AnimationlBh BAT圆 乩 宝 典.BlockShSI.pdf OC底言H 法恐 RunlocpH出S?RuntimeSS.U1曲 江 F 式墨.笺试S 我)电子 瓦 pdf pdf书.pdf月星ios苴试w 多抚邑司试ss.内存m a 国史最 史 奉 国 以 意.苏强安全及D傕.m/与 茸 法.网络唱关耳温s,性爱优化园总建.文章到这里就结束了你也可以私信我及时获取面试相关资料。如果你有什么意见和建议欢迎给我留言。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁