One side of the day---real interview questions---4

Look at the original question first, meditate on the answer in your heart, and then slide to the back to compare the answer. The answer comes from the Internet, please correct me and make progress together

1. Original title

1. Self-introduction

2. Features of SpringBoot

3. AOP I directly answered AspectJ AOP and Spring AOP

4. AOP design pattern, describe the proxy pattern

5. Describe the difference between decorator mode and proxy mode

6. Why use MyBatis, the answer is the advantages of MyBatis

7. Object-oriented, three major characteristics

8. Abnormalities and errors in Java; usually use tools to troubleshoot;

9.JVM memory model

10. Garbage collection algorithm;

11. What kinds of garbage collectors are there to understand;

12. How to achieve multi-threaded data synchronization;

13. Commonly used database-My answer is MySQL. What is the common engine?

14. What about the index?

15. The difference between B+ tree and B tree;

16. What problem is the transaction used to solve?

17. What are the characteristics of transactions?

18. Transaction isolation mechanism

19. What are the types of locking?

20. The difference between TCP and UDP

21. How does TCP ensure reliability?

22. The difference between HTTP and HTTPS?

23. Future study plan

-------------------------------------------------- ----------------------Beautiful dividing line---------------------------- ------------------------------------------------
















2. Answer

1. Self-introduction

2. Features of SpringBoot

Spring Boot 让开发变得更简单
Spring Boot 使测试变得更简单
Spring Boot 让配置变得更简单
Spring Boot 让部署变得更简单
Spring Boot 让监控变得更简单

使用 Spring 项目引导页面可以在几秒构建一个项目
方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks
非常简洁的安全策略集成
支持关系数据库和非关系数据库
支持运行期内嵌容器,如 Tomcat、Jetty
强大的开发包,支持热启动
自动管理依赖
自带应用监控

3. Talk about AOP

面向切面编程,通过预编译方
式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个
热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑
的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高
了开发的效率。

4. AOP design pattern, describe the proxy pattern

AOP使用动态代理+反射实现

代理模式分静态代理和动态代理,简单的说就是自己不想做的事交给自己的代理人代替自己做。

主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

优点: 1、职责清晰。 2、高扩展性。 3、智能化。 

缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。 

5. Describe the difference between decorator mode and proxy mode

对装饰器模式来说,装饰者(Decorator)和被装饰者(Decoratee)都实现一个接口。对代理模式来说,代理类(Proxy Class)和真实处理的类(Real Class)都实现同一个接口。此外,不论我们使用哪一个模式,都可以很容易地在真实对象的方法前面或者后面加上自定义的方法。

6. Why use MyBatis

1、当前主流的开发框架;
2、对比原生的JDBC连接、操作数据库,mybatis更加方便快捷;
3、不将 Sql 语句写入 Java 代码中,而是统一存放到 xml 文件中;
4、Sql 语句以 key - value 的形式存放,通过 key 值获取对应的 Sql 语句

7. Object-oriented, three major characteristics

1、封装
2、继承
3、多态

8. Exceptions and errors in Java;

异常可以被捕获并做相应的处理
错误不能被捕获并会导致程序直接停止运行

9.JVM memory model

欢迎补充!!!

10. Garbage collection algorithm;

1、可达性分析算法
2、标记清除算法
3、复制算法
4、标记整理算法
5、分代垃圾回收算法

重点了解可达性分析算法、标记清除算法

11. What kinds of garbage collectors are there to understand;

1.Serial/Serial Old收集器:
	是最基本最古老的收集器,它是一个单线程收集器,并且在它进行垃圾收集时,必须暂停所有用户线程。Serial收集器是针对新生代的收集器,采用的是Copying算法,Serial Old收集器是针对老年代的收集器,采用的是Mark-Compact算法。它的优点是实现简单高效,但是缺点是会给用户带来停顿。

2.ParNew收集器:
	是Serial收集器的多线程版本,使用多个线程进行垃圾收集。

3.Parallel Scavenge收集器:
	是一个新生代的多线程收集器(并行收集器),它在回收期间不需要暂停其他用户线程,其采用的是Copying算法,该收集器与前两个收集器有所不同,它主要是为了达到一个可控的吞吐量。

