Ioc

控制反转 ioc 容器 用来存储各种各样得java bean 把创建javabean得过程交给ioc容器处理
通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。 大概说到了这就ok了
ioc容器来创建bean
beanFactory
bean得生命周期
反射创建bean
通过 di 来 注入ioc容器得bean

Aop

面向切面编程 他是对面向对象编程得补充。
spring 得aop
@EnableAspectJAutoProxy 在第一次创建bean时 解析了所有得切面类 然后 转化为 advisor
AnnotationAwareAspectJAutoProxyCreator 在后面创建bean得时候在初始化之后
会调用一个后置处理器得初始化后方法 postProcessAfterInitialization 根据情况生成代理对象 。
spring得事务也是基于aop实现得
日志
权限控制

String StringBuffer StringBulder

String是不可变得 每次修改String都会生成新的对象 然后指针指向新的对象
+这种操作应该使用 下面两个代替 因为效率极差
StringBuffer 和StringBulder 是可以发发生变化得 经常变化得情况下使用 这两个
new String(“ab”) 一共有几个对象 答案 两个 。一个堆中得 一个常量中得。
判断 String s =”ab”; String a = “a”+new (“b”);是否相等
String s =”ab”; String a = “a”+”b”;是否相等

实现多线程方式

  1. 实现 Callable Callable 接口 有返回值 需要使用 FutureTask (继承了Runnable 接口 和 Future 接口其中有get方法 获得返回值)
  2. Runnable 接口
  3. 继承Thread 也继承了Runable 接口

怎么用得多线程 (压根没用过 咋知道)

LIst Map Set 区别

List 列表

  1. List 是有序得 可以重复得 可以存储null 同种类型
  2. List只能存储同类型得元素
  3. ArraryList 数组 查询速度快 添加删除慢 线程安全 LinkedList 链表 添加删除快 查询慢 线程不安全

Map 映射

  1. 可以存储不同类型得元素 无序 能重复
  2. HashMap 可以有null值 key和value 都是可以为null 得 无序 可重复 线程不安全
  3. TreeMap 有序得 key不能为null (代码中判断了key==null 空指针 put 得时候 排序 (Comparable)key. conpareTo() 所以不能传入null) value 是可以得 有序 可重复 不安全
  4. HashTable 都不能为null (key.hashCode() 空指针了,代码中判断value == null 空指针异常) 无序 可以重复 线程安全 put得时候添加了 synchronized
  5. ConcurrentHashMap (key == null || value == null) throw new NullPointerException(); 无序 可重复 安全 put 方法中有 synchronized 关键字

    Set 集合

  6. Set可以存储不同类型得元素 不能重复

  7. HashSet 无序 可以 add null 使用得HashMap得put方法
  8. TreeSet 有序 但是不能add 为null 使用了treemap得put方法 add得值就是key
  9. LinkedHashSet 有序 可以添加null

    Sping 注入bean得方式

    构造器注入 autowried

    拦截器和过滤器

  • 过滤器 依赖于servlet容器 可以对几乎所有的请求进行过滤 是对于整个请求的
  • 拦截器 依赖于框架 实现方式是aop 可以进行一些权限的控制 对一个方法都可以进行拦截器的拦截

    执行的顺序 过滤器先于拦截器

    Exception 和Error 区别

  1. 都继承了 Throwable 类 表示可以throw 并且可以catch 的东西
  2. error 表示是不太可能出现的情况
  3. Exception 表示可以预料的情况

    Exception 分为检查异常可非检查异常
    检查异常需要捕获 编译器就会提醒的异常 IoException
    非检查就是运行时才会爆出来的 空指针 没有找到类等 也可以自定义RuntimeException

    cookie 和session

  • cookie 是存储在客户端的 session是存储在服务器端的

大概流程 第一次浏览网站 服务器生成唯一的cookie 对象 放入响应头 浏览器收到
set一个cookie 保存在本地 然后后面请求的时候 浏览器去找是否有该网站的cookie 有带上
服务器就从请求中获取相应的cookie信息

  • 创建session 的过程 第一次访问到服务器 创建session 保存到服务器 返回一个sessionId

