1、什么是回滚?
答:比如:同时有事务A同时执行多个操作添加数据和更新数据,当添加成功之后,更新发生了错误,那么就会把之前执行的添加的数据给删除掉,就叫回滚。
2、什么是脏数据?
答:脏数据就是在临时更新(读脏)数据中产生的。比如:事务A更新了某个数据项X,但是由于某中原因,事务A出现了问题,于是要把A回滚。但是在回滚之前,另一个事务B读取了数据项X的值(A更新后),A回滚了事务,数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”的值,就是脏数据。
3、什么是不可重复度?
答:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据比匹配了,就是所谓的不可重复读。一般在update用到
4、什么幻读?
答:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。一般在select中用到
5、什么是工作流?
答:比如用请假流程来举例:员工使用账户登录系统——点击请假------项目经理登录系统点击同意——部门经理登录系统点击同意。这样一个请假流程就结束了。关于项目经理怎么把员工请假的信息给部门经理,这个就是需要后台自动运行。
6、什么叫对象持久化?
答:持久化的对象,是已经存储到数据库或保存到本地硬盘中的对象。为了保存在内存中的各种对象的状态,并且可以把保存的对象状态在读出来,虽然你可以用你自己的何种各样的方法来保存Object states,但是Java给你提供一种更好的保存对象状态的机制,那就是序列化。简单来说,就是对象序列化是将对象状态转换为可保持或传输的格式的过程。
什么情况下需要序列化:
a)当你想把内存中的对象状态保存到一个文件中或者数据库中的时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候。
对象实现序列化,只需要实现Serialization接口。
7、什么套接字?
答:比如:两个人使用电话通信,你是主叫方,对方是被叫方。电话就是Socket。
那么你就需要一个Socket,对方就需要一个ServerSocket。在双方连接成功时,都会产生一个socket实例,操作这个实例,完成所需的会话。
对于一个网络连接来说,套接字是平等的,没有差别,不会因为在服务器端和客户端产生不停级别。所以不管socket还是serverSocket他们的工作都是通过SocketImpl类及其子类完成的。
8、怎么理解加权因子(扩容因子)?
答:首先要了解List、Map、Set的加载因子,默认初始值。初始大小,就是创建时可容纳的默认元素个数;加载因子,表示某个阀值/,用0-1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作;扩容方式,即指定每次扩容后的大小规则,比如翻倍等。
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存,要将容器原来的数据全部复制到新的内存上,使效率大大降低了;
当加载因子的系数小于等于1时,及当元素个超过容量长度乘加载因子的系数时,进行扩容。
注:另外,扩容也有默认倍数的,不同的容器扩容情况不同。
9、什么是雪崩?
答: 为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。
服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。
以后补充。。。。