Skip to content

Latest commit

 

History

History
253 lines (202 loc) · 8.56 KB

2020.07.24.md

File metadata and controls

253 lines (202 loc) · 8.56 KB

锁消除 fix线程池默认的队列是什么? 什么时候用堵塞队列? 偏向锁是什么来着 自旋锁对CPU有什么要求 epoll 原理,数据结构 Select 是怎么处理事件,遍历后会做什么? HTTPS会经历几次握手?和http区别 GMS过程,缺点 Callable返回的是什么? 让主线程等子线程点几种途经 老年代到年轻代的引用,G1是怎么处理的 G1怎么做到延时可控 间隙锁,,,能解决,,, 行锁带来的问题都有哪些? Redis cluster 为什么做hash而不是取余? 线程池有没有自己处理异常? Hysterics 两种方式? 怎么做降级的? NETTY拆包粘包的几种方式 Netty 模型,channel 是什么?eventloopgroup

rocketMQ的partition和consumer关系 10个partition和5个comsumer分配

回表与覆盖索引,索引下推

Ingress和nginx区别 k8s和原生springcloud的兼容性 微服务与SOA区别 Java PriprityQueue数据结构 java 生产者消费者模式

JVM 的伪共享

对docker有了解吗 xxl-job分片 有对比过Kafka和rocketMQ吗 G1特点

LSM-Tree 的写放大写放大、读放大、空间放大RockDB 写放大3 za 优先级队列实现方案 InheritableThreadLocal原理,如何在父子线程间传递变量

expireAfterWrite和refreshAfterWrite实现原理 Java Stream原理,是并行的吗? 地图一般是用什么存储

如果你对使用Java8的lambda表达式有兴趣,可以看看Oracle的文档和Databricks 的关于 Spark 如何使用 lambda 表达式的博客。

istio的Pilot源码了解下

shuffle? session方案

微服务和模块划分原则 jvm性能调优/cpu过高/内存占用过高处理

1、怎样为每台机器指定一个id,例如:1,2,3 除了在启动时配置jdk参数 参数一下分布式配置, disconf之类的

2、Collections.unmodifiableList() 原理 包装类,即装饰者模式和委托区别再看一上代码。 后者将自身传给被包装对象。

3、骨架实现类(Skeletal implementation) AbstractCollection, AbstractSet, AbstractList, AbstractMap.

https://blog.csdn.net/u010808135/article/details/94650074 https://www.cnblogs.com/huojg-21442/articles/8761359.html 公平锁和非公平锁的区别?

经常FullGC,哪些指标会增长? 频繁发生FullGC的排查 https://blog.csdn.net/endlu/article/details/51144739 https://blog.csdn.net/zhanyu1/article/details/80028842 https://www.cnblogs.com/klvchen/articles/11758324.html https://zhuanlan.zhihu.com/p/75039179 https://juejin.cn/post/6844903953004494856 https://tech.meituan.com/2017/12/29/jvm-optimize.html https://juejin.cn/post/6844903646119854093 https://wiki.jikexueyuan.com/project/jvm-parameter/memory-tuning.html https://blog.csdn.net/a745233700/article/details/87740314 https://blog.csdn.net/liuxinghao/article/details/73963399

集合

  • 经常用到哪些 Map
  • 这几种 Map 的区别
  • CocurrentHashMap 怎么保证线程安全
  • CocurrentHashMap 在 JDK 1.8 前后的锁有什么区别
  • 聊下 HashMap 的原理
  • HashMap 在 Put 时,新链表节点是放在头部还是尾部
  • HashMap 扩容时的流程
  • HashMap 在 JDK 1.8 有什么改变
  • CocurrentHashMap 在 JDK 1.8 有什么改变
  • TreeMap 的原理
  • Map、List、Set 分别说下你知道的线程安全类和线程不安全的类

多线程、锁

  • 线程池使用的是哪种
  • 线程池参数怎么配置
  • 线程池各个参数的作用
  • 线程池的参数配置要注意什么
  • 线程池的工作流程
  • JDK 中的并发类知道哪些
  • AQS 的底层原理
  • 介绍下悲观锁和乐观锁
  • 使用过哪些锁
  • synchronized 和 Lock 的区别、使用场景
  • synchronized 原理
  • synchronized 作用于静态方法、普通方法、this、Lock.class 的区别
  • 为什么引入偏向锁、轻量级锁,介绍下升级流程
  • 死锁的必要条件,如何预防死锁
  • 介绍下 CountDownLatch 和 CyclicBarrier
  • 介绍下 CAS,存在什么问题
  • 介绍下 ThreadLocal,存在什么问题

网络

  • HTTPS 是怎么加密的
  • 普通 Hash 和一致性 Hash 原理
  • 一致性 Hash 的缺点
  • TCP 三次握手过程,为什么需要三次握手
  • 为什么 TIME_WAIT 状态需要经过 2MSL 才能返回到 CLOSE 状态
  • TCP 的拥塞控制
  • TCP 如何解决流控、乱序、丢包问题
  • 为什么会出现粘包和拆包,如何解决

