首页 > 字节教育后端一面凉经
头像
白非立
编辑于 2020-12-04 21:09
+ 关注

字节教育后端一面凉经

字节教育后端
开头面试官说了一下面试流程,先自我介绍,然后问算法和基础知识,说有项目经历的话可以说一下项目设计。我没做过什么后台开发的项目,所以自我介绍完就开始问基础知识了。
上来面试官让我实现一下单例模式,单例模式虽然大一下做Android项目的时候用过,但大二转到人工智能专业之后没开软件工程相关的课,自己也没准备设计模式的内容...和面试官说了一下就问操作系统,计网,数据库了。
先问了操作系统,问死锁的四个必要条件,然后问了一下解决方法,答了死锁预防,死锁避免,死锁恢复和忽略,以及每种方案的具体措施,比如死锁预防对四个必要条件的处理,死锁避免的银行家算法之类的。
然后问了计网,详细说一下输入网址并访问的过程,稍微详细的说了一下DNS查询的过程(中间问了一下DNS用什么协议,回答了区域传输用TCP,其他时候主要用UDP),然后说了TCP的三次握手(说完问了一下对负载均衡和反向代理有了解吗,答没了解过...),然后问对图片和视频的请求有了解吗,说这种不是直接向对应服务器请求的,答没了解过,猜了下是不是代理服务器缓存图片和视频资源,由代理服务器处理请求。然后问了一下HTTPS连接的过程,答了一下密钥在客户端和服务器间的传递,如何验证证书。然后问了一下如果是你实现一个后台服务,将数据从缓冲区读出写入磁盘,这之间经历了几次复制(从操作系统数据流的角度来说,比如用户态、内核态之类的),这块我不大理解,最后就答了从套接字的缓冲区到用户进程内存空间一次复制,用户进程内存空间到内核态线程内存空间一次复制,内核线程内存空间到磁盘一次复制。
然后问了数据库,先问了索引,如果有个表t,a是主键,b和c上建立了联合索引,select * from t where b=10语句是怎么走索引的,答了系统先估计是走全表快还是走索引快,如果索引快的话就走联合索引,在叶子节点拿到主键值之后再走主键索引。面试官又问一定会回表吗,答了这里是select *所以要回表,如果是select b,c的话就不用了,因为这样是个覆盖索引。然后问了一下事务的四个特性,答了ACID,又问原子性是如何实现的,这个想了一会实在没看过说了不知道。
然后问了一下基础排序算法的复杂度,答了选择、插入、冒泡、归并、快速排序的时间复杂度,然后又问快排的最坏情况是什么情况。这里有点忘了答错了,答了大部分排好序的时候...
然后开始做算法题,第一题是删除单链表的倒数第N个节点,不是牛客上的题,是面试官在题目栏写的题目。先问了我对题目有什么问题吗,我问了一下N的范围和是否需要自己实现一个单链表结构,面试官说N可以是任意数字,自己写个Node类就行。题目挺简单的,写了个solution(Node head, int index2delete),面试官问如果删除的是头结点怎么办,于是又重新改了一下返回值,返回删除指定Node后的头结点。
第二道题是区间调度,面试官写了几个课的上课时间,比如英语8-9,数学8.5-10,语文9.5-10.5等等,问一天最多能上几门课,也是面试官出的,写一下大概思路,问我对题目有什么问题。我问了一下输入的形式,面试官说形式任意,可以是二维数组之类的。想了一会只想到先对二维数组进行排序,比如按照起点升序,结束点降序,然后用dp,int[] dp = new int[n],表示以第n节课结尾最多能上多少节课,这样要判断第n节课与前面课程的时间相交情况构造状态转移方程。说了这个思路之后面试官提示dp的话复杂了,可以想一下贪心。想了好一会没啥思路放弃了...
最后反问问了一下面试官对我的评价和建议,面试官说操作系统和计网这些基础知识还不够深入,不但要知道这么做,还要知道为什么这么做。
下午四点面完的,现在一直没消息,估计是凉了。。。

更多模拟面试

全部评论

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