很遗憾这篇面经不是我的,但是所有的回答信息是我自己总结出来的。(一点点来,有些已经写到其他博客中了,还没有集成进来,今天不太想写,有兴趣的小伙伴可以去看看)
#一面
1.写出知道的所有单例模式的写法
2.整数的二进制找出有几个 1,效率要求最高
3.会场安排问题
4.如何用两个栈模拟一个队列(前面四道考了 30 多分钟)
5.TCP 三次握手的过程
6.http 了解吗?(这道我直接说没有深入研究 web 开发)
7.java 集合类,哪些线程安全,哪些线程不安全
8.线程安全问题(如何保证线程安全,哪些地方要使用线程安全;lock 和 synchronized
区别,用哪个更好,为什么?)
9.用过 volatile 吗,说一下
10.有看过 JDK 源码吗?(这个我说没有深入了解过)
11.数据库隔离级别哪几种?(这道直接说忘了,可以提示一下吗)
12.其他问题忘了
(没问项目,全问基础题,算法题最重要,答不好估计过不了)
#二面
1.详细问了项目的整个架构和一些具体功能,关键技术的实现?(谈了估计快半个钟)
2.TCP 三次握手,以及一些具体问题如”为什么要有第三次握手?客户端发给服务器的 报文段丢失了怎么办?这时客户端还没收到服务器的确认包,那它会继续发吗?服务器收到 之后重传的确认号应该是多少?”等等(两轮都问了 TCP,总的来说就是要精通 TCP,滑动窗口,确认重传都要很清楚)
3.线程安全问题(同一面)
4.平衡二叉树(说一下原理?开发实践中哪些地方要用到它?)
5.一个字符串中找出给定字符串,要求效率最高?(字符串匹配的 KMP 算法)
6.如果 HashMap 的大小超过了负载因子定义的容量,怎么办?
7.说一下 hashcode?(自己关联了 equals 和==回答)
8.知道 Unicode 编码吗?(这道我直接说没有深入研究)
9.其他细节题,如 char a=‘海’;float a=1.1; short a=1;分别问了这几个正确吗?
10.想问一道概率论的题目
11.学习理论和做项目你是怎么看的?
12.问了我的职业规划是什么?
13.考不考研,为什么?
#hr 面
1.看到我的实践经历,问我怎么在学习中能抽出时间做这些实践?
2.看到我之前被内推过安卓,问为什么从安卓转做 java?(我给了很多原因,面试官都 表示不理解)
3.说一下职业规划?怎么学习自己这个方向?
4.详细介绍一个自己的项目?
5.自己扩展过的网络通信框架有测试过性能吗,比原框架好在哪里?从几个指标来回答?
(hr 面表现不太好,没有事先准备)
#总结
TCP、Hashmap、线程安全等重要的知识点基本必考,准备面试的时候需要重点深入 学习。