前言
我大概我是从去年 12 月份开始看书学习,到今年的 6 月份,一直学到看大家的面经基本上百分之 90 以上都会,我就在 5 月份开始投简历,边面试边补充基础知识等。也是有些辛苦。终于是在前不久拿到了阿里的 offer,定级 P7。
我现在也来写面经,把我还能记住的,写下来,反馈给大家:
一面:
mysql 知道哪些存储引擎,它们的区别
mysql 索引在什么情况下会失效
mysql 在项目中的优化场景,慢查询解决等
mysql 有什么索引,索引模型是什么
B- 树与 B + 树的区别?为什么不用红黑树
mysql 主从同步怎么做
乐观锁与悲观锁的区别?
binlog 日志
redis 持久化有哪几种方式,怎么选?
redis 主从同步是怎样的过程?
redis 的 zset 怎么实现的?
redis key 的过期策略
hashmap 是怎样实现的?为什么要用红黑树,而不用平衡二叉树?为什么在 1.8 中链表大于 8 时会转红黑树?HashMap 为什么线程不安全的?
如何实现线程安全的 hashmap?
select 和 epoll 的区别
http 与 https 的区别,加密怎么加的?
raft 算法详细讲解
Kafka 选主怎么做的?
kafka 如何保证生产与消费都是同步的?
kafka 怎么保证不丢消息的
redis 如何保证高可用
算法:剪绳子(贪心或递归解决)
算法:给前序和中序遍历,重建二叉树
二面:
自我介绍
讲讲项目(项目没啥亮点,直接问基础)
volatile 作用?底层实现?禁止重排序的场景?单例模式中 volatile 的作用?
如何构造线程池,它的参数,饱和策略?
公平锁和非公平锁区别?为什么公平锁效率低?
线程都有哪些状态?
线程、进程、协程的区别?
同步队列器 AQS 思想,以及基于 AQS 实现的 lock,。
并发工具类 CountDownLatch、CyclicBarrier、Semaphore 介绍
Execuors 类实现的几种线程池类型,最后如何返回?
手写单例模式
手写消费者生产者模式
算法:反转单链表
算法:给定一个只包含 ‘(‘ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
三面:
这一面,没问啥东西,主要聊人生,和未来 3 年的规划。
下面为大家附上我在朋友那要到的字节跳动以及京东的面试题
一面:
自我介绍
项目介绍(没亮点,还是问基础)
堆排序的原理及时间复杂度,是否稳定,最坏及最坏场景。
Object 类都有哪些方法?
DNS 解析的过程 / 浏览器输入一个 url,敲下回车后网络的全过程
HTTP 和 HTTPS 的区别
UDP 怎么实现可靠传输
介绍下 https,是如何加密的,加密算法
数据库索引的优缺点,以及什么时候数据库索引失效
事务的隔离级别?
数据库的脏读,不可重复读,幻读
算法:接雨水:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
算法:N 皇后
二面:
1. Kafka 的特性?
2. Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?
3. 消费者重平衡(高可用性、伸缩性)
4. 那些情景下会造成消息漏消费?
5. 如何保证消息不被重复消费(幂等性)
6. KafkaConsumer 是非线程安全的,那么怎么样实现多线程消费?
7. Kafka 生产者客户端中使用了几个线程来处理?分别是什么?
8. 消费者与生产者的工作流程:
9. topic 的分区数可不可以增加?
10. 算法:二叉树中的最大路径和
11. 算法:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
三面:
redis 的 Zset 怎么实现的?
sentinel 和 cluster 区别和各自适用场景
redis cluster 集群同步过程
redis 单线程为什么快?
mybatis 一级缓存和二级缓存
spring 如何解决循环依赖?
spring AOP 的原理。
spring 的生命周期。
Dubbo 服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码
项目中遇到了哪些问题。(抱歉,我的工作就是增删改查,没接触过相关问题)
算法:二叉树的镜像
算法:从上到下打印二叉树
一面:
如何设计一个秒杀系统?
一天爬一千万条文章,怎么做设计?怎么并行协调?100 台服务器怎么尽可能负载均衡?
有用过短域名服务吗,能说一下吗?
微服务的特点,如何实现服务发现和负载均衡
如何排查线上问题?(背过,没排过)
贝叶斯的概率学原理
负载均衡的加权轮询算法怎么实现
如果用户量大幅度上涨,如何优化?
paxos 算法(这个算法太难,学的时候就没太理解)
平时都看什么博客,最近看什么书了。
二面:
自我介绍
项目介绍(面试官:你说你经验不足,那咱们从基础来问)
redis 的 5 种类型,及其实现原理(redis 设计与实现这本书我倒背如流,面试官夸我很不错)
如何使用 redis 的 Zset 实现延时队列?
redis 如何实现高可用?
redis 缓存穿透、缓存击穿、缓存雪崩。
布隆过滤器的实现。
如何保证 mysql 与 redis 的双写一致性。
负载均衡算法有哪些?
服务发现是怎么实现的?
熔断是怎么实现的?
算法:连续子数组的最大和
讲讲分布式 CAP 和 BASE?
什么是强一致性
分布式事务的解决方案?
TCC(两阶段型、补偿型)
id 生成器如何实现?
如何判断一个图是否有环?
一致性 Hash 算法,及其应用。
背包问题
三面:
自我介绍
项目介绍
redis 的 zSet 如何实现?
redis 持久化机制。
redis 的 Hash 类型讲解,渐进式 rehash。
HashMap 原理,一个 put 操作,都有什么流程?
nginx 有自己配置过吗(这个是我唯一手动操作过的,这个不是背的)
nginx 的使用场景。
什么是分布式,什么是集群,区别是什么?
在基于 dubbo 的分布式环境中,一般将超时 timeout 设置在 provider 还是 consumer?
dubbo 中负载均衡的策略有哪些?
接口的异步调用?如何设置?运行效果?
谈谈基于 dubbo 的系统中 consumer 集群的解决方案?
mysql 是集群还是单节点?最大连接数,最大的表中数据量大约是多少?
mysql 主从复制主要有哪几种模式?
mysql 索引,B+ 树,为什么不用红黑树?
数据库垂直与水平拆分怎么做。
分布式 session 设置
IO、BIO、NIO,阻塞与非阻塞的区别?
分布式接口的幂等性设计(不能重复扣付款)
算法:二叉搜索数与双向链表(这个懵了)
算法:最长不含重复字符的子字符串
算法:手写快速排序、插入排序、冒泡排序,并分析时间复杂度和空间复杂度,它们的稳定性。
总结
多看多记,多做题多看书,希望大家可以找到自己喜欢的工作,一切顺利。