资讯专栏INFORMATION COLUMN

如何准备校招技术面试

MkkHou / 1579人阅读

摘要:网易跨境电商考拉海购在线笔试现场技术面面。如何看待校招面试招聘,对公司而言,是寻找劳动力对员工而言,是寻找未来的同事。

如何准备校招技术面试

标签 : 面试

[TOC]

2017 年互联网校招已近尾声,作为一个非 CS 专业的应届生,零 ACM 经验、零期刊论文发表,我通过自己的努力和准备,从找实习到校招一路运气不错,面试全部通过,谨以此文记录我的校招感悟。

写在前面

写作动机

记录自己的经历、反思与总结

在互联网上看到了很多前人的经验帖,作为回馈,也分享自己的经验

赚一点打赏(可扫描我个人网站里的二维码 http://brianway.github.io/about/)

你可以从这篇文章获取哪些信息

如何看待校招面试

后台研发 为例,校招技术面试的考核范围和难度

如何提升自己的技术内功(长期)

如何有针对性地做面试准备(短期)

面试交谈中的一些技巧

一线互联网公司的校招面试流程

这篇文章不能带给你什么

本文并不是速成宝典/突击手册

本文不会罗列面试原题和题解

我的面试经历

春招找实习,投了三家(阿里,腾讯,美团),全部拿到实习 Offer,去了阿里。

阿里:菜鸟网络;3 面技术电面 + 1 面 HR 视频面。二面布置了一个工程小作业,做了两天

腾讯:投的后台开发(事业群无意向),被转到 SNG 运营开发;简历评级 S,2 面电话面试 + 线路现场面试 2 面技术 + 1 面 HR

美团:美团餐饮平台;2 面电话面试 + HR 直接通知 offer。历时一周多,最效率

秋招为了稳妥地转正,拿一个好的评级,在专心准备转正面试,错过了提前批,正式批投了五家,面了三家(阿里,腾讯,网易),基本都是 special offer:

阿里:菜鸟网络;成功转正,评级不错

腾讯:投的微信 Web 开发,被调到 IEG 后台开发(不知道为什么多了一个阿里实习,我的简历评级反而从 S 变成了 A+);在线笔试 + 现场 2 技术面 + 1 HR面。HR 面时我期望薪资提的 sp 的价格,offer 报批中。

网易:跨境电商(考拉海购);在线笔试 + 现场 2 技术面 + 1 HR 面。HR 说技术面评价不错,问题不大。结合身边同学,我应该是 sp。网易面试体验最好,面试官(尤其一面那位)很专业,很佩服

头条(放弃面试):来校园宣讲,免笔试直接面试,没去

网易游戏(放弃面试):计费应用系统开发;电话通知笔试过了,手里有 3 个 offer 了,就主动告知不面了。

如何看待校招面试

招聘,对公司而言,是寻找劳动力;对员工而言,是寻找未来的同事。所以考核的东西肯定有如下几点:

技术能力:招你进来是干活的,公司不是慈善机构,不养闲人,所以你需要 证明你能胜任这项工作

学习能力/潜力:要能干活的走社招就行了,应届的优势就是潜力,你得 向公司证明值得培养你

软技能:招你进来是和其他人共事的,所以为人处事、沟通能力、是否合群、三观等等, 你的“调性”要和公司/组里的吻合

所以很多人挂的原因就很明显了:技术能力不佳,挂;看不到学习的悟性,只会已有技能,挂;聊天思路不清晰,沟通障碍,挂…………

当然,招聘本来就是一个双向选择的过程,公司在选择你的同时,你也在选择公司,比如工作要拼还是要 balance,这种事见仁见智。

技术面试考核的技术范围

虽然面试考核的东西很多,但技术面试最主要的还是考核技术能力,记得学长告诉过我:“技术基础和项目经历,至少得有一个拿得出手”,所以下面谈谈所谓的“技术基础”。

我投的所有岗位都是 Java 研发,所以就以 Java 研发为例,以文字的形式写出大致的知识图谱/思维导图。很多我就只点到为止,不可能面面俱到。

算法和数据结构基础

数据结构:数组,链表,哈希表,堆,队列,栈,二叉树,B树/B+树,红黑树,图(研发问图不多)

常见的排序算法(冒泡,插入,快排,堆排,归并排序...)

简单的动态规划问题(背包,上楼梯)

各种时间空间复杂度分析

Java 基础

最基本的语言基础:语法,关键字含义,面向对象....

集合类(ArrayList, HashMap, ConcurrentHashmap...等等)

多线程(锁,CAS,线程池,concurrent 包下的类)

语言特性:反射,动态代理,泛型,Java 8 新特性

IO (装饰器模式,NIO)

JVM:内存模型,垃圾回收,类加载机制

Java Web

Tomcat,Servlet,JSP,Cookie/Session 等基本概念

框架使用和原理:Spring(AOP,IoC),MyBatis 等

数据库(主要是 MySQL)

基本 SQL 语句,索引优化

存储引擎(InnoDB,MyISAM),索引原理

事务 ACID,隔离级别

分库分表,主从复制,读写分离

计算机网络

OSI 7 层模型和 TCP 4 层模型

传输层:TCP/IP 相关知识,和 UDP 比较

HTTP 协议:报文结构,POST/GET 方法

网络编程 (socket, NIO, select 等)

操作系统

基本 Linux 的操作指令

进程/线程比较,进程间通信方式,P/V 操作

磁盘调度,虚拟内存

死锁,中断

1.这么多东西,从哪学起呢?

我自己的学习路线规划:技能的主线是 Java 语言基础 -> Spring 框架开发业务 -> 分布式系统解决高并发,基础方面 算法,网络协议,操作系统 带着学

2.学到什么程度呢?

概念性的程度:了解是啥,能够口述含义

使用的程度:可以熟练使用,比如调用 API,写 SQL 查询

原理的程度:能够讲清楚底层实现

提出见解的程度:从任意技术可以引申出相关技术,并能够分析联系和区别,提出自己的见解和体会

以上四种程度逐层加深,当然越深越好,通常前两种程度只能称之为“了解”;而写上简历迎接考核的,至少需要掌握到「原理」的程度

比如,Java 你至少得看过常用类的 JDK 源码;数据库只会增删改查肯定不够,起码得把底层索引结构讲清楚;常见算法起码能讲清楚关键步骤,分析时间空间复杂度,并且 bug free 地写出来。

技术储备是一切的基础,如果基础都不会,那后面的简历撰写,临场引导面试官等技巧根本无从下手,只有被虐的份

如何提升自己的技术内功

“冰冻三尺非一日之寒”,功夫在平时,与其背面经寄希望于碰原题,不如扎实学习,以不变应万变。

可以通过 看书+记笔记 的形式来学习,书上的代码可以对着敲一敲,学习笔记和代码可以发到 GitHub 上,用来展示自己的学习热情。

下面是我这一年多来看过的书,每一本我读之前都做了充分的调研和筛选,豆瓣评分一般都在 7~9 分:

《算法》(第四版)图以前章节

《剑指 Offer》

《Java 编程思想》

《Java多线程编程核心技术》(高洪岩 著)

《Java 并发编程实战》

《深入理解 Java 虚拟机》

《Java 8 实战》

《鸟哥的 Linux 私房菜》

《MySQL 必知必会》

《Maven 实战》

《图解 HTTP》

《敏捷软件开发》

《架构探险-从零开始写 Java Web 框架》

《Spring 3.x 企业应用开发实战》

《Head First 设计模式》

《大型网站技术架构》(李智慧 著)

《大型网站系统与 Java 中间件实践》

少看了一本《深入理解计算机系统》,所以被问到系统相关问题就很虚。

附上买书的截图

我整理了一些学习笔记和源码:

Java 语言基础的学习笔记可以参考我的 GitHub 仓库:java-learning

算法主要就是刷普林斯顿的算法公开课(偏重数据结构)和牛客网的课程《算法面试精品课》,我整理的博客和每一题成功提交的源码:algorithms-learning。后来才发现,70% 以上都和《剑指Offer》重复。

框架主要就是看视频,整理的学习笔记:springmvc+mybatis学习笔记(汇总)

如何有针对性地做面试准备

首先 最重要的就是写简历,找工作就像相亲,简历就是颜值,在这个看脸的社会,只有长得过关,别人才愿意深入发掘你。从我面试的感受来说,通过与否,简历可以占到 50% 以上。

建议尽早的开始准备简历,因为写简历时才会发现自己的简历没什么东西可写,才会有一种危机感。如果等到校招才开始写,就晚了。

怎么写一个好的简历网上很多帖子,就不赘述了,这里简单说几点:

亮点:名校本硕,专业排名,大赛获奖,名企实习。(如果一个没有只能自求多福)

技能:这些可能是面试官的提问点,不熟别写

项目:技术栈,难点,贡献/产出

事实:一万句“我学习能力很强”不如一句“我专业排名第一”,一万句“我爱打游戏”不如一句“我王者农药打了 1000 多盘,每天投入 4 小时以上”

项目经历的提炼可以从以下几个方面着手准备,这些问题都可以事先想好,多口述演练,以免临场紧张出错

基本问题

项目简介

项目详解

项目用到的技术

开放问题

遇到的困难及解决

项目的优缺点及改进

收获

没有项目经历可以自己找找开源的项目做,或者找一些自己感兴趣的方向做一些玩具项目,世上无难事,只怕有心人。

面试技巧

面试本质是信息沟通,是你向面试官展示你能胜任这个岗位,而不是一问一答。你应该尽量主导面试,引导面试官,而不是被动答题。即便同一个众人皆知的问题,也不应止步于答出来即可,要争取尽量回答的和别人不一样,展现出自己独到的研究和体会。

所以很多人疑惑:为什么我每一问都答上来了,为啥还挂了?多半就是自我感觉良好,其实答的不咋样,或者就是被面试官牵着鼻子走,给人一种是在背面经的感觉。其实很多问题没有标准答案,面试官看的是你解决问题的思路,思考问题的方式,而不是这个问题答案是什么

我从自己被问过的问题和反思中简单说几点:

1.不止步于问题,多展示自己会的

比如最经典一个问题:输入一个网址到看到页面,经历了哪些过程。如果只是回答 DNS,OSI 的几层协议,那格局未免太小,同时会把面试官引导往网络协议提问,接踵而至的可能就是 TCP/IP(三次握手,TIME_WAIT,滑动窗口),HTTP(keep-alive,HTTPS)等一系列协议细节,就把自己的展示机会限制在很小的范围了。

而这个问题其实可以从网站架构的层面先宏观描述,如 DNS,负载均衡,静态页面/动态页面,数据库访问,缓存,甚至前端的浏览器渲染等等,这样你可以聊得东西就很多,同时证明你有实际的项目经验,知道业界是如何做的,然后再回头把网络层面的东西简单提一提。

再比如被问到有哪些 hash 方法?因为一般都是问哈希冲突解决方法,很多人会说开放地址法,链表法等等。至于 hash 方法,真的有点懵逼,凭下意识说了一个取模(取余数),答到这肯定不够,于是我把 Java 几个基本类型的包装类 Integer, Boolean, String 的 hashcode 方法的实现说了一遍,一方面作为例子填充回答,另一方面,表示我研究过 JDK 源码

2.结合例子,不要背书

譬如,被问到 AOP,IoC 这些概念时,不要官方的解释背一遍,最好结合自己的使用经验,把使用场景和感受到的好处说一下,会比较生动。

3.从更高的层面去总结和阐释问题

之前被问到“倒排索引”的问题时,我只是举了个例子把这个概念讲清楚了,后来觉得并不是太好,只是停留在解释的层面,如果能首先提纲挈领的来一句“一般的索引,是文档到单词的映射;而倒排索引,是单词到文档的映射”,整个回答的高度就不一样了。

再比如“二叉树搜索和哈希查找的区别”,如果能答出搜索二叉树是基于比较的排序,所以时间复杂度为 O(log n),哈希查找是一个函数映射,所以能做到 O(1),说明你不是背面经的。

4.不会的先把丑话说在前面

面试中难免会遇到不会的,这时千万不要不懂装懂,如果觉得有想法、能说一点,可以先坦诚承认自己不会,但愿意尝试回答一下,这样即使说错了,也不会被怼,因为你已经把场子捡开了。

比如当问到“JVM 如何标记要回收的内存”,我其实记不得了,就说不清楚,但标记无非就那么几种方法,所以提了两种:要么在每块内存留一点标识位(比如一个字节)来标识,要么另外用一个调度表之类的存储结构来统一记录和管理。这样还可以和面试官进一步交流学习。

5.复盘反思

每一场面完都要反思总结,看看哪里答得不好。如果是知识性的缺陷,就赶快补起来;知道答案但答得不好的,就重新组织措辞和表达方式;即使是回答上来的,也可以反思一下如何答得更好。

当然,所有技巧的前提,是认真踏实的基础准备

一线互联网公司的校招面试流程

笔试

我觉得很多公司的笔试是过场,主要还是根据简历刷人。因为我笔试从来没全部 AC 过,但都通过笔试了,认识的一些朋友三题 AC,却没过笔试。

电话面试

有的大公司会全程电话面试(如阿里),有的是先电话面试筛选简历,然后通知现场面(如网易)。电话面试的好处就是不用手写代码,缺点就是语言很多时候传递的信息是不够的,很多面部反馈、手势和图例都无法展示。

现场面试

大多数公司还是会安排现场面试,要么安排你去公司面试(大公司会报销路费),要么安排公司员工到你学校来,通常就是 2 面技术面+1 面 HR 面 。每个公司风格不同,比如腾讯一般是一天一面,战线有三天,而网易是一天面完。

另外,其实校招的战线已经从每年的 9 月份提前到了 3 月份,尤其是阿里,实习生留用会占很大一个比例。所以希望认清紧迫的形式,越早准备越好。3 月能不能找到一个好的实习,对找工作影响还是挺大的,毕竟,如果没实习经历,那面试只能全程怼基础了,而基础是个无底洞。而且,手里是否有一个保底的转正 offer,你面试的心态是不一样的。

一些建议

简历越早投越好:就像《中国好声音》导师转椅子一样,刚开始觉得不错的就啪啪啪四转,后来坑不够了,越来越纠结

只投一种岗位:我全程只投了“Java 研发岗/服务器端开发”,这样可以统一准备,避免战线过长

分梯度精投几个公司:不要海投,这样会疲于奔命,劳民伤财还没有时间准备。可以根据自己的能力,投几个不同档次的公司(如:高于自己水平的,希望比较大的,很有把握的,这几档),争取拿到保底的,冲刺心仪的,而不是看到一个公司招人就去面试。

最后祝各位找工作顺利,这篇文章主要是写给学弟学妹的,希望尽早重视起来,开始准备。如果读完觉得有收获的话,欢迎给我打赏(http://brianway.github.io/about/)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67642.html

相关文章

  • 2018.11.19秋招末第二波前端实习/校招小结

    摘要:背景个人背景就读于东北某普通二本院校计算机软件工程专业,现大四,北京实习前端方向,自学,技术栈时间背景大概是在月日准备好简历开始投递秋招差不多已经结束招聘岗位不多,投递对象为大一些的互联网公司事件背景第一个入职的是好未来的前端实习岗,待遇工 背景 个人背景 就读于东北某普通二本院校计算机软件工程专业,现大四,北京实习 前端方向,自学,vue技术栈 时间背景 大概是在11月9日准备...

    suxier 评论0 收藏0
  • 2018.11.19秋招末第二波前端实习/校招小结

    摘要:背景个人背景就读于东北某普通二本院校计算机软件工程专业,现大四,北京实习前端方向,自学,技术栈时间背景大概是在月日准备好简历开始投递秋招差不多已经结束招聘岗位不多,投递对象为大一些的互联网公司事件背景第一个入职的是好未来的前端实习岗,待遇工 背景 个人背景 就读于东北某普通二本院校计算机软件工程专业,现大四,北京实习 前端方向,自学,vue技术栈 时间背景 大概是在11月9日准备...

    canger 评论0 收藏0
  • "双非"应届生校招如何获得大厂青睐?(内附前端大厂面经+技术岗超全求职攻略)

    摘要:拿到秋招的同学,如确定入职需与用人单位签署三方协议,以保证双方的利益不受损失。当然每个岗位所要求的侧重点不同,但却百变不离其宗。方法论要想达成某个目标都有其特定的方法论,学习技术也不例外,掌握适当的学习方法才能事半功倍。 写在前面的话 笔者从17年的2月份开始准备春招,其中遇到不少坑,也意识到自己走过的弯路。故写了这篇文章总结一番,本文适合主动学习的,对自己要学的课程不明确的,对面试有...

    jeffrey_up 评论0 收藏0
  • "双非"应届生校招如何获得大厂青睐?(内附前端大厂面经+技术岗超全求职攻略)

    摘要:拿到秋招的同学,如确定入职需与用人单位签署三方协议,以保证双方的利益不受损失。当然每个岗位所要求的侧重点不同,但却百变不离其宗。方法论要想达成某个目标都有其特定的方法论,学习技术也不例外,掌握适当的学习方法才能事半功倍。 写在前面的话 笔者从17年的2月份开始准备春招,其中遇到不少坑,也意识到自己走过的弯路。故写了这篇文章总结一番,本文适合主动学习的,对自己要学的课程不明确的,对面试有...

    lindroid 评论0 收藏0
  • 一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结

    摘要:作者重庆森林链接来源牛客网整个三月份通过牛客网和网友分享的经验学到了很多东西,现在反馈一下我的面试经历,希望对同学们有帮助。个人情况大三本方向渣硕,经过实验室学长内推,于三月底完成面试。校招是实力和运气的结合,缺一不可。 欢迎关注我的微信公众号:Java面试通关手册(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):showImg(h...

    mozillazg 评论0 收藏0

发表评论

0条评论

MkkHou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<