java面试题第五部分:数据库和虚拟机

preview
需积分: 0 0 下载量 148 浏览量 更新于2023-03-17 收藏 1.01MB DOCX 举报
在Java面试中,数据库和虚拟机是两个非常重要的领域,涉及到的问题广泛且深入。下面将分别探讨这两个领域的几个关键知识点。 我们来看数据库相关的知识: 1. **数据库的三范式**:这是数据库设计的基本原则,确保数据的规范性和减少冗余。第一范式强调列的原子性,不允许列中有多个值;第二范式要求每一行数据只与一个列相关,即不存在部分依赖;第三范式则规定每个属性都直接依赖于主键,避免传递依赖。 2. **自增表与InnoDB和MyISAM表的区别**:InnoDB表在删除数据并重启后,自增ID会丢失,因为最大ID只记录在内存中。而MyISAM表即使重启,ID也不会丢失。InnoDB支持事务、行级锁,更适合大多数情况。 3. **获取数据库版本**:在MySQL中,使用`SELECT version();`命令;在Oracle中,查询`v$version`表。 4. **ACID特性**:原子性、一致性、隔离性和持久性是数据库事务处理的基石。原子性确保事务的不可分割性,一致性保证事务执行前后系统的一致状态,隔离性防止事务间的相互干扰,持久性则确保事务一旦提交,其结果就会永久保存。 接下来是关于Java虚拟机(JVM)的知识: 5. **char与varchar的区别**:char是固定长度的,适合存储定长数据,如密码MD5值;varchar是可变长度,节省空间,适合存储不定长数据。 6. **float与double的区别**:float存储8位十进制数,占4字节,而double存储16位十进制数,占8字节。double精度更高,但占用更多内存,CPU处理float更快。 7. **MySQL连接类型**:内连接(inner join)返回匹配的行;左连接(left join)返回左表所有行及右表匹配的行;右连接(right join)反之,返回右表所有行及左表匹配的行。 8. **索引实现**:MySQL主要使用B+树作为索引结构,提供高效的查找性能。B+树的叶子节点包含所有数据,便于范围查询。 9. **验证索引效果**:使用`EXPLAIN`关键字可以查看SQL的执行计划,分析索引是否有效。例如`EXPLAIN SELECT * FROM table WHERE type=1`。 10. **事务隔离级别**:四种隔离级别决定了并发事务间数据可见性的规则。READ-UNCOMMITTED允许未提交读,可能导致脏读、幻读和不可重复读;READ-COMMITTED防止脏读,但仍有幻读和不可重复读;REPEATABLE-READ是默认级别,防止脏读和不可重复读,但可能出现幻读;SERIALIZABLE是最高的隔离级别,完全避免幻读,但可能影响性能。 以上是针对“数据库和虚拟机”主题的一些核心知识点,涵盖了数据库设计、事务处理、JVM内存管理和SQL优化等方面。理解和掌握这些知识点对于Java开发人员来说至关重要,特别是在面试中,它们常常是评估候选人技术能力的关键指标。