likes
comments
collection
share

Android 校招面试指南

作者站长头像
站长
· 阅读数 13

大家好,我是 developerHaoz,一名 96 年的腾讯 Android 工程师。双非本科,校招拿过腾讯、阿里等多家头部互联网公司的 offer,而且面试通过率 100%,曾指导多位师弟师妹拿到包括阿里、拼多多、头条、bigo 等校招 offer。拿到过多次腾讯的最高绩效,在面试和职场算是有些自己的心得,今天给大家分享下校招面试相关的方方面面。

一、面试前的准备

1、简历如何写

简历的重要性不言而喻,各大公司每年都会收到成千上万份简历,如何在 HR 在很短的时间内认可你的简历,将决定你是否能进入面试。如果简历写的足够优秀,可以让我们在提前批阶段直接跳过笔试进入面试环节,甚至即使笔试成绩不理想也可能因为简历而让我们有面试机会。

01 排版

简历的内容固然重要,但简历的排版其实也是非常重要的,而且是大多数人容易忽略的点。好的排版会让人看起来很舒服,也会让面试官和 HR 愿意花更多的时间去发现你的价值

  • 中英文之间,以及中文和数字之间加空格。这是因为中文和英文的字体排版有很大的不同,如果不加空格的话,看起来会非常密集杂乱,参差不齐。
  • 专有名词要区分大小写,这是体现一个人专业和细节很重要的一个点。例如使用 Java 而不是 java,iOS 而不是 ios,jQuery 而不是 jquery。
  • 当然最重要的是不要太花里胡哨的,尽量简洁。这里强烈推荐使用 Markdown 来写简历。

02 技能足够具体

对于简历中的技能部分,要足够具体,一方面能让面试官对你能够真正地快速了解,另一方面也让面试官有内容可问,不然面试官可能就会按自己擅长的来问,这对我们面试来说是非常不利的。

  • 反例:熟悉 HTTP、熟悉自定义 View、熟悉常用网络库

  • 正例:

    • 掌握 HTTP 报文格式,了解请求行、Header、Body 的格式以及各自的作用,了解 GET、POST、PUT、DELETE 等方法的作用和区别,了解常见状态码如 200、302、404、500 的含义和应用场景
    • 了解 HTTPS 的工作方式,熟悉对称加密、非对称加密、数字签名的含义和区别,了解 HTTPS 的链接建立过程

03 需要注意的地方

  • 简历的命名很重要,要让 HR 一眼看到他想要的信息,可以参考这个格式:岗位 - 姓名 - 联系方式,例如:Android-hockey-156261xxxxx
  • 简历一定要导出成 PDF,因为 PDF 的排版和格式在不同的操作系统上表现得比较一致,而且也方便打印
  • 简历中的经历以及做过的项目一定要按时间倒序来写,对于 HR 和面试官来说,你最近做的事是他们最关心的部分,而且一般来说也是最能体现出你当前水准的部分

04 简历模板

最后提供一些我觉得很不错的简历模板

2、简历怎么投

01 招聘时间节点

对于校招生来说,需要重点关注两个招聘时间节点

  • 春季实习招聘:3、4 月份
  • 秋季校园招聘:9、10 月份

对于大公司来说,无论是春招还是秋招都分为三个批次:1、提前批 2、正式批 3、补招批

提前批一般比正式批提前一两个月,一般来说,只要简历足够优秀,提前批可以直接跳过笔试进入面试环节,而且提前批会占去很多招聘名额,所以对于已经准备充足的同学,我是非常建议参加提前批面试的。

「早就是优势」。我大三那会就参加了腾讯的春招提前批面试,并顺利拿到 offer。所以在别人正式批还没开始面试的时候,我已经开始在腾讯实习了,也就意味着我在腾讯实习的时间足足比别人多了两个月,这也为我后来拿到 special offer 打下了基础。

但参加提前批面试的前提是你真的准备好了,而不是说你只是想去试试。因为每个公司都会有面试记录,提前批表现不好的话很可能会影响后续批次的面试,甚至有些公司如果提前批面试挂了的话,是不允许参加正式批的,所以要谨慎。

Android 校招面试指南

02 招聘信息来源

对于互联网行业的公司来说,招聘的信息来源一般有三个

  • 各大公司的招聘官网以及官方公众号
  • 牛客网等招聘网站
  • 其他的招聘公众号

这里对于校招生来说,强烈建议平时多去牛客网逛一逛,基本上能包含各大公司的招聘贴子以及内推,而且现在很多大公司的笔试平台也会选用牛客网,所以提前熟悉一下对于我们是很有好处的。

03 内推

对于投递简历来说,我个人最建议的方式是通过内推。不同的公司对于内推的作用是不一样的,但一般来说内推由于有内部人员的背书,所以基本上能够避免简历被筛选掉。

