JAVA问题记录

1、MySql存储引擎及索引创建

数据库引擎:innodb,myisam区别;
索引原理,索引数据结构(B+树);
数据库事务,对脏数据,不可重复读,虚读(幻读)概念的理解;
数据库锁,sql调优,数据库性能调优。

MySql存储引擎及索引创建

2、SpringMVC执行过程,前台发送请求,后台如何执行

3、Spring

对Spring的理解,AOP/IOC,用到的注解,autowired和resource,spring事务如何实现的,事务实现的的几种情况

3.1 AOP(面向切面编程)的理解及应用场景

AOP 面向切面编程
将程序中的交叉业务逻辑(比如安全、日志、、事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
IOC 控制反转
创建对象的控制权,交给spring容器。通常情况,我们实例化一个对象,使用类的构造方法new一个对象,这个过程由我们自己控制;控制反转就是将new对象的工作交给spring容器。

3.2 Spring循环依赖

Spring中的bean默认是单例模式,注册bean时,可以通过参数scope指定为非单例模式。
单例模式下Spring支持循环依赖,不报错;原型(prototype)的场景是不支持循环依赖的,会报错。
    Spring内部通过三级缓存解决循环依赖的问题:DefaultSingleBeanRegistry类中有三个map:
    第一层:singletonObjects存放的是已经初始化好了的bean,
    第二层:eaelySingletonObjects存放的是实例化了,但是未初始化的bean(未给各个属性赋值),
    第三层:singletonFactories存放的是FactoryBean。假如A类实现了FactoryBean,那么依赖注入的时候不是A类,而是A类Bean。
    
三层缓存的使用,实例化顺序:
   1、A创建实例过程中需要B,于是A将自己放到三级缓存里面,去实例化B;
   2、B实例化的时候发现需要A,于是B先查一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,找到了A,然后把三级缓存里面的这个A放到二级缓存里,并删除三级缓存里面的A;
   3、B顺利初始化完毕,将自己放到一级缓存里面(此时B里面的A依然是创建中状态),然后回来接着创建A,此时B已经创建结束,直接从一级缓存里面拿到B,然后完成创建,并A将自己放到一级缓存里。

4、动态代理

5、java内存模型,JVM的了解,GC回收机制

java内存模型,JVM的了解,GC回收机制

6、ArrayList、LinkedList区别

ArrayList、LinkedList区别

7、多线程,创建线程池的几种方式

wait和sleep的区别,线程死锁的原因域解决方法,如何保证线程安全;
线程池的使用场景,哪几种实现方式,7个参数的含义,线程池的运行原理,线程的生命周期。

多线程,创建线程池的几种方式

8、MyBatis

&与#的区别,一级缓存与二级缓存,mybatis的实现机制。

myBatis

9、SpringBoot

rest接口实现方式;
自动装配原理;
服务是如何进行注册与发现的;
dubbo如何实现负载均衡;
对dubbo+zookeeper的认识与作用;
主启动类的含义。

SpringBoot

10、SpringCloud

SpringCloud五个核心组件;
负载均衡的实现方案;
zookeeper与eureka的区别;

SpringCloud

11、Java8新特性,为什么普遍用Java8,不用最新版本

6、ArrayList、LinkedList区别
分布式锁
事务
HashMap、HashTable和ConcurrsntHashMap
Sql优化,怎么看索引生效了没

7、CopyOnWriteArrayList中的copy原理,数组拷贝底层实现

8、UT具体场景,数据样例

9、创建线程的几种方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值