iOS【面试】2018年面试题集锦

2018面试题:

1、KVO、KVC 是什么,各自底层的实现原理?

2、说说你理解的埋点?

3、消息转发机制原理?

4、说说你理解的weak属性,什么情况下使用 weak 关键字,相比 assign 有什么不同??

5、假如Controller太臃肿,如何优化?

6、项目中网络层如何做安全处理?

7、main()之前的过程有哪些?

http://www.cocoachina.com/ios/20180305/22453.html

8、怎么高效的实现控件的圆角效果?

9、NSIRLConnection 和NSLRLSession 的区别是 么? NSURLProtocol是做什么的?

10、AutoLayout 中的优先级是什么? UIScrollView 中使用Autolayout 会出现什么问题?

11、如何处理UITableVier 中Cell 动态计算高度的问题,都有哪些方案?

12、UIview 和CAlayer 是什么关系? 你 CLayer 做过什么?

13、你在什么场景下会选择使 Category ?类别有什么作用?

14、讲讲iOS事件响应链的原理?

15、什么是 method swizzing ? 讲讲你的使场景以及使时的注意事项?

16、写个“标准“宏 MIN ,这个宏输两个参数并返回较小的那个?

17、介绍下 layoutSubview 和 drawRect?

18、runloop 和线程有什么关系?

19、对程序性能的优化你有什么建议?

20、分析json、xml 的区别 ?  json、xml 解析方式的底层是如何让处理的 ?

21、重写-个NSString类型的,retain 式声明 name 属性的 setter 和 getter 法( MRC ) ?

22、用预处理指令 define 声明个常数, 来表明一年中有多少秒(忽略闰年的问题)。

23、IBOutlet 连出来的视图属性为什么可以被设置成weak?

24、属性readwrite、readonly、assign、retain、copy、nonatomic 什么作用 ? 在哪种情况下 ?

25、#import 和 #include 有什么区别? @class 呢 ? #import <> 和 #import"" 有什么区别?

26、指针与数组名的关系?

27、OC中创建线程的方法是什么? 如果在主线程中执行代码,方法是什么? 如果想延时执行代码,方法是什么?

28、堆和栈的区别?

http://www.cocoachina.com/ios/20180425/23171.html

29、设计模式是什么? 你知道哪些设计模式,并简要叙述?

30、MVC 、MVVM 、MVP 的区别?

31、frame 和 bounds 有什么不同?

32、Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

33、@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的

34、@property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? 

35、用@property声明的 NSString / NSArray / NSDictionary 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?

36、浅拷贝和深拷贝的区别?

37、系统对象的 copy 与 mutableCopy 方法?

38、这个写法会出什么问题:@property (nonatomic, copy) NSMutableArray *arr ;

39、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter ?

40、写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name ,写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name

41、@synthesize 和 @dynamic 分别有什么作用?

42、常见的 Objective-C 的数据类型有那些,和C的基本数据类型有什么区别?如:NSInteger 和 int

43、id 声明的对象有什么特性?

44、Objective-C 如何对内存管理的,说说你的看法和解决方法?

45、Objective-C 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?

46、Category(类别)、 Extension(扩展)和继承的区别?

47、我们说的OC是动态运行时语言是什么意思?

48、为什么我们常见的delegate属性都用是week而不是retain/strong ?

49、什么时候用delete,什么时候用Notification ?

50、ViewController生命周期?

51、方法和选择器有何不同?

52、你是否接触过OC中的反射机制?简单聊一下概念和使用?

53、调用方法的两种方式?

54、如何对iOS设备进行性能测试?

55、开发项目时你是怎么检查内存泄露?

56、什么是懒加载?

57、类变量的 @public,@protected,@private,@package 声明各有什么含义?

58、什么是谓词?

59、isa指针问题?

60、如何访问并修改一个类的私有属性?

61、一个 objc 对象的 isa 的指针指向什么?有什么作用?

62、下面的代码输出什么?

63、写一个完整的代理,包括声明、实现?

64、isKindOfClass、isMemberOfClass、selector 作用分别是什么?

65、delegate 和 notification 的区别?

66、什么是 block ?

67、block反向传值?

68、block的注意点?

