2020年初,字节跳动后端开发面经(已通过)为什么我只有两面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020年初,字节跳动后端开发面经(已通过)为什么我只有两面?相关的知识,希望对你有一定的参考价值。
面试者信息:本科某末流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个问题
最后想问下大家为啥面经看到的都是三面,怎么我只有两面??? 后端开发开发者平台这个岗位是干啥的?
特别声明:本文素材来源于网络,仅作为分享学习之用,如有侵权,请联系删除!
以上是关于2020年初,字节跳动后端开发面经(已通过)为什么我只有两面?的主要内容,如果未能解决你的问题,请参考以下文章