Java面试全攻略(基础 + 集合 + 并发 + JVM + 框架)

一、Java基础核心

1. 面向对象三大特性

1)封装

隐藏内部实现,只暴露接口,提高安全性。

2)继承

子类可以复用父类代码,提高代码复用性。

3)多态

父类引用指向子类对象,编译看左边,运行看右边。


2. 重载与重写

重载(Overload)

发生在同一个类中,方法名相同,参数不同。

重写(Override)

发生在父子类中,方法名、参数必须相同,返回值类型兼容,访问权限不能更严格。


3. String相关

String、StringBuilder、StringBuffer区别:

String

不可变对象,线程安全,性能较低。

StringBuilder

可变对象,线程不安全,性能高。

StringBuffer

可变对象,线程安全,性能中等。

为什么String不可变:

底层是final修饰的字符数组,保证了字符串的安全性和可复用性(字符串常量池)。


二、集合框架

1. List、Set、Map区别

List

有序,可以重复。

Set

无序,不可重复。

Map

键值对结构,key唯一。


2. HashMap底层原理

在JDK1.8中,HashMap结构为:

数组 + 链表 + 红黑树

执行流程:

1)根据key计算hash值

2)定位数组下标

3)发生哈希冲突时形成链表

4)链表长度达到8时转换为红黑树,提高查询效率


3. HashMap为什么线程不安全

多线程情况下可能出现:

1)数据覆盖

2)链表形成环(JDK1.7)

解决方案:

使用ConcurrentHashMap代替。


4. ArrayList与LinkedList

ArrayList

底层是数组,查询快,插入慢。

LinkedList

底层是双向链表,插入快,查询慢。


三、并发编程

1. 线程创建方式

1)继承Thread类

2)实现Runnable接口(推荐)

3)实现Callable接口(支持返回值)


2. synchronized与Lock

synchronized

使用简单,自动释放锁。

Lock(如ReentrantLock)

更灵活,可以手动加锁和释放锁,支持公平锁。


3. 线程池核心参数

线程池核心类是ThreadPoolExecutor,主要参数:

corePoolSize

核心线程数

maximumPoolSize

最大线程数

workQueue

任务队列

keepAliveTime

线程空闲时间

handler

拒绝策略


4. 线程池执行流程

1)线程数小于核心线程数,直接创建线程执行任务

2)否则进入阻塞队列

3)队列满了且线程数未达到最大值,创建新线程

4)超过最大线程数,执行拒绝策略


四、JVM

1. JVM内存结构

主要包括:

1)程序计数器

2)虚拟机栈

3)本地方法栈

4)堆

5)方法区


2. 堆与栈的区别

存储方法调用和局部变量,线程私有。

存储对象实例,线程共享。


3. 垃圾回收机制

常见算法:

1)标记清除

2)复制算法

3)标记整理

常见垃圾收集器:

1)Serial

2)Parallel

3)CMS

4)G1


五、Spring相关

1. Spring核心

IOC(控制反转)

对象由容器管理,而不是手动创建。

AOP(面向切面编程)

在不修改代码的情况下增强功能,如日志、事务。


2. Spring事务

事务四大特性:

1)原子性

2)一致性

3)隔离性

4)持久性

常见隔离级别:

1)读未提交

2)读已提交

3)可重复读

4)串行化


3. SpringMVC执行流程

1)客户端发送请求

2)DispatcherServlet接收请求

3)HandlerMapping匹配处理器

4)HandlerAdapter执行方法

5)返回ModelAndView

6)视图解析并返回结果


六、MyBatis

1. MyBatis工作流程

1)读取配置文件

2)创建SqlSessionFactory

3)获取SqlSession

4)执行SQL

5)返回结果


2. MyBatis与Hibernate区别

MyBatis

需要手写SQL,灵活性高。

Hibernate

自动生成SQL,开发效率高,但灵活性较低。


七、计算机网络

1. HTTP与HTTPS

HTTP

明文传输,不安全。

HTTPS

基于SSL加密,安全性高。


2. TCP三次握手

1)客户端发送SYN

2)服务端返回SYN + ACK

3)客户端发送ACK

建立连接完成。


3. 四次挥手

1)客户端发送FIN

2)服务端ACK

3)服务端发送FIN

4)客户端ACK

连接关闭。


八、总结

Java面试核心考察内容主要包括:

1)基础语法与面向对象

2)集合框架(尤其是HashMap)

3)并发编程与线程池

4)JVM内存与垃圾回收

5)Spring与MyBatis框架

6)计算机网络基础

相关推荐
行者全栈架构师1 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_02 小时前
mac(m5)平台编译openjdk
java
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java