2020阿里Java面试关键知识点解析

需积分: 10 16 下载量 149 浏览量 更新于2024-07-15 收藏 1.41MB PDF 举报
"这是一份关于阿里巴巴2020年Java面试题的综合整理,涵盖了从数据结构、并发编程、数据库、网络协议到分布式理论等多个方面的知识点。" 一、红⿊树的特性 红⿊树是一种自平衡二叉查找树,其特性包括: 1. 每个节点要么是红色,要么是黑色。 2. 根节点是黑色。 3. 所有叶节点(NIL节点)是黑色。 4. 如果一个节点是红色,那么它的子节点必须是黑色。 5. 从任意节点到其每个叶子节点的所有路径都包含相同数量的黑色节点。 这些特性保证了红⿊树在插入、删除和查找操作时保持相对平衡,使得其平均时间复杂度为O(logn),在数据存储和检索中表现出高效性能。 二、HashMap和HashTable的不同点 1. 继承和实现方式:HashMap继承于AbstractMap并实现了Map接口,不保证线程安全;而HashTable直接继承于Dictionary,是线程安全的。 2. 空值处理:HashMap允许键和值为null,而HashTable不允许。 3. 性能:HashMap由于不保证线程安全,所以在多线程环境下性能较低,但在单线程环境下更快。 4. 遍历方式:HashMap使用迭代器(Iterator),HashTable使用Enumeration。 5. 默认初始容量和扩容策略:HashMap默认容量16,扩容因子0.75;HashTable默认容量11,扩容因子为2。 三、ConcurrentHashMap比HashTable性能好的原因 ConcurrentHashMap是线程安全的Map实现,它通过分段锁机制提高了并发性能。相比于HashTable的全局锁,ConcurrentHashMap可以并发地进行读写操作,减少了锁的粒度,因此在多线程环境下性能更优。 四、ClassLoader的分类及加载顺序 Java类加载器分为Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader,以及用户自定义的ClassLoader。加载顺序为:Bootstrap先加载JDK核心库,然后Extension ClassLoader加载扩展库,接着App ClassLoader加载应用类路径下的类,最后自定义ClassLoader按需加载。 五、数据库事务特性及隔离级别 事务的四大特性(ACID): 1. 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败。 2. 一致性(Consistency):事务执行前后,数据保持一致状态。 3. 隔离性(Isolation):多个事务并发执行时,彼此互不影响。 4. 持久性(Durability):事务一旦提交,其结果将永久保存,即使系统故障也不会丢失。 六、常用的中间件 如Redis缓存、Zookeeper协调服务、消息队列MQ(如RabbitMQ、Kafka)、Dubbo分布式服务框架等,它们在分布式系统中承担着数据存储、服务注册与发现、消息传递等功能。 七、GC算法、垃圾收集器 Java的垃圾收集主要包括引用计数法、可达性分析法。垃圾收集器有Serial、ParNew、Parallel Scavenge、CMS、G1等,不同的组合提供了不同的性能和内存占用特点。 八、TCP协议 TCP是面向连接的、可靠的传输层协议,其关键特性包括三次握手建立连接、四次挥手释放连接、滑动窗口流量控制和拥塞控制等。 九、HTTPS HTTPS基于SSL/TLS协议,提供对HTTP协议的安全加密,确保数据在传输过程中的安全性,防止窃听和篡改。 十、CAP原则 CAP原则指出,在分布式系统中不能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。在实际应用中,通常需要根据业务场景权衡这三者。 十一、一致性哈希 一致性哈希是一种解决分布式系统中负载均衡问题的方法,通过哈希函数将节点和键映射到环形空间,保证在节点增减时,数据分布的变动最小。 这份面试集锦全面覆盖了Java开发中的重要知识点,对于准备面试或提升技术水平都有很大帮助。