4.Parallel Old收集器:
	是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和Mark-Compact算法。

5.CMS(Concurrent Mark Sweep)收集器:
	是一种以获取最短回收停顿时间为目标的收集器,它是一种并发收集器,采用的是Mark-Sweep算法。

6.G1收集器:
	是当今收集器技术发展最前沿的成果,它是一款面向服务端应用的收集器,它能充分利用多CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型。

12. How to achieve multi-threaded data synchronization;

由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字。

13. What is the commonly used database and commonly used engine?

Mysql
InnoDB

14. What about the index?

在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。

数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。

索引为性能所带来的好处却是有代价的。带索引的表在数据库中会占据更多的空间。另外,为了维护索引,对数据进行插入、更新、删除操作的命令所花费的时间会更长。在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。

15. The difference between B+ tree and B tree;

B树又名平衡多路二叉树,和平衡二叉树的区别在于:

    子数节点数不同:平衡二叉树每个节点最多有两个节点,而M阶B树代表每个节点最多可以有M个子树

    每个节点包含的数据量不同:平衡二叉树每个节点最多包含一个关键字(当前节点)代表的值和两个孩子(左右)指针。而对于B树(M阶),一个节点可以最多拥有M-1个关键字,M个链表指针。对于B树的每个中间节点有k-1个关键字(数字数据)和k个子数(k介于阶数M和M/2之间,M/2向上取整)。

    叶子节点的分布不同: B树的所有叶子节点都在同一层,并且叶子节点只有关键字,指向孩子的指针都为null.


1.层级更低(更加矮胖),IO次数更少。由于 B+ 树的中间节点不含有实际数据,只有子树的最大数据和子树指针,因此磁盘页中可以容纳更多节点元素,也就是说同样数据情况下,B+ 树会 B 树更加“矮胖”,因此查询效率更快。

2.每次都需要查询到叶子节点,查询性能稳定。B树这时就能体现出优势,由于出现频率较高的树,在B树中往往在上层(非叶子结点),查找到该结点就会成功并结束查询,相对较快。而B+树由于非叶子结点关键字只是代表索引,因此在B+树中,无论查找成功与否,都是走了一条从根到叶子节点的路径。

3.B+树范围查询更加方便。 需要查询某个范围内的数据时,由于 B+ 树的叶子节点是一个有序链表,只需在叶子节点上遍历即可,不用像 B 树那样挨个中序遍历比较大小。

16. What problem is the transaction used to solve?

我们在开发中需要通过事务将一些操作组成一个单元,来保证程序逻辑上的正确性,例如全部插入成功,或者回滚,一条都不插入。

17. What are the characteristics of transactions?

A C I D
A(原子性(Atomicity)):
	原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

C(一致性(Consistency)):
	一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说,假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账、转几次账,事务结束后两个用户的钱相加起来应该还得是1000,这就是事务的一致性。

I(隔离性(Isolation)):
	隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到。

D(持久性(Durability)):
	持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务已经正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成。否则的话就会造成我们虽然看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。这是不允许的。

18. Transaction isolation mechanism

当db上有多事务同时执行时,可能出现如下问题: - 脏读(dirty read) - 不可重复读(non-repeatable read) - 幻读(phantom read)

为解决上述问题,隔离级别诞生了。级别越高,性能越低。因此要根据业务折中选择。


19. What are the types of locking?

1. 乐观锁、悲观锁
2. 公平锁、非公平锁
3、读写锁
4、独享锁、共享锁
5、分段锁
6、可重入锁

20. The difference between TCP and UDP

     1. TCP协议在传送数据段的时候要给段标号;UDP协议不
     2. TCP协议可靠;UDP协议不可靠
     3. TCP协议是面向连接;UDP协议采用无连接
     4. TCP协议负载较高,采用虚电路;UDP采用无连接
     5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
     6. TCP协议采用窗口技术和流控制

21. How does TCP ensure reliability?

三次握手

22. The difference between HTTP and HTTPS?

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

23. Future study plan