Skip to content

Commit cef564c

Browse files
committed
【解答】第十八份苏州蜗牛iOS开发面试题&&第27份C++智能指针
1 parent 07d75e6 commit cef564c

File tree

3 files changed

+134
-23
lines changed

3 files changed

+134
-23
lines changed

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# iOS Interviews,DevNotes
2+
23
</p>
34
<p align='left'>
45
<img src="https://img.shields.io/github/stars/DevDragonLi/iOSInterviewsAndDevNotes.svg">
@@ -8,9 +9,9 @@
89
<img src="https://img.shields.io/packagist/l/doctrine/orm.svg">
910
</p>
1011

11-
> 备注:此仓库2020/04/10重建,聚焦于**iOS面试题和开发笔记**,仅留存(2020年前)提交日志。
12+
> 聚焦于**iOS开发面试题和开发笔记**
1213
13-
> 如果你觉得此仓库对你有价值,欢迎 star/fork,蟹蟹 🤝 🍺
14+
> 如果你觉得此仓库对你有价值,欢迎 star/fork,蟹蟹🤝
1415
1516
</p>
1617
<img src="https://starcharts.herokuapp.com/DevDragonLi/iOSDevNotesAndInterviews.svg" width="520" height="211">
@@ -21,11 +22,11 @@
2122

2223
## <a name="iOSinterview"></a> iOS面试题目列表
2324

