从2020年七月份开始面试,陆续接触了 涂鸦、网易、哈啰、阿里好几个BU等等。最后也是顺利拿到了offer。
面经要的朋友太多..被迫把这份经历写下来,如果能帮到同样是打工人的你,是我的荣幸。
ps: 因为时间太长了,而且我现场没有笔记,我只能把我印象比较深的问题做一个记录,然后很多重复的问题我就略过了。
涂鸦:
深浅copy的概念和在各个类中的用法和区别(NSString ,NSArray,NSMutableArray)。
如何判断一张图片在URL没改变的情况,图片资源发生了改变,说出方案。
平时在开发过程中A/B Test的使用与方案落地。
fastlane自带的aciton够用吗,有没有自定义过action(好像是这个,反正我只用过自带的功能T_T,在讲到自动化构建的时候问到,他们的构建系统看起来很复杂,有兴趣可以看看)。
说说蓝牙进行交互的过程。
印度2G,3G网络偏多,如何保证每次打开App,能够快速地建立请求并加载响应页面以及图片资源。(这种可以从多个方面作答:流量Protocol Buffer、DNS、缓存、网络协议,图片格式webp等等)。
http2.0和http1.1的区别,再说说http3.0。 (他们好像有在商用3.0...有可能记错...)。
网易:
主Mach-0如何知道加载哪些动态库,说说App的启动流程。
聊一下自动释放池。
msgsend的流程,msgsend在寄存器中的运行过程
https的流程,Charles为什么可以抓https的包。
如何防止DNS污染/欺骗。
ip直连中使用https会遇到什么问题,如何解决。
说说无痕埋点的方案和埋点过程中获取上下文属性的方案。
看看你的contribution记录和文件作者.(黑人脸问号...他好像不相信我一个人维护整个项目...)
阿里BU.1:
动态库和静态库的区别,开发者用到的动态库和系统动态库的区别。
NSTImer准吗,不准用什么替代方案,GCD作为定时器真的准吗?
NStimer在本次因卡顿之后延迟执行,那么他的下一次执行是在本次loop,还是下一次loop(好像是这么问的,反正当时回答得云里雾里,关键看你runloop的掌握程度)。
商品cell停留的曝光时间埋点怎么统计,说说设计方案。
llvm相关的概念与代码质量检测方案。
GCD的block怎么取消执行,有什么坑。
autoreleasepool的实现方案。
二叉树层序遍历。
如何判断链表有环。
weak的实现原理。
阿里BU.2:
GCD和NSOperation的区别,分别的优缺点,为什么官方不推荐使用NSOperation (??这一点我存疑,暂时没看到过,当时也反驳了。
msgSend的经历了哪几个过程,快速转发和慢速转发有什么区别。
Mach-O 体积优化的方案。
RunLoop的几种模式,说说各种模式的区别和应用场景。
说说WebView页面打开速度的优化方案。
说说你目前网络的优化方案。
支付宝离线支付的交互流程。
OAuth授权机制的交互流程。
React-Native是如何进行线程管理的。
PNG,JPG 图片格式是如何进行压缩的,让你设计一个压缩算法,讲讲大致的思路。
YYCache的实现流程。
讲讲优化过的isa指针和没优化过得区别。
如何判断一个Tagged Pointer指针。
哈啰:
vc有个strong的NSString对象,对该对象赋值之后,引用关系和引用计数的情况.
说说OSSpinLock的实现原理与存在的问题,官方推荐了哪种锁进行替换。
说说dyld的rebase,rebind做了啥。
https的流程和证书设置,怎么设置,在哪里设置。证书里面验证点什么。
WKWebview的网络抓包。
卡顿监控一般怎么做,怎么防止卡顿的误报。
应用内h5的白屏监控。
做一个WebView容器,说说从哪些方面考虑(结合离线加载,预加载,白屏监控等等..)。
如何防止DNS污染/欺骗。
基于路由的组件化方案有什么值得注意的地方。
App启动优化的方案和ios13启动优化点(当时不确定,特意去看了下WWDC)。
说说你项目目前的架构设计。
稍微有点乱,有些太基础的题真的没印象了...感觉还有好多没记起来..回头记起来再接着补...
结语:
我觉得面试技巧确实是需要锻炼的,回顾最后几次的面试,自己真的有一种“突破”的感觉,这种状态很像咒术回战的里的领域展开
(敌人在你的领域内逃不走,且你的技能能百分百hit到敌人)。
希望新的一年大家都能面上心仪的公司。