【字节提前批】后端开发一二三四面分享
先说一下个人情况:985渣硕,没项目也没实习…… 本身是抱着练手的心态去投一下字节提前批的,没想到过了。
一面:1小时(7.30)
基本上就是常见的八股文。
先是计算机网络的。
- 从下到上说一下OSI七层协议,以及每一层的作用;
- IP地址和MAC地址的转换方式;
- TCP连接的三次握手,为什么需要三次握手;
- TCP释放连接的四次挥手,服务器发送FIN报文之后客户端的状态,为什么?
- TCP的流量控制和拥塞控制流程;
然后是操作系统的。
- 说一下虚拟内存(LZ说自己对OS不了解,然后说为了进程隔离…… 面试官笑了笑,说看来你确实不了解);
再后面是MySQL的。
- 说一下MySQL中的索引(LZ一个人balabala了一大堆,主要谈了索引的数据结构和几种类型);
- 事务的隔离级别;
- 事务是怎么实现的(不知道这个问题怎么答,就从ACID的角度把三种日志、行锁间隙锁、MVCC全说了一遍);
算法题:
- 用两个栈实现一个队列,口述一下;
- 二叉树中每个节点的值都是0~9中的一个数字,从根节点到叶子结点的路径上所有数字按个位、十位、百位……的顺序可以拼成一个整数,求所有这些整数的和。(实在找不到原题了……)
反问:
- 可以介绍一下部门的业务吗?
- 为什么不问Java,我对Java也蛮熟悉的?(真是给自己挖坑)
一面面试官挺和善的,我说的过程中有一些口误,我跟他都笑了起来。面试完毕当场表示要给我约下一面,找个会Java的来问我。不过我晚上还有笔试,就推掉了。
二面:50分钟(8.2)
基本上全程都在问JUC,问得比较深入。
- Java中实现进程同步的机制有哪些(LZ对OS不熟,所以不知道面试官想问什么,就答了synchronized和ReentrantLock);
- 说一下synchronized的原理(答了偏向锁和轻量级锁的机制,还有ObjectMonitor);
- 说一下ReentrantLock的实现(先答AQS的原理,再提了一下tryAcquire()这些方法的实现);
- Java中的同步机制有哪些(意识到了好像不止这两个,就把JUC里面的报菜名,一个一个说);
- CopyOnWriteArrayList的实现原理(这个很简单);
- 线程池了解过吗,怎么实现的(生产者消费者模型,workQueue和workers等等);
- 读写锁了解过吗,怎么实现的(没了解过…… 面试官给我解释了一下,我说这不就是MySQL里面的锁吗,于是问题就来到了数据库);
- 事务是怎么实现的(又是相同的问题,LZ这次答得可能更有准备了);
算法:
旋转图像(LeetCode第48题)
反问环节就随便聊了聊。
面试官人比较严谨,上来还介绍了自己的名字。尴尬的是我算法题没写出来…… 边界条件似乎一直有问题,最后面试官让我说了一下思路,没问题,也放我过了。
三面:50分钟(8.3)
面试官上来问有啥项目吗?我说没有…… 学校做的是别的东西,简单介绍了一下。
面试就问了两个问题:
- MVC是什么?
- 在百度搜索框输入一串文字,假如后端是SpringMVC架构的,会发生什么?
算法题:
n皇后(LeetCode第51题,差点没写出来)
场景题:
设计一个停车场,有大车和小车两种车位,大车位可以停大车和小车,小车位只能停小车。
LZ以为这个题就随便问问,就想了一个计数器的方案,但明显有漏洞;在面试官的提醒下改掉了漏洞,但面试官说从车位的角度思考,不要从车辆的角度思考;中间还一直局限在数量这个角度上;最后,在面试官的不断提示下,给出了一个类似线程池的解决方案,将大车位和小车位放入车位池,每当来一个车辆就为其从车位池中拿出一个车位并匹配,车开走后释放。
反问:
问了一下场景题的答案,面试官说比较开放,他给出的解决方案跟我最后说的那个有一点像,也不完全像。
面试官看起来挺年轻的,有点像我的堂哥,交流起来蛮舒服的,最后问我假如给offer的话能不能去实习,我说寒假应该可以。
四面:30分钟(8.4)
三面后不久,HR给我打电话说面试官要求加一轮交叉面,可能对我之前的面试不太满意。
四面面试官说之前聊了那么多了,这次咱们聊点别的,我以为要聊人生了,没想到还是技术……
- 数据库和文件系统相比的优点(LZ不懂文件系统……只能一个劲吹数据库);
- 数据库的锁(乐观锁MVCC、排他锁行锁、间隙锁、临键锁);
- Java的锁(synchronized、ReentrantLock);
- C++的锁(我说不懂C++,面试官问你猜C++有锁吗?我猜有)
- 线程池有了解吗,为什么线程创建和撤销开销大?
场景题:
用手机扫码支付时,背后发生了什么?(从用户、服务器、银行服务器、店家这些角色的角度说了一下流程)
反问:
- 跟我一面的面试官是一个部门嘛(是);
- 需要的技术栈有哪些(刚刚问你的就差不多了);
- 对我有什么建议(去把操作系统学一学);
四面面试官不太在意技术细节,一开始每次我想说一些的时候都会被打断,后来就干脆只聊设计思路了。面试官似乎意识到我操作系统不怎么懂,每次涉及到OS的时候都会提出中断请求来问我为什么是这样子。
意向书(8.10)
我感觉自己后两面表现都不怎么好,没想到还是给发了意向书,只能说是惊喜了~
#字节跳动2021秋招##面经##校招##字节跳动##Java工程师#