腾讯社招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个半小时。整体上,回答的还算OK,自动释放池这块,不够清楚底层实现。另外atomic是在属性没有写的情况下系统默认的。Block的底层实现也表达的不够准确。一面之后过了几天给了二面通知。

二面视频面试:

这次面试官相对于一面,更加侧重于过往项目。

1.简短的自我介绍
2.聊一聊过往项目中你觉得收获最大的一个模块。
答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。
  • 需求痛点:界面卡顿,体验不好
  • 解决方案:探索的思路 -> 解决方案。
该模块引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。细节上还谈到了富文本绘制,Coretext框架的使用,但由于也好久没用了,最后只能凭借印象大概说了下绘制的流程,其实面试官都是由浅入深的,如果这边回答的不够深入。那么后面也就不会有更深入的探讨了。由于之前我们的产品需求比较简单,没有特别完善。这里我也只能说了大概。
接着面试官问到这个需求遇到过哪些坑,怎么解决的。还是之前的思路,需求痛点有了
  • 解决方案:探索的思路 -> 解决方案。
不得不说之前做的产品,都是需求驱动,解决了需求,很多时候就没有极客精神,在深入的去探讨。这块真的是差!
项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。
  • 最后给出了一个非常有意思的算法题
  • 有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒
答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。但是怎么分配瓶子,还没想好,演算了一会儿,因为面试官这边时间有限,就说思路是正确的。下面有兴趣在看怎么分哈。面试就到此结束了。

二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。

面试总结

腾讯的面试官都非常的友好,逻辑性非常强。综合素质很高。面试过程中虽然针对的都是技术问题,但是考察的包含了逻辑思维和产品思维以及沟通能力等综合素质。特别是二面。

认识到了自己的不足:
  • 不够极客精神:还是需求驱动,之前的项目很多设计优化因为对产品的需求没有那么高精度,遇到痛点的时候:仅仅做了初步的探讨,没有形成完整的闭环,往往是做了一定的优化满足了需求就结束整个过程了。这对于自我的成长是很不好的。比如一个API了解到百分之70,没有到100.
  • 已有项目知识面深度不够:项目中使用到了某些API,第一反应是先去看Demo,完成需求,事实上例如仅仅是一个简单视频播放,可能调用API很简单就可以做到,但是中间包含的却很多,从网络协议,到视频解封装,编解码,渲染。音频编解码播放。虽然每个环节都有去学习,也都知道流程,但是这是不够。要深入进去。即使自己的项目没有这块实践需求。也要自我驱动去做。
  • 自我总结欠缺:以前都是浑浑噩噩的快乐开发,也自学了不少。每个项目,或者每个自我学习的过程走一段,都应该站在更高点去总结一下。例如项目,要站在产品角度,自我学习,要站在整体框架角度。否则学习到的东西一段时间不用就忘记了。高度也不够。没有完全消化透。感觉什么都懂一些,但是什么都差一点火候
怎么改善提高:
  • 多写Blog分享,东西会做,和能写出来是两个层面。即使网上已经有很多实现了。消化好之后,用自己的思路表达出来,也有很大提高
  • 遇到问题,无论是项目还是自己实践,都要多问几个为什么,不能浅尝辄止,站在产品角度。从原理层面理解问题,最重要是给出解决问题方案。demo不等于工程。
  • 阶段性总结知识点。古语: 学而时习之。
反思了很多:也清楚认识到自己的一些优点,有技术热情,爱好学习。很好的逻辑思维。沟通能力。相信只要坚持努力。一定能获得好的结果。也给自己打打气。共勉之。
#腾讯##社招##面经##iOS工程师#
全部评论
感谢大佬分享!欢迎参加社招面经活动~~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
点赞 回复 分享
发布于 2019-10-21 14:36
点赞 回复 分享
发布于 2019-11-15 09:20

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
3 46 评论
分享
牛客网
牛客企业服务