- 一面
- 二面
- 三面
- 四面
- S部门一面
- S部门二面
1、JVM如何优化的?CMS算法执⾏流程?什么情况下发⽣的Full GC? 2、分布式事务讲⼀下?可靠消息⼀致性实现⽅案 + 最⼤努⼒送达通知⽅案,最后也提到了单应⽤多DB(JPA)、TCC事务以及适⽤场景。 3、ES是如何调优的?副本机制作⽤?
二面1、将最近做的两个项⽬详细讲解 + 现场画出整体系统架构图并结合架构图讲解+ 设计模式类图 3、MySQL数据库底层实现结构?B+树结构,也讲了数据⻚,以及⻚⽬录相关的 4、Spring Bean循环依赖如何解决的? 5、MyBatis⼆级缓存如何实现的? 6、分布式缓存讲下CouchBase基本原理? 7、RabbitMQ如何保证⾼可⽤的?queue数据在节点之间如何同步的?死信队列如何实现的?
三面讲解项⽬从客户端到后端的具体流程。扩展技术⾯,⽐如Http2都有哪些改进的?Redis最新特性了解哪些?等等
四面1、介绍具体项⽬突出贡献 2、⾼并发与性能的关系?根据项⽬经验⾃有发挥 3、缓存和数据库⼀致性如何保证的?谈到了分布式锁,那详细讲讲分布式锁实现?redis setnx、redisson、zookeeper 4、项⽬架构中如何做技术选型?
S部门一面1、JVM中的CMS和G1垃圾回收器所对应算法的具体区别? 2、线程池相关问题
1、Dubbo 1.1 说⼀下Dubbo的具体执⾏流程,涉及哪些模块,作⽤? 1.2 使⽤过过Dubbo哪些特性,做过哪些扩展?Dubbo⾥的泛化有了解过吗? 1.3 Dubbo中的注册中⼼Zookeeper是如何注册上去的? 2、Zookeeper 2.1 Zookeeper节点有哪⼏种类型(临时、持久)? 2.2 如何注册的,如何选举的(选举算法?), 2.3 如何完成监听或者说是订阅的? 2.4 提到了分布式锁,在Curator框架中是如何实现的,watch机制本地数据结构啥样的? 3、Redis 3.1 都⽤过哪些数据类型?分别介绍下使⽤场景? 3.2 持久化机制,AOF、RDB具体区别有哪些? 3.3 Redis 主从同步机制是怎么样的,⽐如slave启动之后同步过程? 3.4 Redis Cluster集群如何选主的? 3.5 Redis Cluster 跟哨兵模式有什么区别吗? 3.6 Sentinel 哨兵模式是如何选主的?这⾥说跟cluster差不多,追问了下,其实还是有些区别的, sdown odown 主观宕机、客观宕机⽅式不太⼀样 4、Kafka 4.1 ⽣产端是如何发送⼀条消息到Broker的? 4.2 具体可以调整哪些参数提升吞吐量? 4.3 消费端发⽣rebalance的过程是怎样的?⽐如有⼀个新的consumer加⼊ 到了Group中是个什么流程? 5、⼿写算法 算法题:⼀个链表,输⼊k,⽐如k=3,翻转前3个链表值
S部门二面1.Redis哪里不够专注的地方,因为Redis5.0还提供了Stream作为持久化队列解决⽅案,Redis应该更专注分布式缓存这块,反⽽野⼼也很⼤,还要⽀持类似MQ的功能,并且也参考了Kafka设计思想,所以也不够专注。
2、 ⼿写多线程题⽬:T1线程输出都是A,T2线程输出的都是B,T3线程输出的都是C要求三个线程启动后输出顺序:ABCABCABC
基础知识必备: 数据结构与算法(如果不是面头条这种公司,掌握常用数据结构算法就够了)、Java基础、JVM、并发、⽹络&NIO、设计模式
中间件相关: 缓存(Redis为主)、消息队列(Kafka、RabbitMQ、RocketMQ)、数据库(MySQL)、搜索(ES)
分布式相关: 分布式理论(CAP、BASE)、分布式锁、分布式事务、分布式幂等框架&源码相关:Spring、MyBatis、SpringBoot、SpringCloud、RPC(如:Dubbo)、Netty等常⽤框架
架构&容器相关: 微服务架构(架构演进过程)、微服务拆分原则、容器化(了解Docker & Kubernetes)
项⽬经验: 项⽬整体架构(能画出来)、项⽬上下游关系(能将明⽩)、项⽬实现细节、项⽬主要亮点