腾讯 iOS 三面-这是我踩过的坑!

一面 电话面试

OC修饰符,追问weak,unsafe_unretained什么意思?

为什么NSString要加copy?

KVO的原理是什么?

RN基础架构是什么?

HTTPS和HTTP区别,追问具体怎么加密,如何信任证书

HTTP2.0和HTTP1.1区别

TCP接受窗口和发送窗口,TCP 3次握手

如何解决controller臃肿问题

NSNumber是如何实现的

谈谈category和extension区别,系统如何底层实现category

谈谈消息转发机制实现

谈谈事件响应链,如何响应view之外的事件

界面性能优化

谈谈对自动释放池的理解

对于strong weak,atomic等等理解

数组和链表的区别,使用场景分别是什么

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

算法复试

四道一共有算法题,要求写出可编译代码。

反转一个链表

给定一个数组,其中有一个数只出现一次,其他数都出现两次,找到只出现一次的那个数。

实现堆排序

给定一个数组array,其中array[i] != array[i+1],找到任何一个i,满足array[i] > array[i-1] 且 array[i] > array[i+1]。假设array[-1] == array[n] == 负无穷。要求O(logN)时间复杂度。

二面 - 视频面试:

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

  1. 简短的自我介绍
  2. 介绍你做过的项目难点?
  3. 聊一聊过往项目中你觉得收获最大的一个模块。
    答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。
  • 需求痛点:界面卡顿,体验不好
  • 解决方案:探索的思路 -> 解决方案。

该模块引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。细节上还谈到了富文本绘制,Coretext框架的使用,但由于也好久没用了,最后只能凭借印象大概说了下绘制的流程,其实面试官都是由浅入深的,如果这边回答的不够深入。那么后面也就不会有更深入的探讨了。由于之前我们的产品需求比较简单,没有特别完善。这里我也只能说了大概。
接着面试官问到这个需求遇到过哪些坑,怎么解决的。还是之前的思路,需求痛点有了

  • 解决方案:探索的思路 -> 解决方案。

不得不说之前做的产品,都是需求驱动,解决了需求,很多时候就没有极客精神,在深入的去探讨。这块真的是差!
项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。

  • 最后给出了一个非常有意思的算法题
  • 有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒

答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。但是怎么分配瓶子,还没想好,演算了一会儿,因为面试官这边时间有限,就说思路是正确的。下面有兴趣在看怎么分哈。面试就到此结束了。

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

三面

聊聊自己定位
聊聊待遇期望
聊聊经历
聊聊规划
聊聊薪水
口头offer

面试总结

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

面试资料:

面试题持续整理更新中,如果你正在面试或者想一起进阶,不妨添加一下交流群1012951431一起交流。

面试题资料或者相关学习资料都在群文件中 进群即可下载!

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

1 ~ 15 瓶,a ~ c,4 只老鼠,喝(1)还是不喝(0),因为喝到必死,所以死亡情况即喝药组合

1 …… 0001
2 …… 0010
3 …… 0011
.
.
.
15…… 1111

假定死亡的组合是a, c,那就是 1010,第 10 瓶分配给了这个组,所以是第十瓶有毒。为什么不是 9,a 没喝过但 a 死了,为什么不是 11,d 喝了但没有死,所以方案可行。

这个结论对不?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!