iOS程序员面试笔试宝典
作者:蒋信厚 等编著
出版时间: 2018年版
内容简介
本书针对当前各大IT企业面试笔试中的特性与侧重点,精心挑选了近3年多家典型IT企业的iOS面试笔试真题,由于这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机软件、安全关键软件等领域,所以面试笔试真题非常具有代表性与参考性。同时,本书对这些题目进行了合理的划分与归类,并进行了庖丁解牛式的分析与讲解,针对试题中涉及的部分重点、难点问题,本书都做了适当地扩展与延伸,力求对知识点的讲解清晰而不紊乱,全面而不啰唆。不仅如此,本书除了对iOS的基础语言知识进行深度剖析以外,还针对数据库、设计模式等相关知识的面试笔试做了非常详细的介绍。读者学习本书能够获取到求职的知识,更有针对性地进行求职准备,终能够收获一份满意的工作。
目录
前言
面试笔试经验技巧篇
经验技巧1 如何巧妙地回答面试官的问题2
经验技巧2 如何回答技术性问题3
经验技巧3 如何回答非技术性问题5
经验技巧4 如何回答快速估算类问题5
经验技巧5 如何回答算法设计问题6
经验技巧6 如何回答系统设计题9
经验技巧7 如何解决求职中的时间冲突问题11
经验技巧8 如果面试问题曾经遇见过,是否要告知面试官12
经验技巧9 被企业拒绝后是否可以再申请12
经验技巧10 如何应对自己不会回答的问题13
经验技巧11 如何应对面试官的“激将法”语言13
经验技巧12 如何处理与面试官持不同观点这个问题14
经验技巧13 什么是职场暗语15
经验技巧14 名企iOS工程师行业访谈录18
经验技巧15 iOS开发的前景如何20
经验技巧16 如何选择iOS开发语言20
经验技巧17 React Native 和Weex重要吗21
经验技巧18 企业对iOS开发者的要求有哪些22
经验技巧19 iOS开发招聘有哪些要求24
经验技巧20 iOS技术岗位面试精选27
面试笔试技术攻克篇
第1章 iOS开发基础概念35
1.1 概念35
1.1.1 什么是“应用瘦身”35
1.1.2 什么是Cocoa和Cocoa Touch36
1.1.3 什么是谓词36
1.1.4 什么是响应者链38
1.1.5 什么是“懒加载”39
1.1.6 类工厂方法是什么40
1.1.7 App ID和Bundle ID有什么不同40
1.1.8 什么是糖衣语法40
1.2 其他43
1.2.1 什么是SpriteKit和SceneKit43
1.2.2 iOS应用的生命周期回调方法主要有哪些43
1.2.3 iOS应用有哪几种不同状态?分别表示什么含义44
1.2.4 UIButton到NSObject之间的继承关系是怎样的45
1.2.5 Git和SVN有什么异同45
第2章 Objective-C语言基础47
2.1 Objective-C语言基础特性47
2.1.1 Objective-C的优缺点有哪些47
2.1.2 相对于Objective-C而言,Swift有什么新特性48
2.1.3 Foundation对象与Core Foundation对象有什么区别52
2.1.4 Objective-C中的类方法和实例方法有什么本质区别和联系53
2.1.5 子类初始化时为什么要调用self = [super init]54
2.1.6 #import与#include以及#import<>与#import 各有什么区别54
2.1.7 Objective-C中@class代表什么54
2.1.8 Objective-C中有二维数组吗?如何实现55
2.1.9 在Objective-C的数组或字典中,添加nil对象会有什么问题55
2.1.10 Objective-C中的可变和不可变类型是什么56
2.2 数据类型57
2.2.1 在Objective-C中,常量有哪几种类型57
2.2.2 Objective-C中数据类型的限定词有哪些58
2.2.3 Objective-C中的NSInteger类型和C语言中的int类型有什么区别59
2.2.4 NSNumber与NSInteger有什么区别59
2.3 运算符和表达式60
2.3.1 在Objective-C中,前置运算和后置运算有什么区别60
2.3.2 整型值和浮点值在赋值操作中如何相互转换61
第3章 Objective-C语言的高级特性63
3.1 Objective-C中的属性63
3.2 Objective-C语言的多态性72
3.2.1 什么叫多态72
3.2.2 重载、重写和隐藏的区别是什么74
3.2.3 Objective-C和Swift中有重载吗74
3.3 Objective-C语言的动态性75
3.3.1 什么是编译时与运行时79
3.3.2 所谓的Objective-C是动态运行时语言是什么意思79
3.3.3 Objective-C中的id类型指的是什么?id、nil代表什么82
3.3.4 一般的方法method和Objective-C中的选择器selector有什么区别83
3.3.5 什么时候会报unrecognized selector错误83
3.3.6 什么是目标-动作机制83
3.3.7 在runtime中类与对象如何表示84
3.3.8 如何打印一个类中所有的实例变量85
3.3.9 如何使用runtime动态添加一个类87
3.3.10 如何在Category中增加属性(关联对象)88
3.3.11 如何理解消息传递机制89
3.3.12 如何理解消息转发机制91
3.3.13 isKindOfClass和isMemberOfClass有什么区别与联系94
3.3.14 Objective-C有私有方法吗?有私有变量吗94
3.4 Objective-C中的类别与扩展机制96
3.4.1 类别与其他特性(类扩展和继承)有什么区别97
3.4.2 Objective-C中类别特性的作用及其局限性是什么97
3.4.3 类别和类扩展如何使用98
3.4.4 为什么类别只能添加扩展方法而不能添加属性变量101
3.5 Method Swizzling魔法102
3.5.1 Method Swizzling的应用场景有哪些102
3.5.2 如何使用runtime进行方法交换105
3.6 其他问题107
3.6.1 C和Objective-C如何混用107
3.6.2 Swift和Objective-C如何互调107
3.6.3 Objective-C对象可以被copy的条件是什么109
3.6.4 Objective-C等同性中的字符串相等如何判断110
3.6.5 一个Objective-C对象如何进行内存布局(考虑有父类的情况)111
第4章 Cocoa Touch框架相关112
4.1 UITableView112
4.1.1 UITableViewCell的复用原理是怎么样的112
4.1.2 能否在一个视图控制器中嵌入两个tableView控制器114
4.1.3 一个tableView是否可以关联两个不同的datasource数据源115
4.1.4 如何对UITableView的滚动加载进行优化,防止卡顿116
4.2 UI视图117
4.2.1 viewDidLoad和viewDidAppear的区别是什么117
4.2.2 frame和bounds有什么区别1