Java 目前仍然是业界应用最为广泛的编程语言,在很多互联网大厂,深度掌握 Java 是中高级测试开发/测试架构师的必备核心技能。技术面试中,Java
编程技能也一直是考核重点。
本文整理汇总了常见的经典 Java
面试题目(较偏向初级和中级水平),供各位测试开发同学参考。这里只给出问题,不列出参考答案(很多问题答案并不唯一),有兴趣的可以留言讨论,进阶学习文末加群。
一、基础篇
1.1、Java 基础
- 面向对象的特征:继承、封装和多态
- final, finally, finalize 的区别
- Exception、Error、运行时异常与一般异常有何异同
- 请写出 5 种常见到的 runtime exception
- int 和 Integer 有什么区别,Integer 的值缓存范围
- 包装类,装箱和拆箱
- String、StringBuilder、StringBuffer
- 重载和重写的区别
- 抽象类和接口有什么区别
- 说说反射的用途及实现
- 说说自定义注解的场景及实现
- HTTP 请求的 GET 与 POST 方式的区别
- Session 与 Cookie 区别
- 列出自己常用的 JDK 包
- MVC 设计思想
- equals 与 == 的区别
- hashCode 和 equals 方法的区别与联系
- 什么是 Java 序列化和反序列化,如何实现 Java 序列化?或者请解释 Serializable 接口的作用
- Object 类中常见的方法,为什么 wait notify 会放在 Object 里边?
- Java 的平台无关性如何体现出来的
- JDK 和 JRE 的区别
- Java 8 有哪些新特性
1.2、Java 常见集合
- List 和 Set 区别
- Set 和 hashCode 以及 equals 方法的联系
- List 和 Map 区别
- Arraylist 与 LinkedList 区别
- ArrayList 与 Vector 区别
- HashMap 和 Hashtable 的区别
- HashSet 和 HashMap 区别
- HashMap 和 ConcurrentHashMap 的区别
- HashMap 的工作原理及代码实现,什么时候用到红黑树
- 多线程情况下 HashMap 死循环的问题
- HashMap 出现 Hash DOS 攻击的问题
- ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数
- 手写简单的 HashMap
- 看过那些 Java 集合类的源码
1.3、进程和线程
- 线程和进程的概念、并行和并发的概念
- 创建线程的方式及实现
- 进程间通信的方式
- 说说 CountDownLatch 和 CyclicBarrier 原理和区别
- 说说 Semaphore 原理
- 说说 Exc