本人系双非渣本软件工程的大三学生,春季校招季投了一大波简历,本文先记录一下腾讯的面试经历。

从 3 月初开始网申到 3 月 15 号接到面试通知。我投的是 iOS 移动开发岗位,没有部门要求。这次接到的面试邀请是腾讯北京 OMG 事业部的。

一面

面试地点就在腾讯北京的办公楼(海淀区知春路希格玛大厦),一面的内容大致如下:

* 对什么语言比较熟悉?Objective-C(面试过程中简称 OC)或 Swift?
我平时写 OC 会多一些,Swift 也在研究。
* 简述一下 OC 与 Java 以及 JavaScript 之间的区别,从性能、执行方式上谈。
这里我简单说了一下我的理解,主要围绕着 Runtime、VM 以及类型系统说的。
* OC 与 Java 在内存管理上有什么区别?
典型考察 GC 与引用计数的区别,很简单。
* 了解 OC 的 GC 机制吗?
OC 实际上曾经在 macOS 中支持 GC 机制,不过后来被废除了,NSZone 其实就是为了 GC 而产生的。这里也只是简单提了一下。
* 谈印象深刻的项目,主要的技术难点。
这里我谈了谈我自己上架过的 app —— PicSaver,主要技术难点在于如何获取用户在网页上点击的图片(使用 JavaScript 脚本注入,JS
Bridge 通讯)。
* 围绕上一个话题,谈一谈你对 JavaScriptCore 的理解,JS Bridge 的工作原理(JS 如何调 native code)以及
UIWebView 和 WKWebView 的区别。
围绕 OC Runtime 分析了一波,又谈了谈 WKWebView 的多进程渲染。
* 看过开源框架的源码吗?
我简单说了说 AFNetworking 和 ReactiveCocoa。
* AFNetworking 的设计思路。NSURLSession 和 NSURLConnection 的区别。
* 简述一下 OC 中对象的内存布局。
* OC 中 KVO 的实现原理。
isa Swizzling
* 手写算法题,判断 x 是否为 2 的乘方。
很简单,我先写了一种递归的方法,然后面试官暗示我不要用四则运算和取模,我又写了一种位运算的方法(Bit Counting 的一种高效实现)。
* 简述算法题,字符串最长无重复子串。分析一下时间复杂度和空间复杂度。
Two Pointer + 哈希表即可。最差情况下时空复杂度均为 O(n)。
一面就这么告终了,当时感觉很简单,面试官看起来也很满意,然后让我稍等一会,马上就安排了二面。

二面

* 谈谈 Swift 中的 nil,与 OC 中 nil 的区别。
我本以为是考察 Optional 类型,实际上面试官想考察 OC 的 nil 是指针类型的一个取值,而 Swift 中的 nil
在类型层面可以赋给值类型和引用类型。
* Swift 中 struct 与 OC 中 class 的区别。
也是考察值类型与引用类型的区别的。
* 值类型在函数间传值时的性能问题。简述 COW(Copy-on-Write)。
* 简述一个 HTTP 请求的整体过程。如果有 HTTPS 呢?HTTP/2(及 SPDY 这种实现)了解吗?
* 算法题,填充矩阵: 1 2 3 4 10 11 12 5 9 8 7 6 考虑边界情况,大致思路就是用方向向量来控制 x, y
坐标,按方向一直填充即可,使用合理方法来处理碰撞检测即可。可以写伪代码。
* 网络通信时通常采用什么格式?除 JSON 以外的?
这里我简单谈了谈 Protobuf,面试官继续问 Protobuf 二进制的好处,我简单说了下其结构上带来的带宽优化(体积更小),以及 Parser
解析的大致过程。
* 听说你对前端有所了解?可否给我这个“外行”讲一讲 Vue.js?
* (面试官明显不是外行)简述 Vue.js 与 Angular 的相似之处,它们与 React 又有什么区别?简单谈谈 Virtual DOM、MVVM
设计模式。
* C++ 了解吗!!
我擦,套路题?赶紧回答只是略微了解而已。可以看懂代码,能写简单程序。
* 日常 ending,你还有什么想问的吗?
简单问了下实习生的工作,腾讯这边更希望实习生做一些研究性质的工作,探索一些技术新方向,当然你也可以选择写业务。
大致就记住了这些问题,面试过程中还有更多琐碎的小问题,就不一一赘述了,两面总共面试了 1 个多小时,整体的过程还是很轻松的,问题回答得基本都让面试官比较满意。

HR 面

二面结束后大约一个小时,简历状态变为 HR 面,如果不出意外,接下来一个周左右的时间我将会迎来所谓的 HR 面,技术面应该告一段落了。

说一下我现在的状况吧,3 月 19 日入职石墨文档,前端开发实习生(我技术方向太杂了 ?),主要负责石墨桌面客户端(Electron +
React)的开发与性能优化。接下来的职业规划就要根据其它公司的面试进展来决定了,目前待面的还有蚂蚁金服支付宝团队。嗯,先写到这~

作者:Cyandev
链接:https://juejin.im/post/5aae70dc6fb9a028de447d24
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信