基础知识
模块化的好处
- 模块间解耦,复用
对业务进行模块化拆分后,为了使各业务模块间解耦,因此各个都是独立的模块,它们之间是没有依赖关系。每个模块负责的功能不同,业务逻辑不同,模块间业务解耦。模块功能比较单一,可在多个项目中使用。
- 可单独编译某个模块,提升开发效率
每个模块实际上也是一个完整的项目,可以进行单独编译,调试
- 可以多团队并行开发,测试
每个团队负责不同的模块,提升开发,测试效率
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的区别
- MySQL开源,Oracle闭源收费
- SQL语法的不同,MySQL较为灵活,Oracle较为严格
- 对于事务的支持。MySQL对于事务默认是不支持的,只有某些存储引擎中如:innodb可以支持。而Oracle对于事务是完全支持,不管是OLTP还是OLAT都是支持的。
- MySQL是单进程多线程,Oracle是多进程(在Windows下也是单进程)。
参考链接:https://www.cnblogs.com/xu-cceed3w/p/8824199.html
- 关于树的算法题-二叉树的锯齿形层次遍历
- Java的垃圾回收机制
- 对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
如果觉得这篇文章对你有用的话不妨给这个知识库点个关注 💗,我将持续更新这个库里的文章。