iOS面试五十题(附答案)

链接: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和NSOperat

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值