【社招iOS】腾讯&阿里&美团&快手&字节等10公司面经

前言

2020 年春节后回到北京,准备开始找工作,因为疫情影响,整个 2 月都是在家上班,这也给远程面试提供了便利,免去了请假的尴尬和奔波的麻烦。

年前就准备开始面试的,但总以为需要刷很多题,一直没时间刷就一直没行动。幸好临近过年有一个同事要离职了,他跟我传授经验,让我先面小公司积累经验,之后再去面大公司。我受他的鼓舞,终于决定了在年后踏上面试之路。

事实证明“练手”真的很有必要。我一共面过阿里、蚂蚁、字节、Shopee、OPPO、华为、美团、快手、猿辅导、腾讯,城市涉及成都、北京、深圳。一开始我连自我介绍都不会,所以前面面的阿里、蚂蚁、字节、Shopee 都跪了;中间面的 OPPO、华为面了一半失去音讯;后面面的美团、快手、猿辅导、腾讯都拿到了 offer。吐槽一下华为,机试的时候试题都能出错,后面重试的时候全部 AC 也能判断我机试挂掉……还有 OPPO,两面面完发了一个邀请函,不知道干什么用的,问了内推人也没有了后续。这些公司每家偏重点不同,难度也不同,有的中规中矩,有的挖尽细节。事后总结了一下,大体都能分为下面列举的 7 个问题,列出来跟大家分享一下(文末有整理好的面试资料和复习资料)。

1 自我介绍

远程面试,视频接通后,面试官可能会简单介绍下自己,然后就直接让你做一个自我介绍,这个没有例外。我一开始心里想这不都是简历上写着的么?后来感觉可能是考察你的表达能力吧。这个时候说说姓名、学校、专业、毕业时间、工作经历、主要项目、技术栈,应该就差不多了。说完之后,有的面试官会认真听,并且就你说的找他感兴趣的问你,当然也有的面试官就走个过场,你说完他就不管了,直接问下一步。

1.1 工作经历

 通常说到工作经历的时候,会问你:

毕业第一份工作为什么选择了那里?

为什么看机会?上次换工作为什么?

有了解过我们部门做什么的么?感兴趣么?

工作这些年,主要的收获是什么?

最好别老抱怨之前的公司,可以说说自己的规划之类的。

1.2 项目经历

说到项目经历的时候,有些面试官会从你说的当中跳他感兴趣的问你,所以自我介绍的时候可以有倾向性的说说你比较拿手的项目。

1.3 未来规划

我在被问到这个问题的时候通常是一头懵逼,因为我之前没有好好想过,大家可以准备一下。

未来的规划(城市)

技术上的追求

长期方向(行业)

1.4 日常行为

平时有看什么技术相关的书,博客?

最近有在学习什么新技术么?讲讲

怎么对待 995 的情况?

怎么处理同事不配合的情况?

2 最有挑战的项目

自我介绍之后,如果面试官没有从你说的项目里主动问你,一般就会让你自己选一个项目说。

通常问法是:

在上次工作中,哪些项目最有成就感,最有挑战?

最有挑战的一个工作,遇到的困难,采取了什么方式,取得了什么结果

遇到的最难的项目?难在哪里?怎么解决的?得到了什么收获?

基础的一点的技术接触过什么?感觉枯燥么?碰到什么困难?举一个最难的例子

举例两个做的比较好的项目

3 基础知识

1、如何令自己所写的对象具有拷贝功能?

2、说说你理解weak属性?

3、题目:Swift mutating关键字的使用?

4、UIView和CALayer是什么关系?

5、下面的代码输出什么?

6、@synthesize 和 @dynamic 分别有什么作用?

7、动态绑定

8、Category(类别)、 Extension(扩展)和继承的区别

9、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?

10、id和NSObject*的区别

11、如何令自己所写的对象具有拷贝功能?

12、使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?

13、用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?

14、UIView和 CALayer是什么关系?

15、static有什么作用?


4.底层:

16、main()之前的过程有哪些?

17、KVO基本原理?

18、Swift 下的如何使用 KVC?

19、:Swift有哪些模式匹配?

20、objc在向一个对象发送消息时,发生了什么?

21、静态库的原理是什么?你有没有自己写过静态编译库,遇到了哪些问题?

22、串行并行,异步同步的区别?

23、线程是什么?进程是什么?二者有什么区别和联系?

24、RunLoop是什么?

5.线程:

25、 不要阻塞主线程

26、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?

27、进程和线程的区别?同步异步的区别?并行和并发的区别?

28、ViewController生命周期

29、iOS 中的多线程

30、dispatch_barrier_async的作用是什么?

31、iOS iAP内购审核可能失败的问题

32、IAP内购中虚拟货币导致审核无法通过的问题?

6.iOS 实战题

1.AppDelegate如何瘦身?

2.反射是什么?可以举出几个应用场景么?(知道多少说多少)

3.有哪些场景是NSOperation比GCD更容易实现的?(或是NSOperation优于GCD的几点,知道多少说多少)

4.App 启动优化策略?最好结合启动流程来说(main()函数的执行前后都分别说一下,知道多少说多少)

5.App 无痕埋点的思路了解么?你认为理想的无痕埋点系统应该具备哪些特点?(知道多少说多少)

6.你知道有哪些情况会导致app崩溃,分别可以用什么方法拦截并化解?(知道多少说多少)

7.你知道有哪些情况会导致app卡顿,分别可以用什么方法来避免?(知道多少说多少)


7.架构 & 设计题

1.MVC和MVVM的区别?MVVM和MVP的区别?

2.面向对象的几个设计原则了解么?最好可以结合场景来说。

3.可以说几个重构的技巧么?你觉得重构适合什么时候来做?

4.你觉得框架和设计模式的区别是什么?

5.看过哪些第三方框架的源码,它们是怎么设计的?设计好的地方在哪里,不好的地方在哪里,如何改进?(这道题的后三个问题的难度已经很高了,如果不是太N的公司不建议深究)


8.数据结构&算法题

1.链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?

2.哈希表是如何实现的?如何解决地址冲突?

3.排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出那些?

4.链表题:如何检测链表中是否有环?如何删除链表中等于某个值的所有节点?

5.数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组之后保持有序?

6.二叉树题:如何反转二叉树?如何验证两个二叉树是完全相等的?

9. 你有什么想问的?

部门定位?岗位职责?

目前在做什么业务?

加班情况?

薪酬福利介绍?

10. Offer 选择

目前手头的 offer 情况?

还有哪些公司的面试流程?

这些公司你自己有什么倾向性呢?最看重什么因素?

你的预期薪酬是多少?目前的薪资情况?

想加入一个怎么样的团队?

最近一年的绩效情况?


更多:推荐阅读:直击2020——iOS 面试题大全(补充完整版)

你可能感兴趣的:(【社招iOS】腾讯&阿里&美团&快手&字节等10公司面经)