东莞小厂Java笔试面经
《面试题目》
- Java 支持的数据类型有哪些?什么是自动拆装箱?
- Java 支持哪些继承方式?
- 接口和抽象类的区别是什么?
- 创建线程有几种不同的方式?更倾向于哪一种,为什么?
- 同步方法和同步代码块的区别是什么?
- Java 集合类框架的基本接口有哪些?
- HashMap 和 HashTable 有什么区别?
- 数组(Array)和 ArrayList 有什么区别?
- String 是最基本的数据类型吗?
- int 和 Integer 有什么区别?
- String 和 StringBuffer 的区别?
&和&&的区别?- final、finally、finalize 的区别?
- error 和 exception 有什么区别?
String s = new String("xyz");创建了几个 String 对象?- 接口是否可以继承接口?
- 如何显示 MySQL 表的前 50 行?
NOW()和CURRENT_DATE()有什么区别?- CHAR 和 VARCHAR 的区别?
- MySQL 优化思路有哪些?
《参考解析》
- 自动拆装箱:Java 提供 8 种基本数据类型(byte/short/int/long/float/double/char/boolean)及其对应的包装类;自动装箱是基本类型自动转为包装类对象(如
Integer i = 10实际调用Integer.valueOf(10)),自动拆箱是包装类对象自动转回基本类型,编译器在编译期插入相应的转换代码。 - HashMap 与 HashTable 的区别:HashMap 线程不安全但性能高,允许 key/value 为 null;HashTable 线程安全(方法用
synchronized修饰)但性能较低,不允许 null key/value。现代并发场景更推荐用ConcurrentHashMap替代 HashTable。 String s = new String("xyz")创建对象数:如果字符串常量池中尚无"xyz",会创建 2 个对象——1 个在常量池(字面量"xyz"触发),1 个在堆上(new关键字触发);如果常量池已有"xyz",则只创建 1 个堆对象。- CHAR 与 VARCHAR 的区别:CHAR 是定长类型,不足长度会用空格填充,存储/读取性能更稳定,适合长度固定的字段(如身份证号);VARCHAR 是变长类型,按实际内容长度存储(额外占用 1-2 字节记录长度),更节省空间,适合长度不固定的字段。