一面:
计网:
- 三次握手,为什么要第三次握手
- TCP保证准确性的措施
- 简要介绍滑动窗口
- UDP和TCP的区别
- 四次挥手过程,最后为什么要等2MSL
(此处答岔了,2MSL是最后客户端发出第四次报文后等待的,答岔后记在了面评里,二面又问了一次)
操作系统:
- 死锁的四个必要条件,如何解决
- 简要介绍下常用的锁机制
(没答上来,直接跳过问数据库)
数据库:
- ACID特性
(本想秀一下英文,C一致性和I隔离性单词说反了,面试官问了还没发现,也写到了面评里二面又问一次。千万别不懂嗯装) - 分别用什么方法实现的
- SQL常见语句
(说了SELECT WHERE GROUP BY就没再问了,误以为这块不重要,轻视和草率直接造成二面的惨象)
C++基础:
- #include 后<>和""的区别
- malloc和new的区别,为什么单片机用malloc
- 指针和引用的区别
- C++多态的实现(编译时多态:函数重载和模板,运行时多态:虚函数)
算法:
- 非递减序平方数组
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
—简单题,双指针 - (智力题没写程序)飞机上有100个人,每人都有对应的座位。有一个人喝醉了随机坐,剩下的人尽可能坐到自己位置上,被霸占了就也随机坐,都坐到自己位置上的概率?
—递归分析,喝醉的1/100做对,99/100随机;这99/100中,被霸占位置的第二个人也随机,1/99坐对,98/99随机…
最后剩两个人,一人1/2的概率坐对,另一人也对;1/2的概率做错,另一人也错。
故答案是1/2。 - 无重复字符最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
–unordered_set调用,非常简单
二面:
计网:
- 介绍四次握手,为什么最后等待2MSL再close(针对一面答岔的)
- 详细介绍HTTPS加密(SSL/TSL协议和工作流程,大约花了5分钟)
- 滑动窗口
操作系统:
- 常用的锁机制,会用Linux表达么(回答的乐观锁和悲观锁,但他说不是这个问题,可能是读写锁的Linux表达,我说了不会Linux之后再问了一个,就直接跳到数据库了)
- 简要介绍进程间通信
数据库:
- ACID四大特性,详细介绍+举例(一面的面评,这下答上来了)
- ACID分别靠什么实现,详细介绍(redo和undo,mvcc都要详细介绍,这块之前只看了一点,答得相当不好)
- 既然你说了redo和undo,那为什么能保证持久性和原子性
- 你也说到了脏读幻读和不可重复读,详细介绍+举例(问的非常细,当时就有点紧张,不可重复读和幻读就答混了,之后被指引纠正了)
- MVCC是什么,如何实现(当时没看到这一部分,只能说不知道,这时候面试官差不多知道了数据库是短板,之后就问了一大堆数据库基础)
- 之前说了乐观锁和悲观锁,数据库里的具体应用呢(只说了概念不懂应用)
- 数据库四种隔离机制,分别解决了什么问题(问题匹配答漏了一个)
- 知道常用的SQL四种存储引擎么,分别有什么特点(只说了InnoDB和MyISAM,回滚的特性还说岔了,直接导致后面详细问这块)
- 为什么InnoDB多了行级锁就支持事务了,什么样的操作算一个事务
- InnoDB回滚用了redo log,你觉得他会把日志存在硬盘里还是内存里,为什么(内存,要结合bin log和事务机制,并应对异常重启解释)
- 感觉你对数据库不大熟,你知道一句SQL语句是如何执行的?
- 什么是索引,索引有什么优缺点
- 索引的结构,B+树介绍
- 知道外键么,为什么不推荐用外键
- 聚簇索引和非聚簇索引的介绍和优缺点
- 重新介绍一下三大日志吧
- 了解过redis么
- SQL语句运用,用SQL语句写出平均分在60分以上的同学的姓名,题比较难,有学生表教师表课程表成绩表,四次连接查询才能找到
- 这个关系数据库属于什么范式
算法:
最大正方形
在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。
示例 1:
输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
输出:4
想了BFS方法,复杂度过高,m*n后还要沿1递归,只能通过剪枝减少复杂度,被否决。
之后想了dp的方法,写了状态转移方程,之后边界条件设计错了,漏了最左边和最右边的判断,一直出不来结果,被提醒了也因为整场被压很紧张没想出来。
总结
一面更偏重基础,看你会什么,二面偏重薄弱点,看你不会什么…
被发现数据库不扎实之后问了个底朝天,也确实是自己这块误以为只用背背面经就行,想继续在后端做下去一定要在数据库上花大功夫。