1、String和StringBuilder、StringBuffer的区别?
String:String 的值被创建后不能修改,任何对 String 的修改都会引发新的 String 对象的生成。
StringBuffer:跟 String 类似,但是值可以被修改,使用 synchronized 来保证线程安全。
StringBuilder:StringBuffer 的非线程安全版本,没有使用 synchronized,具有更高的性能,推荐优先使用
2、人事OA项目使用了什么框架?
使用了若依框架,若依框架是一款基于SpringBoot+Vue的前后端分离极速后台开发框架。
- 前端技术栈 ES6、vue、vuex、vue-router、vue-cli、axios、element-ui
- 后端技术栈 SpringBoot、MyBatis、Spring Security、Jwt
3、你对Spring Cloud有什么了解?五大组件是什么?
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
五大组件:
Eureka : 注册中心,用于服务的注册和发现
Ribbon/Feign : 负载均衡/服务调用
Hystrix :断路器,提高分布式系统的弹性
GateWay/Zuul :网关管理,由GateWay 网关转发请求给对应的服务,服务同一的转发,以及权限管理和过虑
SpringConfig:分布式配置中心
4、你是怎么知道系统是springcloud还是springboot?
5、说一下重载(Overload)和重写(Override)的区别?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载:一个类中有多个同名的方法,但是具有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)。
重写:发生在子类与父类之间,子类对父类的方法进行重写,参数都不能改变,返回值类型可以不相同,但是必须是父类返回值的派生类。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。
6、构造器是否可被 重写?
Constructor 不能被 override(重写),但是可以 overload(重载),所以你可以看到⼀个类中有多个构造函数的情况。
7、== 和 equals 的区别是什么?
==:运算符,用于比较基础类型变量和引用类型变量。
对于基础类型变量,比较的变量保存的值是否相同,类型不一定要相同。
short s1 = 1; long l1 = 1;
// 结果:true。类型不同,但是值相同
System.out.println(s1 == l1);
对于引用类型变量,比较的是两个对象的地址是否相同。
Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
// 结果:false。通过new创建,在内存中指向两个不同的对象
System.out.println(i1 == i2);
equals:Object 类中定义的方法,通常用于比较两个对象的值是否相等。
equals 在 Object 方法中其实等同于 ==,但是在实际的使用中,equals 通常被重写用于比较两个对象的值是否相同。
Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
// 结果:true。两个不同的对象,但是具有相同的值
System.out.println(i1.equals(i2));
// Integer的equals重写方法
public boolean equals(Object obj) {
if (obj instanceof Integer) {
// 比较对象中保存的值是否相同
return value == ((Integer)obj).intValue();
}
return false;
}
8、有了解过MAP吗?
9、有了解过hashmap底层是怎么解决哈希碰撞?
HashMap是怎么解决哈希冲突的_这个名字先用着的博客-CSDN博客_hashmap解决hash碰撞简单总结一下HashMap是使用了哪些方法来有效解决哈希冲突的:使用拉链法(使用链表)来链接拥有相同hash值的数据;使用2次扰动函数(hash函数)来降低哈希冲突的概率,使得数据分布更平均;引入红黑树进一步降低遍历的时间复杂度,使得遍历更快;什么是哈希函数?Hash,一般翻译为“散列”,也有直接音译为“哈希”的,这就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值(哈希值);这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输https://blog.csdn.net/weixin_38568503/article/details/123112174?ops_request_misc=&request_id=&biz_id=102&utm_term=%E2%80%8C%E6%9C%89%E4%BA%86%E8%A7%A3%E8%BF%87hashmap%E5%BA%95%E5%B1%82%E6%98%AF%E6%80%8E%E4%B9%88%E8%A7%A3%E5%86%B3%E5%93%88%E5%B8%8C%E7%A2%B0%E6%92%9E&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-123112174.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187HashMap是怎么解决哈希冲突的?_EmptyCupMentality的博客-CSDN博客_hashmap解决hash冲突的方法Hash一般翻译为“散列”,也有直接音译为“哈希”的,这就是把任意长度的输入通过散列算法,变换成 固定长度的输出,该输出就是散列值(哈希值);这种转换是一种压缩映射,也就是,散列值的空间通 常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入 值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。所有散列函数都有如下一个基本特性:根据同一散列函数计算出的散列值如果不同,那么输入值肯定也 不同。但是,根据同一散列函数计算出的散列值如果相同,输入值https://blog.csdn.net/qq_42605393/article/details/118714087?ops_request_misc=&request_id=&biz_id=102&utm_term=%E2%80%8C%E6%9C%89%E4%BA%86%E8%A7%A3%E8%BF%87hashmap%E5%BA%95%E5%B1%82%E6%98%AF%E6%80%8E%E4%B9%88%E8%A7%A3%E5%86%B3%E5%93%88%E5%B8%8C%E7%A2%B0%E6%92%9E&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-118714087.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187
10、说一下list和set的区别?
List、Set、Map三者的区别?
List(对付顺序的好帮手): List 接口存储一组不唯一(可以有多个元素引用相同的对象)、有序的对象。
Set(注重独一无二的性质):不允许重复的集合,不会有多个元素引用相同的对象。
Map(用Key来搜索的专业户): 使用键值对存储。Map 会维护与 Key 有关联的值。两个 Key可以引用相同的对象,但 Key 不能重复,典型的 Key 是String类型,但也可以是任何对象。
11、Java创建多线程的方式?
Java多线程之如何创建多线程?_Honyelchak的博客-CSDN博客Java与多线程的关系我们平时写的好多简单程序就有多个线程参与,你可能会感到惊讶,但是事实就是这样。Java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上Java程序天生就是多线程程序,因为执行main()方法的是一个名称为main的线程。下面我们来用Java的一个管理类验证一下:Console结果如下:可以看出来,一个Java程序得到运行不仅仅是mai...https://blog.csdn.net/m0_38072683/article/details/80433265?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165686051216782388068948%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165686051216782388068948&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-5-80433265-null-null.142%5Ev30%5Econtrol,185%5Ev2%5Econtrol&utm_term=Java%E5%88%9B%E5%BB%BA%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84%E6%96%B9%E5%BC%8F%EF%BC%9F&spm=1018.2226.3001.4187Java创建多线程的8种方式_itcats_cn的博客-CSDN博客_java创建多线程目录 Java创建启动线程的多种方式1、继承Thread类,重写run()方法2、实现Runnable接口,重写run()3、匿名内部类的方式4、带返回值的线程(实现implements Callable<返回值类型>)————以上3种方式,都没有返回值且都无法抛出异...https://blog.csdn.net/itcats_cn/article/details/81149232?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165686051216782388068948%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165686051216782388068948&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-81149232-null-null.142%5Ev30%5Econtrol,185%5Ev2%5Econtrol&utm_term=Java%E5%88%9B%E5%BB%BA%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84%E6%96%B9%E5%BC%8F%EF%BC%9F&spm=1018.2226.3001.4187
12、事物有了解过吗?什么是事物?它的几大特性?
ACID(四大特新)
原子性(atomicty):事物是一个完整的操作。要么都执行要么都不执行。
一致性(consistency):当事物完成时,数据必须处于一致状态。
隔离性(isolation):对数据的各种操作事物必须是彼此隔离的,事物是独立的,不会影响其他事物。
持久性(durability):事物完成后,对数据库的修改被永久保存,事务日志能保持事物的持久性。
什么是事务,事务的ACID特性_敲代码的乔帮主的博客-CSDN博客_什么是事务的acid特性一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 突出事物原子性操作,要么都做,要么撤销回滚都不做。https://blog.csdn.net/Suyebiubiu/article/details/78519105?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165686159216782248552605%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165686159216782248552605&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-8-78519105-null-null.142%5Ev30%5Econtrol,185%5Ev2%5Econtrol&utm_term=%E4%BA%8B%E7%89%A9%E6%9C%89%E4%BA%86%E8%A7%A3%E8%BF%87%E5%90%97%EF%BC%9F%E4%BB%80%E4%B9%88%E6%98%AF%E4%BA%8B%E7%89%A9%EF%BC%9F%E5%AE%83%E7%9A%84%E5%87%A0%E5%A4%A7%E7%89%B9%E6%80%A7%EF%BC%9F&spm=1018.2226.3001.4187
13、什么是对象序列化?
什么是对象序列化?_羡羡ˇ的博客-CSDN博客_什么是对象序列化对象输入输出流对象序列化,transient关键字的用法为什么需要对象序列化 ? 在谈这个问题之前, 我们首先先来认识这两种流 : 对象的输出流: ObjectOutputStream , 对象的输入流: ObjectInputStream这两个流的作用是 : 用于写入对象信息与读取对象信息。 对象信息一旦写到文件上那么对象的信息就可以做到持久化了https://blog.csdn.net/xx12321q/article/details/123387258?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165710496416782395385220%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165710496416782395385220&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-123387258-null-null.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&utm_term=%E4%BB%80%E4%B9%88%E6%98%AF%E5%AF%B9%E8%B1%A1%E5%BA%8F%E5%88%97%E5%8C%96%EF%BC%9F&spm=1018.2226.3001.4187什么是对象序列化?如何实现?什么情况下使用?_JimboWonG的博客-CSDN博客_什么是对象序列化a)什么是对象序列化:对象序列化可以将一个对象保存到一个文件,可以将通过流的方式在网络上传输,可以将文件的内容读取转化为一个对象。所谓对象流也就是将对象的内容流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对象流进行读写操作时引发的问题。b)序列化的实现:将需要被序列化的类实现serializable接口,该接口没有需要实现的方法,imhttps://blog.csdn.net/JimboWonG/article/details/54909581?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165710496416782395385220%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165710496416782395385220&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-54909581-null-null.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&utm_term=%E4%BB%80%E4%B9%88%E6%98%AF%E5%AF%B9%E8%B1%A1%E5%BA%8F%E5%88%97%E5%8C%96%EF%BC%9F&spm=1018.2226.3001.4187
14、spring里的AOP和IOP有了解过吗?
控制反转 :
控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
15、项目中有用过springboot和springcloud,能说一下常用的注解吗?
Spring Boot常用注解(绝对经典)_哪 吒的博客-CSDN博客_springboot常用注解一、Spring常用注解Spring常用注解(绝对经典)二、Jpa1、@Entity ,@Table(name="")表明这是一个实体类,一般用于jpa,这两个注解一块使用,但是如果表名和实体类名相同的话,@Table可以省略。2、@MappedSuperClass基于代码复用和模型分离的思想,在项目开发中使用jpa的@MappedSuperClass注解,将实体类的多个属性分别封装到不同的非实体类中。例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用属性,交给jpa统https://blog.csdn.net/guorui_java/article/details/107379648?ops_request_misc=&request_id=&biz_id=102&utm_term=springboot%E5%B8%B8%E7%94%A8%E7%9A%84%E6%B3%A8%E8%A7%A3%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-107379648.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187Spring常用注解(绝对经典)_哪 吒的博客-CSDN博客_spring注解最近在看B站颜群老师的课程,Javaweb>spring>springMVC>mybatis>spring高级,一路走来,跌跌撞撞,发现spring也不过尔尔,说白了,spring就是想尽办法将new做的更简单,更完美,更可配置。Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效..https://blog.csdn.net/guorui_java/article/details/107347754SpringBoot 常用注解汇总_xishilife的博客-CSDN博客_springboot注解大全目录Spring Boot 常用注解汇总一、启动注解 @SpringBootApplication@SpringBootConfiguration 注解,继承@Configuration注解,主要用于加载配置文件@EnableAutoConfiguration 注解,开启自动配置功能@ComponentScan 注解,主要用于组件扫描和自动装配二、Controller 相关注解@Controller@RestController 复合注解@RequestBody@https://blog.csdn.net/xishilife/article/details/120264924?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165712383416782425127894%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165712383416782425127894&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-120264924-null-null.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&utm_term=springboot%E5%B8%B8%E7%94%A8%E7%9A%84%E6%B3%A8%E8%A7%A3%EF%BC%9F&spm=1018.2226.3001.4187
Spring中主要提供了4个注解来标注Bean
@Component 通用的标注形式
@Repository 对Dao实现类进行标注
@Service 对Service实现类进行标注
@Controller 对Controller实现类进行标注
后端的业务分层一般业务请求顺序:Controller(进行URL结束和返回)-》Service(业务逻辑)-》Dao(访问数据层)
@Component是Spring 提供的通用的组件注解
@Controller、@Service 、@Repository是@Component的衍生,功能一样,是可以互换的
使用不同的注解主要是为了区分被注解的类处于不同的业务层,使逻辑更加清晰
16、mabatis里的#和$符的区别是什么?
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理时 , 就是把{}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性
17、mabatis的一级缓存和二级缓存有了解过吗?
Mybatis的一级缓存和二级缓存,看完不再懵逼_马丁的早晨n的博客-CSDN博客缓存是什么?缓存其实就是存储在内存中的临时数据,这里的数据量会比较小,一般来说,服务器的内存也是有限的,不可能将所有的数据都放到服务器的内存里面,所以, 只会把关键数据放到缓存中,缓存因为速度快,使用方便而出名!为什么需要缓存BS架构里面,用户的所有操作都是对数据库的增删改查,其中查询的操作是最多的,但如果用户想要某个数据时每次都去数据库查询,这无疑会增加数据库的压力,而...https://blog.csdn.net/zhuimeng2023/article/details/124335748?ops_request_misc=&request_id=&biz_id=102&utm_term=%E2%80%8Cmybatis%E7%9A%84%E4%B8%80%E7%BA%A7%E7%BC%93%E5%AD%98%E5%92%8C%E4%BA%8C%E7%BA%A7%E7%BC%93%E5%AD%98%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-124335748.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187Mybatis的一级缓存和二级缓存_毅在此的博客-CSDN博客_mybatis一级缓存二级缓存mybatis的一级缓存和二级缓存https://blog.csdn.net/qq_47872591/article/details/125199545?ops_request_misc=&request_id=&biz_id=102&utm_term=%E2%80%8Cmybatis%E7%9A%84%E4%B8%80%E7%BA%A7%E7%BC%93%E5%AD%98%E5%92%8C%E4%BA%8C%E7%BA%A7%E7%BC%93%E5%AD%98%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-125199545.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187
18、redis数据库了解多少?他的几种数据类型可以说一下吗?
redis使用场景有哪些?作用是什么?
有了解过redis的持久化吗?
19、有了解过sql的优化吗?比如让你查大量的数据,想要查询速度更快一点,如果让你在sql里面增加查询速度的话,有什么办法呢?比如说用索引来进行优化?
MySQL进阶:索引的使用及理解_王会举的博客-CSDN博客索引是mysql中非常重要的一个知识点,面试中会经常会被问到.为了offer,认真理解下面知识点吧.1:什么是索引?索引是一种用于快速查询和检索数据的数据结构。mysql中的索引结构有: B+树和Hash。索引的作用就相当于目录的作用。我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。这样查找就会非常快.2:索引的优缺点?优点:可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。毕竟大部分系统的读请求总是大于写请求的....https://blog.csdn.net/wang5701071/article/details/108795580Sql性能优化看这一篇就够了_葫芦胡的博客-CSDN博客_sql性能优化前言:一个优秀开发的必备技能:性能优化,包括:JVM调优、缓存、Sql性能优化等。本文主要讲基于Mysql的索引优化。首先我们需要了解执行一条查询SQL时Mysql的处理过程:其次我们需要知道,我们写的SQL在Mysql的执行顺序是怎么样的?sql的执行顺序对sql的性能优化很有帮助,很重要。在建立复合索引的时候需要考虑到这点。例:在tb_dept中建立一个复合索引 i...https://blog.csdn.net/HXNLYW/article/details/82979088?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%9C%89%E4%BA%86%E8%A7%A3%E8%BF%87sql%E7%9A%84%E4%BC%98%E5%8C%96&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-82979088.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187sql优化的N种方法_持续更新_王会举的博客-CSDN博客_sql优化当你访问网站的时候,有的时候会慢的想让你砸电脑,这个时候服务器要背锅了吗? 不,要背锅的不仅仅是服务器,数据库也有很大责任,不负责任的sql开发者更会让你崩溃的.为了提高sql响应速度,还是好好了解下sql的优化吧sql优化的方式1: explain关键字 :使用explain关键字来查看当前sql语句的执行情况,来对症下药.因为内容较多,放在最后进行讲解2: 正确的建立索引:索引的建立对sql的影响是非常大的,如果对索引不太理解的可以看我另一篇文章: ...https://blog.csdn.net/wang5701071/article/details/108797859?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%9C%89%E4%BA%86%E8%A7%A3%E8%BF%87sql%E7%9A%84%E4%BC%98%E5%8C%96&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-108797859.142%5Ev31%5Econtrol,185%5Ev2%5Econtrol&spm=1018.2226.3001.4187
20、前端用的什么框架?vue的一个生命周期可以简单说一下吗?
21、你对Ajax是怎么理解的?
其实阿贾克斯就是一个异步请求,那同步和异步你是怎么理解的?
22、jQuery有了解吗?什么是jQuery?
23、有用过什么选择器吗前端?
数据库中常用的函数