首页 > 【字节提前批】后端开发一二三四面分享
头像
Mcdhcnhk
编辑于 2021-08-11 21:15
+ 关注

【字节提前批】后端开发一二三四面分享

先说一下个人情况:985渣硕,没项目也没实习…… 本身是抱着练手的心态去投一下字节提前批的,没想到过了。

一面:1小时(7.30)

基本上就是常见的八股文。
先是计算机网络的。

  1. 从下到上说一下OSI七层协议,以及每一层的作用;
  2. IP地址和MAC地址的转换方式;
  3. TCP连接的三次握手,为什么需要三次握手;
  4. TCP释放连接的四次挥手,服务器发送FIN报文之后客户端的状态,为什么?
  5. TCP的流量控制和拥塞控制流程;

然后是操作系统的。

  1. 说一下虚拟内存(LZ说自己对OS不了解,然后说为了进程隔离…… 面试官笑了笑,说看来你确实不了解);

再后面是MySQL的。

  1. 说一下MySQL中的索引(LZ一个人balabala了一大堆,主要谈了索引的数据结构和几种类型);
  2. 事务的隔离级别;
  3. 事务是怎么实现的(不知道这个问题怎么答,就从ACID的角度把三种日志、行锁间隙锁、MVCC全说了一遍);

算法题:

  1. 用两个栈实现一个队列,口述一下;
  2. 二叉树中每个节点的值都是0~9中的一个数字,从根节点到叶子结点的路径上所有数字按个位、十位、百位……的顺序可以拼成一个整数,求所有这些整数的和。(实在找不到原题了……)

反问:

  1. 可以介绍一下部门的业务吗?
  2. 为什么不问Java,我对Java也蛮熟悉的?(真是给自己挖坑)

一面面试官挺和善的,我说的过程中有一些口误,我跟他都笑了起来。面试完毕当场表示要给我约下一面,找个会Java的来问我。不过我晚上还有笔试,就推掉了。

二面:50分钟(8.2)

基本上全程都在问JUC,问得比较深入。

  1. Java中实现进程同步的机制有哪些(LZ对OS不熟,所以不知道面试官想问什么,就答了synchronized和ReentrantLock);
  2. 说一下synchronized的原理(答了偏向锁和轻量级锁的机制,还有ObjectMonitor);
  3. 说一下ReentrantLock的实现(先答AQS的原理,再提了一下tryAcquire()这些方法的实现);
  4. Java中的同步机制有哪些(意识到了好像不止这两个,就把JUC里面的报菜名,一个一个说);
  5. CopyOnWriteArrayList的实现原理(这个很简单);
  6. 线程池了解过吗,怎么实现的(生产者消费者模型,workQueue和workers等等);
  7. 读写锁了解过吗,怎么实现的(没了解过…… 面试官给我解释了一下,我说这不就是MySQL里面的锁吗,于是问题就来到了数据库);
  8. 事务是怎么实现的(又是相同的问题,LZ这次答得可能更有准备了);

算法:
旋转图像(LeetCode第48题)

反问环节就随便聊了聊。

面试官人比较严谨,上来还介绍了自己的名字。尴尬的是我算法题没写出来…… 边界条件似乎一直有问题,最后面试官让我说了一下思路,没问题,也放我过了。

三面:50分钟(8.3)

面试官上来问有啥项目吗?我说没有…… 学校做的是别的东西,简单介绍了一下。
面试就问了两个问题:

  1. MVC是什么?
  2. 在百度搜索框输入一串文字,假如后端是SpringMVC架构的,会发生什么?

算法题:
n皇后(LeetCode第51题,差点没写出来)

场景题:
设计一个停车场,有大车和小车两种车位,大车位可以停大车和小车,小车位只能停小车。
LZ以为这个题就随便问问,就想了一个计数器的方案,但明显有漏洞;在面试官的提醒下改掉了漏洞,但面试官说从车位的角度思考,不要从车辆的角度思考;中间还一直局限在数量这个角度上;最后,在面试官的不断提示下,给出了一个类似线程池的解决方案,将大车位和小车位放入车位池,每当来一个车辆就为其从车位池中拿出一个车位并匹配,车开走后释放。

反问:
问了一下场景题的答案,面试官说比较开放,他给出的解决方案跟我最后说的那个有一点像,也不完全像。

面试官看起来挺年轻的,有点像我的堂哥,交流起来蛮舒服的,最后问我假如给offer的话能不能去实习,我说寒假应该可以。

四面:30分钟(8.4)

三面后不久,HR给我打电话说面试官要求加一轮交叉面,可能对我之前的面试不太满意。
四面面试官说之前聊了那么多了,这次咱们聊点别的,我以为要聊人生了,没想到还是技术……

  1. 数据库和文件系统相比的优点(LZ不懂文件系统……只能一个劲吹数据库);
  2. 数据库的锁(乐观锁MVCC、排他锁行锁、间隙锁、临键锁);
  3. Java的锁(synchronized、ReentrantLock);
  4. C++的锁(我说不懂C++,面试官问你猜C++有锁吗?我猜有)
  5. 线程池有了解吗,为什么线程创建和撤销开销大?

场景题:
用手机扫码支付时,背后发生了什么?(从用户、服务器、银行服务器、店家这些角色的角度说了一下流程)

反问:

  1. 跟我一面的面试官是一个部门嘛(是);
  2. 需要的技术栈有哪些(刚刚问你的就差不多了);
  3. 对我有什么建议(去把操作系统学一学);

四面面试官不太在意技术细节,一开始每次我想说一些的时候都会被打断,后来就干脆只聊设计思路了。面试官似乎意识到我操作系统不怎么懂,每次涉及到OS的时候都会提出中断请求来问我为什么是这样子。

意向书(8.10)

我感觉自己后两面表现都不怎么好,没想到还是给发了意向书,只能说是惊喜了~

更多模拟面试

全部评论

(4) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