版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CSDN高频面试题及详细答案(实战口语版)说明:本题库汇总CSDN平台历年高频面试真题,答案贴合一线开发面试口语习惯,摒弃书面化套话,侧重实战理解和落地经验,适配Java后端开发岗位初、中级面试。一、Java基础面试题1.说说==和equals的区别这是Java最基础的高频考点,核心区别是比较的内容不一样。==是运算符,对于基本数据类型,直接比较数值是否相等;对于引用数据类型,比较的是对象的内存地址,也就是判断是不是同一个对象。equals是Object类的方法,默认实现和==一样,也是比较内存地址。但像String、Integer这些常用类都重写了这个方法,重写后不再比较地址,而是直接比较对象的内容值是否相等。实战中,字符串比较内容一律用equals,避免==导致的常量池地址判断问题。2.String、StringBuilder、StringBuffer的区别核心差异在可变性和线程安全,日常开发优先用StringBuilder。String是不可变字符串,底层是final修饰的字符数组。每次拼接、修改字符串都会生成新对象,频繁操作会产生大量垃圾对象,效率很低,适合少量固定字符串场景。StringBuilder和StringBuffer是可变字符串,修改不会新建对象,效率更高。其中StringBuilder线程不安全,没有锁机制,单线程环境速度最快;StringBuffer加了synchronized锁,线程安全,但多了锁竞争开销,速度偏慢。业务场景区分:单线程字符串拼接用StringBuilder,多线程共享字符串操作才用StringBuffer。3.重载和重写的区别重载是同一个类里的方法特性,重写是父子类继承后的方法特性。重载:方法名相同,参数列表(个数、类型、顺序)不同,返回值、修饰符不做限制。属于编译时多态,代码编译阶段就能确定调用哪个方法。比如同一个类里多个不同参数的构造方法就是典型重载。重写:发生在子类和父类之间,子类重写父类的非私有、非final、非静态方法。要求方法名、参数列表、返回值完全一致,访问权限不能比父类更严格。属于运行时多态,程序运行时才确定执行子类方法。4.Java集合ArrayList和LinkedList区别底层结构决定了两者的性能差异,适配不同业务场景。ArrayList底层是动态数组,内存连续。随机查询、遍历速度非常快,通过下标直接定位元素;但插入、删除元素时需要移动数组元素,效率偏低,适合查询多、增删少的场景。线程不安全。LinkedList底层是双向链表,内存不连续。没有下标查询,随机访问效率极低;但增删元素只需要修改节点指针,不需要移动数据,频繁增删场景性能更好。同时它实现了Deque接口,可作为栈、队列使用。线程不安全。二、Spring&SpringBoot核心面试题1.什么是IOC?IOC容器的作用IOC就是控制反转,是Spring的核心思想。简单说就是把对象的创建、管理、依赖注入权限,从代码业务逻辑中交给Spring容器。传统开发中,我们需要手动new对象、维护对象依赖,耦合度很高;引入IOC后,开发者只需要声明依赖,容器自动创建对象、注入依赖、管理对象生命周期。IOC容器的核心作用:解耦、统一管理bean、支持依赖注入、方便后续AOP扩展、统一资源管理。Spring的BeanFactory和ApplicationContext就是典型的IOC容器。2.什么是AOP?日常项目怎么用AOP是面向切面编程,核心是在不修改原有业务代码的前提下,对方法进行增强,实现业务逻辑和通用逻辑的解耦。它的原理是动态代理,针对目标方法执行前后、异常、返回等节点切入,执行通用逻辑。日常项目中用得非常多,比如:统一日志记录、接口权限校验、事务控制、方法耗时统计、参数校验、异常统一处理。常用注解:@Before、@After、@Around、@AfterThrowing,其中@Around功能最强,可以包裹整个方法执行过程。3.SpringBoot自动配置原理SpringBoot自动配置核心依靠启动注解+SPI机制+条件注解,省去SSM繁琐的XML配置。1.项目启动类的@SpringBootApplication注解,整合了@EnableAutoConfiguration核心注解;2.@EnableAutoConfiguration会通过SPI机制,读取META-INF/spring.factories文件中预定义的自动配置类;3.加载配置类后,通过@Conditional系列条件注解判断环境,满足条件就自动装配Bean,比如容器中没有手动创建数据源Bean时,自动加载默认数据源配置;4.同时支持配置文件自定义参数,覆盖默认自动配置,兼顾便捷性和灵活性。4.Spring事务传播行为有哪些?常用场景Spring一共7种事务传播行为,开发中最常用的是REQUIRED、REQUIRES_NEW、SUPPORTS。1.REQUIRED(默认):当前有事务就加入,没有就新建事务,绝大多数业务增删改都用这个;2.REQUIRES_NEW:无论当前是否有事务,都新建一个独立事务,适用于日志记录、消息推送等不随主事务回滚的操作;3.SUPPORTS:有事务就加入,没事务就非事务运行,适合查询业务;4.NOT_SUPPORTED:始终非事务运行;5.MANDATORY:必须在事务内运行,否则报错;6.NEVER:必须非事务运行,否则报错;7.NESTED:嵌套事务,依赖父事务,父事务回滚则子事务必回滚,子事务回滚不影响父事务。三、MySQL数据库面试题1.InnoDB和MyISAM区别两者是MySQL最常用的存储引擎,核心差异在事务、锁、崩溃恢复。InnoDB:支持事务、支持行级锁、支持外键、支持崩溃自动恢复,数据安全性高。增删改查均衡,适合业务数据表,是MySQL默认引擎。缺点是查询速度略低于MyISAM。MyISAM:不支持事务、不支持行锁、不支持外键,只有表级锁。查询速度极快,占用资源少。但并发写入性能差,崩溃后数据可能丢失,一般只用于纯查询的静态数据表。2.索引失效的常见场景日常慢查询优化高频考点,实际开发中这些场景会直接导致索引失效,走全表扫描:1.索引列使用like%xxx模糊查询,前置通配符会失效,xxx%可以走索引;2.索引列参与运算、函数操作,比如whereage+1=20、wheredate(date_time)='2026-01-01';3.使用!=、<>、notin、notexists非等值查询;4.字符串字段不加引号,隐式类型转换导致索引失效;5.联合索引不遵循最左前缀原则,跳过前置列直接查询后置列;6.MySQL优化器判断全表扫描比索引查询更快,主动放弃索引。3.什么是MVCC?原理是什么MVCC是多版本并发控制,是InnoDB实现读写不加锁、提升并发性能的核心机制,主要用于解决事务隔离级别中的可重复读问题。核心原理:InnoDB会为每一行数据维护多个历史版本,同时生成事务ID、undolog日志、readview视图。读操作时,当前事务通过readview匹配数据版本,读取符合隔离规则的历史版本数据,不会阻塞写操作;写操作只锁定当前最新版本数据,实现读写并发。简单来说,就是读旧版本数据、写新版本数据,互不阻塞,大幅提升数据库并发能力。四、计算机网络面试题1.HTTP和HTTPS区别1.安全性:HTTP是明文传输,无加密,数据容易被窃取、篡改;HTTPS基于SSL/TLS加密传输,数据安全可靠;2.端口不同:HTTP默认80端口,HTTPS默认443端口;3.证书要求:HTTPS需要CA机构颁发的数字证书,HTTP无需证书;4.性能差异:HTTPS需要握手、加密解密操作,相比HTTP会有少量性能损耗;5.协议层级:HTTP是应用层协议,HTTPS是HTTP+SSL/TLS的组合协议。2.TCP三次握手、四次挥手原理三次握手(建立连接):核心是确认双方收发能力正常,确保连接可靠。1.客户端发送SYN报文,请求建立连接;2.服务端收到后,返回SYN+ACK报文,确认收到请求并同意连接;3.客户端收到确认报文,发送ACK报文,连接建立成功。四次挥手(断开连接):TCP连接是全双工,双方都要单独关闭读写通道,所以需要四次。1.主动关闭方发送FIN报文,告知对方不再发送数据;2.被动关闭方返回ACK报文,确认收到关闭请求,此时还能继续接收数据;3.被动方数据传输完毕后,发送FIN报文,请求关闭自身通道;4.主动方返回ACK报文,双方连接彻底断开。3.常见HTTP状态码含义1xx临时响应:100继续请求,用于大文件分块传输;2xx请求成功:200正常响应、201资源创建成功;3xx重定向:301永久重定向、302临时重定向、304资源未修改,走本地缓存;4xx客户端错误:400参数错误、401未登录、403权限不足、404资源不存在;5xx服务端错误:500服务器内部异常、502网关错误、503服务不可用。五、Redis面试题1.Redis为什么快Redis高性能不是单一原因,是多方面设计共同决定的:1.纯内存操作:所有数据读写都在内存中完成,避免磁盘IO耗时;2.单线程模型:核心读写逻辑单线程,避免多线程锁竞争、线程切换开销;3.IO多路复用:采用epoll机制,单线程监听多个客户端连接,高效处理并发请求;4.数据结构优化:底层封装多种高效数据结构,适配不同场景;5.简单协议:Redis自定义简单文本协议,解析开销极低。2.Redis缓存穿透、击穿、雪崩解决方案缓存穿透:查询数据库和缓存都不存在的数据,比如恶意请求无效ID,直接打穿缓存访问数据库。解决方案:缓存空数据、布隆过滤器拦截无效请求、接口参数校验。缓存击穿:热点key过期瞬间,大量并发请求直接访问数据库。解决方案:热点key永不过期、加分布式锁、互斥锁限流。缓存雪崩:大量key同时过期,或Redis服务宕机,导致所有请求压向数据库。解决方案:过期时间加随机值、Redis集群高可用、服务熔断降级、多级缓存。六、项目实战&算法面试题1.项目中怎么解决接口并发问题结合实际业务,我主要从三个层面处理并发问题:1.数据库层:核心业务加行锁、乐观锁版本号控制,防止超卖、数据覆盖问题;2.缓存层:用Redis分布式锁保证同一资源同一时间只有一个请求操作,解决集群环境并发竞争;3.接口层:添加限流注解、Guava本地限流,拦截高频恶意请求,配合熔断降级避免服务雪崩。2.简单算法:数组查找重复元素(面试手写)题目:给定一个整数数组,找出所有重复的元素,要求时间复杂度O(n)、空间复杂度O(1)解题思路:利用数组下标标记法,遍历数组,以元素绝对值-1为下标,将对应位置元素取负;遍历中发现当前下标元素已为负,说明该元素重复。核心代码:java
publicList<Integer>findDuplicates(int[]nums){
List<Integer>res=newArrayList<>();
for(intx:nums){
intidx=Math.abs(x)-1;
if(nums[idx]<0){
res.add(Math.abs(x));
}else{
nums[idx]=-nums[idx];
}
}
returnres;
}3.项目中遇到的最大难点及解决过程这是面试高频主观题,给大家一套真实落地回答模板,不空洞、有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省汉中东辰外国语学校2027届高三上学期第二次模拟考试数学试卷(含答案)
- 2026年广西壮族自治区河池市公务员人员招聘笔试参考试题及答案详解
- 2026年辽阳市弓长岭区事业单位人员招聘笔试备考试题及答案详解
- 2026年沈阳市苏家屯区公务员人员招聘考试参考试题及答案详解
- 2026年咸宁市咸安区公务员人员招聘考试备考题库及答案详解
- 2026年克拉玛依市独山子区公务员人员招聘笔试参考题库及答案详解
- 2025-2026学年宝宝班绘画说课稿
- 2025-2026学年1分钟跳绳说课稿
- 2025年呼和浩特市新城区公务员人员招聘考试试题及答案详解
- 2025年邯郸市峰峰矿区公务员人员招聘笔试试题及答案详解
- 2026年非融资担保服务行业市场深度调查及投资规划报告及未来五至十年区域市场差异与机会
- 院前急救病历书写规范与质量评价标准
- 2026年秋季部编版九年级上册《道德与法治》主要知识点
- 自动化装置验收流程及标准
- 中专学校实习学生管理工作总结范文
- 河北省石家庄市等2地2025-2026学年高二上学期10月月考物理试题
- 猪场非瘟质保协议书
- 四季的星空课件
- 第一单元《红色足迹时代号角(一)》第2课《解放区的天》课件粤教花城版七年级音乐上册
- 临床本科招聘考试题目及答案2025年版
- 小学生篮球规则教学课件
评论
0/150
提交评论