目录
一、基本面试流程回顾
二、基本面试题总结回顾
(一)Java高频面试题整理
(二)JVM相关面试问题整理
(三)MySQL相关面试问题整理
(四)Redis相关面试问题整理
(五)Spring相关面试问题整理
(五)HTTP相关面试问题整理
(六) 设计模式相关面试问题整理
(七)消息中间件相关面试问题整理
(八)业务系统及其他相关面试问题整理
干货分享,感谢您的阅读!
备注:引用请标注出处,同时存在的问题请在相关博客留言,感谢!
一、基本面试流程回顾
总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。
- 自我介绍+项目介绍+项目细节/难点提问-------这个主要看个人的经历了,每个人都不一样
- 基础知识点考核---------还是可以去增强自己的,也是这次的主要的一些总结思路
- 算法题-----------一般都是LeetCode高频题或者剑指offer高频题,这个得在找工作之前的好好的练习。
二、基本高频算法题展示
基本高频算法考题总结如下,如有错误请告知,谢谢:
归属内容 | 对应总结链接 | 笔试定义 | 代表题目展示 |
数学思维相关考题 |
数学思维高频考题 |
Letcode高频考题 | 众数、快乐数、丑数、回文数、平方根、超级次方、二进制中1的个数等 |
字符串相关考题 | 字符串高频考题 |
Letcode高频考题 | 最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等 |
数组相关考题 | 数组高频考题 | Letcode高频考题 | 找到数组 A 元素组成的小于 n的最大整数、两数之和、三数之和、搜索旋转排序数组、只出现一次的数字、最大子序列、最长连续递增序列、最长公共前缀等 |
散列相关考题 | 散列高频考题 | Letcode高频考题 | 重复字符的最长子串、字母异位词分组、LRU缓存机制、重复元素、同构字符串等 |
栈相关考题 | 栈高频考题 | Letcode高频考题 | 有效的括号、最小栈、用栈实现队列、用队列实现栈、逆波兰表达式求值、用数组实现一个栈、基本数学运算表达式求值等 |
队列相关考题 | 队列高频考题 | Letcode高频考题 | 用队列实现栈、使用栈实现队列、设计循环队列、滑动窗口最大值、队列的最大值、用数组实现一个队列等 |
链表相关考题 | 链表高频考题 | Letcode高频考题 | 反转链表、链表中环的检测、链表中环的入口点、删除链表中倒数第K个节点、两个链表的第一个公共节点、链表的中间节点、合并两个有序链表、删除链表中的重复元素等 |
树相关考题 | 树高频考题 | Letcode高频考题 | 二叉树的最大深度、对称二叉树、二叉树的最近公共祖先、二叉树的直径、二叉树的层平均值、二叉树的镜像、二叉树的最大宽度、平衡二叉树等 |
排序相关考题 | 排序算法高频考题 | Letcode高频考题 | 冒泡排序、鸡尾酒排序、插入排序、选择排序、快速排序、归并排序、堆排序、Top K 问题分析、使用堆排序思想实现优先级队列、计数排序、桶排序、基数排序等 |
剑指offer考题 | 剑指offer所有高频考题 | 剑指offer考题汇总分析 | 剑指offer全部高频题罗列 |
动态规划考题 | 动态规划高频考题 | Letcode高频考题 | 最大子序和、最长上升子序列、最长公共子序列、最大子数组乘积、编辑距离、单词拆分、爬楼梯、股票买卖问题、最佳买卖股票时机含冷冻期等 |
图论考题 | 图论高频考题(国内一般不考) | 进阶分析考题 | 岛屿数量、网络延迟时间、单源最短路径、负权最短路径问题、具有最小生成树的连通图的最小代价、找到最终的安全状态等 |
大厂新考题 | 聚焦新版综合编程能力面试考查汇总 | 大厂新考 | 重点考查综合能力和理解能力等 |
三、基本面试题总结回顾
(一)Java高频面试题整理
相关答案参考:/xiaofeng10330111/article/details/53034130备注:针对基本问题做一些基本的总结,不是详细解答!和ConcurrentHashMap区别(必考)2. ConcurrentHashMap的数据结构(必考)3.高并发HashMap的环是如何产生的4.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?5.Hash1.7是基于数组.../xiaofeng10330111/article/details/53034130
考察方向分类:Java基础高频知识考点
1.基本类型和包装类区别
2.实例方法和静态方法有什么不一样?
指向的是引用还是地址?怎么理解?(高频考点)
类内的方法(高频考点)
方法的作用?
中一个字符占多少个字节,扩展再问int、 long、double占多少字节?
占几个字节?
和Error
9.==和equals的区别?
str="hello world"和String str=new String("hello world")的区别?(高频考点)
和StringBuilder的区别是什么?性能对比?如何鉴定线程安全?(高频考点)
和 StringBuilder 底层怎么实现的?(高频考点)
支持哪些数据类型?支持long么?(高频考点)
14.创建一个类的实例都有哪些办法?(高频考点)
、finnally、finalize的区别是什么?
16.Jdk1.8/Jdk1.7都分别新增了哪些特性?其他版本呢?(高频考点)
17.简单说下Lambda表达式,其解决了什么,相比java7的处理优化了什么?
18.有人说“Lambda能让Java程序慢30倍”,你怎么看?
和API区别是什么?SpI底层实现是什么?
20.深克隆和浅克隆?(考频不多)
21.伪共享机制简述分析
22.假设引用了一个第三方的jar 有个类和我自己写的代码类一样,那么在类加载机制过程中是如何处理的?(高频考点)
提供了哪些IO方式? NIO如何实现多路复用?
24.谈谈接口和抽象类有什么区别?
考察方向分类:Java集合框架高频知识考点(高频考点集中地)
相关put操作,get操作等流程?(高频考点)
为啥要扩容
如果我想要让自己的Object作为K应该怎么办?
线程不安全的原因(高频考点)
5.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?
和HashMap区别
7.Hash1.7是基于数组和链表实现的,为什么不用双链表?HashMap1.8中引入红黑树的原因是?为什么要用红黑树而不是平衡二叉树?(高频考点)
、HashTable、ConcurrentHashMap的原理与区别?
和ConcurrentHashMap区别(高频考点)
10. ConcurrentHashMap的数据结构(高频考点)
11.高并发HashMap的环是如何产生的(高频考点)
12.哪些集合是线程安全的?
方法实现原理是什么?
和ArrayList有什么区别?使用时注意事项有哪些?
15.常用的集合类有哪些?比如List如何排序(最好说下底层上的实现)?(高频考点)
和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?
考察方向分类:多线程与并发编程高频知识考点(高频考点集中地)
1.进程和线程的区别,进程间如何通讯,线程间如何通讯?
中线程之间如何通信
3.并发和并行的区别
线程的状态?细说一下BLOCKED和WAITING有什么区别?(高频考点)
实现多线程的方式有哪些?(高频考点)
处理多线程的方式有哪些?
程序中启动一个线程是用run()还是start()?
的start方法调用两次会怎么样?Thread是如何保证start方法调用只有一次生效?(高频考点)
9.什么是守护线程?有什么用?
10.两个线程如何串行执行?
11.可以运行时kill掉一个线程吗?
的实现原理(高频考点)
与synchronized的区别是什么?volatile作用(高频考点)
和Lock的区别(高频考点)
类如何保证原子性(CAS操作)(高频考点)
、AtomicBoolean这些类之所以在高并发时高效,共同的原因是?
?CAS 有什么缺陷,如何解决?(高频考点)
不可重入锁与可重入锁的区别如何理解?
19.无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁,解释锁升级?(高频考点)
20.乐观锁 VS 悲观锁?公平锁 VS 非公平锁?独享锁 VS 共享锁?
21.自旋锁 VS 适应性自旋锁,简单介绍
22.死锁发生的原因
23.用java 代码实现一个死锁用例,说说怎么解决死锁问题?回到用例代码下,如何解决死锁问题呢?(高频考点)
24.请实现让10个任务同时并发启动?
理论的数据结构是什么样的?(高频考点)
底层公平锁和非公平锁的原理(高频考点)
27.多线程中sleep与wait的区别是什么?
和notifyAll区别?
29.除了用和来实现线程间的交互外,你还会常用哪些来实现?
的原理和实现(高频考点)
为什么要使用弱引用和内存泄露问题(高频考点)
怎么解决内存泄露的问题?(高频考点)
33.为什么要使用线程池?
34.线程池的线程数量确定?状态分析?关闭方式?
35.如何控制线程池线程的优先级
36.核心线程池ThreadPoolExecutor的参数/常见线程池的创建参数是什么样的?(高频考点)
ThreadPoolExecutor(10,100,10,,new LinkedBlockingQueue(10));一个这样创建的线程池,当已经有10个任务在运行时,第11个任务提交到此线程池执行的时候会发生什么,为什么?
38.实现一个自定义的ThreadFactory的作用通常是?
39.常见的线程池创建和参数分析?(高频考点)
的工作流程(高频考点)
中的使用的是什么队列?内部如何实现任务排序的?
42.线程池的运行逻辑,FixedThreadPool、CachedThreadPool的原理(高频考点)
43.用创建的线程池,在运行的过程中有可能产生的风险是?
44.阻塞队列ArrayBlockingQueue、LinkedBlockingQueue分析(高频考点)
45.请合理的使用Queue来实现一个高并发的生产/消费的场景,给些核心的代码片段。
46.线程池关闭原理
下的常见类的使用,take、poll的区别,put、offer的区别?
原理,其局限性是什么?并说说CompletableFuture核心原理?
49.你是否了解fork/join(基本思想)?在工作中是如何使用的?说说他们的优势是什么?(高频考点)
线程池的调优经验有哪些?(线程池的合理配置)(高频考点)
51.一个请求中,计算操作需要50ms,db操作需要100ms,对于一台8核的机器来说,如果要求cpu利用率达到100%,如何设置线程数?(高频考点)
52.如果系统中不同的请求对应的cpu时间和io时间都不同,那怎么设置线程数量?(高频考点)
53.线程池核心数20,最大600,阻塞队列200,当QPS200(注意是qps)的时候,请求是调第三方阻塞超时,请问怎么提高它的吞吐量(注意不能加机器)?(高频考点)
54.当前线程池是200,线程单次处理请求20ms,那么理论上单节点的qps 是多少呢?
55.多线程对Long数据进行加和会存在什么问题?如何解决?
的线程机制是什么样的?
考察方向分类:其他扩展高频知识考点
算法是怎么实现的?大致说明下(高频考点)
2.后台服务出现明显“变慢”,谈谈你的诊断思路?(高频考点)
3.你了解Java应用开发中的注入攻击吗?
4.在Java程序运行阶段,可以用什么命令行工具来查看当前Java程序的一些启动参数值,例如Heap Size等。
5.用什么命令行工具可以查看运行的Java程序的GC状况,请具体写出命令行格式。(高频考点)
6.用什么工具,可以在Java程序运行的情况下跟踪某个方法的执行时间,请求参数信息等,并请解释下工具实现的原理。
7.当一个Java程序接收请求,很长时间都没响应的话,通常你会怎么去排查这种问题?
(New I/O)用到的组件有哪些?
对比Java NIO做了什么优化?(必考)
(二)JVM相关面试问题整理
相关答案参考:/xiaofeng10330111/article/details/86516867对JVM重点知识点进行整理,同时这些主要的总结可用于高频面试题/xiaofeng10330111/article/details/86516867
1.分析JVM运行时数据区域(必考)
2.简单介绍一下Java内存模型(必考)
3.简述内存分配与回收策略
4.垃圾回收机制(必考)
5.强、软、弱、虚引用的区分?
堆永久代的回收(该部分归属java7,大概率不会问了)
7.垃圾回收算法(必考)
GC和Full GC触发条件
GC 和 Full GC 有什么不一样吗?
10.简述GC中Stop the world(STW),并说出安全点
11.各垃圾回收器的特点及区别,怎么做选择?
13.G1和CMS的比较
垃圾回收器存在的问题及解决方案(必考)
15.讲讲CMS垃圾回收器?讲讲G1垃圾回收器?(必考)
16.简述ZGC垃圾回收器(必考)
17.双亲委派模型
18.谈谈双亲委派模型的"破坏"
和双亲委派模型关系分析
锁优化和锁膨胀过程(必考)
中GC Root的选择标准是什么?相关JVM的调优参数有哪些?在工作中怎么调优的?
性能监控有哪些?
23.一个4核8G的服务器,初步设置JVM参数,如何分配?(必考)
如何工作的?
25.对象的创建过程是什么样的?
管理内存、内存泄漏和泄漏的原因?(必考)
说一下?怎么排查?哪些会导致OOM?(必考)
虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题?
29.判定一个对象不可达要回收,举个实际例子来说明。有没有从代码层面去直接分析一下?
(三)MySQL相关面试问题整理
相关答案在这里逐步增加:MySQL相关问题整理(可用作高频面试题和查缺补漏)备注:针对基本问题做一些基本的总结,不是详细解答!1.事务的基本要素2.事务隔离级别(必考)3.如何解决事务的并发问题(脏读,幻读)(必考)多版本并发控制(必考)5.为什么选择B+树作为索引结构(必考)6.索引B+树的叶子节点都可以存哪些东西(必考)7.查询在什么时候不走(预期中的)索引(必考)如何优化是如何解析sql的.../xiaofeng10330111/article/details/105361002
1.现有一个IP地址,你觉得在数据库中以何种方式进行存储最好?性能分析对比字符串存储 vs 整数存储?为什么数据库通常推荐将IPv4地址存储为32位整数而不是字符串的原因
2.事务的基本要素(高频考点)
3.事务隔离级别(高频考点)
4.如何解决事务的并发问题(脏读、不可重复读和幻读)(高频考点)
5.脏读的表现和具体解决并发问题(必考)
6.不可重复读的表现和具体解决并发问题(高频考点)
7.幻读的表现和具体解决并发问题(高频考点)
8.简述MVCC多版本并发控制(高频考点)
9.从CRUD角度说一下InnoDB的MVCC实现机制
10.为什么选择B+树作为索引结构(高频考点)
11.为什么平衡二叉树(或红黑树)不适合作为索引?
12.总是谈及索引,那索引的目的是什么?
13.简单谈谈MYSQL Innodb索引的数据结构,并简述B+树的查找过程(高频考点)
14.说说索引使用注意事项与数据类型选择,或则说说MySQL常见索引
15.谈谈索引优化的思路(高频考点)
16.聚簇索引与非聚簇索引的区别?(高频考点)
一棵B+树可以存放多少行数据?可否对InnoDB存储引擎B+树的树高进行推导
索引与InnoDB索引相比较
19.查询在什么时候不走(预期中的)索引(高频考点)
如何优化,给出思路(说出部分即可,一下也只是一些思路)
执行顺序是什么样的?(高频考点)
是如何解析sql的
by原理
的行锁/表锁(高频考点)
25.说说行锁算法(记录锁+间隙锁+下一键锁)(高频考点)
和innodb的区别,什么时候选择myisam
\redolog\undolog都是什么,起什么作用?(高频考点)
28.数据库的乐观锁与悲观锁的区别是什么?乐观锁常用的两种实现方式是什么?
29.当前读和快照读
30.一条sql的执行过程?
31.数据库什么时候决定分库分表?怎么考虑的?
底层查询b+树流程(高频考点)
33.设置主键的时候为啥是按1递增的?有啥好处?
主从同步实现方式?有什么问题?如何解决?
35.什么是覆盖索引?如果查询主键id下覆盖索引还生效吗?(高频考点)
36.使用explain 查看数据已经使用了索引,但还是查询很慢,可能的原因是?
37.对于sql如下select a from T where b=23 and c>4 order by d,其如何建立索引可以使查询高效,如何验证?分析下(高频考点)
38.1000万的db数据分页怎么处理?
搜索引擎的组成是什么?原理是什么?
基本SQL练习
1.查询平均成绩大于等于85的所有学生信息
2.有两张表:订单表有订单号和产品id,产品表有产品id 和产品名称,设计SQL实现返回产品名称和每一项产品的总订单数
3.查询每个部门的员工数量和平均工资
4.查询每个部门的最高工资和最低工资
5.查询每个部门的员工数量和工资中位数
6.查询每个商品类别的销售数量和销售总额
7.查询每个商品类别的销售数量和销售总额,并按照销售总额从高到低排序
8.查询每个商品类别的销售数量和销售总额,并只显示销售总额排名前3的商品类别
(四)Redis相关面试问题整理
相关答案在这里逐步增加:Redis相关问题整理(可用作高频面试题和查缺补漏)_张彦峰ZYF的博客-****博客备注:针对基本问题做一些基本的总结,不是详细解答!在项目中的主要作用是是什么?怎么用的?(应用场景)支持的数据类型(必考)跳表的数据结构(必考)的数据过期策略(必考)的LRU过期策略的具体实现6.如何解决Redis缓存雪崩,缓存穿透问题的持久化机制(必考)的管道pipel.../xiaofeng10330111/article/details/105360939
1.单线程的Redis为什么快?
支持的数据类型(必考)
和memcached的区别
在项目中的主要作用是是什么?怎么用的?(必考)
实现分布式锁的思路方案(必考)
6.分析基于Redis的限流器实现
和DB数据一致性处理(必考)
的数据过期策略分析(必考)
的LRU过期策略的具体实现(必考)
10.分析Redis缓存雪崩问题以及解决方案(必考)
11.分析Redis缓存穿透问题和解决方案(必考)
的持久化机制分析(必考)
13.分析下Redis的管道pipeline
集群容错机制是什么样的?(必考)
集群中某个master节点挂了,后面流程怎么判断?(必考)
16.高并发情况下,对于Redis的更新操作有哪些注意事项?
17.高并发下,先更新数据库,再删除缓存,存在啥问题,如何解决呢?
18.高并发情况下,先删除缓存,再更新数据库,这样会有啥问题,解决方案是?
跳表的数据结构分析(必考)
20.展开说说你了解的跳表
使用跳表不用B+树的原因?
22.跳跃表和B+树结构上有啥区别
的缓存优化方向有哪些?你们怎么理解的?对热点键的注意事项设计什么?
24.跳表(Skip List)三大问题举例
底层的数据结构分析,如何体现的高效?(必考)
6.0以后的线程模型
集群模式,节点怎么通信的?满足了CAP那两点?
分布式锁实现上有啥问题缺陷?怎么解决?
29.如果是DB实现分布式锁的话,主要思路是?有啥问题?怎么解决?
分布式锁的问题缺以及优化思路
热点key 的问题和优化处理
中有一批key瞬间过期,为什么其它key的读写效率会降低?
的zset底层什么时候是hash,什么时候是跳表?
数据结构有哪些,底层实现都是什么?
热key 是什么,有什么问题,怎么发现,怎么解决?
中底层是跳表结构,那么插入和查询一个数的流程如何?如果是单位查询,流程又是如何实现的?
(五)Spring相关面试问题整理
相关答案在这里逐步增加:Spring相关高频面试题整理_张彦峰ZYF的博客-****博客备注:针对基本问题做一些基本的总结,不是详细解答! Boot与以前的Spring有什么区别? Boot启动加载过程是什么样的?的IOC/AOP的实现(必考)4.动态代理的实现方式(必考)是否使用过GCLB,和JDK的区别是什么?如何解决循环依赖(三级缓存)(必考)的@Transactional如.../xiaofeng10330111/article/details/105361028
Boot与以前的Spring有什么区别?
Boot启动加载过程是什么样的?
的IOC/AOP的实现(必考)
4.动态代理的实现方式(必考)是否使用过CGLiB,和JDK的区别是什么?
5.何时使用JDK还是CGLiB?如何强制使用CGLIB实现AOP?
在选择用JDK还是CGLiB的依据是什么?CGlib比JDK快?
如何解决循环依赖(三级缓存)(必考)
中解决循环依赖为什么要用三级缓存,二级为什么不行呢?
能解决那些循环依赖、不能解决那些循环依赖,为什么?
注入bean的方式有哪些(列举下你使用过的注入Bean的方式)?
的后置处理器分析
和ApplicationContext的联系和区别
13.说说你对spring事务的理解?
的@Transactional如何实现的(必考)
的事务传播级别
的事务隔离级别
的事务失效场景分析
的事务失效原因分析(必考)
Cloud Zuul网关的调优策略有哪些?怎么实现其高可用?Zuul和Gataway,你们项目中是怎么选择的?项目中对Zuul网关层的要求是什么样的?
Cloud Eureka和Nacos对比?怎么做选择?Eureka中高可用是怎么做的?进行的调优有哪些?原理是什么?
Cloud 中常用的注解有哪些?怎么用的?
Cloud中的组件有哪些?具体说说?微服务架构中用到的关键技术有哪些?
Cloud Config配置架构是什么样的?可视化怎么做的?设计的业务有哪些?
(五)网络协议与编程IO相关面试问题整理
相关答案在这里逐步增加:HTTP相关高频题整理_张彦峰ZYF的博客-****博客备注:针对基本问题做一些基本的总结,不是详细解答!有哪些方法?返回状态码?2.三次握手过程?第三条丢了会怎样?有什么现象?报头格式?如何解析HTTP报头?连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl?.../xiaofeng10330111/article/details/105361059
三次握手过程?第三条丢了会怎样?有什么现象?(高频考点)
连接中的四次挥手?四次挥手的最后一个ack的作用是什么?为什么要time wait,为什么是2msl?(高频考点)
有哪些方法?返回状态码?
HTTP方法与描述:
HTTP状态码与描述:
方法与POST方法的区别
报头格式是什么样的?实际中如何解析HTTP报头呢?
和URL的区别
URI(统一资源标识符)
URL(统一资源定位符)
区别:
7.浏览器发生302跳转背后的逻辑?(高频考点)
8.简单说一下HTTP协议的交互流程?(高频考点)
和HTTPS的差异?(高频考点)
/TLS的交互流程?
和Http什么关系? 大家都说Rest很轻量,你对Rest风格如何理解?(高频考点)
的滑动窗口协议有什么用?讲讲原理。(高频考点)
13.说一下HTTP的断点续传?解决方法是?
14.说说http协议的多线程下载原理以及实现步骤?有啥优势?
15.什么是长连接和短链接?举例说明(高频考点)
长连接(Keep-Alive)
短连接
和session解决什么问题,相同点和不同点?(高频考点)
17.了解session集群解决方案,通用解决方案?(高频考点)
的安全校验主要有几种?可以说说?(高频考点)
、select、poll原理
20.基于BIO实现的Server端,当建立了100个连接时,会有多少个线程?如果基于NIO,又会是多少个线程? 为什么?
21.通常来说基于NIO实现的Server端,会用多少个线程去处理IO事件,为什么?
(六)设计模式相关面试问题整理
设计模式应用分析MyBatis设计模式应用分析_张彦峰ZYF的博客-****博客对MyBatis中应用的一些设计模式的整体分析,主要从三方面进行展开分析:创建型设计模式+结构型设计模式+行为型设计模式,每一种都提炼源码进行对应的分析详解/article/details/85330132
2.单例模式使用分析单例模式的使用总结_单例模式使用_张彦峰ZYF的博客-****博客单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。实现方式介绍分析:饿汉式单例模式+懒汉式单例模式(双重检查锁)+静态内部类实现单例模式+注册式单例模式/article/details/105652399
3.代理模式使用分析代理模式的使用总结_张彦峰ZYF的博客-****博客目录一、代理模式二、静态代理(一)静态代理(二)静态代理简单实现三、动态代理(一)动态代理(二)动态代理简单实现四、动态代理原理分析五、InvocationHandler接口和Proxy类详解六、JDK动态代理和CGLIB动态代理代码示例比较与总结(一)定义创建用户管理接口(二)用户管理实现类,实现用户管理接口(被代理的实现类)(三)采用JDK代.../article/details/105633821
4.装饰器模式使用分析装饰器模式的使用总结_装饰器模式实际运用_张彦峰ZYF的博客-****博客一、装饰器模式的概念及怎么用?1.基本概念和功能:装饰器模式能够实现从一个对象的外部来给对象添加功能,有非常灵活的扩展性,可以在对原来的代码毫无修改的前提下,为对象添加新功能。除此之外,装饰器模式还能够实现对象的动态组合,借此我们可以很灵活地给动态组合的对象,匹配所需要的功能。2.举例分析:假设现在有这样一个需求,让你设计一个装修功能,用户可以动态选择不同的装修功能来装饰自己的房子.../article/details/105608235
5.模板模式使用分析模版模式的应用实际举例_模板模式应用场景实例_张彦峰ZYF的博客-****博客模版模式应该是工作中最常用的设计模式之一,直白的讲就是如果的一些处理方式是有一定的模版流程处理的,那么在应用中使用该模式在合适不过了。对于其基本的业务应用,我简单写了以下三个基本的通用模版(业务失败重试机制、业务前置检查流程模版、Thrift远程调用处理模版)来展示,有问题的可以留言纠正,谢谢!/article/details/123619576
6.工厂模式和策略模式的综合使用分析工厂模式和策略模式的综合使用_工厂模式和策略模式结合_张彦峰ZYF的博客-****博客一、简单的工厂模式了解与使用二、简单的策略模式了解与使用三、工厂模式和策略模式的综合使用/article/details/106943391
7.状态模式的使用分析状态模式的使用总结_张彦峰ZYF的博客-****博客状态模式基本介绍与应用分析介绍,同时对于Spring-statemachine状态机框架给出了应用,最后介绍在外卖营销业务中的具体案例分析/article/details/106080007
8.责任链模式(以及变种管道模式)使用分析责任链模式(以及变种管道模式)的应用案例_管道模式和责任链模式_张彦峰ZYF的博客-****博客责任链在实际开发中的应用还是比较多的,特别是在营销订购系统、审核流转换处理、任务流程处理系统等系统中,其实我们在开发中往往主要应用的主要无非是以下三个场景(起码以我的平时开发的角度来看):一是无需太关心责任链中各处理流的顺序的简单使用;二是需要关注处理顺序,按责任链条延续处理,每个处理节点均可对请求进行节点的处理, 或将其传递给链上的下个处理节点;三是在处理中和纯的责任链模式在链上只会有一个处理器用于处理业务数据存在差异,需要进行管道模式采用多个处理器都会处理业务数据。针对以上场景进行业务举例和代码书写/article/details/123956717
(七)消息中间件相关面试问题整理
相关答案在这里逐步增加:消息中间件相关高频面题整理_张彦峰ZYF的博客-****博客备注:针对基本问题做一些基本的总结,不是详细解答!1.用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?系统的数据如何保证不丢失?.../xiaofeng10330111/article/details/105361083
1.用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
2.消息中间件的组成有哪些?
3.消息中间件模式分类有哪些?(必考)
4.分析消息中间件的普遍优势(必考)
5.消息中间件常用协议分析
6.消息队列应用场景分析(必考)
数据如何保证不丢失?(必考)
如何保证消息按顺序执行?(必考)
如何保证消息不重复消费?(必考)
如何保证消息队列的高可用?(必考)
如何保证可靠性?(必考)
的文件存储机制
消息是采用Pull模式,还是Push模式?(必考)
是如何实现高吞吐率的?
判断一个节点还活着的两个条件?
采用的拉取模式还是推送模式?两者有啥区别?
17.如果流量突增导致MQ积压过高,该如何处理?
18. Kafka 什么情况下数据丢失?
和kafka都是用了零拷贝,那么零拷贝究竟是怎么实现的?底层原理是?
20.导致MQ积压的原因有哪些?怎么应对?
(八)业务系统及其他相关面试问题整理
相关答案在这里逐步增加:业务系统及其他相关面试问题整理备注:针对基本问题做一些基本的总结,不是详细解答!1.遇到线上相关问题怎么排查?2.高并发系统的限流如何实现?3.高并发秒杀系统的设计?4.负载均衡如何设计?5.假如双十一等一些促销有高并发访问量要来访问我们的数据,怎么样做到可靠的服务?6.一个黑名单集合,数据量很大,快速查询一个值是否在集合里,怎么设计,布隆过滤器。7.常见的设计模式及应用场景。.../xiaofeng10330111/article/details/105361100
1.遇到线上相关问题怎么排查?
2.高并发系统的限流如何实现?
3.高并发秒杀系统的设计?
4.秒杀并发情况下库存为负数问题分析
5.实现一套负载均衡架构,如何思考设计?考虑哪些主要内容呢?
6.假如双十一等一些促销有高并发访问量要来访问我们的数据,怎么样做到可靠的服务?
7.一个黑名单集合,数据量很大,快速查询一个值是否在集合里,怎么设计?
8.一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出。
9.设计题:钱包领券的架构设计。
10.春节红包的架构设计和容量设计
11.设计一个多级分类的表,然后组装数据返给前端
12.业务设计一个订单下单的流程,需要考虑哪些问题和使用哪些技术?如果有状态流转的话如何保证其有序性?
13.设计题:设计一种聊天模式,在该模式下用户A给用户B发送消息,在B没有回复消息前,A最多可以发送三条消息。实现思路是?具体实现是?
14.定时任务部署在多个服务器会重复执行,一般任务执行一次即可,如何设计保证可用性分析?
15.负载均衡的意义是?如何实现负载均衡呢?有哪些算法呢?4层负载均衡和7层负载均衡的区别是?
16.系统服务的幂等性实现分析?
17.怎么表达滑动窗口限流?
18.查询接口调优,不能用缓存,要求实时性,怎么调优?
19.现在用户要查询一张表,当流控降级时,兜底方案应该是怎么样的?
20.用户下订单,订单按什么字段分表?分表之后,如果想按照某个时间段查询指定时间段内的所有用户的订单怎么办?
21.给定一个内存区域用来停车,车可能有货车、轿车等,如何高效分配和设计?有哪些最优思考点?反思到程序的内存分配上,如何高效分配和管理内存呢?
22.给一个接口,入参是账户信息,出参是账户余额,问怎么设计接口?
23.学生选课系统做表设计分析,只聚焦在学生选课这个场景,最好说出表之间的关系分析
24.微博、微信朋友圈、头条的资讯推荐、快手抖音的视频推荐等,比如一条朋友圈状态、一条微博、一条咨询或一条短视频等发布,对应用户可以实时看到呢?
25.什么是读扩散与写扩散?有啥优缺点?
26.实现微信二维码扫码PC登录设计?
27.微信客户端之间怎么保持的连接?服务器怎么知道其在不在线?
28.连接池设计分析,从技术难点和实现上分析
29.熔断器设计思路,具体说明实现难点和注意事项
30.如何设计一个订单系统?
31.数据库设计题:要求设计一个合理的数据库模型,考虑数据库结构、索引设计、数据分片、读写分离、数据同步等问题。
32.分布式系统设计题:要求设计一个分布式系统,包括分布式任务调度、分布式锁、分布式ID生成等。
33.缓存设计题:要求设计一个高效的缓存系统,考虑缓存策略、缓存一致性、缓存穿透、缓存雪崩等问题。
34.基础架构设计题:要求设计一个稳定高效的基础架构,如负载均衡、高可用集群、服务发现与治理等。
35.微服务架构设计题:要求设计一个微服务架构,包括服务拆分、服务注册与发现、服务调用等。
36.数据结构与算法设计题:要求设计一个高效的算法,如排序算法、查找算法、图算法等。
37.项目中限流怎么做的?漏桶和令牌桶原理,使用的什么数据结构?并发下队列是否有性能问题?
和消息队列的优缺点,使用场景
39.如何设计rpc框架?你认为其相比其他框架的优点是什么?
40.一般讨论一个系统或服务的技术难点主要从哪些方面分析?
41.做一个商品敏感词系统所面临的技术难点和解决方案有哪些呢?
42.在设计一个接口的时候,我们重点关注的点有哪些?
43.服务器的请求转发了解吗?具体讲讲
44.微博评论数可能不准确,如何解决这个问题,因为一般都千人千面的那个人看到的都不一样
45.布隆过滤器为啥会误判,举例说明?
飘高的原因分析?生产环境中如何应对?