Java面试题总结(乱序版,2024-08-17),应届生java开发工程师面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

7、外观模式

作用:封装一组交互类,一直对外提供接口。

JDK中体现:logging包。

8、享元模式

作用:共享对象、节省内存。

JDK中体现:Integer.valueOf、String常量池。

9、代理模式

作用:

(1)透明调用被代理对象,无须知道复杂实现细节;

(2)增加被代理类的功能;

JDK中体现:动态代理。

10、迭代器模式

作用:将集合的迭代和集合本身分离。

JDK中体现:Iterator

11、命令模式

作用:封装操作,使接口一致。

JDK中体现:Runable、Callable、ThreadPoolExecutor。

八、什么是 Spring 框架?Spring 框架有哪些主要模块?


Spring是一个控制反转和面向切面的容器框架。

Spring有七大功能模块:

1、Core

Core模块是Spring的核心类库,Core实现了IOC功能。

2、AOP

Apring AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常见的拦截器,供用户自定义和配置。

3、orm

提供对常用ORM框架的管理和支持,hibernate、mybatis等。

4、Dao

Spring提供对JDBC的支持,对JDBC进行封装。

5、Web

对Struts2的支持。

6、Context

Context模块提供框架式的Bean的访问方式,其它程序可以通过Context访问Spring的Bean资源,相当于资源注入。

7、MVC

MVC模块为spring提供了一套轻量级的MVC实现,即Spring MVC。

九、使用 Spring 框架能带来哪些好处?


1、轻量级框架、容器

Spring是一个容器,管理对象的生命周期和配置。基于一个可配置原型prototype,你的bean可以使单利的,也可以每次需要时都生成一个新的实例。

2、控制反转IOC

Spring通过控制反转实现松耦合。

3、支持AOP

Spring提供对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。

4、轻量级框架

5、方便测试

Spring提供Junit4的支持,可以通过注解方便测试spring程序。

6、对Java中很多API进行了封装

7、方便集成各种优秀框架

如Struts、hibernate、mybstis。

8、支持声明式事务处理

只需通过配置就可以完成对事务的管理,而无须手动编程。

十、什么是 Spring Boot?Spring Boot 有哪些优点?


1、Spring Boot简介

基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突、引用的不稳定性得到了解决。

2、Spring Boot 有哪些优点?

  • 快速构建项目,可以选一些必要的组件;

  • 对主流框架的无配置集成;

  • 内嵌Tomcat容器,项目可独立运行;

  • 删除了繁琐的xml配置文件;

  • 极大地提高了开发和部署效率;

  • 提供starter,简化maven配置;

3、SpringBoot有哪些缺点?

  • 版本迭代速度快,一些模块改动很大;

  • 由于无须配置,报错时很难定位;

十一、为什么要使用 hibernate?


1、hibernate对jdbc进行了封装,简化了JDBC的重复性代码;

2、hibernate对dao有一个封装类hibernateTemplate,可以继承它,实现简单的CRUD接口。

3、hibernate使用注解和配置文件,可以对实体类和映射文件进行映射;

4、hibernate有事务管理机制,保证了数据的安全性;

5、hibernate有一级缓存和二级缓存;

十二、mybatis 中 #{}和 ${}的区别是什么?


1、#{}带引号,${}不带引号;

2、#{}可以防止SQL注入;

3、${}常用于数据库表名、order by子句;

4、一般能用#{}就不要使用${};

十三、RabbitMQ的使用场景有哪些?


1、解决异步问题

例如用户注册,发送邮件和短信反馈注册成功,可以使用RabbitMQ消息队列,用户无需等待反馈。

2、服务间解耦

订单系统和库存系统,中间加入RabbitMQ消息队列,当库存系统出现问题时,订单系统依旧能正常使用,降低服务间耦合度。

3、秒杀系统

利用RabbitMQ的最大值,实现秒杀系统。

十四 、数据库的三范式是什么?


1、列不可再分;

2、每一行数据只做一件事,只与一列相关,主键;

3、每个属性都与主键有直接关系,而不是间接关系;

三大范式只是设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情结,当然要特殊对待,数据库设计最重要的是看需求和性能,需求>性能>表结构。

所以不能一味的追求三范式建立数据库。

十五、Redis是什么?都有哪些使用场景?


1、Redis是什么?

  • Redis是非关系型、基于内存的数据库,提供一定的持久化工厂,提供键值对形式的数据存储,数据类型包括string、list、set、hash等;

  • Redis支持多语言,使用方便;

  • 支持每秒十几万的读写操作,性能远超关系型数据库,支持集群、分布式、主从同步;

  • 具有一定的事务能力,保证了高并发的场景下数据的安全性和一致性;

2、Redis都有哪些使用场景?

  • 读取缓存用的数据(读操作远大于写操作的数据),比如首页。

  • 高速读写场合,如秒杀,抢红包等高并发场景。

十六、说一下 jvm 的主要组成部分?及其作用?


JVM包括类加载子系统、堆、方法区、栈、本地方法栈、程序计数器、直接内存、垃圾回收器、执行引擎。

1、类加载子系统

类加载子系统负责加载class信息,加载的类信息存放于方法区中。

2、直接内存

直接内存是在Java堆外的、直接向系统申请的内存空间。访问直接内存的速度会由于Java堆。出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。

3、垃圾回收器

垃圾回收器可以对堆、方法区、直接内存进行回收。

4、执行引擎

执行引擎负责执行虚拟机的字节码,虚拟机会使用即时编译技术将方法编译成机器码后再执行。

十七、说一下 jvm 运行时数据区?


运行时数据区包括堆、方法区、栈、本地方法栈、程序计数器。

1、堆

堆解决的是对象实例存储的问题,垃圾回收器管理的主要区域。

2、方法区

方法区可以认为是堆的一部分,用于存储已被虚拟机加载的信息,常量、静态变量、即时编译器编译后的代码。

3、栈

栈解决的是程序运行的问题,栈里面存的是栈帧,栈帧里面存的是局部变量表、操作数栈、动态链接、方法出口等信息。

  • 栈帧

每个方法从调用到执行的过程就是一个栈帧在虚拟机栈中入栈到出栈的过程。

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
入栈到出栈的过程。

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

[外链图片转存中…(img-TqH0ya13-1713067462581)]

一线互联网P7面试集锦+各种大厂面试集锦

[外链图片转存中…(img-sTFTPUXD-1713067462581)]

学习笔记以及面试真题解析

[外链图片转存中…(img-LoSnbAbk-1713067462582)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-zmvuX35O-1713067462582)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值