干货分享,感谢您的阅读!
(暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理))
备注:引用请标注出处,同时存在的问题请在相关博客留言,感谢!
一、基本面试流程回顾
总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。
- 自我介绍+项目介绍+项目细节/难点提问-------这个主要看个人的经历了,每个人都不一样
- 基础知识点考核---------还是可以去增强自己的,也是这次的主要的一些总结思路
- 算法题-----------一般都是LeetCode高频题或者剑指offer高频题,这个得在找工作之前的好好的练习。
二、基本高频算法题展示
基本高频算法考题总结如下,如有错误请告知,谢谢:
归属内容 | 对应总结链接 | 笔试定义 | 代表题目展示 |
数学思维相关考题 | Letcode高频考题 | 众数、快乐数、丑数、回文数、平方根、超级次方、二进制中1的个数等 | |
字符串相关考题 | Letcode高频考题 | 最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等 | |
数组相关考题 | 数组高频考题 | Letcode高频考题 | 找到数组 A 元素组成的小于 n的最大整数、两数之和、三数之和、搜索旋转排序数组、只出现一次的数字、最大子序列、最长连续递增序列、最长公共前缀等 |
散列相关考题 | 散列高频考题 | Letcode高频考题 | 重复字符的最长子串、字母异位词分组、LRU缓存机制、重复元素、同构字符串等 |
栈相关考题 | 栈高频考题 | Letcode高频考题 | 有效的括号、最小栈、用栈实现队列、用队列实现栈、逆波兰表达式求值、用数组实现一个栈、基本数学运算表达式求值等 |
队列相关考题 | 队列高频考题 | Letcode高频考题 | 用队列实现栈、使用栈实现队列、设计循环队列、滑动窗口最大值、队列的最大值、用数组实现一个队列等 |
链表相关考题 | 链表高频考题 | Letcode高频考题 | 反转链表、链表中环的检测、链表中环的入口点、删除链表中倒数第K个节点、两个链表的第一个公共节点、链表的中间节点、合并两个有序链表、删除链表中的重复元素等 |
树相关考题 | 树高频考题 | Letcode高频考题 | 二叉树的最大深度、对称二叉树、二叉树的最近公共祖先、二叉树的直径、二叉树的层平均值、二叉树的镜像、二叉树的最大宽度、平衡二叉树等 |
排序相关考题 | 排序算法高频考题 | Letcode高频考题 | 冒泡排序、鸡尾酒排序、插入排序、选择排序、快速排序、归并排序、堆排序、Top K 问题分析、使用堆排序思想实现优先级队列、计数排序、桶排序、基数排序等 |
剑指offer考题 | 剑指offer所有高频考题 | 剑指offer考题汇总分析 | 剑指offer全部高频题罗列 |
动态规划考题 | 动态规划高频考题 | Letcode高频考题 | 最大子序和、最长上升子序列、最长公共子序列、最大子数组乘积、编辑距离、单词拆分、爬楼梯、股票买卖问题、最佳买卖股票时机含冷冻期等 |
图论考题 | 图论高频考题(国内一般不考) | 进阶分析考题 | 岛屿数量、网络延迟时间、单源最短路径、负权最短路径问题、具有最小生成树的连通图的最小代价、找到最终的安全状态等 |
大厂新考题 | 聚焦新版综合编程能力面试考查汇总 | 大厂新考 | 重点考查综合能力和理解能力等 |
三、基本面试题总结回顾
(一)Java高频面试题整理
6.Java中一个字符占多少个字节,扩展再问int、 long、double占多少字节?
10.String str="hello world"和String str=new String("hello world")的区别?(高频考点)
11.StringBuffer和StringBuilder的区别是什么?性能对比?如何鉴定线程安全?(高频考点)
12.StringBuffer 和 StringBuilder 底层怎么实现的?(高频考点)
13.switch支持哪些数据类型?支持long么?(高频考点)
15.final、finnally、finalize的区别是什么?
16.Jdk1.8/Jdk1.7都分别新增了哪些特性?其他版本呢?(高频考点)
17.简单说下Lambda表达式,其解决了什么,相比java7的处理优化了什么?
18.有人说“Lambda能让Java程序慢30倍”,你怎么看?
22.假设引用了一个第三方的jar 有个类和我自己写的代码类一样,那么在类加载机制过程中是如何处理的?(高频考点)
23.Java提供了哪些IO方式? NIO如何实现多路复用?
考察方向分类:Java集合框架高频知识考点(高频考点集中地)
1.HashMap相关put操作,get操作等流程?(高频考点)
3.HashMap如果我想要让自己的Object作为K应该怎么办?
5.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?
7.Hash1.7是基于数组和链表实现的,为什么不用双链表?HashMap1.8中引入红黑树的原因是?为什么要用红黑树而不是平衡二叉树?(高频考点)
8.HashMap、HashTable、ConcurrentHashMap的原理与区别?
9.HashMap和ConcurrentHashMap区别(高频考点)
10. ConcurrentHashMap的数据结构(高频考点)
13.Collections.SynchronizedCollection方法实现原理是什么?
14.Array和ArrayList有什么区别?使用时注意事项有哪些?
15.常用的集合类有哪些?比如List如何排序(最好说下底层上的实现)?(高频考点)
16.ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?
考察方向分类:多线程与并发编程高频知识考点(高频考点集中地)
4.Java线程的状态?细说一下BLOCKED和WAITING有什么区别?(高频考点)
7.Java程序中启动一个线程是用run()还是start()?
8.Thread的start方法调用两次会怎么样?Thread是如何保证start方法调用只有一次生效?(高频考点)
13.volatile与synchronized的区别是什么?volatile作用(高频考点)
15.Atomic类如何保证原子性(CAS操作)(高频考点)
16.AtomicInteger、AtomicBoolean这些类之所以在高并发时高效,共同的原因是?
19.无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁,解释锁升级?(高频考点)
20.乐观锁 VS 悲观锁?公平锁 VS 非公平锁?独享锁 VS 共享锁?
23.用java 代码实现一个死锁用例,说说怎么解决死锁问题?回到用例代码下,如何解决死锁问题呢?(高频考点)
26.ReentrantLock底层公平锁和非公平锁的原理(高频考点)
29.除了用Object.wait和Object.notifyAll来实现线程间的交互外,你还会常用哪些来实现?
31.ThreadLocal为什么要使用弱引用和内存泄露问题(高频考点)
32.ThreadLocal怎么解决内存泄露的问题?(高频考点)
36.核心线程池ThreadPoolExecutor的参数/常见线程池的创建参数是什么样的?(高频考点)
38.实现一个自定义的ThreadFactory的作用通常是?
40.ThreadPoolExecutor的工作流程(高频考点)
41.ScheduledThreadPoolExecutor中的使用的是什么队列?内部如何实现任务排序的?
42.线程池的运行逻辑,FixedThreadPool、CachedThreadPool的原理(高频考点)
43.用Executors.newCachedThreadPool创建的线程池,在运行的过程中有可能产生的风险是?
44.阻塞队列ArrayBlockingQueue、LinkedBlockingQueue分析(高频考点)
45.请合理的使用Queue来实现一个高并发的生产/消费的场景,给些核心的代码片段。
47.JUC下的常见类的使用,take、poll的区别,put、offer的区别?
48.Future原理,其局限性是什么?并说说CompletableFuture核心原理?
49.你是否了解fork/join(基本思想)?在工作中是如何使用的?说说他们的优势是什么?(高频考点)
50.Java线程池的调优经验有哪些?(线程池的合理配置)(高频考点)
51.一个请求中,计算操作需要50ms,db操作需要100ms,对于一台8核的机器来说,如果要求cpu利用率达到100%,如何设置线程数?(高频考点)
52.如果系统中不同的请求对应的cpu时间和io时间都不同,那怎么设置线程数量?(高频考点)
53.线程池核心数20,最大600,阻塞队列200,当QPS200(注意是qps)的时候,请求是调第三方阻塞超时,请问怎么提高它的吞吐量(注意不能加机器)?(高频考点)
54.当前线程池是200,线程单次处理请求20ms,那么理论上单节点的qps 是多少呢?
55.多线程对Long数据进行加和会存在什么问题?如何解决?
2.后台服务出现明显“变慢”,谈谈你的诊断思路?(高频考点)
4.在Java程序运行阶段,可以用什么命令行工具来查看当前Java程序的一些启动参数值,例如Heap Size等。
5.用什么命令行工具可以查看运行的Java程序的GC状况,请具体写出命令行格式。(高频考点)
6.用什么工具,可以在Java程序运行的情况下跟踪某个方法的执行时间,请求参数信息等,并请解释下工具实现的原理。
7.当一个Java程序接收请求,很长时间都没响应的话,通常你会怎么去排查这种问题?
(二)JVM相关面试问题整理
6.Java 堆永久代的回收(该部分归属java7,大概率不会问了)
10.简述GC中Stop the world(STW),并说出安全点
21.JVM中GC Root的选择标准是什么?相关JVM的调优参数有哪些?在工作中怎么调优的?
23.一个4核8G的服务器,初步设置JVM参数,如何分配?(必考)
28.JVM虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题?
29.判定一个对象不可达要回收,举个实际例子来说明。有没有从代码层面去直接分析一下?
(三)MySQL相关面试问题整理
1.现有一个IP地址,你觉得在数据库中以何种方式进行存储最好?性能分析对比字符串存储 vs 整数存储?为什么数据库通常推荐将IPv4地址存储为32位整数而不是字符串的原因
4.如何解决事务的并发问题(脏读、不可重复读和幻读)(高频考点)
13.简单谈谈MYSQL Innodb索引的数据结构,并简述B+树的查找过程(高频考点)
14.说说索引使用注意事项与数据类型选择,或则说说MySQL常见索引
17.InnoDB一棵B+树可以存放多少行数据?可否对InnoDB存储引擎B+树的树高进行推导
20.SQL如何优化,给出思路(说出部分即可,一下也只是一些思路)
26.myisam和innodb的区别,什么时候选择myisam
27.binlog\redolog\undolog都是什么,起什么作用?(高频考点)
28.数据库的乐观锁与悲观锁的区别是什么?乐观锁常用的两种实现方式是什么?
35.什么是覆盖索引?如果查询主键id下覆盖索引还生效吗?(高频考点)
36.使用explain 查看数据已经使用了索引,但还是查询很慢,可能的原因是?
37.对于sql如下select a from T where b=23 and c>4 order by d,其如何建立索引可以使查询高效,如何验证?分析下(高频考点)
2.有两张表:订单表有订单号和产品id,产品表有产品id 和产品名称,设计SQL实现返回产品名称和每一项产品的总订单数
7.查询每个商品类别的销售数量和销售总额,并按照销售总额从高到低排序
8.查询每个商品类别的销售数量和销售总额,并只显示销售总额排名前3的商品类别
(四)Redis相关面试问题整理
1.单线程的Redis为什么快?
2.Redis支持的数据类型(必考)
3.Redis和memcached的区别
4.Redis在项目中的主要作用是是什么?怎么用的?(必考)
5.Redis实现分布式锁的思路方案(必考)
6.分析基于Redis的限流器实现
7.Redis和DB数据一致性处理(必考)
8.Redis的数据过期策略分析(必考)
9.Redis的LRU过期策略的具体实现(必考)
10.分析Redis缓存雪崩问题以及解决方案(必考)
11.分析Redis缓存穿透问题和解决方案(必考)
12.Redis的持久化机制分析(必考)
13.分析下Redis的管道pipeline
14.Redis集群容错机制是什么样的?(必考)
15.Redis集群中某个master节点挂了,后面流程怎么判断?(必考)
16.高并发情况下,对于Redis的更新操作有哪些注意事项?
17.高并发下,先更新数据库,再删除缓存,存在啥问题,如何解决呢?
18.高并发情况下,先删除缓存,再更新数据库,这样会有啥问题,解决方案是?
19.zset跳表的数据结构分析(必考)
20.展开说说你了解的跳表
21.Redis使用跳表不用B+树的原因?
22.跳跃表和B+树结构上有啥区别
23.Redis的缓存优化方向有哪些?你们怎么理解的?对热点键的注意事项设计什么?
24.跳表(Skip List)三大问题举例
25.Zset底层的数据结构分析,如何体现的高效?(必考)
26.Redis 6.0以后的线程模型
27.Redis集群模式,节点怎么通信的?满足了CAP那两点?
28.Redis分布式锁实现上有啥问题缺陷?怎么解决?
29.如果是DB实现分布式锁的话,主要思路是?有啥问题?怎么解决?
30.Redis 分布式锁的问题缺以及优化思路
31.Redis 热点key 的问题和优化处理
32.Redis中有一批key瞬间过期,为什么其它key的读写效率会降低?
33.Redis的zset底层什么时候是hash,什么时候是跳表?
34.Redis 数据结构有哪些,底层实现都是什么?
35.Redis 热key 是什么,有什么问题,怎么发现,怎么解决?
36.Redis 中底层是跳表结构,那么插入和查询一个数的流程如何?如果是单位查询,流程又是如何实现的?
(五)Spring相关面试问题整理
1.Spring Boot与以前的Spring有什么区别?
2.Spring Boot启动加载过程是什么样的?
3.Spring的IOC/AOP的实现(必考)
4.动态代理的实现方式(必考)是否使用过CGLiB,和JDK的区别是什么?
5.何时使用JDK还是CGLiB?如何强制使用CGLIB实现AOP?
6.Spring在选择用JDK还是CGLiB的依据是什么?CGlib比JDK快?
7.Spring如何解决循环依赖(三级缓存)(必考)
8.Spring中解决循环依赖为什么要用三级缓存,二级为什么不行呢?
9.spring能解决那些循环依赖、不能解决那些循环依赖,为什么?
10.Spring注入bean的方式有哪些(列举下你使用过的注入Bean的方式)?
11.Spring的后置处理器分析
12.BeanFactory和ApplicationContext的联系和区别
13.说说你对spring事务的理解?
14.Spring的@Transactional如何实现的(必考)
15.Spring的事务传播级别
16.Spring的事务隔离级别
17.Spring的事务失效场景分析
18.Spring的事务失效原因分析(必考)
19.Spring Cloud Zuul网关的调优策略有哪些?怎么实现其高可用?Zuul和Gataway,你们项目中是怎么选择的?项目中对Zuul网关层的要求是什么样的?
20.Spring Cloud Eureka和Nacos对比?怎么做选择?Eureka中高可用是怎么做的?进行的调优有哪些?原理是什么?
21.Spring Cloud 中常用的注解有哪些?怎么用的?
22.Spring Cloud中的组件有哪些?具体说说?微服务架构中用到的关键技术有哪些?
23.Spring Cloud Config配置架构是什么样的?可视化怎么做的?设计的业务有哪些?
(五)网络协议与编程IO相关面试问题整理
1.TCP三次握手过程?第三条丢了会怎样?有什么现象?(高频考点)
2.TCP连接中的四次挥手?四次挥手的最后一个ack的作用是什么?为什么要time wait,为什么是2msl?(高频考点)
5.HTTP报头格式是什么样的?实际中如何解析HTTP报头呢?
11.Rest和Http什么关系? 大家都说Rest很轻量,你对Rest风格如何理解?(高频考点)
14.说说http协议的多线程下载原理以及实现步骤?有啥优势?
17.了解session集群解决方案,通用解决方案?(高频考点)
20.基于BIO实现的Server端,当建立了100个连接时,会有多少个线程?如果基于NIO,又会是多少个线程? 为什么?
21.通常来说基于NIO实现的Server端,会用多少个线程去处理IO事件,为什么?
(六)设计模式相关面试问题整理
6.工厂模式和策略模式的综合使用分析工厂模式和策略模式的综合使用_工厂模式和策略模式结合_张彦峰ZYF的博客-CSDN博客一、简单的工厂模式了解与使用二、简单的策略模式了解与使用三、工厂模式和策略模式的综合使用https://zyfcodes.blog.csdn.net/article/details/106943391
(七)消息中间件相关面试问题整理
1.用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
2.消息中间件的组成有哪些?
3.消息中间件模式分类有哪些?(必考)
4.分析消息中间件的普遍优势(必考)
5.消息中间件常用协议分析
6.消息队列应用场景分析(必考)
7.Kafka数据如何保证不丢失?(必考)
8.Kafka如何保证消息按顺序执行?(必考)
9.Kafka如何保证消息不重复消费?(必考)
10.Kafka如何保证消息队列的高可用?(必考)
11.Kafka 如何保证可靠性?(必考)
12.Kafka的文件存储机制
13.Kafka消息是采用Pull模式,还是Push模式?(必考)
14.Kafka是如何实现高吞吐率的?
15.Kafka判断一个节点还活着的两个条件?
16.Kafka采用的拉取模式还是推送模式?两者有啥区别?
17.如果流量突增导致MQ积压过高,该如何处理?
18. Kafka 什么情况下数据丢失?
19.Netty和kafka都是用了零拷贝,那么零拷贝究竟是怎么实现的?底层原理是?
20.导致MQ积压的原因有哪些?怎么应对?
(八)业务系统及其他相关面试问题整理
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.项目中限流怎么做的?漏桶和令牌桶原理,使用的什么数据结构?并发下队列是否有性能问题?
38.Rpc和消息队列的优缺点,使用场景
39.如何设计rpc框架?你认为其相比其他框架的优点是什么?
40.一般讨论一个系统或服务的技术难点主要从哪些方面分析?
41.做一个商品敏感词系统所面临的技术难点和解决方案有哪些呢?
42.在设计一个接口的时候,我们重点关注的点有哪些?
43.服务器的请求转发了解吗?具体讲讲
44.微博评论数可能不准确,如何解决这个问题,因为一般都千人千面的那个人看到的都不一样
45.布隆过滤器为啥会误判,举例说明?
46.cpu 飘高的原因分析?生产环境中如何应对?