先看原题,自己心里默想一遍答案再滑到后面对比答案。答案来源于网络,欢迎指正,共同进步
一、原题
- Spring 中的 AOP 是如何实现的,jdk 和 CGLIB 方法的区别
- 数据库 hash 索引和 b+树的区别
- b 树和 b+树的区别,b+树的优势
- 垃圾回收器 CMS 和 g1 的区别
- http1.0 和 1.1 的区别
- mysql 联合索引使用 A>n and B=m 和 A=n and B=m 的区别
- 线程池中多线程的处理过程(最大核心是 5,最大线程数量 10,最大队列 10);如果满了后,如何进行;核心线程最终会结束吗(一面的时候和面试官讨论过,面试官说核心线程也是会结束的,所以我就按照1 面的说的)
- 你知道哪些 java 锁
- SpringBoot 核心自动装配原理——》为什么使用 EnableAutoConfiguration 注解(此处还有问题,暂时想不起来了)
- 用过 mybatis 吗
- 是否了解索引,简要描述
- 集合类都有什么
- ArrayList 和 linkedlist 的区别,各自优缺点,适用场景,实现方式
- 常用 算法 都会啥
- 排序 算法 ,请描述快速 排序 和归并 排序 的思路
- 是否了解 JUC,请讲出有什么 JUC 组件
- 线程池是否理解,都有哪些参数
- 线程池的核心线程数,最大线程数,队列之间的关系。new 新的线程是怎样的逻辑?
------------------------------------------------------------------------优美的分割线------------------------------------------------------------------------
二、答案
-
Spring 中的 AOP 是如何实现的,jdk 和 CGLIB 方法的区别
1、要想启用Spring AOP,配置类加上注解@EnableAspectJAutoProxy,会往spring容器注入一个BeanPostProcessor即AnnotationAwareAspectJAutoProxyCreator 2、在Bean实例化完成后(即调用构造函数将对象创建出来)会执行AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInitialization(这个方法在父AbstractAutoProxyCreator中,AnnotationAwareAspectJAutoProxyCreator并没有重写) 3、当执行完成AbstractAutoProxyCreator#postProcessAfterInitialization这个方法会将原生对象变成代理代理对象,代理对象中写入了横切的逻辑 jdk 和 CGLIB 方法的区别: 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换.
-
数据库 hash 索引和 b+树的区别
欢迎补充!!!
-
b 树和 b+树的区别,b+树的优势
欢迎补充!!!
-
垃圾回收器 CMS 和 g1 的区别
CMS G1 JDK版本 1.6以上 1.7以上 回收算法 标记——清除 标记——整理 运行环境 针对70G以内的堆内存 可针对好几百G的大内存 回收区域 老年代 新生代和老年代 内存布局 传统连续的新生代和老年代区域 Region(将新生代和老年代切分成Region,默认一个Region 1 M,默认2048块)
MIN_REGION_SIZE:允许的最小的REGION_SIZE,即1M,不可能比1M还小;
MAX_REGION_SIZE:允许的最大的REGION_SIZE,即32M,不可能比32M更大;限制最大REGION_SIZE是为了考虑GC时的清理效果;浮动垃圾 是 否 内存碎片 是 否 全堆扫描 是 否 回收时间可控 否 是 对象进入老年代的年龄 6 15 空间动态调整 否 是(新生代5%-60%动态调整,一般不需求指定) 调优参数 多(近百个) 少(十几个) -
http1.0 和 1.1 的区别
1、缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。 2、带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。 3、错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。 4、Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。 5、长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
-
mysql 联合索引使用 A>n and B=m 和 A=n and B=m 的区别
欢迎补充!!!
-
线程池中多线程的处理过程(最大核心是 5,最大线程数量 10,最大队列 10);如果满了后,如何进行;核心线程最终会结束吗?
核心线程也是会结束的
-
你知道哪些 java 锁
1、独享锁/共享锁 2、读写锁 ReentrantReadWriteLock 3、公平锁/非公平锁 4、可重入锁 5、乐观锁/悲观锁 6、分段锁 7、自旋锁 8、偏向锁/轻量级锁/重量级锁
-
SpringBoot 核心自动装配原理——》为什么使用 EnableAutoConfiguration 注解(此处还有问题,暂时想不起来了)
-
是否了解索引,简要描述
索引好比书的目录,好比新华字典的拼音、偏旁部首查字,可以帮助人快速查找到需要的内容
-
集合类都有什么
set\list\map
-
ArrayList 和 linkedlist 的区别,各自优缺点,适用场景,实现方式
ArrayList :基于数组实现,适用于读多写少的场景 linkedlist :基于链表实现,适用于写多读少的场景
-
常用 算法 都会啥
-
排序 算法 ,请描述快速 排序 和归并 排序 的思路
-
是否了解 JUC,请讲出有什么 JUC 组件
AQS同步组件
-
线程池是否理解,都有哪些参数
corePoolSize 核心线程数量 maximumPoolSize 最大线程数量,这个值必须大于等于corePoolSize,如果这两个值相等,那就是固定大小的线程池 KeepAliveTime 程池中除常驻核心线程之外的其他线程的空闲时间,如果超过这个时间就会销毁。 queue 缓存队列,当请求的线程数大于corePoolSize的时候,线程会进入队列进行阻塞。当这个队列达到上限之后,线程池会创建新的线程,直到到吗maximumPoolSize大小位置。 RejectedExecutionHandler 拒绝策略。当queue满了之后,并行活动的线程数大于maximunPoolSize的时候,线程池通过改策略处理请求。 threadFactory 线程工厂。用来生产一组相同任务的线程。
-
线程池的核心线程数,最大线程数,队列之间的关系。new 新的线程是怎样的逻辑?
线程池刚被创建的时候,只是向系统里申请一个用于执行流程队列和管理线程池的线程资源。在调用execute()添加一个任务时,线程池会按照以下流程执行: 1、如果正在运行的线程数少于corePoolSize(用户定义的核心线程数),线程池就会立刻创建线程并执行该线程任务; 2、如果正在运行的线程数大于corePoolSize,该任务就会被放入阻塞队列中; 3、如果阻塞队列已满且正在运行的线程数少于maximumPoolSize时,线程池会创建非核心线程立刻执行该线程任务; 4、在阻塞队列已满并且正在运行的线程数大于maximunPoolSize时,线程池将会拒绝执行该任务并且抛出拒绝异常RejectExecutionException; 5、在线程执行完毕后,该任务会从线程队列中移除,然后从队列中取下一个任务继续执行; 6、在线程处于空闲的时间超过keepAliveTime,并且正在运行的线程数大于corePoolSize, 该线程将会被认为是空闲线程并停止;所以线程任务都执行完毕后,线程池会收缩到corePoolSize大小。