前言
在大数据、高并发的系统中,为了突破瓶颈,会将系统进行水平扩展和垂直拆分,形成独立的服务。每个独立的服务背后,可能是一个集群在对外提供服务。这就会碰到一个问题,整个系统是由多个服务(子系统)组成的,数据需要在各个服务中不停流转。如果数据在各个子系统中传输时,速度过慢,就会形成瓶颈,降低整个系统的性能。从而就形成了以Kafka为中心的解决方案!
因为阅读Kafka源码重要性就不言而喻,今天小编就分享一份拼多多Kafka的源码笔记,现已面向大众全面开源!(为了不影响大家的阅读体验,免费获取方式放在了文末!)
这份笔记从Kafka的应用场景、源码环境搭建开始逐步深人,不仅介绍Kafka的核心概念,而且对Kafka生产者、消费者、服务端的源码进行深人的剖析,最后介绍Kafka常用的管理脚本实现,让读者不仅从宏观设计上了解Kafka,而且能够深人到Kafka的细节设计之中。在源码分析的过程中,还穿插了笔者工作积累的经验和对Kafka设计的理解,希望读者可以举一反三, 不仅知其然,而且知其所以然。
字节跳动一面
- 自我介绍,我简历里面有一个商城的项目
- 画一个商城项目的所有的模块,然后讲解。
- 在用户登录的时候,由于HTTP是无状态的如何识别不同的用户(session或者cookie) ,然后让说一下session和cook各有什么优缺点
- 单点登录的问题如何解决(服务器集群的情况下,用户如何在一-台服务器上登录,访问其他的服务器就不需要登录了) ?答:服务器集群之间厂播session厂播或者使用Redis共享session
- Redis的底层是通过什 么实现的?
-
为什么Redis他是通过hashtable实现的,但是它的扩容的时候并没有卡顿?
- 为何Redis是单线程的还是这么快?
- 商城如果有用户注册的模块,那么在用户注册成功之后一般会返回一个邮箱连接,然后用户点击连接跳转到商城主页。现在要求连接的有效时间为30分钟,这种服务如何保证?
- 可以在数据表中增加一个超时时间的字段,用户点击连接的时候判断是否已经超时
- 在进行商品展示的时候,如果一个商品有不同的分配,那么可能会涉及到有多级分类的问题- -》如何涉及数据库表,来实现商品的多级分类。
- 把你知道的TCP都说下?
- 说一些TCP的三次握手、四次挥手?以及各自的状态
- 在四次挥手的情况下,如果服务器端出现了大量处于close-wait的连接状态,分析一下原因,如何设置参数解决这样的问题?
- 在客户端time-wait的状态-般会持续多长时间?为什么要持续这么长时间?如何有大量的time-wait状态,出现这种情况的原因是什么?如何解决?
-
两个字符串的最大子序列问题
-
- *
字节跳动二面
- 对于你的商城项目,如果对于同一个分类有多个卖家,如何设计数据表?
- 对于高并发的系统,如何设计架构才能避免瞬间数据库收到瞬间高流量的冲击? Redis消息队列
- 如果你用Redis实现的话,可能会出现商品超卖的问题,那么你是如何结果商品超卖问题的?
- 一般在支付的过程中,用户支付、账户被冻结、订单的生成、卖家库存减少、卖家收到钱,这是个一系列的过程,那么你如何设计实现分布式的事务?答:消息队列
- 如果用户在提交订单之后向消息队列发送消息,这个时候网络出现异常,消息队列并没有接收到用户发送的消息怎么办?答:消息队列会有一个回调接口,对于那些没有确认或
- 者取消的消息不断的轮训,判断是否提交成功。
- 对于不同的业务我们会进行分库存储,说一下MySQL的主备模式?
- MySQL的主从同步时如何实现的?日志
- 在MySQL的主从同步过程中,SQL线程可不可以并行的执行?答:不可以,因为这样可能SQL执行的顺序不同,导致事务提交时间有差异
- 说一下NIO机制、select系 统调用函数?
- B B+树的特点?
- 字符串匹配
- 二叉搜索树的第K小节点
- 链表每隔K个节点进行翻转。
卡着我的项目一直问,大家去面试的时候,一定要对简历中所用到的知识点有一定的见解,不要被面试官的连环炮吓到了!
最后
金三银四马上就到了,希望大家能好好学习一下这些技术点
学习视频:
大厂面试真题:
本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录