69、BAD_ACCESS在什么情况下出现?

70、lldb(gdb)常用的控制台调试命令?

71、你一般是怎么用 Instruments 的?

72、iOS中常用的数据存储方式有哪些?

73、iOS的沙盒目录结构是怎样的?

74、iOS多线程技术有哪几种方式?

75、GCD 与 NSOperation 的区别?

76、写出使用 GCD 方式从子线程回到主线程的方法代码?

77、如何用 GCD 同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)

78、dispatch_barrier_async(栅栏函数)的作用是什么?

79、以下代码运行结果如何?

80、什么是 RunLoop ?

81、什么是 Runtime ?

82、Runtime实现的机制是什么,怎么用,一般用于干嘛 ?

83、什么是 Method Swizzle(黑魔法),什么情况下会使用?

84、_objc_msgForward 函数是做什么的,直接调用它将会发生什么?

85、什么是 TCP / UDP ?

86、通信底层原理(OSI七层模型)?

87、介绍一下 XMPP ?

88、OC 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?

89、tableView 的重用机制?

90、用伪代码写一个线程安全的单例模式?

91、如何实现视图的变形?

92、在手势对象基础类 UIGestureRecognizer 的常用子类手势类型中哪两个手势发生后,响应只会执行一次?

93、字符串常用方法?

94、如何高性能的给 UIImageView 加个圆角?

95、你是怎么封装一个 view 的?

96、HTTP协议中 POST 方法和 GET 方法有那些区别?

97、请简单的介绍下 APNS 发送系统消息的机制?

98、AFNetworking 底层原理分析?

99、描述下 SDWebImage 里面给 UIImageView 加载图片的逻辑?

100、友盟统计接口统计的所有功能?

101、不用中间变量,用两种方法交换 A 和 B 的值?

102、求最大公约数?

103、模拟栈操作 ?

104、排序算法?

105、折半查找(二分查找)?

106、在 Objective-C 中,enum 建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型?

107、避免使用C语言中的基本数据类型,建议使用 Foundation 数据类型,对应关系如下?

108、谈谈 UITableView 的优化?

109、如何实行cell的动态的行高?

110、如何让计时器调用一个类方法?

111、如何重写类方法?

112、NSTimer 创建后,会在哪个线程运行?

113、id 和 NSObject* 的区别?

114、iOS 开发逆向传值的几种方法整理 ?

115、浅谈iOS开发中方法延迟执行的几种方式 ?

116、NSPersistentStoreCoordinator , NSManaged0bjectContext 和 NSManaged0bject 中的那些需要在线程中创建或者传递?

117、您是否做过一部的网络处理和通讯方面的工作?如果有,能具体介绍一下实现策略么?

118、你使用过 Objective-C 的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?

119、Core 开头的系列的内容。是否使用过 CoreAnimation 和 CoreGraphics 。UI 框架和 CA,CG 框架的联系是什么?分别用 CA 和 CG 做过些什么动画或者图像上的内容。(有需要的话还可以涉及 Quartz 的一些内容)?

120、是否使用过 CoreText 或者 CoreImage 等?如果使用过,请谈谈你使用 CoreText 或者 CoreImage 的体验?

121、NSNotification 和 KVO 的区别和用法是什么?什么时候应该使用通知,什么时候应该使用 KVO,它们的实现上有什么区别吗?如果用 protocol 和 delegate(或者 delegate 的 Array )来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然 protocol 和 delegate 这种东西面试已经面烂了…)

122、你用过 NSOperationQueue 么?如果用过或者了解的话,你为什么要使用 NSOperationQueue,实现了什么?请描述它和 GCD 的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)

123、既然提到 GCD,那么问一下在使用 GCD 以及 block 时要注意些什么?它们两是一回事儿么?block 在 ARC 中和传统的 MRC 中的行为和用法有没有什么区别,需要注意些什么?

124、对于 Objective-C,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做?

125、你实现过一个框架或者库以供别人使用么?如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的 public 的 API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架?

https://www.jianshu.com/p/2e1b3f54b4f3

posted on 2018-08-22 16:18  北极星1992婵  阅读(736)  评论(0编辑  收藏  举报

导航