面试者信息:

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

面试相关信息:

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

第一面:
1.算法:快排

大概5分钟

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

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

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

大概说了一下,没让我写

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个问题

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

特别声明:本文素材来源于网络,仅作为分享学习之用,如有侵权,请联系删除!