Aef10b31c5c9cd94db6c0b11b4c82917
面试官更重视的素养

面试经历

现在回头看一下自己的校招,为了写这篇文章,还特意跟我 leader 还有组里的老司机聊了聊。

我的面试

从大三,三月份开始写写简历,然后在一些招聘网上发一些自己的简历。陆陆续续的面试了一些创业公司,拿到一些 offer,在这期间,这些面试官很关注快速开发能力,先是一些基本的像内存管理,一些 UI 布局,计算机操作系统,计算机网络,还有一些简单的排序算法之类的

接着就是问你的项目经验,在问项目经验的过程中,就是自己先在各种说,做了什么,实现了什么功能,自己在团队中充当什么角色。我们实现这个功能的目的是什么,采用了什么技术。整体的流程就是这样。

在面试腾讯的时候,在一面,面试官更关注的是计算机网络,计算机组成原理,操作系统,数据结构相关的基础知识。没有问什么项目经验,在二面的时候,就是针对你的项目,开始聊。每当你聊到一个点的时候,他就会针对这个点问的很深。

面试前的准备

根据我个人的面试过程,总结下我当时自己的不足。

简历上

很多人的简历写的真的是天花乱坠,一年期间,好几个项目。说不好听点,为了所谓的简历好看,甚至把你 JAVA 实践课上的大作业都写在了简历上去称作“项目经验”,我当时也犯了这种错误,写了很多项目经验,甚至把自己写的一些组件都当做一个项目放在了上面(如果你的组件有 1000+ 的 star,或者功能强大,这个肯定可以)。推荐写一个或者两个自己认真,并且从 0 到 1 的项目。

项目内容

我更倾向于介绍一下大体功能外。更应该明确说明采用什么技术实现什么功能,很多人的简历就是,实现XX,具备XX,个人建议这样不好。最好这么描述,例如,利用 AFNetworking,完成网络组件,实现XX。这样会比较有说服力。最后也应该说明你在项目中遇到过什么问题,是如何进行查找问题,并且定位问题的方式,以及如何解决的。这个过程是面试官很在意的一点。

关于面试回答

在回答中,其实你简单的说一句,和详细的说,我认为是有很大差距的。还有很多问题是很容易预测的。你的简历中谈到你封装了一个网络模块,面试官自然会问到原理,TCP 会问,可能你也知道,然后准备下,去网上搜了一下。TCP 很经典的就是连接的三次握手,断开时的四次挥手。你也简单的查了一下三次握手什么样,四次挥手什么样。但是这仅仅够了吗?我们为什么不在往更深层去准备下呢?例如连接为什么是三次,断开为什么是四次?连接如果两次会发生什么?三次握手中总共发送了三个包,那么仅仅就是做了三个作用吗?更往深处可能会涉及到TCP的头部结构,以及TCP连接,断开时SYN,FIN,ACK的有效值设置又是什么样的?我相信你把这些都说出来肯定是会被加分的。当然你想很好的说出来不是说你面试前查查就可以了,肯定是需要去好好的去理解的。这也就是我说的面试前的准备,不要为了面试而面试,而是要提升自己.

在举一个简单的例子。你的简历中,提到运用图片缓存技术,提升性能和体验。可能会被问到你这个缓存方案是怎么做的?他就简单的说了一句通过URL下载图片然后保存起来,以便利用。这个话题当中有很多东西都是可以去值得聊的,就说这么一句话,我觉得面试官不可能得到他想要的答案,他没有得到答案,肯定是要去接着问你的。其实换个角度想,追问也是在间接的给你提示,引导你去回答他想要的答案。究竟该怎么说?例如图片的缓存方案肯定是要涉及到图片的下载问题,既然是下载,那么下载进度信息的回调你怎么做的?下载失败怎么办?下载完成的回调怎么做的?下载肯定涉及到多线程的下载,那么这些线程你是如果管理的?线程管理器的结构又是什么样的?甚至是一个URL下载连接正在被下载,另一个地方发起了一个相同URL的下载,这种情况我认为为了节省资源不应该在新开一个线程去下载,那么这种情况你有做处理吗?如何做的?其实有很多值得考虑的问题和值得去说的。

我询问的结果

写这个前,我还特意去请教我们组的同事,问他们在面试中在意哪些点。所有人的结果,可以归纳出三点。我按照重要程度,来说。

top Created with Sketch.