读书笔记之--《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、如何检测内存泄漏?