1、HashMap 和 Hashtable 区别
- 首先就是线程安全问题,HashMap线程不完全,HashTable线程安全(使用Synchronize)
- 两者继承的父类也是不同的,但两者都实现了Map接口。HashMap继承了AbstractMap类,HashTable继承了Dictionary类(已废弃)。
- 两者底层都是哈希表。但是HashMap使用数组+链表的方法解决hash碰撞问题(JDK1.8后优化成数组+链表和红黑树。如果冲突数量小于8,则是以链表方式解决冲突。而当冲突大于等于8时,就会将冲突的Entry转换为红黑树进行存储。而又当数量小于6时,则又转化为链表存储。)HashTable以链表的方式解决冲突。
- 扩容的方式不同。HashMap 扩容必须要求为原容量的2倍,而且一定是2的幂次倍扩容结果,而且每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入。而Hashtable扩容为原容量2倍加1。
- Hashmap是允许key和value为null值的,用containsValue和containsKey方法判断是否包含对应键值对;HashTable键值对都不能为空,否则就报空指针异常。
- HashMap是没有contains方法的,只有containsValue和containsKey方法;hashtable则保留了contains方法,效果同containsValue,还包括containsValue和containsKey方法。
- 两者的hash计算方式不同。
2、Java 垃圾回收机制和生命周期
3、怎么解决 Kafka 数据丢失的问题
4、zookeeper 是如何保证数据一致性的
5、hadoop 和 spark 在处理数据时,处理出现内存溢出的方法有哪些?
6、java 实现快速排序
7、设计微信群发红包数据库表结构(包含表名称、字段名称、类型)
8、如何选型:业务场景、性能要求、维护和扩展性、成本、开源活跃度
9、Spark如何调优
10、Flink和spark的通信框架有什么异同
11、Java的代理
12、Java的内存溢出和内存泄漏
13、hadoop 的组件有哪些?Yarn的调度器有哪些?
14、hadoop 的 shuffle 过程
15、简述Spark集群运行的几种模式
16、RDD 中的 reducebyKey 与 groupByKey 哪个性能高?
17、简述 HBase 的读写过程
18、在 2.5亿个整数中,找出不重复的整数,注意:内存不足以容纳 2.5亿个整数。
19、CDH 和 HDP 的区别
20、Java原子操作
21、Java封装、继承和多态
22、JVM 模型
23、Flume taildirSorce 重复读取数据解决方法
24、Flume 如何保证数据不丢
25、Java 类加载过程
26、Spark Task 运行原理
27、手写一个线程安全的单例
28、设计模式
29、impala 和 kudu 的适用场景,读写性能如何
30、Kafka ack原理