土木哥面经

1.用户态和核心态

用户态与内核态的概念就是C P U 指令集权限的区别

用户态操作的cpu指令集的权限低比如 I O 读写、网卡访问、申请内存都不能。

内存划分不同

2依赖注入的三种方法?

字段注入(注解)

构造器注入

setter方法注入 

3.什么是依赖,什么是注入?

4.循环依赖怎么解决?三级缓存不了什么注入方法?

循环依赖的问题是通过三级缓存机制来解决的。Spring的默认单例bean创建过程中包括三个缓存完整初始化的bean map,未完整初始化的bean map ,以及存储bean代理工厂的map

不能解决多例bean 解决方法 变为单例

不能解决 构造器注入 解决方法 懒加载或者使用setter注入方法

重新设计结构:这是最直接也是最彻底的方式。重新设计你的类和组件,避免它们之间产生直接的相互依赖。这可能需要引入新的中间类或接口。

5.Runnable和Callable、submit和excute

Callable接口与Runnable接口一样,都是被定义为一个函数式接口,且与Runnable接口一样仅提供了一个方法call()。与Runnable接口的不同点在于:

call()方法可以有返回值,返回类型为泛型V,代表着支持所有类型的返回值。

call()方法定义时声明了可以抛出异常:throws Exception,而run()则不行。

submit方法,它是提交有返回值任务的一种方式,内部使用未来任务(FutureTask)包装,再交给execute()去执行,最后返回未来任务(FutureTask)本身。FutureTask包装的都是有返回值的Callable类型的任务。

6.ConcurrentHashmap扩容,segment会变吗?

1.wait()的底层

2.spring 为什么默认单例bean

  1. 少创建实例
  2. 垃圾回收
  3. 缓存快速获取

https://www.cnblogs.com/east7/p/14702326.html

3.最左匹配原则

组成联合索引的多个列,越靠左边优先级越高,同时也只有SQL查询条件中,包含了最左的字段,才能使用联合索引 (where后的顺序不重要

建立联合索引时,一定要考虑优先级,查询频率最高的字段应当放首位。

联合索引的最左匹配原则,在遇到范围查询(如 >、<)的时候,就会停止匹配,也就是范围查询的字段可以用到联合索引,但是在范围查询字段的后面的字段无法用到联合索引。注意,对于 >=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配

4.SETNX 实现分布式锁会有哪些问题

1.不可重入

2.不可重试

3.超时释放

4.主从一致性问题

redission分布式锁:

1.利用hash结构记录线程标识和可重入次数

2.利用watchdog续约锁时间,利用信号量控制锁重试

5.@Transaction注解失效的情况

同一个类中方法调用,导致@Transactional失效

异常被你的catch“吃了”导致@Transactional失效

6.八种 HTTP 请求

7.ThreadLocal 底层设计

8.RedLock 加锁原理

9.Redis 的多路复用模型

10.Redis 数据结构底层实现

11.创建两个线程交替打印 AB

12.创建联合索引的时候为什么要把出现频率高的字段放在前面

因为将查询频率越高的字段放首位,就代表着查询时命中索引的几率越大。

13.秒杀模块用分布式锁之后执行效率太低,你该如何解决(异步下单,把校验和下单操作分开执行)

14.MySQL 中主键为什么是递增的

15.drop / truncate / delete

drop:删除内容和定义,释放空间。(表结构和数据一同删除)

truncate:删除内容,释放空间,但不删除定义。(表结构还在,数据删除)

delete:删除内容,不删除定义,也不释放空间

释放空间可以体现在:

通过delete删除的行数据是不释放空间的,如果表id是递增式的话,那么表数据的id就可能不是连续的;而通过truncate删除数据是释放空间的,如果表id是递增式的话,新增数据的id又是从头开始,而不是在已删数据的最大id值上递增。

16.分布式锁除了有哪些实现方式(Redis / ZooKeeper)

17.有一个业务非常慢,在执行的过程中分布式锁过期了怎么办

18.你所了解的设计模式(不敢说多 怕要求手写)

工厂模式

代理模式

模板方法模式

单例模式

责任链模式

观察者模式

19.controller 之间如何相互调用

20.ReentrantLock 如何实现可重入

判断当前线程current是否为独占锁线程OwnerThread,如果是则代表着当前线程已经获取过锁资源还未释放,属于锁重入,那么对state进行自增1,返回true。

21并发量特别高的时候用 Synchronized 还是 ReentrantLock

22.面向过程与面向对象

23.try-catch-finally

24.创建对象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值