另外最好找认识的师兄师姐进行内推,主要是能够帮我们在面试后查询面试的结果以及进度,而且在面试前也能给我们介绍公司的面试流程以及需要注意的地方,如果想去的公司实在没有认识的人,也可以上牛客网的内推贴,让发帖的人帮你内推,但在查询面试进度的积极性方面以及能起到的帮助作用就低不少了。

3、针对性进行准备

面试是双方相互了解的过程,对方不仅要了解你的硬实力、软实力,还需要了解你对这份工作的兴趣和态度。所以提前了解面试的公司和面试官,会在面试环节中提升面试官对我们的印象分。

  • 了解公司的主营业务,深度体验相关的软件

  • 针对对方的产品的优点提一些问题

    • 这个是怎么做的?(体现自己的兴趣)
    • 这个是不是这么做的?(体现自己的思考)

二、有计划的系统复习

前面的部分讲到了春招以及秋招的详细时间节点,这里再讲下我自己之前的规划,为了准备校招,我提前了半年开始准备复习,复习阶段主要分为三部分:

  • 学习「自己知道自己不会」的知识
  • 全方位的学习,构建自己的「知识体系」
  • 学习「自己不知道自己不会」的知识

1、学习「自己知道自己不会」的知识

其实在平时的学习过程中,总有一些自己想学但是因为学习压力或者其他原因,然后自己打算放在以后再学的东西,也就是所谓「自己知道自己不会」的知识。

例如:

  • 比较常用的一些框架,比如客户端的网络请求、图片加载框架
  • 常用的一些类和集合的源码,比如 ArrayList、LinkedList、HashMap(面试必问)
  • 觉得自己无法清晰表达出来的概念,如「内存泄露」、「Java 并发」

这个阶段是一个对自己当前知识体系查漏补缺的一个阶段,你要做的,就是把自己不会的东西完整的列出来,然后逐个击破。

这个阶段最好通过博客的形式,将自己学到的东西「用自己的语言」表达出来。如果你能用自己的理解清晰、完整地说出来,甚至能让别人听懂你讲的东西,那基本就没问题了。

但如果自己脑海里没法形成一个清晰的概念的话,只能证明你对这个知识点还不够理解。

而且现在很多公司都将「写博客」作为一个加分点,一份简历其实并不能反映多少东西,但如果你有一个长期维护的博客的话,面试官可以通过你的博客更加清楚地了解你,而且坚持本身就是一件不容易的事情,面试官对于能够坚持写博客的人也会更加有好感。

2、全方位学习,构建自己的「知识体系」

很多人在平时学习和日常开发过程中,学了非常多的东西,但很少有人会去系统地复习,从而构建自己的知识体系,导致自己学到的很多知识点没办法更好的产生联系,而且可能会导致学了某个知识点没过多久就忘了。

那如何构建我们的「知识体系」呢?

可以请教所在领域里面,自己能链接到的最权威的人士,让他给我们介绍所在领域必学的方方面面,以及对应的重要性和优先级,另外可以参考极客时间上的路线图以及一些口碑比较好的付费课程的课程表信息。

我就拿 Android 来作为例子,Android 里面所谓的「知识体系」,我认为主要包含这几个部分:

  • Java 和 Anroid 基础
  • Android 性能优化
  • Android 前沿技术
  • 计算机网络
  • 操作系统
  • 设计模式
  • 数据结构和算法

也就是说我们需要将这几个部分逐步击破,慢慢完善我们的知识体系。然后可以通过某个练手项目,把这个阶段学习到的东西,都运用到这个项目中。这个阶段是最花时间和精力的,但是坚持下来会让我们的基础变得更加扎实,而且能最大限度地构建我们的知识体系。

在这里我推荐一份非常好的资料:Android 校招面试指南

3、学习「自己不知道自己不会」的知识

这个标题可能会让你们有点纳闷,连自己都不知道自己不会的知识怎么学?这时候面试题的作用就出来了,「面向面试题编程」其实是一个查漏补缺、增强自己编程基础的非常好的方式。在做面试题的时候,你会遇到很多奇奇怪怪的问题,很多都是你「之前没有接触过」或者「有接触过却没有往那方面想」的问题。

刚开始遇到这些面试题确实很让人很不舒服,但是这些面试题也确实能够最大限度地提升我们对知识之间联系的理解以及引发我们对一些具体使用场景的思考。当然更重要的是我们可以通过刷往年各大互联网公司的面试题,让我们对于公司面试题有一个大致的认识,而且也能提前了解到面试官面试时候的一些套路和做法。

在这里推荐一些我看过的,觉得很不错的面试资料:

三、面试的一些建议和套路

首先,要强调一点,想拿到自己满意的 offer,最重要的就是提升自己的编程能力,特别是计算机方面的基础,这是每轮技术面试都必问的。没有足够的实力,再高的面试技巧也是没用的。

不过,在面试中确实也有很多需要注意的地方,甚至存在一些通用的经验和套路。掌握一些必要的面试技巧才能在面试官面前最大程度的展示我们自己真正的水平,甚至超常发挥,从而拿到满意的 offer。

