文章目录
- 分布式消息队列
- 分布式搜索引擎
- 高并发高可用架构设计
- 通信协议
- 算法
- 数据结构
- 数据库
- 分库分表
- 分布式缓存
- 分布式服务框架
- corejava
- JVM
-
- 1,请介绍一下JVM内存模型??用过什么垃圾回收器?都说说呗?
- 2,线上发送频繁full gc如何处理?? CPU 使用率过高怎么办?如何定位问题?如何解决?说一下解决思路和处理方法。
- 3,知道字节码吗?字节码都有哪些?
- 4,讲讲类加载机制呗?都有哪些类加载器,这些类加载器都加载哪些文件?手写一下类加载Demo
- 5,知道osgi吗?他是如何实现的???
- 6,请问你做过哪些JVM优化?使用什么方法?达到什么效果???
- 7, class . forName("java. lang.String")和String.class getClassLoader(). loadClass("java. lang.String")什么区别啊??
- Spring
分布式消息队列
1,为什么使用消息队列啊?消息队列有什么优点和缺点啊?
答案:解耦、异步、削峰、写日志(kafka)
2,如何保证消息队列的高可用啊?如何保证消息不被重复消费啊?
3, kafka,act ivemq, rabbitmq, rocketmq都有什么优点,缺点啊???
4,如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路
分布式搜索引擎
1,es的工作过程实现是如何的?如何实现分布式的啊
2, es在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
3, es的查询是一个怎么的工作过程?底层的lucence介绍一下呗?倒排索引知道吗?es和mongdb什么区别啊?都在什么场景下使用啊?
高并发高可用架构设计
1,如何设计一个高并发高可用系统?
2,如何限流?工程中怎么做的,说一下具体实现?
参考:令牌桶算法、漏桶算法
3,缓存如何使用的?缓存使用不当会造成什么后果?
4,如何熔断啊?熔断框架都有哪些?具体实现原理知道吗?
5,如何降级?如何进行系统拆分,如何数据库拆分???
通信协议
1,说一下TCP/IP四层?
2, http的工作流程??? http1.0 http1.1 http2.0具体哪些区别啊?
工作流程:
一次HTTP操作称为一个事务,其工作整个过程如下:
1 ) 、地址解析,
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm
在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。
2)、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
3)封装成TCP包,建立TCP连接(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口
4)客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5)服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
6)服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
http/1.0