眼看着 3月就已经过去了,现在就 4月份了,想着面试大军可能也过不了几天就要来了,所以这两天整理了一些面经,今天给大家看的是“美团+字节跳动+腾讯”这三家的,每家一二三面,我想大家可以自己测试一下能坚持到哪里。
先来看美团
美团的话,三面下来,设计的内容知识也是挺广的吧,有 MySQL、Redis、Kafka、线程、算法、+、volatile、线程、并发、设计模式等等...
一面问题:MySQL+Redis+Kafka+线程+算法
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 作用?底层实现?禁止重排序的场景?单例模式中 volatile 的作用?
如何构造线程池,它的参数,饱和策略?
公平锁和非公平锁区别?为什么公平锁效率低?
线程都有哪些状态?
线程、进程、协程的区别?
同步队列器 AQS 思想,以及基于 AQS 实现的 lock,。
并发工具类 CountDownLatch、CyclicBarrier、Semaphore 介绍
Execuors 类实现的几种线程池类型,最后如何返回?
手写单例模式
手写消费者生产者模式
算法:反转单链表
算法:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
三面
这一面,没问啥东西,主要聊人生,和未来 3 年的规划。。。。。。
第二个是字节跳动
一面:算法+数据库+事务+网络
自我介绍
项目介绍(没亮点,还是问基础)
堆排序的原理及时间复杂度,是否稳定,最坏及最坏场景。
Object 类都有哪些方法?
DNS 解析的过程/浏览器输入一个 url,敲下回车后网络的全过程
HTTP 和 HTTPS 的区别
UDP 怎么实现可靠传输
介绍下 https,是如何加密的,加密算法
数据库索引的优缺点,以及什么时候数据库索引失效
事务的隔离级别?
数据库的脏读,不可重复读,幻读
算法:接雨水:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
算法:N 皇后
二面:Kafka+redis+算法
Kafka 的特性?
Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?
消费者重平衡(高可用性、伸缩性)
哪些情景下会造成消息漏消费?
如何保证消息不被重复消费(幂等性)
KafkaConsumer 是非线程安全的,那么怎么样实现多线程消费?
Kafka 生产者客户端中使用了几个线程来处理?分别是什么?
消费者与生产者的工作流程:
topic 的分区数可不可以增加?
算法:二叉树中的最大路径和
算法:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
三面:Redis+Spring+Dubbo+算法
redis 的 Zset 怎么实现的?
sentinel 和 cluster 区别和各自适用场景
redis cluster 集群同步过程
redis 单线程为什么快?
mybatis 一级缓存和二级缓存
spring 如何解决循环依赖?
spring AOP 的原理。
spring 的生命周期。
Dubbo 服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码
项目中遇到了哪些问题。(抱歉,我的工作就是增删改查,没接触过相关问题)
算法:二叉树的镜像
算法:从上到下打印二叉树
最后瞄一眼腾讯
腾讯这三面下来问的也不少,自求多福吧。
一面
如何设计一个秒杀系统?
一天爬一千万条文章,怎么做设计?怎么并行协调?100 台服务器怎么尽可能负载均衡?
有用过短域名服务吗,能说一下吗?
微服务的特点,如何实现服务发现和负载均衡
如何排查线上问题?(背过,没排过)
贝叶斯的概率学原理
负载均衡的加权轮询算法怎么实现
如果用户量大幅度上涨,如何优化?
paxos 算法(这个算法太难,学的时候就没太理解)
平时都看什么博客,最近看什么书了
二面
自我介绍
项目介绍
redis 的 5 种类型,及其实现原理
如何使用 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,阻塞与非阻塞的区别
分布式接口的幂等性设计(不能重复扣付款)
算法:二叉搜索数与双向链表(这个懵了)
算法:最长不含重复字符的子字符串
算法:手写快速排序、插入排序、冒泡排序,并分析时间复杂度和空间复杂度,它们的稳定性
结局
看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家看一下互联网工程师必备的面试 1000 题。
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT 名企算法与数据结构题目最优解》,里面近 **200 道真实出现过的经典代码面试题
其余像设计模式,建议可以看看下面这 4 份 PDF(小编我已经整理)
设计模式
更多的 Java 面试学习笔记如下,关于面试这一块,我额外细分出 Java 基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
限于平台篇幅原因,更多内容展示不了,觉得不错的需要的可以三连支持一下