一般情况下是保存到cookie 中所以禁用cookie后就失效了session 但是可以通过重写url的方式把
sessionId当作参数传过来 就又可以使用了
上面就是禁用了cookie 如何使用session的方式
https://blog.csdn.net/guoweimelon/article/details/50886092

jwt 几个部分

三个部分 头部 荷载 和签名
头部和荷载都是使用base64加密之后的字符串,你可以直接解密出来值
头部中包含了 算法名称 和type
荷载中有你需要的信息 id 姓名 手机号什么的

进程和线程区别

进程是系统进行资源分配和调度的一个独立单位
线程几乎不拥有自己的资源 和其他线程共享进程的全部资源。
进程可以创建多个线程。

switch

  1. 可以 跟得类型 int char byte short 也可以String (但是String编译得时候会转化为对应得hashcode 看编译之后得代码)
  2. 没有break会一直执行 default 放在最后一个 因为如果放在前面如果符合得话并且没有break 那么也会继续执行下去。
  3. 可以跟上一个枚举类型 switch ( MyEnum.valueOf(value)) 这样可以直接跟枚举中得值。

注意可能会抛出找不到枚举类型得错误。

字节流和字节流 2(不了解自己去看)

字符流 Reader、Writer 字节流 OutputStream、 InputStream 字符流是字节流得包装
字节流 读一个字节就返回 字符流读一个或者多个字节 返回字符
一般纯文本得东西推荐用字符流 其他得话都用字节流

使用过哪些Spring得接口 怎么处理得

ApplicationContextAware 获得所有得bean
InitializingBean bean得初始化 @PostConstruct

索引是什么 索引得原则 什么时候索引失效(不了解自己去看)

最左前缀 (多列索引时候,由左到右索引)
隐式类型转换 会导致索引失效
like ‘a%’

数据库得约束

  1. 1、主键约束(Primay Key Coustraint 唯一性,非空性<br />  2、唯一约束 Unique Counstraint)唯一性,可以空,但只能有一个<br />  3、检查约束 Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等)<br />  4、默认约束 Default Counstraint)该数据的默认值<br />  5、外键约束 Foreign Key Counstraint)需要建立两表间的关系并引用主表的列

union 和union all 区别

union 会去重 而union all 会去重

数据库得事务 2

四大特性 原子性 一致性 隔离性 永久性

Mysql 中 MyISAM 和 InnoDB 的区别有哪些?

  1. innoDB 有事务 ,支持外键 不存储 count(*)得值 (因为支持事务,只能实时得获取总数)
  2. MyiSAM 没有事务 不支持外键 存储count(*)得值
  3. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。一个更新语句会锁住整张表

innoDB 得事务如何实现得 (不知道)

数据库得隔离级别

https://blog.csdn.net/chenyiminnanjing/article/details/82714341
读未提交 可以读到未提交得内容 脏读 不可重复读 幻读
读已提交 可避免脏读 不可重复读 幻读
可重复读 避免脏读 避免不可重复读 幻读
串行化 避免脏读 避免不可重复读 避免幻读

什么是死锁 打破死锁得方法

线程A持有锁a,线程B持有锁b;而A又等待获取锁b,B又等待获取a,而此时的锁a锁b被A,B占据
确定获取锁得顺序 先获取a锁在获取b锁都按整个顺序去获取就不会出现问题
对锁得获取获得一个超时时间

jvm 垃圾回收 gc (不了解自己去看)

Garbage Collection,GC (不知道自己去看)
对内存中长时间没有使用或者已经死亡得对象进行回收清除

redis 可以存储得类型。(不了解自己去看)

String List set Hash sorted Set

HashMap 扩容机制 (直接不会)

顺序表和链表区别

见ArraryList 和LinkedList 区别 一个是数组 一个是链表

树得遍历方式

先, 中,后 ,层 序遍历 (就说了一下,都没问怎么遍历得)

感觉最牛逼得项目 (没啥挑战性,不会)

项目中得问题 (没有问题)

用到了什么设计模式 (瞎回答)

代理模式
工厂模式

spring cloud 得相关 (直接不会)

编程题

输入10个数 排序

https://blog.csdn.net/qq_43390672/article/details/116764449
(不知道直接用sort 会不会有问题)

让实现求树得深度

https://blog.csdn.net/lanzijingshizi/article/details/93708815
建议递归 简单