JAVA面经整理(2024.6)(二)

1.Springboot自动装配原理?

@SpringbootApplication注解中有@EnableAutoConfiguration注解,EnableAutoConfiguration中有个@Import({AutoConfigurationImportSelector.class}),中会有导入所有META-INF/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中的全类名,然后解析注册条件,把满足注册条件的bean对象自动注入到IOC容器中.

2.Springboot相比于Spring有哪些提升?

开箱即用,没有代码生成,也无需XML配置,可以自动配置

3.spring事务传播级别  

REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED

4.spring事务失效场景

1.访问权限问题

2.方法用 final 修饰

3.方法内部调用

4.未被 spring 管理

5.多线程调用

6.表不支持事务

7.错误的传播特性

8.自己吞了异常

9.手动抛了别的异常

10.自定义了回滚异常

11.嵌套事务回滚多了

5.Linux怎么把一个文件传到另一台服务器

使用scp命令比如:

scp local_file.txt user@remote_host:/path/to/destination/

6.https的加密算法有哪些?

对称加密;非对称加密.

7.对称加密和非对称加密二者的区别

对称加密:加密和解密使用同一把密钥.速度快,但是需要通信双方保证密钥的安全性.

非对称加密:一对密钥(公钥和私钥),使用其中一个密钥用于加密,另一个密钥用于解密.安全性高,但是计算速度慢.

针对耗时慢,采用非对称加密的方式传递对称加密的密钥,后续数据通信使用对称密钥加解密.比如有非对称密钥A,A',客户端向服务端发起请求,服务端发送A给客户端,客户端生成对称加密的密钥X,并采用A加密发送给服务端,服务端采用A'解密,得到对称密钥X.接下来所有数据都通过X加密解密.

但是这会导致中间人攻击问题.服务器端有公钥A,私钥A',把公钥A传输给客户端,中间人劫持公钥A,替换成自己的公钥B,客户端收到公钥B,生成对称密钥X,使用公钥B加密X传输给服务器端,中间人劫持X,用自己的私钥B'解密X,再用之前劫持到的公钥A加密X传输给服务器.从而以后所有的采用X加密的数据都可被中间人解密出现安全问题.

8.前端有一个慢接口,如何排查?

ping看看网络怎么样,然后查看服务器资源使用情况,再看看是数据库否存在慢查询,缓存命中率,最后看看优化代码从而提升速度.

9.慢sql怎么排查

先通过慢查询日志看看是哪个sql慢.然后explain命令看看为什么慢.

10.聚簇索引和非聚簇索引的区别

聚簇索引指的是叶子节点挂的是每一条记录的数据.一张表只有一个聚簇索引.

如果存在主键,主键索引就是聚集索引。
如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索
引。

非聚簇索引指的是二级索引,叶子节点关联的是对应行记录的主键,如果不考虑覆盖索引的话,需要二次回表查询.

11.查看cpu资源情况的linux命令

top或者htop

12.Rocketmq数据消费出现异常时,你如何保证后续数据有序成功被消费?

幂等.

13.线程和进程的区别?

进程是CPU分配资源的最小单位,线程是CPU调度的最小单位.

14.说一下你对DDD的理解?

领域驱动设计分为用户接口层,应用服务层,领域服务层和基础设施层.

用户接口层:界面展示.

应用服务层:日志监控,权限认证.参数验证.错误处理.

领域服务层:业务逻辑.

基础设施层:提供基础设施的能力,数据存储,事件总线以及缓存.

主要概念有实体,值对象,聚合和聚合根,领域事件,限界上下文.

16.volatile关键字讲一下

满足可见性:本质上使用内存屏障实现,内存屏障是靠处理器提供了内存屏障指令实现的.

对volatile写会触发写屏障写入主内存,对volatile读会触发读屏障从主内存读值.

防止指令重排:本质上也是使用内存屏障实现.

满足以下规则:第二个操作是volatile写,第一个操作无论是普通读写还是vloatile读都不能指令重排,第一个操作是volatile读,第二个操作无论是普通读写还是volatile写都不能指令重排.如果第一个操作是volatile写,第二个操作是volatile读不能指令重排.

17.在项目部署需要考虑到什么?

考虑硬件要求:比如服务器内存,网络速度,磁盘空间.

考虑到高并发情况:使用jmeter测试.

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值