Spring、Mybatis

  • Mybatis 中 # 和 $ 的区别
  • 怎么防止 SQL 注入
  • 使用 Mybatis 时,调用 DAO(Mapper)接口时是怎么调用到 SQL 的
  • 介绍下 Spring IoC 的流程
  • BeanFactory 和 FactoryBean 的区别
  • Spring 的 AOP 是怎么实现的
  • Spring 的事务传播行为有哪些,讲下嵌套事务
  • 什么情况下对象不能被代理
  • Spring 怎么解决循环依赖的问题
  • 要在 Spring IoC 容器构建完毕之后执行一些逻辑,怎么实现
  • @Resource 和 @Autowire 的区别
  • @Autowire 怎么使用名称来注入
  • bean 的 init-method 属性指定的方法里用到了其他 bean 实例,会有问题吗
  • @PostConstruct 修饰的方法里用到了其他 bean 实例,会有问题吗
  • Spring 中,有两个 id 相同的 bean,会报错吗,如果会报错,在哪个阶段报错
  • Spring 中,bean 的 class 属性指定了一个不存在的 class,会报错吗,如果会报错,在哪个阶段
  • Spring 中的常见扩展点有哪些

MySQL

  • MySQL 索引的数据结构
  • 为什么使用 B+ 树,与其他索引相比有什么优点
  • 各种索引之间的区别
  • B+ 树在进行范围查找时怎么处理
  • MySQL 索引叶子节点存放的是什么
  • 联合索引(复合索引)的底层实现
  • MySQL 如何锁住一行数据
  • SELECT 语句能加互斥锁吗
  • 多个事务同时对一行数据进行 SELECT FOR UPDATE 会阻塞还是异常
  • MySQL 使用的版本和执行引擎
  • MySQL 不同执行引擎的区别
  • MySQL 的事务隔离级别
  • MySQL 的可重复读是怎么实现的
  • MySQL 是否会出现幻读
  • MySQL 的 gap 锁
  • MySQL 的主从同步原理
  • 分库分表的实现方案
  • 分布式唯一 ID 方案
  • 如何优化慢查询
  • explain 中每个字段的意思
  • explain 中的 type 字段有哪些常见的值
  • explain 中你通常关注哪些字段,为什么

JVM

  • 运行时数据区
  • 服务器使用的什么垃圾收集器
  • CMS 垃圾收集的原理
  • G1 垃圾收集的特点,为什么低延迟
  • 有哪些垃圾回收算法,优缺点
  • 哪些对象可以作为 GC Roots
  • 有哪些类加载器
  • 双亲委派模式,哪些场景是打破双亲委派模式
  • 线上服务器出现频繁 Full GC,怎么排查
  • 定位问题常用哪些命令
  • 介绍下 JVM 调优的过程

Kafka

  • 为什么使用 Kafka

  • 介绍下 Kafka 的各个组件

  • 如何保证写入 Kafka 的数据不丢失

  • 如何保证从 Kafka 消费的数据不丢失

  • Kafka 为什么性能这么高

  • 零拷贝技术使用哪个方法实现

  • Java 中也有类似的零拷贝技术,是哪个方法

  • Kafka 怎么保证消息的顺序消费

  • Kafka 怎么避免重复消费

  • 什么是 HighWatermark 和 LEO

  • 什么是 ISR,为什么需要引入 ISR

Zookeeper

  • Zookeeper 的使用场景
  • Zookeeper 怎么实现分布式锁
  • Zookeeper 怎么保证数据的一致性
  • ZAB 协议的原理
  • Zookeeper 遵循 CAP 中的哪些
  • Zookeeper 和 Eureka 的区别
  • Zookeeper 的 Leader 选举
  • Observer 的作用
  • Leader 发送了 commit 消息,但是所有的 follower 都没有收到这条消息,Leader 就挂了,后续会怎么处理

分布式

  • CAP 理论
  • BASE 理论
  • 分布式事务 2PC 和 TCC 的原理
  • TCC 在 cancel 阶段如果出现失败怎么处理
  • Paxos 算法、Raft 算法

4、Hr 面

如果你一路过五关斩六将,最终来到了 Hr 面,那么恭喜你,你已经离 offer 非常非常近了。可以开始畅想自己升职加薪,当上总经理,出任 CEO,迎娶白富美,走上人生巅峰的场景了。

Hr 面主要是了解候选人的一些通用素质,经常会问的问题如下:

  • 介绍下自己投入最多的项目(当时我就惊了,Hr 也开始问项目了)
  • 离职的原因
  • 当前的薪资、绩效
  • 当前在面试的其他公司的情况
  • 平时有没有学习的习惯,怎么学习的,现在在学习什么
  • 未来的规划

关于这些问题,没有什么标准答案,但是很重要的原则是,在整个过程中要保持积极向上的态度,不能有负面的情绪。

关于当前薪资的问题,由于诸多的原因,可能有些人会想着稍微多报一点,对于这种做法我持中立态度,但是要把握好度,毕竟大厂基本都有背景调查。大厂对于诚信问题一般是零容忍,而且可能会拉黑名单,进黑名单意味着你再也无缘这家公司了。