本资料涵盖了Java面试的相关知识点,包括InnoDB存储引擎、MEMORY存储引擎的特点以及Java语言的基础概念,如面向对象特性、关键字、数据类型、异常处理、引用类型、字符串处理、序列化等。
在数据库领域,InnoDB存储引擎是MySQL中的一种引擎,它提供了事务处理能力,支持ACID(原子性、一致性、隔离性和持久性)特性,包括提交、回滚和崩溃恢复。InnoDB的特性还包括支持自动增长列和外键约束,这使得它在复杂的表关联和数据完整性上有优势。然而,相比于MyISAM引擎,InnoDB在写操作上可能较慢,同时会占用更多磁盘空间。
MEMORY存储引擎则用于创建内存中的表,数据存取速度非常快,但由于依赖内存,服务一旦关闭,所有数据都会丢失。它允许选择使用BTREE或HASH索引,其中HASH索引在等值查找上效率极高,但不支持范围查找或"like"这样的模糊匹配。
在Java面试题部分,涉及了面向对象的四大特性:抽象、继承、封装和多态性。还有对`transient`关键字的理解,访问修饰符的区别,基本数据类型及其自动类型转换规则,以及`switch`语句支持的类型等。此外,还讨论了值传递与引用传递的概念,重载与重写的区别,抽象类与接口的不同,静态嵌套类与内部类的差异,`==`和`equals()`的用法,以及`String`对象的不可变性。
在异常处理方面,区分了运行时异常和非运行时异常,以及不同类型的引用,包括强引用、软引用、弱引用和虚引用。还提到了`final`、`finally`、`finalize`的含义,定义常量的多种方式,字节流和字符流的应用场景,GBK与UTF-8编码的区别,以及`static`、`final`和`const`的关键字差异。
在对象操作上,讲解了如何实现对象克隆和序列化与反序列化,强调了序列化的作用以及如何实现这一过程。最后,通过一道面试题探讨了`Strings=new String("xyz");`这行代码创建了多少个字符串对象的问题,涉及到Java字符串池的概念。
这些知识点不仅适用于面试准备,也是深入理解和应用Java编程的基础。