电话面,30-40分钟。应该是简历面。
1.自我介绍
2.HashMap挖深。(jdk1.7和jdk1.8对比来说,数据结构数组链表红黑树,put get操作时间复杂度O(1),和HashTable的区别,并发环境下使用ConcurrentHashMap,jdk1.7 jdk1.8 ConCurrentHashMap实现原理,1.7:segment数组分段锁+JUC.Lock, 1.8:sychronized + CAS);
3.JVM调优思路。(没有具体地实战经验,但是懂大概的理论,提到了jvisualvm 和 arthas,扯到垃圾回收算法的发展趋势,当下g1甚至未来zgc可能调优越来越简单了)
4.多线程。A B C线程如何指定顺序循环唤醒(答得使用JUC.Lock创建多个lock实例,通过指定实例.signal方法进行轮流唤醒,面试官说也可以,他的想法是使用线程自带的join方法);线程池的概念以及问到了四类线程池(表示没有去记,但知道本质上是对ThreadPoolExecutool使用不同输入参数下衍生的产物,提到阿里程序员规范手册中推荐还是使用底层的创建方法方便理解输入参数的概念,面试官表示赞同);CountDownLatch,CyclicBarrier和SemaPhone(忘了,不会...);
5.Hive的架构(个人将Hive理解为一个客户端,不存在分布式的概念,实际数据仓库的功能是基于HDFS和MapReduce实现,同时默认通过Mysql保存元数据映射信息。个人觉得Hive真正的关键环节在于Driver中的翻译器和优化器相关功能)
6.Hdfs HA实现原理( acitve nn + standby nn(元数据同步合并)+ Qjournal集群( edit同步)+ zkfc(监控active,辅助新active上位)+ zookeeper(分布式锁保证唯一acitve))
7.jdk1.7 和jdk1.8的对比(主要谈了HashMap上大刀阔斧的改动,以及lambda表达式的诞生),接着问你在什么场景下用过lambda(想了下说了个最简单的,创建线程,lambda一气呵成重写run方法)
8.到此结束,进入反问环节。
供大家参考,共勉。
全部评论
(8) 回帖