Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 14e8b97

Browse files
解答腾讯社招iOS面试记录2018年7月【第十五份】完善参考答案
1 parent 311e39c commit 14e8b97

9 files changed

+392
-123
lines changed

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
12. [校招攻略43份优质面经汇总iOS开发2018年](./interview-iOS/12校招攻略43份优质面经汇总iOS开发2018年.md)
4242
13. [秋招iOS面试总结2018年](./interview-iOS/13秋招iOS面试总结2018年.md)
4343
14. [阿里腾讯百度头条美团iOS面试题2018年4月](./interview-iOS/14阿里腾讯百度头条美团iOS面试题2018年4月.md)
44-
15. [腾讯社招iOS面试记录2018年7月](./interview-iOS/15腾讯社招iOS面试记录2018年7月.md)
44+
15. [腾讯社招iOS面试记录2018年7月:参考答案完整✅](./interview-iOS/15腾讯社招iOS面试记录2018年7月.md)
4545
16. [**腾讯音乐iOS面试题2018年7月**:部分提示解答模式✅](./interview-iOS/16腾讯音乐iOS面试题2018年7月.md)
4646
17. [阿里网易蘑菇街同花顺等面试题2018年7月](./interview-iOS/17阿里网易蘑菇街同花顺等面试题2018年7月.md)
4747
18. [苏州蜗牛iOS开发面试题2018年春](./interview-iOS/18苏州蜗牛iOS开发面试题2018年春.md)

