网易腾讯今日头条社招iOS面经
谨以此文回馈牛客
作者去年毕业于北京某不知名211,去年春招至秋招都在牛客上看了大量的面经。今年三月份由于个人原因打算换工作,前后通过社招共面试了:网易云音乐,腾讯在线教育,腾讯视频,今日头条四家公司,岗位均为iOS开发,除开网易云以外,其他均走到总监面(腾讯在线教育)及拿到offer(腾讯视频,头条)由于我本人本来也毕业不太久,面试与校招差距不大,对学弟学妹们应该有一定的参考意义,随撰写此篇面试记录用于参考。
网易云音乐 iOS高级开发工程师 一面跪
个人是网易云粉丝,这个岗位base杭州也算不错,遂在boss直聘上投递,当天就约了晚上电面。说实话面试体验不太好,面试官应该是只做native开发,我个人在上家公司业务开发更多是weex,面试失利也较为正常。
以下为问题:
- 简单介绍下自己
- 看你写的都是js,oc基础还ok吗?
- oc里的消息转发?
- oc怎么实现多继承?怎么面向切面?
- 怎么给系统对象如UIView增加属性?
- Load方法与Initialize方法有什么区别?
- autoreleasepool怎么用?原理是什么?
- weak与assign有什么区别?
- NSNotificationCenter接受消息和发送消息是在一个线程立吗?发送消息是同步还是异步的?接受消息呢?
- 有什么要问我的
面了大概一小时,我自己录音做了一次复盘,感觉答上来大概80%吧,消息转发那里答得不太好,理解错面试官意思了,我回答成了整个消息流程。第二天一早就收到hr消息挂了,估计是岗位不太符合,那边估计是要纯原生且经验比较丰富的人。GG
今日头条 iOS高级开发工程师 拿到offer
效率奇高,下午两点半开始面试,不到6点和hr谈完薪资。
一面:
- 介绍自己
- 写了个旋转数组找最小数字的题
- category复写元类方法原理
- 消息转发
- weex原理,怎么优化的
- http三次握手流程,为什么要三次握手?
- http长连接了解吗?
- runloop用过吗?
一面面了蛮久,但大部分还是基础。
二面
- 写了一个查找某路径是否存在于某二叉树内题
- autoreleasepool原理,底层数据结构,pop,push方法是否会对对象的引用计数产生作用?
- https握手流程?
- weex和native如何通讯的?
- weex渲染原理
- runloop用过吗?
- runtime用过么?kvo原理了解么?
- 在上家公司做的最具有技术含量的事情是什么?
还有一些记不***了。。。囧 面试官很严肃,答完并不会给任何反馈,不知道他是否满意,搞得我越来越紧张。
三面
- autolayout原理
- fmdb用的什么数据库?支持事务吗?
- nodejs协程是怎么一回事?
- 如何在iOS项目里设计一个页面跳转路由器?
三面剩余技术方面都问的比较宽泛,更多的聊天。
hr面就不放了,没啥参考意义。
腾讯视频 iOS高级开发工程师 拿到offer
一面:
突然接到电话,面试官声音非常好听,刚开始我还以为是hr。。。
- 简历上基本都是js啊,oc基础还记得吗?
- oc消息流程
- weak关键字原理
- runtime
- 异步绘制原理
- oc怎么实现private,public等关键字
- 大概讲讲weex
- iOS渲染图片怎么优化
- 怎么记录app启动速度
- Load方法
- autoreleasepool与arc原理
- 快排原理,如何优化
- https原理
- 两个玻璃球,100层楼。某层楼扔下玻璃球刚好会碎,此层楼以上抛下玻璃球都会碎,此层楼下抛下都不会碎。最少抛几次玻璃球找的出来这层楼?
最后那个智力题真是无力吐槽。
二面:
- weex最近迭代了什么?
- 看过weex源码么?
- 认识天施么?(我:?????)
- weex和rn区别是什么?阿里为什么要开发weex?
感觉是个亲切的大叔,和我随便聊了聊。。。
三面:(北京现场面试)
- 手写一个根据网络请求响应码本地快速查找对应范围内的msg的题。
- weex和rn区别是什么?
- 做过最有成就感的事情是什么?
- 你觉得weex的难点在哪里?
- weex布局引擎怎么实现?
答得一般感觉,不过最后还是给过了。
四面:(北京现场)
基本都是聊天,介绍腾讯视频业务,就不放了。
hr:
问了个很有意思的问题:我看你毕业不到一年,为什么面试官觉得你能hold住这个岗位?你自己有信心吗?
腾讯在线教育 iOS高级开发工程师 总监面后由于和腾讯视频冲突放弃流程
一面:
- iOS渲染图片怎么优化
- Load方法
- 快排原理
- app启动过程
- oc消息流程
- 讲讲runloop
- 讲讲runtime
- weak关键字原理
- block原理
- arc
- 在线oj:大数相乘
腾讯在线oj体验好差,果然还是现场面试占优势。
二面:
随便聊了聊,然后又约晚上在线oj,题目又是大数相乘。。。
三面:
- 你的项目很杂啊,nodejs你觉得你掌握的怎么样?
- nodejs协程?
- 介绍一下typescript
- 为什么喜欢golang
- golang中的goroutine怎么实现的?
- vuejs和reactjs有什么区别?
- 现在你可以等概率随机获得1~5个数字,怎么在此基础上等概率获得1~7?
- 某班30%的人喜欢足球,40%的人喜欢篮球,50%的人喜欢排球,问多少人(比例)既喜欢排球,又喜欢篮球?
- 如何快速的统计某篇文章中出现频率最高的几个单词?
果然是大佬的问题,不拘一格,最后的智力题无力吐槽。
面了一圈下来感觉和当时校招区别不算特别大,基本还是一面二面问基础,同时在基础ok的情况下深入某个项目挖掘候选者亮点。比如我简历上写了掌握weex,基本每家公司都问weex原理。。。有趣的是有的面试官还会关注除了iOS方面别的技术掌握程度,比如我无意间提到自己写过一个go的小项目,就go语言本身,面试官也和我聊了很多。
要说面试心得,我觉得我还蛮有积累的。从去年校招到今年3月社招,大大小小的公司面了不下20家。大部分都拿到了offer。一路面过来,我觉得候选者应该做好这么几件事:
- 基础绝对牢靠,比如算法要ok,计网如tcp/ip,https,http,基本操作系统知识如线程进程,内存显存,虚拟内存,多线程调度,锁等要掌握。
- 对应岗位的基本技术能力要具备,比如上述面试中多次提到的iOS相关问题。
- 某个方面要有绝对的亮点,比如我做过蛮多weex,面试官可能就比较关注是否了解weex原理,同时是否做过优化?
- 沟通能力要好,在面试中能理解面试官的问题,表述清楚自己的想法。
- 思维能力要好,遇到自己没见过的问题,要有解决思路。
最后推荐几本校招必备的书籍,不限技术方向: 《现代操作系统》、《程序员的自我修养》、《自顶向下的计算机网路》、《C和指针》以及《剑指offer》
其中一小部分还在完善,可能也有些纰漏,欢迎大家star或者提issue。
#面经##腾讯##iOS工程师##网易##字节跳动##iOS#