Java面试八股文基础篇

1、你是怎样理解OOP面向对象 难度系数:⭐

一种编程范式,以对象(数据+方法)为基本单元,核心是封装、继承、多态,旨在提高代码的复用性、扩展性和可维护性。


2、重载与重写区别 难度系数:⭐

重载(Overload)同一类中方法名相同、参数列表不同(编译时多态);重写(Override)子类重新定义父类方法(运行时多态)


3、接口与抽象类的区别 难度系数:⭐

接口强调"能做什么"(契约),支持多实现,方法默认public,变量static final;抽象类强调"是什么"(模板),单继承,可有构造方法和成员变量。


4、深拷贝与浅拷贝的理解 难度系数:⭐

浅拷贝复制对象的基本类型和引用地址,新旧对象共享内部对象;深拷贝递归复制所有引用对象,完全独立。


5、sleep和wait区别 难度系数:⭐

sleep让出CPU不释放锁(Thread方法);wait释放锁并进入等待(Object方法),需在同步块中。


6、什么是自动拆装箱 int和Integer有什么区别 难度系数:⭐

基本类型与包装类的自动转换。Integer是int的包装类,可处理null,支持对象操作;int默认值0,更省内存。


7、==和equals区别 难度系数:⭐

比较基本类型值或对象引用地址;equals是Object方法,默认同,通常被重写为比较内容。


8、String能被继承吗 为什么用final修饰 难度系数:⭐

不能,因为用final修饰,目的:保证不可变性(安全、缓存、字符串常量池、线程安全)。


9、String buffer和String builder区别 难度系数:⭐

StringBuffer线程安全(方法同步),性能稍低;StringBuilder线程不安全,性能更高。


10、final、finally、finalize 难度系数:⭐

final修饰类、方法、变量(不可变);finally保证代码块执行(异常处理);finalize是GC前调用的Object方法(已过时)。


11、Object中有哪些方法 难度系数:⭐

getClass、clone、finalize、hashCode、wait、equals、notify、notifyall、tostring


12、说一下集合体系 难度系数:⭐

两大接口------Collection(List、Set、Queue)和Map,提供数据存储和操作框架。


13、ArrarList和LinkedList区别 难度系数:⭐

ArrayList基于动态数组,随机访问快,增删慢(除尾部);LinkedList基于双向链表,增删快,随机访问慢。


14、HashMap底层是 数组+链表+红黑树,为什么要用这几类结构 难度系数:⭐⭐

数组(快速定位)、链表(解决哈希冲突)、红黑树(链表过长时转为树,保证O(log n)查询效率),三者平衡时间与空间。


15、HashMap和HashTable区别 难度系数:⭐

HashMap线程不安全,允许null键值;Hashtable线程安全(synchronized),不允许null。


16、线程的创建方式 难度系数:⭐

继承Thread类、实现Runnable接口、实现Callable接口(配合FutureTask)、使用线程池(ExecutorService)。


17、线程的状态转换有什么(生命周期) 难度系数:⭐

新建(New)→ 就绪(Runnable)→ 运行(Running)→ 阻塞(Blocked/Waiting/Timed Waiting)→ 终止(Terminated)


18、Java中有几种类型的流 难度系数:⭐

按方向分输入流、输出流;按单位分字节流、字符流;按功能分节点流、处理流。


19、请写出你最常见的5个RuntimeException 难度系数:⭐

NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、IllegalArgumentException、ArithmeticException


20、谈谈你对反射的理解 难度系数:⭐

运行时动态获取类的信息(方法、字段等)并操作对象,常用于框架、动态代理,但牺牲性能和安全。


21、什么是 java 序列化,如何实现 java 序列化 难度系数:⭐

将对象转为字节流(持久化/传输),实现Serializable接口,用ObjectOutputStream/ObjectInputStream完成。


22、Http 常见的状态码 难度系数:⭐

200 OK、301永久重定向、302临时重定向、400客户端错误、401未授权、403禁止访问、404未找到、500服务器内部错误。


23、GET 和POST 的区别 难度系数:⭐

GET参数在URL(长度受限、不安全),幂等,用于获取数据;POST参数在请求体(更安全、无大小限制),非幂等,用于提交数据。


24、Cookie 和Session 的区别 难度系数:⭐

Cookie客户端存储(大小限制,可持久);Session服务端存储(更安全,依赖Cookie携带SessionId)。


相关推荐
Shadow(⊙o⊙)4 分钟前
C中 memset enum malloc fputc fgetc fgets fread fwrite rewind指针回退
java·c语言·数据库
雾岛听蓝8 分钟前
Qt操作指南:信号与槽机制
开发语言·数据库·qt
我命由我123459 分钟前
Android buildSrc 模块问题:Gradle 的类 DefaultProject 被错误地尝试转换成 Apache Ant 的 Project 类
android·java·java-ee·kotlin·android jetpack·android-studio·android runtime
北风toto11 分钟前
IDEA设置自定义注释(已亲测),新创建类的注释,在方法上自定义注释,设置注释签名
java·intellij-idea·策略模式
文慧的科技江湖12 分钟前
光储充一体化系统落地 PRD 全功能清单 - 慧知开源充电桩平台
java·mysql·开源·springboot·慧知开源充电桩平台·充电重复订单解决方案源码
郝学胜-神的一滴13 分钟前
Python 多线程编程从入门到精通:原理+实战+最佳实践
开发语言·网络·python·pycharm
feng_you_ying_li14 分钟前
C++11,lambda,包装器
开发语言·数据结构·c++
sycmancia15 分钟前
Qt——布局管理区(二)
开发语言·前端·qt
好家伙VCC15 分钟前
**TEE在嵌入式安全中的应用实践:基于ARM TrustZone的加密存储方案设计与实现*
java·arm开发·python·struts·安全
一块小土坷垃16 分钟前
最近发现了一款很好玩的SBTI测试的APP
面试·职场和发展·sbti