iOS面试题整理

读书笔记之--《iOS程序员面试笔试真题与解析》猿媛之家/组编

想要提高还得看书,印刷出版的书籍,虽不及网络更新及时,但内容容更系统化……

1.1开发基础知识

1、iOS用什么语言开发?开发工具是什么?

2、什么是LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

3、Xcode项目中workspace与project的区别是什么?

4、Xcode项目中target和scheme的区别是什么?

5、Xcode中Build Settings、Build Phases和Build rules之间有什么区别?

6、iOS工程的依赖管理工具有哪些?

7、CocoaPods的工作原理是什么?

8、使用Xcode创建工程时,支持同时创建的版本管理库是:

9、Objective-C和Swift的区别是什么?

10、“Cocoa”“Foundation”和“UIKit”的区别是什么?

11、“Foundation”和“CoreFoundation”的区别是什么?

12、什么是“懒加载”(Lazy Loading)?

13、“AppID”和“Bundle ID”的区别是什么?

14、iOS中动态库和静态库的区别是什么?

2.1语言基础

15、#import与#include、@class有什么区别?#import<>与#import“”又有什么区别?

16、OC中堆和栈的区别是什么?

17、OC中self和super有什么区别?为什么要用[super init]?

18、属性和实例变量的区别是什么?如何对属性和实例变量进行访问权限的控制?属性如何做到选择性实现(自定义实现)setter和getter方法呢?

19、@synthesize和@dynamic各表示什么?他们之间又什么区别?

20、属性中的修饰关键字有哪些?(原子性语义、读写语义、内存管理语义)

21、什么时候使用“weak”关键字?“assign”和“weak”有什么区别?

22、nonatomic和atomic的区别是什么?atomic是绝对的线程安全吗?如果不是,那么应该如何实现?

23、类方法和实例方法有什么区别?(1、2、3、4、5)

24、类方法创造的对象是否需要release释放?

25、什么是类工厂方法?(1、2、3)

26、OC中有方法的重载吗?

27、OC中基本数据类型有哪些?(三种数据类型:基本数据类型、对象数据类型、id数据类型)

28、OC中的NSInteger类型和C语言中的int类型有什么区别?

29、常见的OC的数据类型有哪些?与C语言的基本数据类型有什么区别?

30、id声明的变量有什么特性?id和C语言的void*之间如何转换?

31、instancetype和id有什么区别?什么是关联返回类型、非关联返回类型?

32、在OC中,前置运算和后置运算有什么区别?

33、OC有多继承吗?没有的话用什么替代?

34、OC中有虚基类的概念吗?(C++多重继承二异性)

35、使用protocol时,声明一组可选择实现与否的函数,需要在声明的前一行加上______?必须要实现的函数前一行要加上________?

36、OC中Category的作用是什么?给现有的类添加新的方法时,OC中有4种方法可以做到分别是?

37、Category的优点4和缺点5?

38、Category的实现原理是什么?Category为什么只能加方法,不能直接添加实例变量?

39、Category中使用关联对象生成属性的原理是什么?

40、Category中有load方法吗?Category中的load方法是什么时候调用的?load方法能继承吗?

41、block的原理是什么?使用的时候需要注意什么?

42、如何解决block的循环引用?

43、__block和__weak修饰符的区别有哪些?

44、OC类方法load和initialize的区别?

45、copy方法时深复制还是浅复制?

46、什么是runtime?

47、什么是isa指针?它的作用是什么?

48、什么是non-pointer isa和Tagged Pointer?

49、对语句NSString* obj =[ [NSData alloc]init],编译时和运行时obj分别是什么类型?

50、runtime如何实现weak变量的自动置nil功能?

51、请根据runtime的实现描述weak变量赋值的全过程。

52、能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

53、请简述OC中向一个对象发送消息的整个过程。

54、OC中向一个nil对象发送消息会发上什么?

55、ARC环境下,autoreleased对象什么时候释放?

56、在ARC环境下需不需要手动添加@autoreleasedpool?

57、在ARC环境下,是否还需要调用dealloc方法?(OC对象、非OC对象,如CoreFoundation)

58、请简述runloop的基本概念和实现原理。                                

