面试记录(面试官角色)

  1. 数据pull模式,多久调用一次,这个时间是通过什么因素来抉择出来的,调用失败了如何补偿,补偿的机制是什么
  2. 集群部署策略是什么,集群运行状态如何监控,数据怎么采集的,采集后的存储和分析策略是什么
  3. Nacos用来做注册中心的话,它是怎么贴合CAP理论的,C/A切换是怎么做的,配置属性是如何实现动态刷新的
  4. 你们项目的质量因素有哪些,模块之间划分的依据是什么,C&C是怎么设计的
  5. 项目峰值几万人:QPS和TPS是多少,有没有遇到过性能瓶颈,遇到性能瓶颈的告警机制是怎么设置的,流量激增的时候怎么自动扩容的
  6. CPU、Memory、Load过高是如何监控、排查、修复的,遇到僵尸进程是如何处理的
  7. 单体项目、有容器、用的ssh:容器怎么进行管理的,高可用怎么做的
  8. 客户端多类、json通信:网关层怎么做的,怎么根据客户端类型做的转发,DDoS攻击怎么预防的
  9. 数据库:用的什么架构,读写分离是怎么做的,主从切换是怎么切换的,切换之后VIP漂移是怎么做的

1.eureka如何处理高并发读写
2.mysql行锁没有释放怎么处理
3.AQS底层是什么
4.new一个对象,几种内存分配方式
5.线程池有哪几种实现方式
6.netty的channel生命周期是怎么样的
7.springcloud gateway实现原理,画图出来
8.1234567 7个数字 分别用二叉树 平衡二叉树 b树 b+树 画图出来
9.mysql读写分离,从库没有同步主库的数据原因有哪些
10.G1收集器与CMS收集器三色回收算法的区别是什么
11.G1收集器与CMS收集器的区别在哪里
12.hystris原理(动态代理)
13.inodb和mysiam的区别
14.spring哪几种注入方式
15.mybatis一对一,一对多标签分别是啥?
16.线程的底层是什么

  1. MySQL源码看过吗
  2. InnoDB存储引擎底层是如何实现的
  3. MVCC的隐藏列是如何添加的,是持久化到磁盘上的,还是存于内存中的
  4. InnoDB是通过什么方式加的行级锁
  5. myisam为什么不支持行级锁,如果想让myisam支持行锁,应该怎么做
  6. idb的存储结构是什么样子的,为什么表数据量过大会影响效率
  7. 一个区内的页,在磁盘上是如何存储的,区的大小是固定的吗?
  8. 当页发生分裂或合并时,大小会改变吗,会变换所在区吗

重构升级:如何重构,重构的原因是什么,扩展性差、代码难维护、*业务耦合度高、数据库设计乱、表重复设计较多、SQL效率较低
API网关、灰度发布、任务调度:设计架构是什么
技术组件开发:比如?

if…else:策略模式、工厂模式

多客户端
bff层——>dubbo——>provider/consumer

MQ用的什么,补偿机制是怎么设计的

MySQL

模块:行程、计费、订单、支付、通用

技术选型:学习成本较高

表主键:雪花ID
城市ID_业务场景code_商户ID_雪花ID

新旧系统并行运行:怎么做的灰度
全路由:路由是怎么设计的,映射是如何做的,枚举值映射是指什么?值域有哪些?硬编码写在代码中?如果重新设计,这块有没有好的方案
单体架构——>微服务SpringCloud:服务治理是如何做的,高可用是如何保证的,服务注册中心使用的zk,zk的master节点宕机后,服务会产生暂时的不可用,这个是如何解决的?
修改期间可以灰度上线,为什么会出现服务不可用?拆分服务如何确定各模块的质量元素?模块之间通信是如何设计的,二方包如何管理的?
nginx做负载,负载策略是什么?nginx有哪些负载策略,使用的场景是什么?ip-hash解决了什么问题,又会遇到什么问题,如何解决问题?
zk分布式锁:与Redis分布式锁的区别是什么?各自的优劣是什么?如果业务尚未执行完,Redis锁已经过期了,怎么解决?zk的分布式锁使用的队列设计原则是什么?为了解决什么问题?zk的存储结构是什么
zk的临时节点和持久节点的创建方式是什么?如何预防zk的脑裂?

MySQL:
MySQL的默认事务隔离级别是什么?
MySQL的exists和in的使用场景是什么?
select for update是什么锁?
有没有做过分库分表?mycat的ER表是如何设计的?分布式ID如何设计的?
索引建立的原则是什么?

有做过什么优化吗?
JVM的堆大小设置的依据是什么?GC的safepoint是如何确定的?
GC对Java的软引用有什么影响?在jdk中使用软引用的场景是什么?ThreadLocal的原理是什么?ThreadLocal的默认桶大小为多少,为什么为16?什么情况下会使用到2个以上的桶?
在Java中创建一个对象的流程是什么?说的越详细越好

Maven:
Maven依赖冲突是如何解决的?依赖冲突的时候会造成什么影响
如何查看某个jar包来自于哪一个依赖?
如何约束依赖的全局版本?

MQ:
Kafka如何保证消息顺序消费、在consumer group 中新增一个consumer 会提高消费消息的速度吗、那如果我想提高消息消费的速度,我要怎么办?
kafka的零拷贝的原理是什么?mmap和sendfile是如何工作的?

Docker:
Docker镜像是如何制作的,存储于哪里?当一个镜像过大时,如何做的优化?
容器伸缩是如何实现的?
Docker如何让一个容器状态永久处于UP?如果在Dockerfile中RUN了一个sleep命令,容器的状态变化是什么?

k8s:
service、pod、deployment等的区别是什么

  1. CMS和G1的异同
    CMS是老年代的并发垃圾收集器,执行过程是初始标记-STW-并发标记-STW-再次标记-清理,CMS会有两次STW,并且使用的是标记-清理算法,时间久之会产生过多的内存碎片,所以一般会和具有整理功能的Serial Old收集器一起使用,CMS负责清理,Serial Old负责整理,而G1属于整堆收集器,将内存划分为大小相同的region,
  2. G1什么时候引发FGC
  3. 说一个最熟悉的垃圾回收算法
    垃圾回收算法有复制、标记-清理、标记-整理、分代算法等,复制算法相对来说比较浪费堆空间,所谓的浪费,
  4. 怎么判断内存泄漏
  5. 讲一下CMS的流程
  6. 为什么压缩指针超过32G失效
  7. 什么是内存泄漏?GC调优有经验吗?一般出现GC问题你怎么解决?
  8. ThreadLocal有没有内存泄漏问题
  9. G1两个Region不是连续的,而且之间还有可达的引用,我现在要回收一个,另一个怎么处理
  10. 吞吐量优先和响应时间优先的回收器有哪些
  11. 讲一下JVM堆内存管理(对象分配过程)
  12. CMS的并发预处理和并发可中断预处理
  13. 到底多大的内存会被直接放到老年代