中通面经

简介: 中通面经

中通面经

1、Springboot的启动流程是怎么样的?

new SpringApplication():

在SpringApplication的构造函数中,调用了一个initialize方法,所以他的初始化逻辑直接看这个initialize方法就行了。

1、添加源:将提供的源(通常是配置类)添加到应用的源列表中

2、设置web环境:判断应用是否应该运行在web环境中,这会影响后续的web相关配置

3、加载初始化器:从spring.factories文件中加载所有列出的ApplicationContextInitializer实现,并将他们设置到SpringApplication实例中,以便在应用上下文的初始化阶段执行他们。

4、设置监听器:加载和设置ApplicationListener实例,以便应用能够响应不同的事件。

5、确定主应用类:确定主应用类,这个应用程序类通常是包含public static void main(String[] args)方法的类,是启动整个SpringBoot应用的入口点

这里的第三步,加载初始化器这一步是springboot的自动配置的核心,因为在这一步会从spring.factories文件中加载并实例化指定类型的类。

SpringApplication.run

这个方法是SpringApplication类的核心,用于启动Spring Boot应用。

  • 启动&停止计时器
  • 获取和启动监听器
  • 装配环境参数(application.properties文件中的属性,环境变量、系统属性等)
  • 打印Banner
  • 创建应用上下文(到这一步真的开始启动了,第一步就是先要创建一个Spring的上下文出来,只有有了这个上下文才能进行Bean的加载、配置等工作)
  • 准备上下文
  • 刷新上下文(Spring启动的核心步骤,实例化所有的bean、设置他们之间的依赖关系以及执行其他的初始化任务、创建BeanFactory实例化Bean、web容器的启动)

总体框架

2、项目中哪里使用到了线程池?

3、讲一下线程池的执行原理?

4、线程池参数的设置是如何设置的?

5、MySQL的隔离级别?

6、AOP?切点,表达式,自己怎么手写一个AOP?(X)

7、redis是如何删除数据的?

8、redis内存淘汰机制?

9、redis的持久化机制?

10、redis底层数据结构?(SDS+)

11、redis跳表?

12、双重判定锁?

13、用的lock?为什么不用tryLock?

14、redis的分布式锁的底层实现原理?(看门狗机制说一下)

15、你在场景中要不要设置这个等待时间?

16、超卖问题的解决方案?

17、超卖问题怎么保证一定不会出现问题?

18、开发工具?mybatisplus ? mybatis

19、不同MQ的区别,项目中用的哪个?rocketMQ和rabbitMQ的区别?为什么rocketMQ的吞吐量高与rabbitMQ?(rocketMQ基于集群的方式,rabbitMQ是基于单机)

20、缓存场景一致性?

21、用过哪些大模型吗?写代码的时候?

22、反问?

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
12月前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
1215 5
|
11月前
|
缓存 前端开发 API
|
12月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
638 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
12月前
|
缓存 网络协议 JavaScript
【HTTP】构造HTTP请求和状态码
【HTTP】构造HTTP请求和状态码
190 1
【HTTP】构造HTTP请求和状态码
|
12月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
1359 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
11月前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
11月前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
|
机器学习/深度学习 算法 C#
C# | 凸包算法之Andrew‘s,获取围绕一组点的凸多边形的轮廓点
这篇关于凸包算法的文章,本文使用C#和Andrew’s算法来实现凸包算法。 首先消除两个最基本的问题: 什么是凸包呢? 凸包是一个包围一组点的凸多边形。凸多边形是指多边形中的每个内角都小于180度的多边形。 凸包算法有什么用呢? 凸包算法的作用是找到这个凸多边形,并且使用最少的点来绘制出它的轮廓。凸包算法在计算机图形学、计算几何和机器学习等领域中有着广泛的应用。
359 0
|
缓存 NoSQL 关系型数据库
|
缓存 NoSQL 应用服务中间件
Redis实战篇
Redis实战篇