2022年iOS面试题(附答案).docx
2022年最新iOS面试题(附答案)最近大家都要准备去面试或者已经在面试的,这里我给大家准备了梃多资料可以私信我拿看看了解下。底下就是我整理出来的些面试 题iOS类(class )和结构体(struct)有什么区别?Swift中类是引用类型,结构体是值类型。值类型在传递和赋值时将逬行复制,而引用类型则只会使用引用对象的个“指向”。所以他们两 者之间的区别就是两个类型的区别举个简单的例子,代码如下1234567891011121314151617181920class Temperature var value: Float = 37.0)class Person var temp: Temperature?tunc sick() temp?.value = 41.0)let A = Person()let B = Person()let temp = Temperature()A.temp = tempB.temp = temp复制代码有想要领取免费资料的可以进裙或者加好友领取这里有一个iOS交流圈:可以来了解,分享BAT,阿里面试题、面试经验,讨论技 术裙里资料直接下载就行,大家一起交流学习!有想要的面试资料或者其他资料也可以找我,欢迎咨询!需要的可自行下载A.sick()上面这段代码,由于Temperature是class 为引用类型,故A的temp和B的temp指向同一个对象。A的temp修改了,B 的temp也随之修改。这样A和B的temp的值都被改成了41.0 °如果将Temperature改为struct,为值类型,则A的temp修改不 影响B的temp。内存中,引用类型诸如类是在堆(heap )上,而值类型诸如结构体实在栈(stack )上迸行存储和操作。相比于栈上的操作,堆上的操作更 加复杂耗时,所以苹果官方推荐使用结构体,这样可以提高App运行的效率。class有这几个功能struct没有的:class可以继承,这样子类可以使用父类的特性和方法类型转换可以在runtime的时候检查和解释一个实例的类型可以用deinit来释放资源-个类可以被多次引用struct也有这样n个优势:结构较小,适用于复制操作,相比于个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应用中实现多线程所需的一些基础知识。在开始之前,需要理解是要提供给GCD队列的是代码块,用于在系统或者用户创建的的队列上调度运行。声明个队列如下会返回一个用户创建的队列:123dispatch_queue_t myQueue = dispatch_queue_create("com.iphonedevblog.postM, NULL); 复制代石"其中,第一个参数是标识队列的第二个参数是用来定义队列的参数(目前不支持,因此传入NULL)。执行个队列 如下会异步执行传入的代码:dispatch_async(myQueue, A self doSomething; 首先传之前创建的队列然后提供由队列运行的代码块。声明并执行个队列如果不需要保留要运行的队列的引用可以通过如下代码实现之前的功能:dispatch_async(dispatch_queue_create("com.iphonedevblog.post" ,NULL),人$6代5。!由冶9;);如果需要暂停个队列可以调用如下代码。暂停个队列会阻止和 该队列相关的所有代码运行。dispatch_suspend(myQueue);暂停一个队列如果暂停个队列不要忘记恢复。暂停和恢复的操作和内存管理中的retain和release类似。调用dispatch_suspend会增加暂停计数而 dispatch,esume则会减少。队列只有在暂停计数变成零的情况下才开始运行。dispatch_resume(myQueue);恢复个队列从队列中在主线程运行代码有些操作无法在异步队列运行,因此必须在主线程(每个应用都有一个)上运行。UI绘图以及任何对NSNotificationCenter的调用必须在 主线程长进行。在另个队列中访问主线程并运行代码的示例如下:dispatch.syncCdispatch-get.main.queueO, A selfdismissLoginWindow;);注意,dispatch_suspend (以及dispatch_resume )在主线程上不起作用使用GCD,可以让你的程序不会失去响应.多线程不容易使用用了GCD 会让它变得简单。你无需专门进行线程管理,很棒!12345678910dispatch_queue_t t1 =dispatch_queue_create(M1" .NULL);dispatch_queue_t t2=dispatch_queue_create(',2H,N U LL);dispatch_async(t1, Aself printl;);dispatch_async(t2,A self print2;);复制代码iOS自动释放池是什么,如何工作?当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自 动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就 被释放。1' object-c是通过种"referring counting”(引用计数)的方式来管理内存的,对象在开始分配内存(alloc)的时候引用计数为,以后每当碰 到有copy,retain的时候引用计数都会加一,每当碰到release和autorelease的时候引用计数就会减,如果此对象的计数变为了。,就会被系统 销毁.2 ' NSAutoreleasePool就是用来做引用计数的管理工作的,这个东西一般不用你管的.3 ' autorelease和release没什么区别只是引用计数减一的时机不同而已,autorelease会在对象的使用真正结束的时候做引用计数减.iOS个tableview是否可以关联两个不同的数据源?你会怎么处理?答案:首先我们从代码来看,数据源如何关联上的,其实是在数据源关联的*方法里实现的。因此我们并不关心如何去关联他他怎么关 联上方法只是让我返回根据自己的需要去设置如相关的数据源。因此,我觉得可以设置多个数据源啊,但是有个问题是,你这是想干嗎 呢?想让列表如何显示不同的数据源分区块显示?iOS类别的作用?继承和类别在实现中有何区别?category可以在不获悉不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。并且如果类别和原来类中的方法产生名 称冲突则类别将覆盖原来的方法因为类别具有更高的优先级。类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。(2)创建对私有法的前向引用。(3)向对象添加非正式协议。继承可以增加修改或者删除方法并且可以增加属性。从输url到页面展示到底发生了什么 1、输地址 2、浏览器查找域名的IP地址 3、浏览器向web服务器发送个HTTP请求 4、服务器的永久重定向响应 5、浏览器跟踪重定向地址 6、服务器处理请求 ?、服务器返回个HTTP响应 8、浏览器显示HTML 9、浏览器发送请求获取嵌入在HTML中的资源(如图片、音频、视频、CSS、JS等等)iOS中持久化方式有哪些?属性列表文件- NSUserDefaults的存储实际是本地生成一个plist文件,将所需属性存储在plist文件中对象归档本地创建文件并写入数据,文件类型不限SQLite数据库本地创建数据库文件,进行数据处理CoreData-同数据库必理思想相同,但实现方式不同你在开发过程中常用到哪些定时器定时器时间会有误差吗,如果有,为什么会有误差?iOS中常NSTimer、CADisplayLink ' GCD定时器,其中NSTimerCADisplayLink基于NSRunLoop实现,故存在误差,GCD定时器只 依赖系统内核,相对一前两者是比较准时的。误差原因是:与NSRunLoop机制有关,因为RunLoop每跑完一次圈再去检查当前累计时间是否已经达到定时设置的间隔时间,如果未达到, RunLoop将进入下轮任务,待任务结束之后再去检查当前累计时间,而此时的累计时间可能已经超过了定时器的间隔时间,故会存 在误 差。怎样防!t指针的越界使用问题?必须让指针指向一个有效的内存地址,1'防!t数组越界2'防止向块内存中拷贝过多的内容3 '防止使用空指针4、防!t改变const修改的指针5、防止改变指向静态存储区的内容6、防止两次释放个指针、防止使用野指针.iOS你在项目中用过runtime吗?举个例子Objective-C语言是门动态语言编译器不需要关心接受消息的对象是何种类型,接收消息的对象问题也要在运行时处理。pragramming层面的runtime主要体现在以下几个方面: 关联对象 Associated Objects 消息发送Messaging 消息转发 Message Forwarding 方法调配 Method Swizzling "类对象"NS Proxy Foundation | Apple Developer Documentation KVC * KVO About Key-Value Coding有想要领取免费资料的可以逬裙或者加好友领取这里有一个iOS交流圈:可以来了解,分享BAT,阿里面试题、面试经验讨论技 术裙里资料直接下载就行,大家一起交流学习!憊Animation 京Block13i£3 pdfRuMocpZFCSL Runtirn«l3lS.駐典电子氢pdf瓦pdfpdfpdfpdfpdfpdf书.pdf文章到这里就结束了 你也可以私信我及时获取面试相关资料。如果你有什么意见和建议欢迎给我留言。