查看原文
其他

为什么你面试字节跳动没下文了?

张小方 高性能服务器开发 2022-04-27


本文是回答知乎提问:

字节跳动面试难吗,应该如何应对?

目前人在字节,万千字节面试官之一,其他岗位我不太清楚,开发岗位我可以详细聊一聊。

一、对面试官的要求

字节的面试虽然对面试者的要求很高,但对面试官的要求也不低,我们有一份很详细的规定,规定了面试官的面试时长、可以问的和不可以问的问题等诸多细节,尽量做到给面试者良好的面试体验。所以如果有同学来字节面试,一般不会遇到不靠谱的面试官。我以往一些工作经历中,曾遇到一些面试时漫不经心的、玩手机的、全场接电话的、鄙视求职者过往经验的、嫌弃面试者上家公司业务的、问求职者薪资和个人情感问题的面试官,这些问题你来字节面试都不会遇到。另外,字节的面试要求面试官详细地记录面试中提问的问题和面试者的回答,同时在征得面试者允许的情况下做一些面试录音,以方便后续面试官和 HR 部门对面试结果做参考和评判。面完之后,字节也会邀请面试者对面试体验做评价和反馈。所以,来字节面试,你不用担心在人的方面被坑。这大概也是这几年字节能招募到许多优秀的人才、快速发展壮大的原因之一。

二、对面试者的要求

一般技术面试至少有三轮(不包括 HR 面),当然前提是你得通过前面的一面和二面,春招和秋招在面试前会有笔试题。

无论是 BAT 还是字节这样的大公司,面试七分看实力和背景,三分看运气,运气方面包括你可能在某次面试的时候恰好遇到一个比较赏识你的面试官(下文会提到),那么面试就比较容易过。运气部分大多数人都抓不住,我们来说说可以抓得住的实力部分吧,实力部分包括技术实力和沟通(话术)实力。

三、4 位面试未通过的同学所犯的错误

我们先来看 4 位未通过面试的案例吧,希望给大家一点启发。前 3 位同学都是应届生,最近面的,学历都不错;第 4 位是一个工作七年以上的同志。

3.1 第 1 位同学

第 1 位是北京某大学的同学,这位同学在简历上写的是主要编程语言是 Java,并且在简历上贴了自己的 github 项目地址和博客地址。我面试前看他简历的时候,特地去看了他的博客和 github 代码,代码风格很不错,博客上的文章原创多,且流程图画的非常精致,这给我留下了非常好的印象,为这位同学点赞。

实际面试的时候,我问了一些 Java 方面常用的知识,如 HashMap 的数据结构/扩展因子/算法复杂度、线程的创建、== 和 equals 方法的区别、线程池的设计等等,最后让这位同学写了一道算法题。他也很快在 IDEA 中用 Java 写出来了,并且测试也没问题。于是,一面我就让他过了,并且面试给予不错的评价。

二面是我的同事面的,由于一面我没有问网络方面的问题,二面上来第一个问题是问了三次握手的问题,这位同学直接回答说“这个问题比较复杂,不太清楚”,我在旁边旁听,听到他说这话的时候,我就知道他这场面试已经走远了,面试肯定过不了。果不其然,我看二面的面试评价时,详细地记录了这个问题和他的回答。最终二面给到他的总体评价是:基本功不扎实,计算机网络掌握的差。

个人觉得这位同学就比较冤,正常对于像问三次握手这样的问题,认真准备一下,问题应该不大,无非就是话术问题,他说出的答案感觉出他对这些基本功的轻视,而这类基础问题恰恰是可以适当准备的。

3.2 第 2 位同学

第 2 位同学是合肥某学校的同学。这位同学前期学的是 Java,但是找了一份实习工作做的是 php,然后在简历写上自己熟悉 Java 和 php。

面试开始的时候,我先问了一些 Java 的基础问题,该同学基本上都没答好,接着我问了计算机网络、多线程、数据库、Redis 方面的问题,基本上也没答好。于是我就给了他几道算法题,让他自己选两道题目来做。

他说他用 Java 写一下,我们是线上面试。于是我看到他打开 VSCode 开始写 Java 代码,我就提醒他说,Java 开发一般不是用 IDEA 开发嘛,VSCode 方便吗?他说方便。大概过了15 分钟,他代码写完了,开始编译,但是有编译错误,我看他在那里捣鼓了一会儿仍然没解决编译错误,于是我就给了他一点提示。在他解决了编译错误以后,跑测试用例的时候,跑出来的结果总是不符合预期。于是我就问他,结果非预期有解决思路吗?他又捣鼓了一会儿,最终放弃了。

在这位同学做算法题期间,我又认真看了一遍这位同学的其他面试记录,发现这位同学笔试成绩不合格(分数偏低),后找人内推,参加了两个部门的面试,都没面过,后来又被内推到其他七八个部门,简历筛选均未通过。这次面试我们部门也是内推的。

面试结束了,这位同学自知面试无法通过,当我问他有什么问题想问我的时候,他说希望我告诉给他一些学习的建议。我总结了一下:

  1. 无论是学习还是找实习,在未学好的情况下,学习内容要做一些收拢

    例如这位同学,明明开始是学习 Java 的,找的实习却是 php,当我问及他为什么要找 Java 实习的时候,他说他因为一些事情耽误了找实习的最佳时机,后来 Java 实习找不到,勉强找了一份 php 实习。结果实习的内容仅仅是一些 CRUD 的工作,php 未学好,原来的 Java 也生疏了。但是简历上写的是熟悉 Java 和 php,我看他的之前面试记录,他曾在前面某一场面试时,被问及到 php 的一些问题,也未答好;在前面的某一场和这次的面试,被问及 Java 的基础问题也答不好。不能为了实习而实习,如果基本功未掌握好,不如踏踏实实留在学校夯实基本功。

  2. 不注重基础知识的学习

    该同学在算法数据结构、网络编程、多线程、数据库等方面,都未掌握好。

  3. 不善于总结和反思,动手能力差,且遇到问题无清晰的解决问题的思路

    我在面试的过程中,特地挑了几个在他之前面试被问到的问题,结果这位同学仍然答错或者不得要点;该同学在编写代码时,对编程工具不熟悉,缺乏基本的编译、调试能力,遇到不符合预期的输出结果,也无很好的解决思路。

  4. 学习知识不注重理解,喜欢机械式地记忆;网上看到的帖子,不加甄别地吸收

    我问了这位同学一些关于三次握手的问题,但是我稍微变通一下,问如果连接一个不存在的主机、或者连接一个存在的主机但目标端口号未开启侦听时的握手情形,该同学就不知道如何分析了。当问到 HTTP GET 和 POST 方法的区别时,该同学直接就搬出了一篇网络上有错误的文章中的内容,不假思索地说出 GET 请求底层只发一个包,POST 会发两个包的论断。当然,网上这篇文章误导了很多同学。

微信扫一扫付费阅读本文

可试读62%

微信扫一扫付费阅读本文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存