Java应届生面试题及答案
一、选择题(10题)
以下哪个不是Java的基本数据类型?()
A.intB.StringC.booleanD.double
答案:B。String是引用数据类型,基本数据类型只有8种:byte、short、int、long、float、double、char、boolean。
HashMap和Hashtable的核心区别是?()
A.HashMap允许key为nullB.Hashtable是线程安全的C.HashMap效率更低D.Hashtable允许value为null
答案:B。HashMap线程不安全,Hashtable通过synchronized修饰方法保证线程安全;HashMap允许key和value为null,Hashtable不允许。
以下哪种方式不能创建线程?()
A.实现Runnable接口B.继承Thread类C.实现Callable接口D.继承Runnable类
答案:D。Runnable是接口,只能实现不能继承;Callable接口配合FutureTask也能创建线程,会有返回值。
SpringIoC的核心作用是?()
A.事务管理B.依赖注入C.AOP切面D.控制反转
答案:D。IoC(InverseofControl)即控制反转,核心是把对象创建和依赖管理交给Spring容器,DI(依赖注入)是IoC的实现方式。
以下关于异常的说法正确的是?()
A.编译时异常必须处理B.RuntimeException不需要处理C.catch块可以不写异常类型D.finally块一定执行
答案:A。编译时异常(如IOException)必须通过try-catch或throws声明处理;RuntimeException(如NullPointerException)可处理可不处理,但最好捕获;catch块必须指定异常类型;finally块在虚拟机退出等极端情况不执行(如System.exit(0))。
JVM内存模型中,存放对象实例的区域是?()
A.程序计数器B.虚拟机栈C.堆D.方法区
答案:C。堆是JVM最大的内存区域,用于存储对象实例和数组;方法区存类信息、常量、静态变量等。
以下哪个集合是线程安全的?()
A.ArrayListB.HashSetC.ConcurrentHashMapD.LinkedList
答案:C。ArrayList、HashSet、LinkedList都是线程不安全的;ConcurrentHashMap是JUC包下的线程安全集合,比Hashtable效率高。
关于static关键字的说法错误的是?()
A.static方法不能访问非static成员B.static变量属于类,不属于对象C.static类可以被实例化D.static代码块在类加载时执行
答案:C。static修饰的类只能是内部类(静态内部类),普通类不能用static修饰;静态内部类可以直接通过外部类访问,无需实例化外部类,但本身仍需实例化(除非内部是static成员)。
SQL中,用于查询表中唯一记录的关键字是?()
A.DISTINCTB.UNIQUEC.GROUPBYD.HAVING
答案:A。DISTINCT用于过滤查询结果中的重复记录(如SELECTDISTINCTnameFROMuser);UNIQUE是创建表时用于约束字段唯一的(如nameVARCHAR(20)UNIQUE)。
以下哪种不是Java的锁机制?()
A.synchronizedB.ReentrantLockC.VolatileD.ReadWriteLock
答案:C。Volatile是轻量级同步机制,只能保证可见性和禁止指令重排,不能保证原子性,不是锁;synchronized是隐式锁,ReentrantLock和ReadWriteLock是显式锁。
二、简答题(8题)
简单说下HashMap的底层原理(JDK1.8)?
答案:JDK1.8的HashMap底层是“数组+链表+红黑树”结构。数组叫哈希桶,每个元素是链表(或红黑树)的头节点;存数据时,先通过key的hash值计算数组下标,把数据放到对应桶的链表中;当链表长度超过8且数组容量≥64时,链表会