20届,最终选择了字节。
北京滴滴(offer)
一面
- 自我介绍
- 介绍自己做的项目,难点有哪些,怎么处理的?
- 拆分读服务是微服务的什么思想?
- 拆新的服务和之前服务水平扩展 有什么不一样?
- 数据库层面有没有数据扩展?
- QPS 8W 总单量是多少 ?
- 本地缓存怎么保证数据一致性?
- MQ 如果挂了 怎么办?
- Redis 集群了解吗?
- 数据清洗怎么做的?
- 如何保证最终一致性?
- 顺序消息如何保证?
- ES 怎么用的?数据量级多少?为什么用ES 不用Hbase?
- Zookeeper 作为注册中心有什么问题?如果 海量服务同时重启会出现什么问题
- 算法:环形链表 II
二面
- 项目介绍
- 大促期间服务总QPS , 多少个服务,每个服务多少个线程
- 服务器线程数量根据什么来配置?
- Redis 集群的工作原理? gossip协议? 写和读的流程? CRC16 再取余 这个计算 在client 还是服务端?可以决定哪个key 放在哪个节点吗?
- Redis 主从同步流程?
- Redis 的 hash结构 怎么 rehash的?如果渐进式时,这些的key突然都不访问了 会有什么问题
- MySQL innodb 引擎的索引结构,B+树一般都多高? 层高怎么计算?
- 联合索引 abc where a = 3 and b > 3 and c= 3 怎么走索引?
- 如果MySQL 表中有一个字段很大有几K会有什么问题?
- 索引下推了解吗?
- 场景设计:如何设计一个会议室预定系统?
- 算法: 给数组arry 和值 x 计算 数组 array 中差值绝对值为X的数对;
三面(HRBP)
- 离职原因;
- 用三个词评价一下你的领导;
- 未来规划;
- 你有什么缺点;
- 遇到过最大的问题;
总结
一面整体上全是项目和场景考虑,因为他们是用go开发,我之前是用Java,所以一直在问中间件,没有Java八股文,不过中间件问的蛮深,面试体验很好;
杭州网易(offer)
一面
- 讲一下JUC 下的线程池,线程池参数以及提交任务后怎么执行
- Lock 的加锁和解锁过程和公平锁和非公平锁实现原理
- Conditional 源码有没有看过
- 阻塞队列 源码有没有看过
- JVM 调优讲一下?非常细 什么命令 怎么分析的 面板什么样子都有问
- CMS + ParNew 算法的对象分配和垃圾回收流程
- 什么时候会出发full gc
- old区什么时候触发CMS GC 什么参数 配置大了会怎么样 配置小了会怎么样
- 为什么会产生浮动垃圾
- MySQL 的隔离级别,MVCC 原理 ,乐观锁 在什么隔离级别才能使用?
- Kafka 的ISR是什么,HW呢?怎么保证可靠性, Kafka 怎么实现顺序消息?为什么Kafka的broker上topic越多 效率越慢?
- 讲一下项目的完整流程 数据模型,多个版本经常变化怎么控制的?(每个校验模块提供原子能力 可以配置化,如何设计)
- 分布式事务 是怎么保证的, MQ的方式 如果本地执行成功同时服务挂掉了 这个MQ没有记录 怎么办?
二面
- Zookeeper工作原理讲一下,有没有看过源码;
- 讲一下你负责的业务的服务架构,以及你们部门的服务架构;
- 你觉得现在架构有什么不合理的地方?
- 有没有看过什么中间件的源码?
- 区块链了解吗?
总结
因为简历投错了部门,投到了区块链,所以问我很多源码,比较底层的东西,因为做区块链开发可能会难一点,所以会问有没有看过源码,整体面试体验很好;
Shopee(offer)
一面
- 项目问题( 聊了 30分钟);
- MySQL 主从同步原理;
- MySQL 索引优化;
- 线上问题定位 以及优化过程;
- Redis 集群 的工作原理,集群写入数据原理, 增删节点 如何数据同步?Redis的hash过程;
- Kafka 讲一下,offset存储原理;
- 算法: 1.栈实现队列 2.三数之和
二面
- 介绍一下自己的亮点;
- 讲一下做的项目;
- Kafka 讲一下;
- MySQL 的索引讲一下;
- Redis 的key过期 怎么删除的 ?主动删除 和被动删除;
- Redis 击穿 雪崩 穿透 和解决办法;
- MQ 同步信息怎么保证数据的一致性和实时性?
- JVM调优过程说一下;
- 算法:1.二叉树的前序,中序,后序遍历; 2.最长重复子数组
总结
参加的是周末专场面试,一个周末面完+出结果,整体是项目+中间件,算法每一面都是两道一个easy,一个mid,整体面试体验很不错;
B站(offer)
一面
- MySQL 行级锁,表级锁。意向锁 加锁时机是什么? 项目中有没有使用过意向锁?
- 如果查询语句有没有索引,SQL调优过程?
- Spring 事务注解原理,事务传播机制,使用过什么传播机制?
- RocketMq 消费者重平衡 会有什么问题?重复消费? 消费失败? 这些场景如何处理
- 数据一致性怎么保证? 分布式事务怎么实现?
- 动态代理有哪些,什么区别,使用注意方式;
二面
- 项目主要负责什么?
- 数据清洗怎么做的?
- Kafka 怎么保证消息一定被消费?
- qps8W 多少台机器? 什么配置? 总qps? 线程数量? mysql 版本? 走的什么索引? 会不会回表?
- 说了自己加redis和本地缓存 然后问我本地缓存的配置?
- 如何保证Redis,DB数据一致性?双删策略 为什么要多删除一次?
- HashMap的扩容过程? 会发生什么问题?
- MyBatis 的接口和mapper怎么对应执行?
- 还做过什么技术优化?
- 分布式锁怎么实现? 分布式锁怎么实现阻塞队列?
- 本地锁 怎么实现阻塞队列的唤醒的?
- Zookeeper 怎么实现Cp?
- ZK 怎么选举的 怎么投票的?
- 算法:1.多线程循环打印ABC; 2反转链表。因为是现场面试,纸上手写,所以给了两道题目难度都还好
三面
- 你们部门的服务架构讲一下?
- 接口优化怎么做?
- 什么场景下,都用过哪些并发?你用多线程的时候 Synchrionzed和ReentranLock怎么选择的?选择原则是什么?
- 压测和故障演练做过吗? 你都扮演什么角色?有什么收获?
- 用的什么rpc和注册中心?有什么优缺点?
- 未来三五年规划?期望薪资?
总结
因为是使用Java的,所以Spring问的比较多,一面比较贴合实际,都是面试官开发中常见的问题;二面对项目整体做个梳理和一些中间件知识;三面从架构和优化,压测等角度去问看看广度和高度吧主要;
携程(offer)
一面
- 讲一下ArrayList和HashMap 底层数据结构,优缺点,使用方式;
- CuurentHashMap有用过吗?
- CAS 设计思路和原理?
- ThreadLocal底层原理?
- 什么场景使用的ThreadLocal?
- 什么场景使用了多并发?
- 用到了Java jdk8的哪些新特性?
- Lambda怎么用的,Stream的实现原理?
- 除了刚刚的场景 还有什么场景使用过异步任务,并发任务计算结果后做聚合 怎么做?
- 网络编程 用过吗? IO讲一下
- 你开发中都用到了什么设计模式?
- 工厂模式的设计理念是什么?有什么好处?体现了什么编程思想?
- 适配器模式了解吗? 策略和适配器模式有什么区别,你为什么选择用策略模式而不是适配器原因是什么?
- 设计模式都有什么开发原则?
- JVM调优经验 说一下做了什么?
- JVM 知识你讲一下?
- Spring 事务注解Transaction 实现原理?
- A方法调用B方法,如果B方法开启事务 则直接用B方法的事务,如果是你 你怎么设计怎么做?
- InnoDb的默认隔离级别,可重复读,解决了什么问题 没有解决什么问题?
- 什么场景下使用了ES?
- 倒排索引 是什么讲一下?
- 为什么ES检索比较快?
- 你使用MQ(RocketMq和Kafka)的应用场景什么?
二面
- 服务器都多少线程,发起一个请求去调用第三方,是新增加一个请求吗?如果服务器线程使用完了怎么办?
- 灰度上线流程怎么做的?
- 数据洗刷 怎么做的 双写 怎么避免循环写?
- ES 数据结构是怎么样的?
- 25匹马 5个赛道 怎么跑 才能最少批次找到最快的三匹马?
- 分裤分表下 怎么做业务逻辑查询?怎么生成一个全局唯一的id?
- 场景设计:给一个10G的文件,里面只有两行记录是一样的,如何找出(电脑内存只有500M)
算法:有效的括号
三面
- 负责的·项目 业务流程和 服务架构都说一下?(20min)
- bigdecimal 使用需要注意什么,还有什么其他编程时需要注意的规范?
- MySQL 库表上线之前需要做什么工作?
- 索引为什么是B+树结构,MySQL都有哪些引擎,有什么区别?
- MySQL深度分页怎么解决?
- ThreadLocal原理?使用需要注意什么?
- 如果做海外的业务,使用数据库需要注意什么地方?时区
- 有没有做过海外业务?多语言,多币种有没有什么解决方案?
总结
感觉携程的面试比较中规中矩,基本上所有知识面都有考察到,也比较符合实际,项目,基础知识,场景设计,算法,代码规范都有,但是相应更看重 项目和基础知识和代码规范,面试体验很好;
阿里(曲折的面试经历)
阿里一共面了三个部门:淘宝,饿了吗,供应链
年前面淘宝两面,到三面没有hc了,搁浅;饿了吗有同学联系,面完两面,结合自己情况不再考虑这个机会;年后又面了供应链,后来有offer,没有继续走流程;
淘宝一面
- 先聊了20分钟项目 问难点 如何解决
- HashMap在使用时需要注意什么地方 至少说出四点;
- 你的多并发控制是怎么使用的,都有哪些多并发控制手段
- 线上有死循环代码 你怎么排查定位到
- MySQL的 事务 实现原理和隔离级别
- 对于索引,你觉得在开发中需要注意什么?
- 分布式锁的实现 和 底层原理 以及都有什么问题?
- NIO 和 AIO 的区别
- Kafka 的 架构和工作原理?
- Kafka为什么这么快,顺序写 是这么实现的?
- 你觉得你做的业务的价值是什么 解决了什么问题?
- 你觉得 你做的对业务最有价值的一件事情是什么?
- 笔试:1.找出代码的bug 一段多线程代码 找出三个bug
- 给你Memcached Clinet 实现一个消息队列
淘宝二面
- 设计方案主要做哪些事
- 线程池的阻塞队列有几种,你们用的那种,拒绝策略有几种,你们用的哪个,为什么
- 线程池里面的execute 和 submit 方法有什么区别
- 线上线程池打满,如何优化的?JVM 你了解什么? CMS 为什么会有浮动垃圾? 什么时候会进行CMS GC? 什么时候会进行Full GC?CMSGC和 FULL GC有什么不一样?
- spring中bean的生命周期
- explain 执行分析,你们主要关注哪些字段,为什么
- 线程池核心参数
- java内存模型讲讲,内存屏障是干嘛的
- Zookeeper 作注册中心 和nacos 和eruka 有什么差异 ?基于什么理论选择?
- JVM调优经验说一下
总结
很遗憾面到三面没有hc了(拥抱变化),面试更贴合实际,比如:HashMap在使用时需要注意什么地方 至少说出四点,看起来很简单,但是需要知道HasHMap的结构和工作原理,JVM和Spring问题会多一点,也会关注你的业务Sense,对业务有没有推动;
字节(offer)
一面
- 项目问题(20min)
- binlog 和 redolog 有什么区别?
- MySQL 不同存储引擎有什么区别
- Kafka 为什么这么快,主从同步怎么做的?HW 和LEO分别是什么;
- 让你实现一个消息中间件,你会设计哪些模块?
- ES查询流程?
- B+树的特性?
- Select / Poll / Epoll 的区别?
- Redis 集群工作原理? 如何通信?MOVED和ASKED 有什么区别?
- 服务设计:设计一个短链系统;
- 算法:接雨水
二面
- 项目问题(10min)
- JVM 的内存模型
- G1 和CMS GC过程都说一下,分别适用什么场景? JVM调优过程说一下?
- 内存溢出和内存泄漏?什么情况下会出现? 怎么避免?
- HTTPS 的工作原理? 有哪些常见的加密算法?
- 顺序消息 如何实现?
- 数据库索引的原理?联合索引和索引下推?
- Redis数据结构?为什么用快表而不用平衡查找树?
- Redis主从复制过程?
- 一个数组 int[10] 在JVM内存上怎么分配的?多大空间?
- 场景设计:设计一个分布式限流器
- 算法:寻找重复的子树
三面
- 项目介绍;
- DDD了解吗,讲一下?
- RocketMQ有什么缺点? Kafka有什么缺点?使用场景分别是什么?
- 用过什么设计模式?
- 使用Redis 需要注意哪些地方?
- 工作遇到过什么问题? 如何解决的?
- 工作中和同事遇到冲突,如何解决?
- 场景设计:公司的各系统都有计数需求(如头条文章的阅读数、评论数、点赞数等),请设计一个统一计数服务。
- 算法:LFU 缓存
- 还有一些忘记了。。。
总结
一二面考察比较全面,以技术问题为主,涉及面较广;具体包括:计算机基础、编程语言、数据结构与算法、系统设计题等一些问题会涉及到原理与细节;三面也会看反应力、方法论。面试体验比较好。