第一次遇到这种公司,哈哈,boss上看是普通的公司招聘,面试也很简单就给offer,但是是要跟外包公司签合同,上家工资不高所以这家也压的很低
java中高级开发工程师 20-23K·14薪
1、 能独立负责业务板块,按照业务需求进行业务需求分析、评审和设计
2、 进行软件详细设计和编码实现
3、 相关文档编写、整理和维护
4、 参与软件系统的方案讨论、技术调研、系统分析、重构、优化
任职资格:
1、计算机或其他相关专业毕业,本科以上学历;
2、5年及以上java开发工作经验;
3、精通Java编程语言,熟练运用SpringMVC,mybatis,SpringBoot等Java EE框架
4、具有较强的逻辑思维以及系统分析和文档编写能力,良好的编程风格,能快速学习和掌握新技术
6. 了解SpringCloud等微服务框架
7.熟悉Mysql数据库,熟悉Tomcat,Nginx
9 . 熟练使用svn,git等项目管理工具;
10. 具备较强的自学能力,团队精神及抗压能力,思路清晰,善于思考,能独立分析和解决问题;
希望提前准备一下java基础知识 包括 jvm 集合 锁 spring mysql
-
jvm内存结构
-
类加载是存在哪的
-
arraysList底层
-
synchronized和rentrenlock
-
spring aop和Ioc概念
-
spring aop原理
Spring AOP 是构建在动态代理基础上,因此 Spring 对 AOP 的支持局限于方法级别的拦截
Spring AOP 的工作原理:
- 切面(Aspect) :在 Spring AOP 中,切面是一组关注点和通知(advice)的集合。通知定义了在哪个连接点(join point)执行什么操作。切面可以包括前置通知(before advice)、后置通知(after advice)、环绕通知(around advice)、异常通知(after-throwing advice)和最终通知(after-returning advice)等。
- 连接点(Join Point) :连接点是在应用程序执行过程中能够插入切面的点。在 Spring AOP 中,连接点可以是方法调用、方法执行、异常处理等。
- 切点(Pointcut) :切点是连接点的集合,指定在哪些连接点上应用通知。通过切点表达式(Pointcut Expression),可以指定需要拦截的连接点。
- 通知(Advice) :通知是切面在特定连接点(切点)上执行的动作。不同类型的通知(前置通知、后置通知等)可以在连接点的不同位置执行。
- 代理(Proxy) :Spring AOP 使用代理来实现切面功能。根据目标对象是否实现接口,Spring AOP 可以使用 JDK 动态代理或者 CGLIB 字节码生成技术来创建代理对象。
- 织入(Weaving) :织入是将切面应用到目标对象并创建代理对象的过程。Spring AOP 提供了多种织入方式,包括编译时织入、类加载时织入和运行时织入。
- mysql mvcc
MVCC(Multi-Version Concurrency Control,多版本并发控制)是 MySQL 数据库中用于实现并发事务的一种技术。它通过在事务的不同版本之间进行读取操作,以实现事务的隔离性,而不会阻塞其他事务的读取操作。
在 MySQL 中,MVCC 的工作原理主要通过以下几个关键点来实现:
- 版本记录:当对数据进行更新时,MySQL 不会立即覆盖原有的数据,而是将新的数据版本保存为一个新的记录。这样旧版本的数据依然可以被其他事务读取,从而实现了并发访问。
- 事务ID:每个事务都有一个唯一的事务ID,MySQL 使用这个ID来标识事务的版本号。当一个事务开始时,其事务ID会用于确定该事务所能看到的数据版本。
- Read-View:当一个事务开始进行读取操作时,MySQL 会为该事务创建一个 Read-View,这个 Read-View 记录了该事务开始时数据库中的数据版本。在事务的整个生命周期内,它都可以看到这个特定的数据版本。
- 回滚段:MySQL 使用回滚段(Undo Log)来存储旧版本数据,以便在需要时进行回滚操作或者提供给其他事务的读取操作。这样可以确保事务始终可以访问到之前的数据版本。
通过以上机制,MVCC 实现了事务并发访问的隔离性,避免了读取操作之间的阻塞,同时保证了事务的一致性和隔离性。这使得 MySQL 能够在高并发环境下保持较好的性能表现。
-
b+tree原理
-
索引失效情况
-
最左匹配原则 为什么要左边匹配
因为索引是有序的