海康威视日常实习面经
笔者14号在实习seng上投递的简历,21号晚约了电面,当时在外面,就推迟了半个小时后。下面回想一下题目,估计记不全了。。
电面(两位面试官一起面的,估计有一位是主管)
1、自我介绍,问了一下项目
2、Java基础,详细介绍一下HashMap
- 说了下put、get,1.7和1.8的不同实现,红黑树的转换机制
3、JDK1.7中HashMap与1.8的区别?循环链表?
- 1.7头插法,1.8尾插法,并发 put 会导致 resize 链表头插导致指针指向错误,形成循环链表
4、有哪些并发的Map,介绍下原理?
- 巴拉巴拉,古老Hashtable、Collections包装、ConcurrentHashMap,简单说了下原理
5、你提到了锁的概念,说下 Synchronized 和 Lock 的区别?
- 老八股了,巴拉巴拉
6、看你熟悉MySQL,详细讲一下索引?
- 说了MyISAM、InnoDB中索引的不同实现,聚簇索引,非聚簇索引,索引的使用原则,联合索引,最左前缀
7、让你建一张数据库表,你如何建?考虑什么?
- 说了考虑遵循什么数据库范式,然后字段的数据类型,主键,索引的建立
8、看你熟悉JVM,说一下JVM内存区域?哪些是线程私有?
- 巴拉巴拉,程序计数器,本地方法栈,虚拟机栈,堆内存,方法区。。。
9、对象分代理论知道吗?为什么要这样做?
- 巴拉巴拉,在垃圾回收机制中,对象分为新生代,老年代,分别使用不同的垃圾收集算法,巴拉巴拉
10、那新生代能变成老年代吗?是怎样晋级老年代的?
- 每个对象在 Hotpot虚拟机中都有一个对象头,其中存储了对象年龄,巴拉巴拉
11、分代收集理论的好处是什么?
- 巴拉巴拉,尽可能减少 full GC 的产生
12、考虑这么一种情况,你突然发现请求变慢了,可能是什么原因?你会如何处理?
- 答了可能是因为慢查询所导致,可以优化SQL查询,使用explain查看索引是否失效
- 追问,还可能是什么原因?
- 我支支吾吾
- 我们刚刚讨论过JVM的垃圾收集(提示了我一下)
- 我恍然大悟,答曰新生代的对象创建频繁导致 minor GC 频繁触发
- 追问,那你怎么处理这种情况?
- 可以在JVM层面扩大堆内存,也可以在代码层面可以定位到频繁创建对象的地方,再去具体考虑如何优化
已经收到 offer 了,流程是真的快,当天晚上面完,第二天中午 hr 就发 offer 了