2020年初,字节跳动后端开发面经(已经过)为何我只有两面?

面试者信息:java

  本科某末流985,硕士某C9,都是软件工程,学的很通常,没有实习经历,没有项目经历(只有在学校作的课程设计大项目,也用到了一些分布式组件和框架),不过自我感受编码能力还行。

面试相关信息:mysql

2月17投简历,2月20约面试,约在2月24一面;2月27打电话约二面,约在3月3号。3月4号hr打电话聊了一些状况。而后就发了offer。(面试过程极慢,发offer还蛮快的)

  第一面:

1.算法:快排linux

大概5分钟面试

2.算法:二叉树的前序遍历非递归redis

开始没仔细看题目,写了个递归的(1分钟),而后面试官尴尬一笑,我赶忙改为非递归了算法

3.算法:二叉树的后序遍历非递归spring

大概说了一下,没让我写sql

4.算法:求数组的最长连续递增数列,如:4, 200, 3, 1, 100, 2。结果是1 2 3 4,也就是说顺序能够打乱。编程

这道题以前面试官问我学没学过动态规划,我说刷题的时候本身学过,怕他出的太难,我说只会作简单的,而后他出了这题。后端

个人思路是先排序,而后从前日后,if(array[i]-array[i-1]==1) then dp[i]=dp[i-1]+1; else dp[i]=1。说实话,我感受这题拍完序就跟动态规划没什么关系了......

  他问我复杂度,我说nlogn吧,要排个序。他说过高了,让我再像个办法。我说,找个很大的数组,把全部的数字都以数值为下标放在这个数组上,而后从前日后遍历,找到最长连续的,如这题a[4]=1,a[200]=1,a[3]=1,a[1]=1......不过这样空间复杂度很大。面试官给的思路是用一个hashtable,hash到4的时候,看看hash(3)和hash(5)是否存在,相似这样的思路

5.socket编程和netty

不会

6.http三次握手,若是第三次客户端发出的信息服务器没收到怎么办?

7.操做系统有哪些调度方式?

8.若是让你实现按照优先级的抢占式调度,你会如何实现?有0-15个优先级,0是最高的优先级

我回答是,把全部任务放在一个小根堆里,堆顶的天然就是目前的任务队列优先级最高的任务,拿出来便可。面试官说能够用十六个任务队列,每次从优先级最高的任务队列头取出便可

9.java的hashmap如何实现的?

我首先回答了一下hash冲突是什么,有哪些解决办法(拉链、线性探测、平方探测、再hash),而后说java是数组+下面挂着的链表实现的,顺口说了一句:实际中不少地方都是拉链法,好比redis的hashtable也是这么作的。接下来开始了长达十几分钟的redis环节

10.redis基本数据类型以及如何实现的

11.redis的三种集群

我讲的不少很长,如何配置,遇到的坑,还有bind_ip是什么意思(监听网卡,而不是外部机器访问的ip),cluster模式的slot,在线迁移数据reshard,去中心化设计的缘由

12.若是让你实现redis的负载均衡,你如何实现

hash、一致性hash、加一个代理服务器

13.redis的通讯协议是什么?

gossip

14.说几个经常使用的linux命令

15.mysql索引结构?为何用B树?

16.智力题,海盗分金币。

一开始不会,后来他提示我,从后往前想,若是只剩两我的了会怎么样,若是只剩三个?......最后答出来了


  第二面:

1.算法:接雨水(leetcode 42)

大概15分钟,跑了5个用例。而后面试官说:嗯,咱们再来一道难一点的...

2.算法:有一个IP地址库,假设有几十万条ip,如何判断某个ip地址是否在这个库中?

开始我还觉得这是设计题,结果是算法。蒙了...彻底不知道什么意思,和面试官扯了十分钟仍是不知道什么意思。中间我还说了,要不换道题吧,我实在是不知道怎么作,但面试官还在引导我,我仍是不会,没办法,最后简化了不少,作出来了,思路是二分查找的变体,不过把数组换成了存储对象的有序List。

3.https如何实现

对称加密+非对称加密

4.用户态和内核态

5.类加载过程

6.mybatis优缺点

优势是灵活好用,缺点不知道

7.重载和重写区别

8.get和post区别

我只说到了一个在url可见,另外一个不可见,经常使用于发送大量数据。过后查了一下,好像远不止这么简单

9.你还有什么擅长的地方?

不知道...感受都差很少(脑海略过一大堆,spring家族、mysql、不敢说擅长),redis?“一面面试官反映你redis还不错,我就不问了”

10.问问题,结束


  最大的感觉:这两个月大部份内容都白复习了......

  感受字节跳动很看重计算机基础学科的知识,以及算法。简历上的Spring家族、微服务、消息队列、设计模式、还有项目相关的,这些一句都没问我。甚至JAVA两面加起来都只问了3个问题

  最后想问下你们为啥面经看到的都是三面,怎么我只有两面??? 后端开发开发者平台这个岗位是干啥的?

特别声明:本文素材来源于网络,仅做为分享学习之用,若有侵权,请联系删除!
相关文章
相关标签/搜索