眼看着 9月就已经过去了,现在就 10月份了,想着面试大军可能也过不了几天就要来了,所以这两天整理了一些面经,今天给大家看的是“美团+字节跳动+腾讯”这三家的,每家一二三面,我想大家可以自己测试一下能坚持到哪里。
先来看美团
美团的话,三面下来,设计的内容知识也是挺广的吧,有 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 年的规划。。。。。。
第二个是字节跳动
一面
-
如何设计一个秒杀系统?
-
一天爬一千万条文章,怎么做设计?怎么并行协调?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 基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。