自我介绍 为什么使用双 Token 机制 Java 中的集合类有哪些 HashMap 的底层为什么要在 1.8 要更换数据结构 MySQL 中的索引是为了解决什么问题 加特别多的索引是否合适 为什么要在开发中使用事务这个操作 MySQL 中的事务隔离级别有有哪些 怎么处理脏读和不可重复读 Redis 中跳表的实现原理是什么 Redis 为什么会这么…
自我介绍 CPU 层面并发和并行的区别 进程之间的通信方式 TCP 的粘包是什么 常见的解决方案 HTTP 和 HTTPS 的区别 HTTPS 加密具体是啥 TCP 的流量控制和拥塞控制 Redis 常用的数据结构 ZSet 底层的数据结构是什么 做常见的增删改查时间复杂度是多少 怎么判断复杂 SQL 性能怎么符合预期的(是否正常使用索引 常见的索…
自我介绍 HashMap 主要设计,比如结构、主要方法和流程是什么样的 HashMap 是线程安全的吗 线程不安全的点在哪呢 如果想使用线程安全的 HashMap 要用什么 他(ConcurrentHashMap)为什么线程安全 ConcurrentHashMap 1.7 1.8 实现有什么不一样吗 CAS 过程是什么样的 CAS 相比于悲观锁有什…
自我介绍 基于 canal 做数据监听和同步机制,讲一下实现细节 这一块你负责的相关的编码 canal 拿到 binlog 后,你是怎么处理的 数据库已经更新了,缓存还没更新,这个逻辑是怎么来的 为什么不直接更新缓存,而是先更新数据库呢 数据库写好了,再去刷新缓存的意义在哪里 写入压力过大,订单异步写入 MQ,削峰落库的逻辑讲一下 RPC 服务注册…
自我介绍 最近做的 mini-rpc 主要解决了什么问题 BIO 和 NIO 的区别 io 的多路复用,从操作系统层面讲一下 Java 用到那个 select 函数的主要作用是什么?比如监听到事件之后,后续的操作是什么? 讲讲 dubbo 的工作流程 rpc 项目能达到什么结果?要使用这个框架要怎么使用? Spring 工程想引用这个包,怎么使用,…
数据库 数据库主键自增 使用 replace into 命令来插入数据,通过 MySQL 的自增主键来产生唯一 ID。 优点:实现简单,ID 有序递增,存储空间消耗小。 缺点:并发量小,每次获取 ID 都要访问数据库导致数据库的压力很大。 数据库号段模式 可以每次从数据库申请一个号段,也就是一个 ID 的范围,加载到内存中,需要用到的时候,直接从内…
自我介绍 为什么要把 String 设计成不可变的 如果设计成可变对象会发生什么 String s = "123" 和 String s = new String("123") 有什么区别 String 最大存储长度是多少 List 如果删除一个元素的话,后面的元素会怎么做 如果要线程安全的删除 ArrayList 中的元素,比如 abbcd 要怎…
自我介绍 挑一个熟悉的项目讲一下 项目中 token 是怎么生成的 token 生成之后放缓存还是不放缓存 介绍一下 Java 线程,比如线程的概念、线程的创建、线程的状态、线程池的使用 线程池任务执行的流程 阻塞队列有哪些 显式锁隐式锁有什么,怎么使用 AOP 怎么实现的 除了 JDK 动态代理还有什么 SpringBoot 和 Spring 有…