字节跳动-提前批-后端开发 凉经
一面
第一次有能够写面经的面试,哈哈哈,还是很开心的。
- 闲聊篇
本来应该在牛客网上视频面试的,但是面试官听不到我这边声音,面试官上线下线的几次,最后给我打电话面试了。
好像也没有让我做自我介绍?就是面试官在问我?名字?哪个学校?保研的?(考研)咋不保研?(我也想保研啊,成绩不够啊)保研率多少多少还没保研?(尴尬)
问我有有实习过?(没有)啥方向的?(我说实际上现在实验室是计算机视觉方向,不过我觉得我做不来,所以以后找工作还是想找Java开发方面的,然后说自己其实也没啥项目经历,简历上写的那个是某个课程设计,我只写了登录注册,其他的是其他同学写的)哈哈哈,遂问我我们来问点基础的,你基础怎么样?(我也不知道,这个要检验了才知道),下面开始正篇啦
- 正篇
- 说下TCP断开连接(TCP四次挥手,从客户端开始断开连接说的。)close wait 和time wait分别在哪边?啥作用?假如是服务器先断开连接那time wait状态是在服务器那边吗?(我也不清楚,吞吞吐吐说是)
- java 多线程写过没有?线程怎么保证安全?(好像是这么问的,说上锁?? 然后举了个i++自增的例子)
- 红黑树和二分查找复杂度,hash表复杂度,为什么?(O(1),然后说了如果冲突了一般会用拉链法,一个拉链若有N个结点的话,在这个拉链上查找就变成了o(n),然后又问如果是用拉链法的话总体时间复杂度是多少(我开始说O(1),说理由感觉有点懵了,后面说这不是跟拉链长度有关嘛)然后问,拉链要是太长了怎么办(转成树结构),hash表要是太满了如果每一个拉链都特别长呢?(扩容,重新放置元素)还有其他解决冲突的方法没有?(冲突了直接找下一个空闲位置,这个好像叫线性探测法?)
- 进程和线程的区别;同一个进程中的线程共享哪些资源,哪些是独占的。线程是怎么进行切换的。
- 2G内存是怎么运行4g的程序?回答的时候说到,需要用到的页要调入内存,遂问,你怎么知道需要用到哪一页?(我说程序都是顺序存放的,巴拉巴拉,也不知道对不对😂)
- (数据库熟不熟?我说只会一些基本操作)索引是什么(我好像只会说索引的作用是啥,是什么就。。。)
- 有哪些索引?什么是聚簇索引?他的叶子节点和非叶子节点都放了什么?B+树索引有什么特点,好处?为什么不用二叉树?
- 你算法怎么样?(我说我也不知道😂)遂出了这题:加入迈台阶一次可以迈1或2或3步,100阶的台阶有多少种走法?
- 哈哈哈,然后就说给我叫二面面试官啦。lucky😁。不过二面面试官今天开会咩空了,hr打电话给我说换个时间面啦。
二面
有始有终,虽然结果不好(哭):伙伴们,二面我死的透透的了。手撕算法是找到一个二叉搜索树中的第k小的结点。然后我开始一直在想递归的办法,没想清楚。然后面试官提示我中序遍历有几种方法(迭代和递归)。然后问我迭代的话是怎么写(需要用到栈,迭代我过程我还是清楚)。然后发现这是面试官的提示了。要动手写代码,但我写的时候发现我完全忘了迭代的循环条件了。。。我卡了,卡了好久,循环条件我真的晕了。。啊,然后就死掉了,没写出来(哭)。啊,,我要去复习一下树的各种遍历的写法了(要死也不能再死在这上面),再见了,朋友们。祝你们好运。呜呜呜
ps: 前面回答的都不好,然后就接着来写个算法题。
ps:session和cookie区别。多台服务器的话,要怎么存session。(啊,我为什么要提到zookeeper,之前看了一点但是都不太记得了啊啊啊啊。)
让讲一下zookeeper,然后啥子一致性协议之类的。(忘了呀啊啊啊啊)
操作系统:一个字符串写道磁盘的过程。(没看过呀)
Mysql的隔离级别,每个隔离级别怎么实现的。
事务的原子性怎么实现的。
数据库里面有哪几种日志。
就记得这几个问题了。
三面
哈哈哈哈哈哈哈(苦涩),没有