一面(60min)
开篇吐槽:面试官看起来有点老,肯定30+,而且发际线很高,面试过程中大部分我只能从摄像头看到他亮亮的额头,全程也没什么表情,让人感觉有点窒息。这场面试是八股文拉满,是我历史上八股文问的最多的一场了,基本上涵盖了我学习过的大部分都问到了,全程一问一答,根据视频,我推测面试官也是去找的八股文问的,不管回答的怎么样,面试官都不表态,无表情。
1.自我介绍
2.问实习
- 因为时间短,就没具体问实习相关的事情了
3.问我现在其他公司进度如何,有没有offer的?
4.问项目
- 介绍下个人云盘?
- 断点续传具体介绍下?
- 服务端如何校验数据完整性?(一直在乱扯,没get到点,后面意识到了想问的是文件上传后是否是没问题的,立马答用MD5)
5.TCP
- TCP网络模型?(开始以为问的是TCP状态机,心里想这么搞人的?后面意识到他想问TCP/IP网络体系架构)
- TCP三次握手?
- 两次握手可以?
6.HTTP
- HTTP状态码介绍下(2xx,3xx,4xx,5xx介绍了下,每个举例了几个知道的)
- HTTPS说下?
- HTTPS什么时候用的对称加密?什么时候非对称加密?(介绍完,说了下HTTPS握手)
- CA证书在哪里用到了?怎么用的?具体是如何验证合法性?
- cookie和session的区别?
- 浏览器关闭后session还在?session的生命周期?(服务器这边存储,服务器会决定多长周期有效)
7.快排
- 快排原理?(老八股文了)
- 稳定还是非稳定?(非稳定)
- 如何实现成稳定?(加一个字段,记录两个元素之间的相对关系)
- 快排优化?(选主元,数据小用插入排序)
8.最小堆和最大堆
- 最小堆和最大堆聊下?
- 使用场景?
9.二叉树
- 二叉树的遍历有哪几种?(前中后层序)
- 介绍下每种遍历的原理?
10.广度优先和深度优先说下?
11.MySQL
- MySQL索引底层原理?(B+Tree,并且抢答了为什么使用B+Tree不用其他数据结构)
- 非聚簇索引和聚簇索引?
- 回表知道?介绍下?
- 覆盖索引了解?(不了解)
- 索引什么时候失效?
- 悲观锁和乐观锁?
- MySQL哪里用了悲观锁和乐观锁?(悲观锁扯读写锁、行锁表锁,乐观锁说MVCC)
- MySQL怎么给语句加悲观锁?(语句加个for什么的...记不得了,没用过)
12.GC
- 介绍下Java的GC的一些算法?(标记清除、标记整理、复制、分代)
13.HashMap
- 介绍下HashMap底层原理?
- 为什么要有负载因子呢?(哈希表希望均摊O(1),负载因子反映了空间使用率)
- 为什么2倍扩容?(目的是均匀分布,具体介绍了下具体是怎么做的)
14.springboot启动过程?(口干舌燥,直接说不知道)
15.负载均衡了解?(只知道概念,Ngix有用)
16.进程调度算法?(先进先出、短作业优先、高响应优先)
17.进程和线程的区别?
18.线程怎么执行的,他能独立执行?
19.协程了解?说下?
20.go的协程调度机制?(GMP模型,前两天看的,不是很明白,简单说了下...生怕深入问)
21.协程为什么比线程效率高?
22.进程间通信方式?
23.了解微服务?(不了解)
24.做个题把(终于可以休息了,输出了快1小时)
- 合并有序链表(我看到题目后还很认真的靠近确认了下是那个简单的合并链表题嘛,假装思考下(休息下)立马秒杀了)
- 写完后给面试官说了下思路
25.你有什么想问的?
- 你们那边具体做什么的?
- 对我评价下?哪里觉得不太好?(整体觉得挺好的,希望有些东西不能够局限,让我不仅学理论,还要多实践,意思是让我去学学微服务、中间件那些)
二面(30min)
二面面试官发际线也没那么高了,也有表情了,八股文也少多了,能聊聊天了。
1.自我介绍
2.进程和线程
- 进程和线程区别?
- 线程哪里比进程开销小?(来者不善,还深入问,遇到高手了啊....)
- 说下什么时候会有系统调用?(乱扯,中断、用户态到内核态)
- 带缓冲的IO通过什么方式减少系统调用?(缓冲区,一次调用能够拷贝多次)
- 进程间通信方式?我们如果遇到一个场景,如何选择呢?你是不是没用过?(乱扯,最后说我确实没怎么用过)
- 说下select、poll、epoll?
- 那这样说我们都选epoll就行了吧?要什么select啊?(不知道,我记得有人说了是长连接短链接的问题,但是我不懂,最后面试官说是平台限制,不是所有os都有epoll,内心:就这?)
3.问下数据结构算法吧
- 哈希表解决冲突方法?
- 拉链法如果太长怎么解决?(平衡树、扩容)
- 说说跳表?跳表缺点?(缺点就饶了我吧,乱扯)
4.给定了一个场景,设计一个数据结构
- 如web开发输入一个url,最终会定位到一个方法上去,假如有通配符呢?如
*/abc/*
?(开始扯tire树,让我介绍了tire树和缺点,内心:咋又是缺点啊?) - 最后面试官揭晓答案是AC自动机,还给我简单介绍了下AC自动机原理(这个知识点是和树状数组、线段树平级的,饶了我吧)
4.问实习业务说下?(面试官感觉不耐烦了,感觉凉了啊)
- 说了下业务做的什么
- 继续问我这个业务的表是怎么设计的?(这我咋能知道,我就查了几次数据库,硬扯业务具体流程)
5.写个代码吧(感觉面试官无奈的很...想提早结束)
- 给定一个由
*
和其他字符组成的字符串,将非*
字符移动到字符串的最右边,相对位置不能变,空间O(1)。 - 如样例:输入
********a****b***c***d
,输出******************abcd
- 很快想到了双指针,立马开码,1分钟多写完了,调了2分钟过了。
6.反问
- 具体的业务做什么的?
- 对我评价下?(面试官觉得还可以,说你才大三嘛)
不算hr面的hr面(5min)
大概是打电话给我说了下通过了,介绍了下base,问其他公司面试情况?什么时候能出来实习?9月下谈薪,问了一下学校三方多久出来,还问我有什么反问的。
反问:待遇方面的(hr那边要开会,就快速结束了)