1、寻找自己的兴趣点,并将其培养成自己的瑞士军刀

对于自己从事的行业,其实每个人都有着自己跟别人不一样的兴趣点,例如我自己对「Android 网络」、「图片加载」这两方面的知识就有很大的兴趣。

如果想要在 Android 面试中脱颖而出,拿到自己满意的 offer,拥有某个「能超过绝大部分人」的技能是非常必要的,也就是所谓的你最出彩的地方。

在这次阿里技术二面的时候,面试官一上来就说:“上一轮的面试官已经问了很多关于项目的东西了,你给我讲一下你觉得自己在 Android 中学的最好的东西吧。

”当时听到这个问题我心中一阵窃喜,因为之前花了很多的时间和精力在学习「Android 网络」和「图片加载」这两方面,对于这两方面我还是很有把握的,最终也顺利通过了阿里的技术面试。

上面举的例子就是为了说明拥有某些技术特长的重要性,在面试中很多时候面试官关心的是你会什么,而不是纠结你不会什么。

而且技术的深度也比广度要重要的多,如果你在某方面研究的比较深,很有自己的心得和体会,甚至连面试官在这方面都没办法问倒你的话,通过这次面试的成功率就会大大增加。

2、将所有的知识点写成对应的逐字稿

在日常的开发和学习过程中,相信很多人会觉得我们学过的东西自己都已经明白了,但是真正在面试官面前,被面试官问到问题的时候却不知道怎么「完整」、「清晰」地表达出来。

针对这个问题,我自己的解决方法是将我们在面试中可能会遇到的所有的知识点「全部」都写成 对应的逐字稿。

这里的逐字稿有三个要点:

  • 必须是自己的总结和体会
  • 结合你自己的开发和项目经历
  • 能够流畅的朗读出来

写逐字稿的目的是让我们在面试官面前能够「完整」、「清晰」地表达出我们对知识的把握和理解,所以必须用「自己的语言」将自己的总结和体会写出来,只有这样我们才能记得更牢。

在写完逐字稿之后,我们可以试着朗读一下,看看能不能流畅的朗读出来,如果中间有一些拗口或别扭的句子,就把它逐渐改进。

3、遇到不懂的问题直接回答不懂,但最好能将面试官的思路往我们会的东西带

在面试的时候,切忌不懂装懂。

如果我们面试的是技术岗位,有几斤几两,面试官问几个问题就知道 了,如果面试官问到的某个知识点,你只是有点印象或者没多少了解的话,直接回答这个知识不是很熟就行了。不然被面试官针对这个知识点追加几个问题的话,分分钟打你脸。

当然,在说对这个知识不是很熟之后,可以试着将面试官的面试思路往我们会的东西带,例如我在阿里二面的时候,面试官问我有没有用过 B 树,因为我对 B 树不是很熟,所以我当时是这么讲的:“对于 B 树不是很熟悉,但之前在看 HashMap 源码的时候,有研究过红黑树,对红黑树比较熟。” 然后成功地将面试官的问题转向了我熟悉的红黑树和 HashMap 的源码上面。

4、有意识地锻炼自己的沟通和表达能力

如果想拿到满意的 offer,除了自身的技术实力过硬之外,拥有良好的沟通和表达能力也是非常重要的。

即使实力再强,你不能很好的表达出来的话,也是白费功夫。沟通和表达能力需要长时间的「刻意练习」,并没有什么捷径。

其实在大一的时候,我的沟通和表达能力也是相当差的,但后来自己开始慢慢明白了这项能力的重要性,所以在很多场合都会「刻意练习」这项技能。

而且自己后来当上了学校团队的负责人,有很多场合都需要我上台演讲或者进行一些内部的分享,再加上自己后来很喜欢玩「狼人杀」,表达能力便在这两年间有了很大的提升。

5、每一次面试完都要进行复盘,详细记录面试问到的题目

在每一轮面试结束之后,不要急着放松或者休息,先拿出备忘录将面试中面试官问到的问题「全部」都详细地记录下来。而且找个安静的地方慢慢的回忆自己在面试过程中有没有哪些环节表现得不是很好或者是需要改进的。

每一次的面试都是一个很宝贵的经验和财富,在面试过后都要对面试进行复盘,找出我们在面试中表现的不够好的地方,然后针对性地进行改进,以及收集在面试过程中我们答不出来的面试题,有针对的进行复习。

指不定下一轮面试问的就是你上一轮面试不会的问题,而且这个可能性是相当大的,因为面试官之间也是会进行交流的,你的面试表现也会传到下个面试官的手中。

总结

想要拿到满意的 offer,「坚持」是最重要的,抛开了努力和坚持,其他的一切方法论都毫无用处。

任何一个行业都是不容易的,唯有持续的「有效」努力,才能走得更远。 以上便是我对于校招面试的一些经验和体会,希望能对大家有所帮助。