一,java基础
8种基本数据类型 byte short int long float double boolean char 3中引用数据类型 String 数组 对象
String字符串的常用方法
indexOf():返回指定字符的索引。
length():返回字符串长度。
equals():字符串比较。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
方法重写和方法重载的区别
== 和equals的区别
string和stringbuffer 和stringbuilder的区别
Java中的集合比较重要 arraylist和linkedlist区别 list 和set区别
反射的实现方式 class.forName(类路径) 类名.class 对象名.getClass
java实现多线程的方式 继承thread类,实现runable接口 用executorservice来创建
sleep和wait的区别
为什么要使用线程池
线程和进程的区别
线程池核心参数
接口和抽象类一般类的区别
java中的锁
乐观锁 悲观锁
synchronized和Lock有什么区别
synchronized是java内置关键字,是jvm层面。lock是接口,
sychronized会自动释放锁,但是无法判断是否获取锁,lock需要在finally手动释放(unlock())锁,能判断是否获取到锁
synchronized 线程a占用锁之后,线程b一直等待,lock不会等待,会直接结束线程
lock式和大量同步的代码同步问题,synchronized适合少量的代码同步问题
二,spring相关
什么是spring:( 大概能说上一些特征,解释一下) 轻量级的ioc和aop容器框架,简化应用程序开发,使得开发者只关注业务需求,常见的配置方式三种,基于xml配置,基于注解配置,基于java配置
mvc 模型 视图 控制器
springmvc的工作原理,大概能说一点 用户发送请求开始到返回view
springbean的生命周期
spring两大核心 ioc和aop
spring中用到的设计模式 单例 工厂 代理 模板方法 观察者模式
spring中 autowired和resource的区别
springboot核心注解有哪些
spring springmvc springboot的区别
2:mybatis
什么是mybatis:(大概能说上一些特征,解释一下)对象关系映射框架,内部封装了jdbc,开发时只需要处理sql语句本身,不需要处理加载驱动 创建连接,创建statement等繁杂的过程
mybatis优缺点
什么是springboot:springboot简化了spring开发,约定大于配置,使用特定方式properties或者yml文件来进行配置,内嵌tomcat无须部署war文件,简化了maven配置
优点:独立运行,简化配置,自动配置
springcloud
什么是微服务:一种架构风格,将单一应用程序划分为一小组的服务,每个服务运行在自己的进程中,服务之间相互协调,相互配合,服务之间采用轻量级通信机制(通常基于http或者restful api),可以使用不同的语言编写服务,可以使用不同的数据库存储
cloud项目五大组件
eureke:服务注册与发现 ,自我保护机制,心跳机制
ribbon:负载均衡,有多种负载均衡调用策略
hystrix:熔断降级,实现断路器模式,为依赖服务的出错提供容错能力
feing接口:基于ribbon和hystrix的声明式服务调用组件
zuul:网关 统一管理,对请求提供路由及过滤功能
三,数据库
mysql
数据库三大范式
数据库引擎 我们公司一直用的innodb
innodb和myisam区别,innodb支持行锁表锁 事务 myism不支持
数据库事务:acid
数据库索引 主键 唯一 联合索引
sql优化: 避免select * 避免使用子查询,使用关联查询替代,减少使用in not in 使用exists
or的查询尽量使用union all替代 尽量避免在where后面加 != 或者<> 也不要使用null值判断,创建数据库的时候可以设置默认值
redis
非关系型持久化内存数据库,rdb是redis的默认持久化(把数据从内存同步到硬盘,redis重启之后又把数据从硬盘重新加载到内存,达到恢复数据的目的)方式
持久化实现:单独创建一个fork()进程,将当前父进程中的数据库文件复制到子进程的内存中,然后由子进程写入到临时文件,持久化的过程就结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放
缓存雪崩,解决:将失效时间分散开
缓存穿透:数据库不存在,redis中也就没有,导致每次都查询数据库,解决,采用布隆过滤器,讲所有 可能存在的数据哈希到一个足够大的bitmap中,一定不存在的数据会被bitmap拦截掉,就不会频繁的查询数据库了
redis为什么这么快,基于内存 单线程 非阻塞式 io多路复用
redis5中数据类型 string hash set 和sorted Set 和 liset
四,常用中间件
负载均衡nginx
反向代理和正向代理的区别
主要用来在前后端分离的项目中做负载均衡
缓存中间件redis
任务调度中间件xxl-job
消息中间件 rabbitmq kafka