总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
-
这几道Java集合框架面试题在面试中几乎必问
-
讲讲jvm运行时数据区
-
什么情况下会发生栈内存溢出。
-
JVM的内存结构,Eden和Survivor比例。
-
JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。
-
JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数。
-
讲下cms和G1,包括原理,流程,优缺点。
-
垃圾回收算法的实现原理。
-
G1,包括原理,流程,优缺点。
-
CMS收集器学习笔记
-
垃圾回收算法的实现原理。
-
当出现了内存溢出,你怎么排错。
-
JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存等。
-
简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。
-
讲讲JAVA的反射机制。
-
加载时机与加载过程
-
Java类加载的方式
-
Java对象的创建过程
-
你们线上应用的JVM参数有哪些。
-
g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择。
-
怎么打出线程栈信息。
-
可能是把Java内存区域讲的最清楚的一篇文章
-
搞定 JVM 垃圾回收就是这么简单
-
简单讲讲tomcat结构,以及其类加载器流程,线程模型等。
-
tomcat如何调优,涉及哪些参数 。
-
讲讲Spring加载流程。
-
Spring循环依赖
-
Spring AOP的实现原理。
-
讲讲Spring事务的传播属性。
-
Spring如何管理事务的。
-
说说你对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理。
-
Springmvc 中DispatcherServlet初始化过程。
-
netty的线程模型,netty如何基于reactor模型上实现的。
-
为什么选择netty。
-
什么是TCP粘包,拆包。解决方式是什么。
-
netty的fashwheeltimer的用法,实现原理,是否出现过调用不够准时,怎么解决。
-
netty的心跳处理在弱网下怎么办。
-
netty的通讯协议是什么样的。
-
springmvc用到的注解,作用是什么,原理。
-
springboot启动机制。
-
Mybatis的底层实现原理。
-
Linux系统下你关注过哪些内核参数,说说你知道的。
-
Linux下IO模型有几种,各自的含义是什么。
-
epoll和poll有什么区别。
-
平时用到哪些Linux命令。以及如何排查线上问题
-
介绍下你理解的操作系统中线程切换过程。
-
用过线程池吗,如果用过,请说明原理,并说说newCache和newFixed有什么区别,构造函数的各个参数的含义是什么,比如coreSize,maxsize等。
-
假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到。
-
countdowlatch和cyclicbarrier的内部原理和用法,以及相互之间的差别(比如countdownlatch的await方法和是怎么实现的)。
-
简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处。
-
http1.0和http1.1有什么区别。
-
TCP三次握手和四次挥手的流程,为什么断开连接要4次,如果握手只有两次,会出现什么。
-
TIMEWAIT和CLOSEWAIT的区别。
-
说说你知道的几种HTTP响应码,比如200, 302, 404。
-
当你用浏览器打开一个链接(如:http://www.javastack.cn)的时候,计算机做了哪些工作步骤。
-
TCP/IP如何保证可靠性,说说TCP头的结构。
-
如何避免浏览器缓存。
-
如何理解HTTP协议的无状态性。
-
简述Http请求get和post的区别以及数据包格式。
-
HTTP有哪些method
-
简述HTTP请求的报文格式。
-
HTTP的长连接是什么意思。
-
HTTPS的加密方式是什么,讲讲整个加密解密流程。
-
Http和https的三次握手有什么区别。
-
什么是分块传送。
-
Session和cookie的区别。
-
搞定计算机网络面试,看这篇就够了(补充版)
-
设计一个秒杀系统,30分钟没付款就自动关闭交易。
-
如何使用redis和zookeeper实现分布式锁?有什么区别优缺点,会有什么问题,分别适用什么场景。
-
如果知道redlock,讲讲他的算法实现
-
分布式事务的原理,优缺点,如何使用分布式事务,2pc 3pc 的区别,解决了哪些问题,还有哪些问题没解决,如何解决,你自己项目里涉及到分布式事务是怎么处理的。
-
什么是一致性hash。
-
什么是restful,讲讲你理解的restful。
-
如何设计一个良好的API。
-
如何设计建立和保持100w的长连接。
-
解释什么是MESI协议(缓存一致性)。
-
说说你知道的几种HASH算法,简单的也可以。
-
什么是paxos算法, 什么是zab协议。
-
一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进行编辑更新。
-
线上系统突然变得异常缓慢,你如何查找问题。
-
说说你平时用到的设计模式。
-
Dubbo的原理,有看过源码么,数据怎么流转的,怎么实现集群,负载均衡,服务注册和发现,重试转发,快速失败的策略是怎样的 。
-
一次RPC请求的流程是什么。
-
自己实现过rpc么,原理可以简单讲讲。Rpc要解决什么问题。
-
异步模式的用途和意义。
-
编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用。
-
设计一个社交网站中的“私信”功能,要求高并发、可扩展等等。 画一下架构图。
-
MVC模式,即常见的MVC框架。
-
聊下曾经参与设计的服务器架构并画图,谈谈遇到的问题,怎么解决的。
-
应用服务器怎么监控性能,各种方式的区别。
-
如何设计一套高并发支付方案,架构如何设计。
-
如何实现负载均衡,有哪些算法可以实现。
-
Zookeeper的用途,选举的原理是什么。
-
Zookeeper watch机制原理。
-
请思考一个方案,实现分布式环境下的countDownLatch。
-
后台系统怎么防止请求重复提交。
-
描述一个服务从发布到被消费的详细过程。
-
讲讲你理解的服务治理。
-
如何做到接口的幂等性。
-
如何做限流策略,令牌桶和漏斗算法的使用场景。
-
什么叫数据一致性,你怎么理解数据一致性。
-
分布式服务调用方,不依赖服务提供方的话,怎么处理服务方挂掉后,大量无效资源请求的浪费,如果只是服务提供方吞吐不高的时候该怎么做,如果服务挂了,那么一会重启,该怎么做到最小的资源浪费,流量半开的实现机制是什么。
-
dubbo的泛化调用怎么实现的,如果是你,你会怎么做。
-
远程调用会有超时现象,如果做到优雅的控制,JDK自带的超时机制有哪些,怎么实现的。
-
10亿个数字里里面找最小的10个。
-
有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优。
-
2亿个随机生成的无序整数,找出中间大小的值。
-
给一个不知道长度的(可能很大)输入字符串,设计一种方案,将重复的字符排重。
-
遍历二叉树。
-
有3n+1个数字,其中3n个中是重复的,只有1个是不重复的,怎么找出来。
-
常用的排序算法,快排,归并、冒泡。 快排的最优时间复杂度,最差复杂度。冒泡排序的优化方案。
-
二分查找的时间复杂度,优势。
-
一个已经构建好的TreeSet,怎么完成倒排序。
-
什么是B+树,B-树,列出实际的使用场景。
-
一个单向链表,删除倒数第N个数据。
-
200个有序的数组,每个数组里面100个元素,找出top20的元素。
-
单向链表,查找中间的那个元素。
-
剑指Offer学习【所有面试题汇总】
-
为什么要用Btree实现,它是怎么分裂的,什么时候分裂,为什么是平衡的。
最后
看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面
小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>
针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
[外链图片转存中…(img-Gkj7vXkg-1714884119419)]
针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺
[外链图片转存中…(img-EAgLZX3O-1714884119419)]
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
[外链图片转存中…(img-AvxtGZiZ-1714884119419)]
[外链图片转存中…(img-yO4cndDq-1714884119419)]