‎interview-iOS/08字节跳动面试题:2018年4月.md‎

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,28 @@
55
66
> 针对原作者最后版本,此页补充部分答案和涉及点。
77
8-
- [内存管理方面(ARC、MRC、autorelease、autoreleasepool)](#内存管理方面arcmrcautoreleaseautoreleasepool)
9-
- [Runtime方面(消息发送,NSHipster 对象关联,NSHipster
10-
方法交换等等)](#runtime方面消息发送nshipster-对象关联nshipster-方法交换等等)
11-
- [KVO内部实现原理(多家公司有问到)](#kvo内部实现原理多家公司有问到)
12-
- [Runloop方面](#runloop方面)
13-
- [UITableView的优化手段方法](#uitableview的优化手段方法)
14-
- [多线程方面(GCD、NSOperation居多)](#多线程方面gcdnsoperation居多)
15-
- [SDWebImage源码分析](#sdwebimage源码分析)
16-
- [事件传递以及响应链](#事件传递以及响应链)
17-
- [HTTPS通信过程](#https通信过程)
18-
- [需要了解的知识点](#需要了解的知识点)
8+
- [内存管理方面(ARC、MRC、autorelease、autoreleasepool)](#内存管理方面arcmrcautoreleaseautoreleasepool)
9+
- [Runtime方面](#runtime方面消息发送nshipster-对象关联nshipster-方法交换等等)
10+
- 消息发送,
11+
- 对象关联,
12+
- 方法交换等
13+
14+
- [KVO内部实现原理](#kvo内部实现原理)
15+
- [Runloop方面](#runloop方面)
16+
- [UITableView的优化手段方法](#uitableview的优化手段方法)
17+
- [多线程方面(GCD、NSOperation居多)](#多线程方面gcdnsoperation居多)
18+
- [SDWebImage源码分析](#sdwebimage源码分析)
19+
- [事件传递以及响应链](#事件传递以及响应链)
20+
- [HTTPS通信过程](#https通信过程)
21+
- [需要了解的知识点](#需要了解的知识点)
1922

2023
### 内存管理方面(ARC、MRC、autorelease、autoreleasepool)
21-
* 解答:[Autorelease的原理及ARC的工作原理](./03interview-iOS-3.md)
22-
* 扩展:[Autoreleasepool所使用的数据结构是什么?AutoreleasePoolPage结构体了解么?](./21出一套iOS高级面试题2018年7月.md#iOS基础题)
24+
* 解答:[第三份面试题:Autorelease的原理及ARC的工作原理](./03interview-iOS-3.md)
25+
* 扩展:[第二十一份面试题:Autoreleasepool所使用的数据结构是什么?AutoreleasePoolPage结构体了解么?](./21出一套iOS高级面试题2018年7月.md#iOS基础题)
2326

24-
### Runtime方面(消息发送,NSHipster 对象关联,NSHipster 方法交换等等)
27+
### Runtime方面
28+
29+
> 消息发送 对象关联 方法交换等等
2530
2631
<details>
2732
<summary> 参考内容 </summary>
@@ -69,8 +74,14 @@
6974
}
7075
7176
```
77+
78+
</details>
79+
7280
#### 对象关联
7381

82+
<details>
83+
<summary> 参考内容 </summary>
84+
7485
> 关联对象(Objective-C Associated Objects)给分类增加属性
7586
7687
```
@@ -87,9 +98,13 @@ id value:关联的对象
8798
objc_AssociationPolicy policy:内存管理的策略
8899
89100
```
101+
</details>
90102

91103
#### 方法交换
92104

105+
<details>
106+
<summary> 参考内容 </summary>
107+
93108
- swizzling应该只在+load中完成。 在 Objective-C 的运行时中,每个类有两个方法都会自动调用。+load 是在一个类被初始装载时调用,+initialize 是在应用第一次调用该类的类方法或实例方法前调用的。两个方法都是可选的,并且只有在方法被实现的情况下才会被调用。
94109

95110
- swizzling应该只在dispatch_once 中完成,由于swizzling 改变了全局的状态,所以我们需要确保每个预防措施在运行时都是可用的。原子操作就是这样一个用于确保代码只会被执行一次的预防措施,就算是在不同的线程中也能确保代码只执行一次。Grand Central Dispatch 的 dispatch_once满足了所需要的需求,并且应该被当做使用swizzling 的初始化单例方法的标准。
@@ -119,10 +134,9 @@ objc_AssociationPolicy policy:内存管理的策略
119134
}
120135
```
121136

122-
123137
</details>
124138

125-
### KVO内部实现原理(多家公司有问到)
139+
### KVO内部实现原理
126140

127141
<details>
128142
<summary> 参考内容 </summary>
@@ -138,15 +152,23 @@ objc_AssociationPolicy policy:内存管理的策略
138152
</details>
139153

140154
### Runloop方面
155+
141156
* [Runloop相关问题解答参考面试题第六份](./06iOS基础问题系列2017年.md)
142157

158+
* [runloop相关](./20阿里字节一套高效的iOS面试题2020年2月.md)
159+
- [app如何接收到触摸事件的](./20阿里字节一套高效的iOS面试题2020年2月.md#runloop)
160+
- [为什么只有主线程的runloop是开启的](./20阿里字节一套高效的iOS面试题2020年2月.md#runloop)
161+
- [为什么只在主线程刷新UI](./20阿里字节一套高效的iOS面试题2020年2月.md#runloop)
162+
- [PerformSelector和runloop的关系](./20阿里字节一套高效的iOS面试题2020年2月.md#runloop)
163+
- [如何使线程保活](./20阿里字节一套高效的iOS面试题2020年2月.md#runloop)
164+
143165
### UITableView的优化手段方法
144166

145167
* [参考此份第7题](./06iOS基础问题系列2017年.md)
146168

147169
### 多线程方面(GCD、NSOperation居多)
148170

149-
* 占位
171+
* [阿里字节面试题之多线程](./20阿里字节一套高效的iOS面试题2020年2月.md#多线程)
150172

151173
### SDWebImage源码分析
152174
* [参考此处](./02interview-iOS-2.md)
@@ -163,6 +185,7 @@ objc_AssociationPolicy policy:内存管理的策略
163185

164186
<details>
165187
<summary> 参考内容 </summary>
188+
166189
> 在主线程的下一个 run loop 到来时,Core Animation 提交了这个隐式的 transaction ,这个过程可能会对图片进行 copy 操作,而受图片是否字节对齐等因素的影响,这个 copy 操作可能会涉及以下部分或全部步骤:
167190
168191
> 在将磁盘中的图片渲染到屏幕之前,必须先要得到图片的原始像素数据,才能执行后续的绘制操作,这就是为什么需要对图片解压缩的原因
@@ -172,6 +195,7 @@ objc_AssociationPolicy policy:内存管理的策略
172195
* 将压缩的图片数据解码成未压缩的位图形式,这是一个非常耗时的 CPU 操作;
173196
* 解压缩后的图片大小与原始文件大小之间没有任何关系,而只与图片的像素有关
174197
* 最后 Core Animation 使用未压缩的位图数据渲染 UIImageView 的图层。
198+
175199
</details>
176200

177201

@@ -195,24 +219,25 @@ objc_AssociationPolicy policy:内存管理的策略
195219

196220
* APM方面(内存泄漏检测、crash监控,卡顿监控以及底层的实现原理等等)
197221
* [卡顿监控](19新浪公司iOS面试题2019年6月.md)
222+
* [阿里字节面试题之性能优化](./20阿里字节一套高效的iOS面试题2020年2月.md#性能优化)
198223

199224
* 组件化方(蘑菇街 App 的组件化之路、iOS应用架构谈 组件化方案、在现有工程中实施基于CTMediator的组件化方案、iOS 组件化方案探索、iOS 组件化–路由设计思路分析)
200225
* [业界常用的组件通信方案优缺点概述](https://github.com/DevDragonLi/ProtocolServiceKit#业界常用的组件通信方案)
226+
201227
* 持续化集成(我们公司使用的是:Jenkins+fastlane)
202228
* [Jenkins官网](https://www.jenkins.io)
203229
* [fastlane](https://docs.fastlane.tools)
204230
* 按照官网相关doc操作,或者网上找下教程即可,实践即可。
205231

206-
##链接
232+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
207233

208-
-[面试题系列目录](../README.md)
209-
-**上一份**: [深圳iOS面试分享2018年4月](07深圳iOS面试分享2018年4月.md)
210-
-**下一份**: [头条网易微信阿里美团硕士春招面试题2018年3月](09头条网易微信阿里美团硕士春招面试题2018年3月.md)
234+
</p>
235+
<imgsrc="../images/wechat.JPG"width="300"height="300"><imgsrc="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image"width="300"height="300">
236+
</p>
211237

212-
## 赞赏一下旺仔(收集整理不易,且赞且珍惜)
213238

214-
</p>
215-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
216-
<img src="../images/wechat.JPG" width="300" height="300">
239+
## 链接
217240

218-
</p>
241+
- [面试题系列目录](../README.md)
242+
- **上一份**: [第七份:深圳iOS面试分享2018年4月](07深圳iOS面试分享2018年4月.md)
243+
- **下一份**: [第九份:头条网易微信阿里美团硕士春招面试题2018年3月](09头条网易微信阿里美团硕士春招面试题2018年3月.md)

‎interview-iOS/09头条网易微信阿里美团硕士春招面试题2018年3月.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,15 @@
132132
- NSNumber的设计(类簇的设计思想)
133133
- 宽窄接口的设计等
134134

135+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
136+
137+
</p>
138+
<img src="../images/wechat.JPG" width="300" height="300"><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
139+
</p>
140+
135141
## 链接
136142

137143
- [面试题系列目录](../README.md)
138144
- **上一份**: [字节跳动面试题:2018年4月](08字节跳动面试题:2018年4月.md)
139145
- **下一份**: [美团饿了么面试题2018年4月](10美团饿了么面试题2018年4月.md)
140146

141-
## 赞赏一下旺仔(收集整理不易,且赞且珍惜)
142-
143-
</p>
144-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
145-
<img src="../images/wechat.JPG" width="300" height="300">
146-
</p>

‎interview-iOS/10美团饿了么面试题2018年4月.md‎

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@
33
> 备注:原作者分享几个
44
55

6-
- 自实现pow(double, double)
7-
8-
- findMedianSortedArrays (找到两个排序数组的中位数)
9-
10-
- UIContorl -> UIButton
11-
126
#### 自实现pow(double, double)
137

148
<details>
@@ -112,6 +106,9 @@ import UIKit protocol ButtonInterface { func setTitle(_ title: String); func set
112106

113107
### 网络框架
114108

109+
<details>
110+
<summary> 参考内容 </summary>
111+
115112
> 可以参考`YTKNetworking` 或者`AFN`
116113
117114
- 设计一个网络框架, 如何进行不同数据解析的设计(header, body), 并能够进行自定义
@@ -120,16 +117,47 @@ import UIKit protocol ButtonInterface { func setTitle(_ title: String); func set
120117

121118
- 如何避免回调地狱, 实现Promise的自实现.
122119

123-
##链接
120+
#### 网络接口规范
124121

125-
- [面试题系列目录](../README.md)
126-
- **上一份**: [头条网易微信阿里美团硕士春招面试题2018年3月](09头条网易微信阿里美团硕士春招面试题2018年3月.md)
127-
- **下一份**: [天猫蚂蚁金服百度面试题2018年4月](11天猫蚂蚁金服百度面试题2018年4月.md)
122+
- 两层三部分数据结构
128123

129-
##赞赏一下旺仔(收集整理不易,且赞且珍惜)
124+
#### 多服务器多环境设置
130125

131-
</p>
132-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
133-
<img src="../images/wechat.JPG" width="300" height="300">
126+
- 标准的APP是有4个环境的,开发、测试、预发、正式,
127+
128+
#### 网络层数据传递(请求和返回)
129+
130+
- Client做两个操作,一个是生成NSURLRequest,一个是生成NSURLSessionDataTask并发起,另外还要暴露取消操作给Engine,
131+
132+
133+
#### 业务层对接方式
134+
135+
- casa:集约型API调用其实就是所有API的调用只有一个类,然后这个类接收API名字,API参数,以及回调着陆点(可以是target-action,或者block,或者delegate等各种模式的着陆点)作为参数。然后执行类似startRequest这样的方法,它就会去根据这些参数起飞去调用API了,然后获得API数据之后再根据指定的着陆点去着陆。
136+
137+
#### 网络请求怎么自动取消
134138

139+
- casa思路:在**BaseDataEngine的dealloc里面做取消网络请求操作**,把BaseDataEngine绑定给ViewController,当ViewController销毁时BaseDataEngine也就跟着销毁了
140+
- 每个接口生成一个BaseEngine实例,持有Client返回的requestID,所以就可以做取消操作,简单的使用场景
141+
142+
#### 网络层错误处理
143+
144+
> 我们将错误处理分为两个步骤,一个是错误解析,一个是错误的UI展示
145+
146+
- 设计的接口返回数据是标准的id data, NSError *error,是Client就把error处理好,不管你是网络超时错误也好,或者是数据格式不正确也好,都error解析完整,把code错误码定义好,上层根据需要通过code来做具体的UI展示,因为有的界面的错误需要用户的点击确认,有的页面的错误只是一闪而过的提示框,把error交给BaseEngine或者DataEngine来处理errorUI,
147+
148+
- 定义了一套errorUI的枚举,当BaseEngine拿到error的时候就去做错误的展示
149+
150+
</details>
151+
152+
153+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
154+
155+
</p>
156+
<img src="../images/wechat.JPG" width="300" height="300"><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
135157
</p>
158+
159+
## 链接
160+
161+
- [面试题系列目录](../README.md)
162+
- **上一份**: [头条网易微信阿里美团硕士春招面试题2018年3月](09头条网易微信阿里美团硕士春招面试题2018年3月.md)
163+
- **下一份**: [天猫蚂蚁金服百度面试题2018年4月](11天猫蚂蚁金服百度面试题2018年4月.md)

‎interview-iOS/11天猫蚂蚁金服百度面试题2018年4月.md‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
> 作者:ZhHS&&juejin.im/post/5ad80ad35188252eae3b22a4
44
5-
- [天猫 面试通知](#天猫-面试通知)
6-
- [NAVER China
7-
整个面试过程三个小时](#naver-china-整个面试过程三个小时)
8-
- [蚂蚁金服](#蚂蚁金服)
9-
- [百度一面](#百度一面)
10-
- [百度一面](#百度一面-1)
5+
- [天猫 面试通知](#天猫-面试通知)
6+
- [NAVER China 整个面试过程三个小时](#naver-china-整个面试过程三个小时)
7+
- [蚂蚁金服](#蚂蚁金服)
8+
- [百度一面](#百度一面)
9+
- [百度一面](#百度一面-1)
1110

1211
### 天猫 面试通知
1312

@@ -51,7 +50,7 @@
5150
* IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节)。IP地址通常用"点分十进制"表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
5251

5352
<details>
54-
<summary> Java代码参考内容 </summary>
53+
<summary> IP地址是否合法:Java代码参考内容 </summary>
5554

5655
```Java
5756
if(addr.length() < 7 || addr.length() > 15 || "".equals(addr))
@@ -125,15 +124,16 @@
125124
* 怎么修复线上卡顿、崩溃问题,
126125
* 项目结构等等
127126

127+
128+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
129+
130+
</p>
131+
<img src="../images/wechat.JPG" width="300" height="300"><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
132+
</p>
133+
128134
## 链接
129135

130136
- [面试题系列目录](../README.md)
131137
- **上一份**: [美团饿了么面试题2018年4月](10美团饿了么面试题2018年4月.md)
132138
- **下一份**: [校招攻略43份优质面经汇总iOS开发2018年](12校招攻略43份优质面经汇总iOS开发2018年.md)
133139

134-
## 赞赏一下旺仔(收集整理不易,且赞且珍惜)
135-
136-
</p>
137-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
138-
<img src="../images/wechat.JPG" width="300" height="300">
139-
</p>

‎interview-iOS/12校招攻略43份优质面经汇总iOS开发2018年.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,15 +1061,15 @@
10611061
</task-lists>
10621062
</h1>
10631063

1064+
1065+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
1066+
1067+
</p>
1068+
<img src="../images/wechat.JPG" width="300" height="300"><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
1069+
</p>
1070+
10641071
## 链接
10651072

10661073
- [面试题系列目录](../README.md)
10671074
- **上一份**: [天猫蚂蚁金服百度面试题2018年4月](11天猫蚂蚁金服百度面试题2018年4月.md)
10681075
- **下一份**: [秋招iOS面试总结2018年](13秋招iOS面试总结2018年.md)
1069-
1070-
## 赞赏一下旺仔(收集整理不易,且赞且珍惜)
1071-
1072-
</p>
1073-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
1074-
<img src="../images/wechat.JPG" width="300" height="300">
1075-
</p>

‎interview-iOS/13秋招iOS面试总结2018年.md‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 秋招iOS面试总结2018年
22

3-
> https://www.jianshu.com/p/834878284b99
3+
> 出处:jianshu.com/p/834878284b99
44
55

66
## 【百度】(二面挂)
@@ -203,15 +203,14 @@
203203
* 4.对于我们企业文化的理解(我把我实习公司的企业文化吹嘘了一遍,发现这几点基本上放在任何私企都好使:客户至上,团队合作,诚信正直,务实创新)
204204

205205

206+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
207+
208+
</p>
209+
<img src="../images/wechat.JPG" width="300" height="300"><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
210+
</p>
211+
206212
## 链接
207213

208214
- [面试题系列目录](../README.md)
209215
- **上一份**: [校招攻略43份优质面经汇总iOS开发2018年](12校招攻略43份优质面经汇总iOS开发2018年.md)
210216
- **下一份**: [阿里腾讯百度头条美团iOS面试题2018年4月](14阿里腾讯百度头条美团iOS面试题2018年4月.md)
211-
212-
## 赞赏一下旺仔(收集整理不易,且赞且珍惜)
213-
214-
</p>
215-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
216-
<img src="../images/wechat.JPG" width="300" height="300">
217-
</p>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /