iOS客户端面经-快手抖音腾讯阿里拼多多网易云音乐蘑菇街

我投递的是iOS客户端开发岗,一共递了七家公司(快手、抖音、腾讯、阿里、拼多多、网易云音乐、蘑菇街)。准备面试的过程中在牛客潜水看面经,现在想着自己面完了,有能力回馈一下这个圈子啦~

由于写帖子的时候,部分面试题不太记得了,我把我记得的写上,大家主要感受一下流程和重点内容就行。

快手(SP)

我其实不确定快手有没有SP这个说法...

=== 一面 ===

笔试题(一份纸质笔试题):

  1. 有一个题是考.transform属性的,做了结果后,被问是否可以自己实现.transform属性(其实就是问.transform的实现,然而并不会
  2. 有一个题是考Block的变量截获的
  3. 有一个题是让用贝塞尔曲线画一个先慢后快的什么东西(动画没复习,不会写
  4. 有一个题是一段代码,让说这样写有什么问题(多线程的死锁问题)
  5. 有一个题是让写一个函数,去找系统里的某个文件(我写的dfs

其他问题:

具体不记得了,总结起来就是,不让你用系统API,你怎么实现xxxx

比如:

  1. 他,你的动画loading怎么做的?
  2. 我,直接设置UIImageViewanimationImages
  3. 他,不让你用这个,你怎么设计?
  4. 我,(不会)

额外算法题:

  1. 一个TableView,假设它没有复用,可能有一万个(或者更多)个Cell,给你一段屏幕的纵坐标区间[X, Y],请你找出在区间内的所有cell并按顺序返回

=== 二面 ===

算法

  1. 一棵完全二叉树,再给你一个新节点,你把这个节点插到合适的位置,让它还是一棵完全二叉树

=== 三面 ===

基础

  1. 介绍项目(后来发现每个面试官都对我LLVM/Clang的项目很感兴趣
  2. TCPUDP区别
  3. TCP拥塞控制
  4. HTTP头部介绍下
  5. HTTPHTTPS区别
  6. HTTPS用的什么加密?有了解加密算法吗?

算法

  1. 图片缓存的LRU
然后就面完啦~再去找下一个面试官,面试官在面其他人,而且时间也快到他们饭点了,就让我先回去,再跟我约时间。

=== 四面、五面、HR面 ===

四面跟大BOSS聊人生规划
五面跟另一个BOSS聊,主要聊了快手抖音对比,竞品分析讨论
HR面谈规划,手上offer怎么选择,目标城市等...

抖音(SP)

=== 一面(50~60min) ===

算法

会一行一行讲,也会问时间复杂度,以及优化

  1. 最近公共父节点(两个节点,都可能为null,都可能不在树上。我最开始写的没考虑不在树上的情况,面试官还吓唬我说”你以为你这算写对一半吗?没做出来就是0分哦”)
  2. 反转链表(常规题)

其他

  1. HTTP了解吗?HTTP2.0介绍下
  2. iOS9-13,每个版本讲一个特性
  3. 怎么实现多个任务执行完后,再统一处理(应该是同步阻塞、栅栏函数、调度组。中间那个没答)
  4. 夜间模式怎么实现的?除了通知的方式,有什么更优雅的方式吗?
  5. 图片怎么加载的?(SDWebImage)
  6. 不让用SDWebImage,如何实现类似逻辑 (自己设计图片请求和缓存,简单讲了SDWebImage的思路)
  7. 每个TableViewCell都有一个UIImageView要加载图片,如果没有缓存,有五个Cell请求一个url,同时发请求肯定是不实际的,如何处理?
  8. 微信TableView滑动的时候,动图是不动的,为什么?(Runloop的Mode决定的)
  9. 有了解过WebSocket吗?(没有…)

=== 二面(1.5h) ===

算法

  1. 如何不试用递归,打印所有一个UIView所有的subviews(包括孙子view等)
  2. 设计一个图片缓存系统,并代码实现
    清理缓存应该用LRU,当时的我并不会,但是被一步步引导着写出来了,感谢面试官没放弃我hhh

其他

大部分是计网+多线程

  1. 介绍研究生做的基于LLVM/Clang的静态分析
  2. 七层协议栈
  3. HTTP是哪一层的协议
  4. HTTP常见的返回码有哪些?
  5. HTTP除了GET、POST还有哪些?
  6. HTTPS介绍一下
  7. HTTPS能防止中间人攻击吗?
  8. HTTPS怎么抓包?
  9. TCP和UDP的区别
  10. 线程和进程的区别
  11. 线程之间如何进行通讯
  12. 不使用gcd,如何保证线程安全?
  13. 怎么实现多个任务执行完后,再统一处理(重复)
  14. iOS有哪些多线程方式?
  15. 同步和异步有什么区别?
  16. 串行队列和并行队列有什么区别?
  17. 队列和线程的关系
  18. 死锁是怎么产生的?(死锁条件)
  19. 你有什么要问我的(第一次跟面试官聊规划,感恩面试官没有敷衍我)

=== 三面(40+min) ===

算法

  1. 合并排序链表

其他

  1. HTTPS用的对称加密还是非对称加密?
  2. TCP的慢启动,快恢复介绍下
  3. 客户端发送网络请求,到拿到响应的整个过程(类似打开一个网页的过程)
  4. 接上题,如果DNS解析的时候,某个ISP服务器没有了,这时候逻辑是怎样的?(不会,面试官说会通知其他节点,还提到了ARP协议…)
  5. 介绍了下简历上写的字典转模型的设计+夜间模式的设计
  6. 为什么不用成熟的字典转模型的三方?有了解过吗?(了解一点,有YYModel)
  7. 夜间模式有什么缺点,能怎么优化?
  8. 锁有哪些?
  9. 遇到哪些小坑?内存相关的有吗?
  10. 我看你简历写了数据存储,怎么存的
  11. 自己写的LoadingView怎么做的
  12. 线程安全错误是怎么出现的?
  13. 你有什么要问我的(聊了很多,感恩)
  14. 我加下你微信有事可以随时找我(是团队leader,后续还找他帮忙了,一万个感恩)

字节跳动提前批,最早的一场面试啦,凭运气+还算比较好的基础+良好的沟通能力通过了。
小伙伴们,沟通真的很重要~

阿里(二面挂)

手淘搜索组,8月初面试

=== 一面 ===

有些问题我没写,上面的面试提到过了
其它
  1. 项目整体设计说一下
  2. 引用
  3. 多态
  4. 快速查找 二分查找 冒泡排序 队列设计
  5. 内存分配
  6. OC内存机制

=== 二面 ===

算法
  1. 给1G内存,1T数据,数据是一个大文件,文件每一行都是一个URL,去重(跟面试官掰扯了半天没搞定。其实当时前几天我还跟我男票嘱咐了几次让他复习这个(他当时准备跳槽),但我以为我客户端不会问这个,结果...)
其它
一些业务情景

总结失败的原因:
  1. 阿里要求确实挺高的
  2. 我所准备的内容和他们想要的内容不太一样
  3. 最关键的就是,复习不到位,自己太菜
给你们愿意看这个贴子的人一句建议:早点准备,不要拖延,不要有侥幸心理...

网易云音乐(HR挂)

只面了一面,直通HR终面,但是后来有事没去...

=== 一面 ===

  1. 待加

蘑菇街(offer)

=== 一面 ===

算法
  1. 字符串的全排列(简单的dfs题,注意下重复字符就行)
其他
  1. 待加

=== 二面 ===

部门leader面
  1. 介绍研究生做的基于LLVM/Clang的静态分析
  2. 待加

=== 三面 ===

交叉面,简直被吊打,本来一二面自我感觉非常良好,面完这个我感觉我要凉凉,万幸没凉...
  1. 组件化



腾讯(SP)

=== 流程 ===

  • 8月初,自主投递,几分钟后简历被锁。
  • 8月12号,一面。纯业务和岗位基础知识。
  • 8月31号,二面。基础知识+两个算法。
  • 9月4号,三面。项目+一个算法。
  • 9月8号,HR面。直接敞开了谈,就说岗位地点选择纠结,HR说表示理解,让我有事可以找她聊,跟我说她这过了。
  • 9月12号,HR打电话来发口头意向,当天还是第二天邮箱就收到意向书了。

一面等了20天才二面,原因是一面的反问环节,我跟面试官说,base不合适...🤣
为什么会蠢到搞出这样的魔幻操作,大概是我当时一面面得太顺了,有点飘,大家别学我(教训)...

=== 一面(47min) ===

  1. 自我介绍
  2. 介绍研究生做的基于LLVM/Clang的静态分析
  3. TCP和UDP的区别
  4. TCP如何保证交付
  5. TCP流量控制、拥塞控制
  6. TCP的分包机制(传输内容太多得分包)
  7. HTTP的组成,HTTPS与HTTP的区别
  8. HTTP的传输大小限制(联系TCP答的...我也不确定)

  9. 简历项目提问n个(跟我写的另外的面经大同小异,不写了)
  10. 你有什么要问我的(问了一些组里情况等)

=== 二面(40+min) ===

算法
  1. 快排
  2. 字符串最长匹配
其他(感觉他想到啥问的啥...)
  1. 代码风格问题(我第二个算法题while里面嵌套了逻辑,面试官说可以抽出来...)
  2. 面向对象的三大特征(谁能想到问这玩意,准确答了两个,剩下一个不记得是啥,把知道的东西都说了一通...)
  3. 进程与线程的区别(这个题是秋招必考基础题啊哈哈哈,不会的感觉可以直接回家洗洗睡了...)
  4. 待加
面试官笔记本没带充电器,最后没电了,匆匆下线...我还以为是我答得不好,自我怀疑了一下...

=== 三面(37min) ===

算法
  1. 两个数组,都没有重复值,都无序,求两个数组的交集(我一分钟给了三种方法,然而面试官好像想要更优的,想了30秒直接说不会了,而且至今也不会...)
其他
  1. 一些上面写过的问题,常规
  2. 你关注啥技术公众号吗
  3. 今年WWDC内容
  4. 你有什么要问我的
这轮除了反问环节,只有29min,面完心里很忐忑...


拼多多(HR挂):

HR挂我的原因,是一个不能公开说的秘密...

=== 一面(1h5min) ===

  1. 自我介绍
  2. 简历内容:JSON转模型如何实现;夜间模式;播放器架构设计
  3. 请求的过程
  4. 服务端返回格式除了json还有其他的吗?
  5. 哪些OC对象是线程安全的
  6. 为什么要在主线程更新UI
  7. 如何保证OC容器在多线程下的数据安全性
  8. SDWebImage的内存怎么设计的,更新原则是什么
  9. 两个算法题:
    1. {}[]()判断括号匹配性
    2. 只有一种括号,计算最少加多少个括号,使其满足匹配
  10. 你觉得你的优点是什么
  11. 你觉得你的缺点是什么
  12. 你有什么要问我的

=== 二面(1h7min) ===

上来废话不多说,也没有让自我介绍,“我们来聊聊OC吧~”,个人挺喜欢这种风格的~

  1. +load和+initialize怎么理解的,什么时候会被调用,分别讨论父类重写而子类没重写的情况
  2. 怎么理解OC的动态性
  3. 介绍下消息转发机制,说一下这些过程中用到的系统API
  4. 怎么理解Block的
  5. Block的变量截获机制
  6. __block的实现原理
  7. 内存管理机制(ARC,非ARC)
  8. 给了我一个例子,让说这样非ARC情况写在多线程下会有什么问题,改为ARC呢,改为手动加autoreleasepool呢(其实也是考虑内存管理和释放,会不会导致野指针的不正常使用)
  9. 用户点击屏幕,系统是怎么找到一个view并决定由它来响应事件的(传递链和响应链)
  10. 接8,把你说的hitTest方法写一下伪代码
  11. 简历上写了LLVM/Clang,问了解IR吗
  12. 你有什么要问我的
拼多多其实是我秋招里面得最难的一家啦~两位面试官都问得很细。
但是由于在最后,所以准备得挺充分了,自我感觉面得不错。






#面经##iOS##阿里巴巴##腾讯##拼多多##快手#
全部评论
校友好厉害啊,我也是学iOS客户端的,和你比起来真的好菜啊
1 回复 分享
发布于 2019-09-30 16:22
大佬😂
点赞 回复 分享
发布于 2019-09-27 14:46
恭喜恭喜 坐等面经
点赞 回复 分享
发布于 2019-09-27 14:47
大佬 能出个面经不?
点赞 回复 分享
发布于 2019-09-27 14:47
恭喜大佬!
点赞 回复 分享
发布于 2019-09-27 17:53
恭喜大佬!是上海的抖音吗,说不定会是同事了,我也是iOS岗
点赞 回复 分享
发布于 2019-09-27 20:09
大佬牛逼
点赞 回复 分享
发布于 2019-09-27 20:15
帮顶!
点赞 回复 分享
发布于 2019-09-27 23:37
hhh小蘑菇是我推的吧,看到id和名字有一个字重了
点赞 回复 分享
发布于 2019-09-28 12:55
大佬!!
点赞 回复 分享
发布于 2019-09-30 09:43
能留给联系方式吗,想请教学习经验 谢谢
点赞 回复 分享
发布于 2019-11-16 11:14
女生的面试问题也太简单了吧,真羡慕
点赞 回复 分享
发布于 2019-12-10 21:07
恭喜恭喜~我下周上海抖音的面试,期待能跟小姐姐成为同事~
点赞 回复 分享
发布于 2020-01-15 13:05
求问算法题不会的时候该怎么沟通啊,emmm我算法很弱
点赞 回复 分享
发布于 2020-02-07 13:01
恭喜
点赞 回复 分享
发布于 2020-02-07 15:57
现在研究生有iOS相关专业了,还是自学的
点赞 回复 分享
发布于 2020-02-24 05:17
这个社会对程序媛太友好了
点赞 回复 分享
发布于 2020-03-27 12:06

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
双非一本失业第二年:《机器视觉垃圾分类》
点赞 评论 收藏
分享
评论
19
98
分享
牛客网
牛客企业服务