Java核心技术面试题

Java面试题分享

通过网盘分享的文件:面试题等2个文件

链接: https://pan.baidu.com/s/1Xw0PzkfAmL8uesYBvrW2-A?pwd=pebt 提取码: pebt

一、Java基础篇
1. OOP面向对象

面向对象编程(OOP)是一种编程范式,它利用"类"和"对象"来设计程序结构。OOP具有三大特性:

‌继承‌:从已有类得到继承信息创建新类的过程。

‌封装‌:把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。

‌多态性‌:允许不同子类型的对象对同一消息作出不同的响应。
2. 重载与重写

‌重载‌:发生在本类,方法名相同但参数列表不同。

‌重写‌:发生在父类与子类之间,方法名、参数列表和返回值类型都必须相同,且访问权限不能比父类中被重写的方法更低。
3. 接口与抽象类

‌接口‌:要被类实现,支持多继承,只能声明常量和方法签名。

‌抽象类‌:要被子类继承,支持单继承,可以有构造器、成员变量和方法实现。
4. 深拷贝与浅拷贝

‌浅拷贝‌:只拷贝基本数据类型的值和实例对象的引用地址。

‌深拷贝‌:拷贝基本数据类型的值以及实例对象所引用的对象。
5. sleep和wait

‌sleep‌:属于Thread类,释放CPU但不释放锁资源。

‌wait‌:属于Object类,释放CPU并释放锁资源,需与synchronized一起使用。
6. 自动拆装箱

‌装箱‌:将基本类型转换成包装类对象。

‌拆箱‌:将包装类对象转换成基本类型的值。
7. ==和equals

‌==‌:比较基本数据类型时比较值,比较引用数据类型时比较地址。

‌equals‌:默认比较对象地址,可重写以比较对象内容。
8. String的final修饰

String类被final修饰,不能被继承,以保证其不变性和安全性。

9. StringBuffer与StringBuilder

‌StringBuffer‌:线程安全,方法大多使用synchronized修饰。

‌StringBuilder‌:线程不安全,但效率更高。
10. final、finally、finalize

‌final‌:修饰类、变量和方法,表示不可继承、不可变和不可重写。

‌finally‌:用于try-catch语句块中,无论是否发生异常都会执行。

‌finalize‌:在对象被垃圾回收前调用的方法,用于资源清理。
二、Java高级篇
1. HashMap底层源码

HashMap在JDK 1.8中由数组+链表+红黑树实现,通过哈希表存储键值对,解决哈希冲突时使用链表或红黑树。

2. JVM内存结构

JVM内存分为方法区、虚拟机栈、本地方法栈、堆和程序计数器。

‌方法区‌:存储类信息、常量、静态变量等。

‌虚拟机栈‌:为每个方法执行创建栈帧,存储局部变量表、操作数栈等。

‌本地方法栈‌:为Native方法服务。

‌堆‌:存储对象实例,是垃圾回收的主要区域。

‌程序计数器‌:记录当前线程执行的字节码行号。
3. 垃圾收集方法

‌复制算法‌:用于年轻代,效率高但内存消耗大。

‌标记-清除‌:用于老年代,效率较低且可能产生碎片。

‌标记-整理‌:也是用于老年代,效率较低但不会产生碎片。
4. 线程池

线程池通过复用线程来降低资源消耗和提高响应速度,常用的线程池有CachedThreadPool、FixedThreadPool、SingleThreadExecutor和ScheduledThreadPool。

5. synchronized与Lock

‌synchronized‌:隐式锁,由JVM管理,可重入。

‌Lock‌:显式锁,提供灵活的锁机制,如超时锁和可中断锁。

  1. ConcurrentHashMap

ConcurrentHashMap是线程安全的Map容器,在JDK 1.8中通过数组+链表+红黑树实现,采用CAS和synchronized保证线程安全。

三、Java框架篇
1. SpringMVC工作流程

用户请求通过DispatcherServlet分发到HandlerMapping,找到处理器后通过HandlerAdapter调用,处理完成后返回ModelAndView,最后通过ViewResolver渲染视图并响应用户。

2. Spring常用注解

‌@Component‌:标识受Spring管理的组件。

‌@Controller‌:标识表示层组件。

‌@Service‌:标识业务层组件。

‌@Repository‌:标识持久层组件。

‌@Autowired‌:自动装配。

‌@RequestMapping‌:完成请求映射。
3. Spring事务管理

Spring支持声明式事务管理和编程式事务管理,通过@Transactional注解实现声明式事务管理,通过TransactionTemplate实现编程式事务管理。

四、MySQL篇
1. MySQL事务

MySQL事务具有原子性、一致性、隔离性和持久性(ACID特性),支持四种隔离级别:读未提交、读提交、可重复读和串行化。

2. MyISAM与InnoDB

‌MyISAM‌:不支持事务,表级锁,读写互斥。

‌InnoDB‌:支持事务,行级锁,读写不互斥。
3. 索引优化

避免在索引列上使用函数和表达式。

使用合适的索引类型(B+树索引)。

对查询条件、排序和分组字段建立索引。
五、Redis篇
1. Redis数据类型

Redis支持多种数据类型,包括字符串、列表、集合、有序集合、哈希和位图等。

2. Redis持久化

Redis支持RDB和AOF两种持久化方式,RDB通过快照方式持久化数据,AOF通过记录写操作日志方式持久化数据。

3. Redis事务

Redis事务通过MULTI、EXEC、DISCARD等命令实现,事务中的命令要么全部执行,要么全部不执行。

4. 缓存策略

‌缓存击穿‌:通过分布式锁解决。

‌缓存雪崩‌:通过设置不同的过期时间避免。

‌缓存穿透‌:通过空结果缓存或布隆过滤器解决。

以上是对Java核心技术要点的详细解析,涵盖了Java基础、高级特性、框架使用、MySQL数据库以及Redis缓存等方面。希望这些内容能对大家的学习和工作有所帮助。

相关推荐
S***26751 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
汤姆yu1 小时前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
Yue丶越1 小时前
【C语言】字符函数和字符串函数
c语言·开发语言·算法
马剑威(威哥爱编程)1 小时前
鸿蒙6开发视频播放器的屏幕方向适配问题
java·音视频·harmonyos
JIngJaneIL2 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
翔云 OCR API2 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
V***u4532 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
这是程序猿2 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦2 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学2 小时前
C++ --- 多态
开发语言·c++