基础知识

模块化的好处

  • 模块间解耦,复用

对业务进行模块化拆分后,为了使各业务模块间解耦,因此各个都是独立的模块,它们之间是没有依赖关系。每个模块负责的功能不同,业务逻辑不同,模块间业务解耦。模块功能比较单一,可在多个项目中使用。

  • 可单独编译某个模块,提升开发效率

每个模块实际上也是一个完整的项目,可以进行单独编译,调试

  • 可以多团队并行开发,测试

每个团队负责不同的模块,提升开发,测试效率

http 协议

  • http 和 https的区别

    • https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
    • http是超文本传输协议,信息是明文传输,https则是具有安全性的 ssl 加密传输协议
    • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
    • http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
  • https的优点

    • 使用Https协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
    • Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、修改,确保数据的完整性。
    • Https是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
  • https的缺点(对比优点)

    • Https协议握手阶段比较费时,会使页面的加载时间延长近。
    • Https连接缓存不如Http高效,会增加数据开销,甚至已有的安全措施也会因此而受到影响;
    • SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
    • Https协议的加密范围也比较有限。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

参考链接: https://blog.csdn.net/qq_38289815/article/details/80969419

  • http 三次握手和四次挥手

参考链接:https://blog.csdn.net/charking_gg/article/details/81663768

HashMap 和 ConcurrentHashMap 区别及两者的优缺点

HashMap 是线程不安全的
ConcurrentHashMap 是线程安全的
ConcurrentHashMap 通过把整个Map分为N个Segment,可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。(读操作不加锁,由于HashEntry的value变量是 volatile的,也能保证读取到最新的值。)

参考链接:https://www.cnblogs.com/heyonggang/p/9112731.html

对MySQL的了解,和oracle的区别

  1. MySQL开源,Oracle闭源收费
  2. SQL语法的不同,MySQL较为灵活,Oracle较为严格
  3. 对于事务的支持。MySQL对于事务默认是不支持的,只有某些存储引擎中如:innodb可以支持。而Oracle对于事务是完全支持,不管是OLTP还是OLAT都是支持的。
  4. MySQL是单进程多线程,Oracle是多进程(在Windows下也是单进程)。

参考链接:https://www.cnblogs.com/xu-cceed3w/p/8824199.html

  1. 关于树的算法题-二叉树的锯齿形层次遍历
  2. Java的垃圾回收机制
  3. 对Runtime的了解

面向对象的三个基本特征。

抽象、继承、多态

设计模式,详细讲了一下单例模式(对设计模式的看法和认知)。

单例模式,观察者模式,建造者模式,装饰器模式

3.LinedList 和 ArrayList 的区别。

4.如何解决哈希冲突。

5.HashMap的底层数据结构,问了时间复杂度。

6.try catch语句中,catch中有return的话,finally还会不会执行?为什么?先执行哪个?

7.栈的特性。

8.红黑树,详细问了红黑树的旋转。

9.进程和线程的区别。

死锁产生的四个条件和如何避免死锁。

互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。
循环等待条件: 若干进程间形成首尾相接循环等待资源的关系

11.数据库的特征。

12.悲观锁和乐观锁的区别。

13.针对项目问了一些问题,也对我提出了很多改进意见。

14.缓存算法(如何实现分布式缓存)。

15.事务的特征以及什么事务不适合用缓存。

电面过程中非常注重基础知识的考察,面试前务必对基础知识内容进行复习和梳理。
基础知识考察的内容一般会围绕项目内容进行展开,在前期对项目介绍进行准备时需适当换位,思考面试官的提问逻辑,避免给自己设下陷阱。

https://juejin.im/entry/5cbd30e05188250a551a10be
https://juejin.im/post/5cb44724f265da039a3d632b

如果觉得这篇文章对你有用的话不妨给这个知识库点个关注 💗,我将持续更新这个库里的文章。