腾讯社招iOS面经
具体部门这边就不说了。这次面试还是收获到了很多。
1.简短的自我介绍
2.聊一聊过往项目中你觉得收获最大的一个模块。
答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。
接着面试官问到这个需求遇到过哪些坑,怎么解决的。还是之前的思路,需求痛点有了
项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。
二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。
认识到了自己的不足:
#腾讯##社招##面经##iOS工程师#
一面,电话面试:
面试官主要是针对iOS相关的基础问题。- 先简单自我介绍一下自己
- 对mrc和arc的理解
- 谈谈对自动释放池的理解
- 自动释放池在mrc和arc区别
- 多层自动释放池嵌套的对象在哪一层释放
- 对于block,理解,mrc和arc下有什么区别,使用注意事项
- 对于深拷贝和浅拷贝的理解
- 对于strong weak,atomic等等理解
- weak原理
- 如果属性完全不加修饰词入weak,atomic,系统会怎么处理
- 简述下block的实现
- 描述下IM系统如何保证消息不丢
- IM数据库如何设计表
- C++引用和指针有什么区别
- Http协议30x的错误是什么
- 谈谈你懂runloop得理解:由浅入深
- 谈谈对多线程理解:由浅入深
- 谈谈category和extension区别,系统如何底层实现category
- 谈谈消息转发机制实现
- 谈谈事件响应链,如何响应view之外的事件
- 界面性能优化
二面视频面试:
这次面试官相对于一面,更加侧重于过往项目。1.简短的自我介绍
2.聊一聊过往项目中你觉得收获最大的一个模块。
答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。
- 需求痛点:界面卡顿,体验不好
- 解决方案:探索的思路 -> 解决方案。
接着面试官问到这个需求遇到过哪些坑,怎么解决的。还是之前的思路,需求痛点有了
- 解决方案:探索的思路 -> 解决方案。
项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。
- 最后给出了一个非常有意思的算法题
- 有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒
二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。
面试总结
腾讯的面试官都非常的友好,逻辑性非常强。综合素质很高。面试过程中虽然针对的都是技术问题,但是考察的包含了逻辑思维和产品思维以及沟通能力等综合素质。特别是二面。认识到了自己的不足:
- 不够极客精神:还是需求驱动,之前的项目很多设计优化因为对产品的需求没有那么高精度,遇到痛点的时候:仅仅做了初步的探讨,没有形成完整的闭环,往往是做了一定的优化满足了需求就结束整个过程了。这对于自我的成长是很不好的。比如一个API了解到百分之70,没有到100.
- 已有项目知识面深度不够:项目中使用到了某些API,第一反应是先去看Demo,完成需求,事实上例如仅仅是一个简单视频播放,可能调用API很简单就可以做到,但是中间包含的却很多,从网络协议,到视频解封装,编解码,渲染。音频编解码播放。虽然每个环节都有去学习,也都知道流程,但是这是不够。要深入进去。即使自己的项目没有这块实践需求。也要自我驱动去做。
- 自我总结欠缺:以前都是浑浑噩噩的快乐开发,也自学了不少。每个项目,或者每个自我学习的过程走一段,都应该站在更高点去总结一下。例如项目,要站在产品角度,自我学习,要站在整体框架角度。否则学习到的东西一段时间不用就忘记了。高度也不够。没有完全消化透。感觉什么都懂一些,但是什么都差一点火候
- 多写Blog分享,东西会做,和能写出来是两个层面。即使网上已经有很多实现了。消化好之后,用自己的思路表达出来,也有很大提高
- 遇到问题,无论是项目还是自己实践,都要多问几个为什么,不能浅尝辄止,站在产品角度。从原理层面理解问题,最重要是给出解决问题方案。demo不等于工程。
- 阶段性总结知识点。古语: 学而时习之。
#腾讯##社招##面经##iOS工程师#