面试前期
下午刚打完王者荣耀,大胜一场,内心窃喜,突然一个杭州☎️打进来,内心慌的一批,果然还是来了,约了晚上7点到8点的面试,此时到面试开始前的内心。
面试开始
此时小哥哥发来了一个不明链接,点进去开始了,一个黢黑的屏幕,加一个摄像头请求框,果断允许,好了正菜开始了:
Java、C++、python对比
- 解释语言:翻译一句,执行一句
- 编译语言:全部翻译,一次执行
- Java:先编译.java文件,再解释.class文件
- python为什么慢:动态类型、解释语言、虚拟机、GIL(全局解释器锁)
- 当时没想起来GIL,这个好像是会使得python全局只有一个线程在运行
- 这里自己扯了一下之前在知乎看到的一篇文章,一个公司内部举办了一个代码优化大赛,第一名是用的Go,Java和C++没差太多,我觉得只要JVM启动起来Java就不会太慢
- 为什么选择Java:感觉python是脚本语言,想学一门真正的面向对象语言
- 有用Java做过项目吗:没有,大学简单写过,但是认知停留在表面
线程池
- 讲一下线程池
- 自己从线程池提交任务的流程讲的,中间面试官会提一些问题,还记得这些
- 什么时候会去任务队列拿任务?
- 如果提交了新任务,但是有空闲的线程,这个任务是由新创建的线程执行还是由空闲的线程执行?
- 核心线程和非核心线程的区别?
- 创建线程池的四个参数
- 怎么提交任务?讲一下submit函数
网络协议
- 说几种常见的网络协议
- HTTP、HTTPS、TCP、UDP、IP
- TCP怎么保证可靠传输?
- 说了确认号、拥塞控制、数据校验
- TCP怎么进行数据校验?和UDP的数据校验有区别吗?
- 不太会
数据结构和算法
- 学过哪些数据结构?
- 链表、树、图、并查集
- 链表和数组的区别?
- 从插入和删除的时间复杂度回答的
- map知道哪些?
- HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap、Hashtable
- Map和HashMap有什么区别?
- 一个是接口,一个是实现
- 讲一下TreeMap
- 算法题,合并k个有序链表,时间复杂度和空间复杂度
琐碎问题
- docker底层怎么实现的?
- NameSpace + CGroups
- Kafka怎么记录消费进度?
- Kafka消息重复消费?
- 介绍实习项目