Java面试深度解析:Hashtable与HashMap的区别及MVC模式理解

需积分: 16 12 下载量 71 浏览量 更新于2024-10-22 收藏 37KB DOC 举报
"这篇分享包含了用友公司面试中的一些常见问题,主要涉及Java集合框架、设计模式以及数据库查询。" 1. **Hashtable与HashMap的区别** - **继承关系**:Hashtable是基于旧的Dictionary类,而HashMap是Java 1.2引入的Map接口的实现,直接继承自AbstractMap。 - **线程安全性**:Hashtable的所有方法都是线程安全的,而HashMap不是,这意味着在多线程环境下使用HashMap需要手动同步,可以使用Collections.synchronizedMap()方法来创建线程安全的HashMap。 - **空值支持**:HashMap允许key或value为空,而Hashtable不允许。 - **方法差异**:HashMap移除了Hashtable的contains方法,仅保留containsKey和containsValue。 - **容量与增长策略**:Hashtable初始容量为11,增长方式为old * 2 + 1;HashMap的初始容量为16,且容量必须为2的幂。 2. **MVC模式的理解** - **Model-View-Controller**(MVC)是一种软件设计模式,用于分离应用程序的数据和业务逻辑(Model)与用户界面(View)和控制器逻辑(Controller)。这种模式最早由Sun Microsystems在早期提出,主要用于Web开发,目的是提高系统的可维护性、可扩展性和组件的可复用性。Model负责管理数据和业务逻辑,View负责展示数据,Controller处理用户输入并协调Model和View之间的交互。 3. **数据库查询中的连接操作** - **SQL Server中的左连接(Left Join)**:使用`LEFT JOIN`关键字,可以获取左表(第一个表)的所有记录,即使右表(第二个表)没有匹配的记录。 - **Oracle中的左连接**:Oracle也使用`LEFT JOIN`,但早期版本的Oracle也可以通过在等于条件中使用`(+)`符号实现左连接,如`a.id(+)=b.id`。 - **右连接(Right Join)**:与左连接相反,右连接会返回右表的所有记录,即使左表没有匹配的记录。在Oracle中,右连接可以通过将`(+)`符号放在左表的字段上实现,如`a.id=b.id(+)`。 - **自连接**:自连接是表自身与其自身的连接,通常用于处理具有层次结构的数据或比较同一表中的不同记录。 以上是面试题中的关键知识点,对于准备面试的开发者来说,了解这些内容有助于提升面试成功的机会。在实际工作中,理解和掌握这些基础概念也是至关重要的。