链接:http://www.360doc.com/content/20/0926/20/65839522_937736217.shtml
前言:最近应该有很多小伙伴去跳槽面试的吧,相信各位有的已经顺利收到offer了,而有些则是碰壁了,那么我在这里给大家准备了相关面试资料,还有相关算法资料。想了解的可找我拿
问题
1.多线程的底层实现?
2.线程间怎么通信?
3.网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?
4.用NSOpertion和NSOpertionQueue处理A,B,C三个线程,要求执行完A,B后才能执行C,怎么做?
5.列举cocoa中常见对几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?
6.GCD内部怎么实现的?
7.你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用
NSoperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。
8.既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿吗? block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?
9.在异步线程中下载很多图片,如果失败了,该如何处理?请结合RunLoop来谈谈解决方案.(提示:在异步线程中启动一个RunLoop重新发送网络请求,下载图片)。
10.怎么保证多人开发进行内存泄露的检查?
11.非自动内存管理情况下怎么做单例模式?
12.对于类方法(静态方法)默认是autorelease的,所有类方法都会这样吗?
13.block在ARC中和MRC中的用法有什么区别,需要注意什么?
14.什么情况下会发生内存泄漏和内存溢出?
15.[NSArray arrayWithobject:(id)obj]这个方法添加对象后,需要对这个数组做释放操作吗?
16.自动释放池底层怎么实现?
17.KVO内部实现原理是什么?
18.是否可以把比较耗时的操作放在NSNotificationCenter中?
19.Foundation对象与Core Foundation对象有什么区别?
20.如何不用中间变量,用两种方法交换A和B的值?
21.简单描述下对单利模式设计的理解?
22.runtime实现的机制是什么,如何用,用来做什么?你所使用的相关的头文件或者某些方法的名称有哪些?
23.是否使用Core Text或者Core lmage等?如果使用过,请谈谈你使用Core Text或者Corelmage的体验。
24.NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate (或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)?
25.Block内部的实现原理
26.有两个数组a和b,大小都为n,通过交换a,b中的元素,使sum(a)-sum(b)最小
27.如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?
28.SQLite数据存储是怎么用?
29.简单描述下客户端的缓存机制?
30.你实现过多线程的Core Data么? NSPersistentStoreCoordinator ,
NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?
31.Core Data数据迁移
32.怎么解决缓存池满的问题(cell)
33.CAAnimation的层级结构
34.按钮或者其它UIView控件的事件传递的具体过程
35.控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
36.NSRunLoop的实现机制,及在多线程中如何使用?
37.ioS7之前,后台执行内容有几种形式,都是什么?
38.简单说一下APP的启动过程,从main文件开始说起
39.把程序自己关掉和程序进入后台,远程推送的区别?
40.SIP是什么?
41.有些图片加载的比较慢怎么处理?你是怎么优化程序的性能的?
42.你实现过一个框架或者库以供别人使用么?如果有,请谈—谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的APl,并指出大概需要如何做,需要注意一些什么方面,来使别人容易地使用你的框架。
43.App需要加载超大量的数据,给服务器发送请求,但是服务器卡住了如何解决?
44.利用NSNotificationCenter实现跨多控制器传输数据和消息中用同步还是异步?
45.SDWeblmage具体如何实现?
46.AFN 与ASI有什么区别
47.Runloop定时源和输入源
48.如果在网络数据处理过程中,发现一处比较卡,一般怎么解决
49.怎么解决sqlite锁定的问题
50.讲下主流框架的实现原理(AFNetworking SDweblmage)
这里有一个iOS交流圈:891 488 181 不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
1、多线程的底层实现?
1.首先搞清楚什么是线程、什么是多线程
2.Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mach的线程
3.开发中很少用Mach级的线程,因为Mach级的线程没有提供多线程的基本特征,线程之间是独立的
4.开发中实现多线程的方案
C语言的POSIX接口:#include <pthread.h>
OC的NSThread
C语言的GCD接口(性能最好,代码更精简)
OC的NSOperation和NSOper