24-
> **已是迄今为止东半球收集整理并解答参考最为全的面试题集合**
25+
> **已是迄今为止东半球收集并整理参考解答最为全的面试题集合**
2526
26-
> ① 温馨提示:可任意份面试题点进,每份文档均提供 `上/下一份` 超链方便查阅,并提供大纲超链 😁。
27+
> ① 温馨提示:可任意份点进,文档均提供`上/下一份`超链方便查阅,并提供大纲超链😁。
2728
28-
> 标注的面试题已经更新并整理`参考答案` 默认`折叠`方式展示(参考点击即可查阅答案
29+
> 已更新并整理`参考答案` 默认`折叠`展示(点击可查阅
2930
3031
1. [一份"有点难"的iOS面试题MrPeak2016年:参考答案完整✅](./interview-iOS/01一份"有点难"的iOS面试题MrPeak2016年.md)
3132
2. [interview-iOS-2:参考答案完整✅](./interview-iOS/02interview-iOS-2.md)
@@ -44,7 +45,7 @@
4445
15. [腾讯社招iOS面试记录2018年7月:参考答案完整✅](./interview-iOS/15腾讯社招iOS面试记录2018年7月.md)
4546
16. [**腾讯音乐iOS面试题2018年7月**:部分提示解答模式✅](./interview-iOS/16腾讯音乐iOS面试题2018年7月.md)
4647
17. [阿里网易蘑菇街同花顺等面试题2018年7月](./interview-iOS/17阿里网易蘑菇街同花顺等面试题2018年7月.md)
47-
18. [苏州蜗牛iOS开发面试题2018年春](./interview-iOS/18苏州蜗牛iOS开发面试题2018年春.md)
48+
18. [苏州蜗牛iOS开发面试题2018年春:一面题目解答完毕✅](./interview-iOS/18苏州蜗牛iOS开发面试题2018年春.md)
4849
19. [**新浪公司iOS面试题2019年6月**:参考答案完整✅](./interview-iOS/19新浪公司iOS面试题2019年6月.md)
4950
20. **推荐:**[**阿里字节一套高效的iOS面试题2020年2月**:参考答案基本完整✅](./interview-iOS/20阿里字节一套高效的iOS面试题2020年2月.md)
5051
21. [**出一套iOS高级面试题:J_Knight_**:参考答案基本完整✅](./interview-iOS/21出一套iOS高级面试题2018年7月.md)

interview-iOS/18苏州蜗牛iOS开发面试题2018年春.md

Lines changed: 123 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,131 @@
55
66
> 面试通知邮件:邮件+电话约当天下午的面试
77
8-
##面试:(笔试+面试
8+
> **笔试+面试 模式**
99
1010
> 虽然对笔试有心里准备但是当拿到5页面试题的时候心还是细微的颤抖了下,除了第一张是一道考宏交换的程序判断题和最后一页三条题<纠错,趣味>以外,中间三页题目密度在平均一页7条。总的来说题量还是很感人的!当然接待的人事特意跟我说笔试题是开卷。
1111
12-
### 笔试
12+
## 笔试
1313

1414
> 附上如下部分面试题目,总的来说蜗牛的面试题题量涉及的范围还是挺广的。
1515
1616
> 我大概做了五十几分钟,然后接待的人事和我说不用写了,可以接下来准备下一轮面试。(笔试过程中有人来看过我,下一轮的面试官)
1717
18-
* 简述itms-services作用;
19-
* POST和GET谁更安全?以及谈谈服务器交互的过程中更安全的保护措施?
20-
* 对于一个xxxx.a的静态库而言,如何使用命令行来查看其支持的CPU架构 ? 苹果在2015年2月之后要求我们必须支持哪一种CPU架构;
21-
* duplicate symbol是什么?谈谈如何避免和产生后解决方案;
22-
* 时间和空间复杂度(剑指Offer-第五章);
23-
* 交叉编译?简述一下iOS中开发应用场景;
24-
* 两个具体上架过程中苹果审核失败返回的信息请问如何解决:翻译过来第一条是:利用邀请奖励制度来诱惑玩家驳回 第二条是:抽奖类的比赛规则驳回;
18+
### 简述itms-services作用
19+
20+
<details>
21+
<summary> 参考内容 </summary>
22+
23+
> 备注:**iOS14开始,需要IPA包下载地址和plist地址均使用HTTPS**
24+
25+
- 苹果安装app的另一种方式(通过itms-services协议,不通过AppStore,直接安装IOS应用程序)
26+
27+
- 其实是利用苹果自家的浏览器safari和itms-services协议来实现的:只要在内网布置一个服务器,测试人员只需要通过测试设备的safari浏览器访问特定的url既可以实现安装
28+
29+
</details>
30+
31+
### POST和GET谁更安全?以及谈谈服务器交互的过程中更安全的保护措施?
32+
<details>
33+
<summary> 参考内容 </summary>
34+
35+
> [POST和GET区别](./01一份"有点难"的iOS面试题MrPeak2016年.md)
36+
37+
- GET传输方式将在URL中显示参数,更容易引发一些“不怀好意”人的兴趣,POST相对来说比get方法更加安全。当然是没有绝对的安全的
38+
- HTTP协议中提到GET是安全的方法(safe method),其意思是说GET方法不会改变服务器端数据,所以不会产生副作用。如果是该用POST的地方用了GET,又说GET不安全,那GET也太冤枉了。也就是说,只要我们正确选择使用GET和POST,那么GET是安全的。
39+
- 只要我们正确使用二者,因为GET方法中不对数据进行修改,不传送一些保密的信息,而这些需要由POST来传输,所以说GET不存在安全问题,而需要注意的是POST传输的安全问题。
40+
41+
- 更安全的保护措施[客户端侧]
42+
- 跟服务器端确认是否需要添加特定的user-agent(添加user-agent的目的:确保服务器安全)。
43+
- 确认客户端和服务器端交互时是否需要对文件进行加密操作。
44+
- 跟开发确认请求时是否需要增加重试和具体的超时机制,有无下载的断点续传。
45+
- 对于异常情况,跟服务器和客户端的开发确定相应的容错处理。
46+
- 需要注意询问开发,与服务器之间的交互是用什么做的,标准的http协议还是自写的协议。
47+
48+
</details>
49+
50+
51+
### 对于一个xxxx.a的静态库而言,如何使用命令行来查看其支持的CPU架构 ? 苹果在2015年2月之后要求我们必须支持哪一种CPU架构;
52+
<details>
53+
<summary> 参考内容 </summary>
54+
55+
> [iOS_StaticLibrary](../iOSNote/iOS_StaticLibrary.md)
56+
57+
- 使用命令: lipo -info .a文件名称, 即可查看静态库所支持的系统架构。
58+
59+
- arm64
60+
61+
</details>
62+
63+
64+
### duplicate symbol是什么?谈谈如何避免和产生后解决方案;
65+
66+
<details>
67+
<summary> 参考内容 </summary>
68+
69+
> 两个静态库冲突.
70+
> 文件中重复定义了一个函数、变量(比如全局变量)
71+
> 工程中包含同名的文件。
72+
73+
- 在使用import 引入头文件时,由于疏忽,误引入.m 文件
74+
- 同名文件放在不同的文件夹下
75+
- 在 Targets 的 Build Phrases 设置里,查看下 Complie Sources这一项,看看出现问题的类是不是重复的.如果是重复的,删除掉重新添加也能解决这个问题
76+
- 1如果是两个静态库冲突的话,可以将两个.a静态库解压,删除其中一个里面重复的.o文件(编译时产生的临时文件),然后用lipo命令合并两个静态库;比如libx.a文件
77+
78+
</details>
79+
80+
81+
### 时间和空间复杂度(剑指Offer-第五章)
82+
83+
<details>
84+
<summary> 参考内容 </summary>
85+
86+
> 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。
87+
88+
#### 那么我们应该如何去衡量不同算法之间的优劣呢?
89+
90+
> 主要还是从算法所占用的「时间」和「空间」两个维度去考量。
91+
92+
- 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
93+
* 大O符号表示法,即 T(n) = O(f(n)) 【算法的渐进时间复杂度】
94+
* 常数阶O(1)
95+
* 对数阶O(logN)
96+
* 线性阶O(n)
97+
* 线性对数阶O(nlogN)
98+
* 平方阶O(n²)
99+
* 立方阶O(n³)
100+
* K次方阶O(n^k)【n的k次方
101+
* 指数阶(2^n)
102+
103+
- 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
104+
- 如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)
105+
106+
</details>
107+
108+
109+
### 交叉编译?简述一下iOS中开发应用场景;
110+
111+
<details>
112+
<summary> 参考内容 </summary>
113+
> 在iOS设备上进行音视频的处理,往往要使用市面上比较流行的音视频相关库,比如音频编码的Lame,处理视频的FFmpeg,处理图片的OpenCV等.
114+
115+
- 编译型语言的源代码,比如C源代码,要能在PC上运行,需要经过编译,链接,成为PC可执行的二进制文件,然后才能在PC上运行.同理,如果要在其他机器上运行,就必须编译,链接成为可以在其他机器上运行的代码.
116+
- 源代码在机器A上的编译链接得到机器B上运行的代码.
117+
- 如果机器B==机器A,那么就是本机编译.
118+
- **如果机器B!=机器A,就是交叉编译.**
119+
120+
</details>
121+
122+
123+
### 两个具体上架过程中苹果审核失败返回的信息请问如何解决:翻译过来第一条是:利用邀请奖励制度来诱惑玩家驳回 第二条是:抽奖类的比赛规则驳回;
124+
125+
### 备注:以下三题原文均无细节
126+
25127
* 具体的报错Log分析题;
26128
* 程序输出结果题;
27129
* 趣味思考题。
28130

29131

30-
### 面试:
132+
## 面试:
31133

32134
> 两位面试官:拿着我答题卷和简历开始进行面试:问题整理下大致有如下几个
33135
@@ -45,26 +147,30 @@
45147

46148
> 这样就算面试都结束了。然后过了大概一周人事给我电话说面试已经通过,可以给offer了。面试过程大概用了两个小时。
47149
48-
### 总结
150+
## 总结
151+
49152
- 总的面试过程还算是比较顺利的,面试官也很友善。对我来说算是来面试的过程中有所学习。开始我在去蜗牛的路上本以为会问一些runtime、Block、MVC、MVP、MVVM、GCD、ARC等等,结果拿到题算是和我想的不太一样,是把技术点运用到实际问题中,比如最后一页的Crash纠错:在一堆报错日志分析下来:简单的来说就是持有的通知对象在生命周期销毁之前没有被释放而或重复使用。是使用KVO常遇到的一种报错。解决:当前持有的被观察对象,在-dealloc中移除观察者。
50153

51154
- 在面试过程中肯定有会被面试官问道你不会的的题目,可以进一步题目来问清楚具体查考的方面。不要说一堆与题目无关或误关的的东西。
52155

53-
### 分享最近看的几本书:
156+
157+
## 分享最近看的几本书:
158+
54159
* 《Effective Objective-C 2.0》
55160
* 《剑指Offer》
56161
* 《程序员的自我修养》
57162
* 《Objective-C编程之道》
58163

164+
### 觉得整理的蛮不错,可以赞赏一下旺仔(收集整理不易,且赞且珍惜)
165+
166+
</p>
167+
<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">
168+
</p>
169+
59170
## 链接
60171

61172
- [面试题系列目录](../README.md)
62173
- **上一份**: [阿里网易蘑菇街同花顺等面试题2018年7月](17阿里网易蘑菇街同花顺等面试题2018年7月.md)
63174
- **下一份**: [新浪公司iOS面试题2019年6月](19新浪公司iOS面试题2019年6月.md)
64175

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

67-
</p>
68-
<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18ff90e4c8344f86aa69c34065bb379a~tplv-k3u1fbpfcp-zoom-1.image" width="300" height="300">
69-
<img src="../images/wechat.JPG" width="300" height="300">
70-
</p>

interview-iOS/27抖音快手等面试题2020年9月.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@
4646

4747
### C++智能指针了解过么?
4848

49+
> c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。
50+
51+
- 我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了或者在函数中没有执行到最后的delete语句就返回了,如果我们不在每一个可能跳转或者返回的语句前释放资源,就会造成内存泄露。使用智能指针可以很大程度上的避免这个问题,**因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源**
52+
4953
### NSNotification 为啥要设计成在同一个线程里面执行任务
5054

5155
### HTTP2.0 有什么变化

0 commit comments

Comments
 (0)