59、为什么把NSTimer对象以NSDefaultRunLoopMode添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了?

60、NSTimer准吗?如果不准,那么如何实现一个精准的NSTimer?(什么是GCD)

61、自旋锁和互斥锁的区别是什么?

62、iOS如何进行线程间的通信?(1、2、3)

63、你在项目中使用过多线程技术吗?iOS中哪些方式可以实现多线程?(pthread、NSThread、GCD、NSOperation)

64、GCD和NSOperation的区别有哪些?什么时候用GCD?什么时候用NSOperation?

65、用NSOperation和NSOperationQueue处理A、B、C三个线程,要求执行完A、B后才能执行C,怎么做?

66、请描述多线程安全问题的几种解决方案。(1、2、3)

67、如何使用NSURLSession发送网络请求?

68、NSURLConnection和NSURLSession有哪些区别?(1、下载方式;2、请求方式的控制;3、断点续传;4、配置信息)

69、网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?

70、在iOS中,混合HTML5开发App是如何实现的?在App中使用HTML5的优缺点是什么?

5.1delegate和block

71、delegate和block的区别是什么?block需要注意些什么?(他们的优缺点分别是什么,使用场景分别是什么)

72、delegate的修饰词用weak,为什么不能用strong和assign呢?

5.2KVC和KVO

73、什么是KVC和KVO?(键值编码、键路径、键值观察;写代码)

74、KVO的原理是什么?(KVO原理图)

5.3推送和通知

75、NSNotification、Delegate、Block和KVO之间的区别是什么?(举例:股市)

6.1持久化方案

76、iOS中有哪些持久化数据的方案?你平时喜欢用哪一种?为什么?

77、什么是归档?归档对象属性中含有自定义对象怎么办?

78、什么是NSManagedObject模型?描述一下托管对象上下文和他提供的方法。

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

(什么是沙盒,它的作用是什么,目录结构如何,每个目录如何获取)

80、plist文件是用来做什么的?一般用它来处理什么方面的问题?

(plist的本质、用于存储哪些数据、使用过程:手动创建、代码创建)

81、什么是对象的序列化和反序列化,它们用来做什么?

常见的序列化格式: 、、、

82、OC中如何实现复杂对象的存储?

83、使用NSUserDefault时,如何处理布尔的默认值?

7.1视图和UI控件

84、UIView和CALayer是什么关系?

85、loadView的作用是什么?重写loadView时需要写[super loadView]吗?为什么?重写loadView的作用是什么?

86、viewWillLayoutSubview的作用是什么?都什么时候会调用viewWillLayoutSubview?

87、使用drawRect有什么影响?需要注意些什么?

88、如何高性能地给UIImageView加个圆角?(什么是当前屏幕渲染、离屏渲染)

89、请简述UITableView的复用机制,如何解决cell复用的问题(新的子视图和旧的子视图重叠的现象)?

90、请描述UITableView的优化,如何高性能计算cell高度?

7.2动画

91、CADisplayLink于NSTimer有什么不同?(通过代码分析)

92、改变UIView的哪些属性能够产生动画效果?

93、什么是隐式动画和显式动画?(CALayer的可动画属性、非关联图层)

backgroundColor、bounds、transform、opacity、anchorPoint;UIView除了根图层的其他子图层。

94、Cocoa Touch提供了哪几种Core Animation过渡类型?

8.1AFNetworking

95、使用第三方框架的时候,是否仔细研读过他们的源码吗?AFNetWorking的底层原理是什么?

96、使用AFNetworking做过断点续传吗?(断点续传的主要思路)

97、AFNetworking默认超时时长是多少?

8.2、SDWebImage

98、SDWebImage的原理是什么?

9.1设计模式

99、单例模式的弊端有哪些?

优点:1、2、3

缺点:1、2、3、4

100、如何理解MVVM(Model-View-ViewModel)设计模式?

特点:1、2、3、4

9.2编译和调试

101 、怎么防止iOS中的反编译?

反编译安全风险:1、2、3、4

解决方案:1、2、3、4、5

102、什么是dSYM?dSYM是如何分析的?

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

104、0x8badf00d表示什么?

105、如何检测内存泄漏?

你可能感兴趣的:(iOS面试题整理)