面谈时间2020-8-23,

面试时间下午5:30~6:20,

牛客网视频面谈

投了Python数据挖掘,然后上来就让面Java后端。

猎头说不用考leetcode题,但是其实是需要考的。

我跟面试官说猎头说不用考这种东西啊,面试官说:那看来你的那个猎头业务水平不行啊。

问了猎头,为什么让面Java后端,我投的数据挖掘啊。

猎头的回答是猜测可能是觉得你数据挖掘审核不通过,所以给你转Java后端了。

我满脸懵逼,kaggle银牌和各种python前后端全栈项目还不够么。

80%都是Python的简历,居然简历被审核通过去面Java后端了。

最后猎头和字节的HR全部联系不上了。

既然你们都联系不上了那我就写出来吧。

字节跳动面试分为四个部分:

①面试官自我介绍和岗位介绍,

②我的自我介绍,

③面试官根据你履历提问

④基本的算法题(leetcode easy级别)

--------------------------------------------------------------------------------------------------------------

面试官自我介绍和岗位介绍

这个面试官大概提供了这么个信息,

字节跳动(北京)负责优化大数据底层。

字节跳动(上海)负责上层应用。

打算搞一个类似于阿里的dataworks的数据中台,阿里的有点跟风databricks。

所以我就提了的钉钉里面的zeppelin,面试官对这个好像没啥反应。

扯白了,字节跳动现在也想跟风databricks,让用户在线提交大数据任务和交互监控。

另外,面试官都是临时看你的简历,

比如我写了Hadoop(非HA),他会问你hadoop的HA

我写了数据仓库开发还没做完,他会问你数仓怎么设计的。

--------------------------------------------------------------------------------------------------------------

自我介绍

把自己的项目说一遍。

--------------------------------------------------------------------------------------------------------------

面试官提问

面试官基本挑自己擅长的问,你简历里他不懂的,即使你主动说他也会直接承认不懂然后强行跳过去。

例如我说我介绍下做的机器学习项目吧(底层的,非调包),他说他不懂机器学习算法,然后就强行问下一个了。

所以说,把简历交到懂你的人手上真的很重要,否则就是流水化检查你这个螺丝钉了。

字节跳动(上海)的大数据开发,还是偏Java的,

你不要指望用你手里的Scala能派上用场,可以说国内的大数据开发依然对scala不待见。

--------------------------------------------------------大概问了下面这些-----------------------------------------------------------------------------------

Spark提交方式和原理(我直接说不关注,我就是应用)

spark on yarn作用和原理(我直接说yarn就是管理spark需要的资源的,资源不够的时候,去yarn的资源界面看下queue里面的资源就好了,yarn原理不知道,我不关注这些)

Spark的yarn client和yarn cluster的区别。(我说我不记得了。我心想要是记住那么多东西,我还写博客干嘛?不就是因为记不住么?连Spark数据倾斜处理都没问,我也是觉得很奇怪.)

HA是什么(zookeeper和hbase的HA的配置我讲了下,以及HA的工作效果)然后他问为什么zookeeper原理上讲有这个效果?

我回答说不知道,不看这些东西,对工作没有帮助。)

进程线程协程区别(我回答说,core负责进程,进程下面多个线程,线程轮流跑,高并发必须用协程,网上的高并发资料写法有误,网上的高并发一般指的是并行和并发,并行技术通过多个core实现,并发技术通过IO异步实现)

问了mysql的B+树,以及mysql优化等(直接答explain sql,然后没有走主索引和二级索引的查资料来优化sql)。

Java线程安全(我回答说没有关注这个,读写方面的安全问题,我只关注了sql的原子性,写入失败会回滚,我当时心想Python里面这种东西new_loop.call_soon_threadsafe不都是封装好的么?你问这些直接调用的东西想干嘛)

3A 认证(常说的三次握手,其实就是Oauth2,我直接说了Django有这个插件,直接调用就好了,讲人话就是你是怎么做登录注册验证之类的东西的)

算法题

一开始我推脱说我只会用java写spark和flink,其他都没准备过。

然后他出题了:

1->2->2->3->3->4->5然后要求输出1->4->5

我说只会用python dict或者hashmap来处理,然后他说hashmap这个会打乱顺序。

hashmap在面试前我确实没有按顺序输出过,

然后我要求更换语言,他说可以。

我说我印象里dict是可以按顺序输出的,这个代码肯定可以在网上找到,他回想了一下说好像是可以。

然后问这个原理是什么?我说不知道,能出结果就行。

最后还是要求从链表处理,我说工作中不用链表,不记得了,只记得head和tail,tail中存下一个节点的head。

这个部分,如果你说没准备过这类东西,面试官会提议要求和你一起分析,这样可以把面试时间撑完。