得物-供应链
http 请求结构
tcp 三次握手,为什么要四次挥手
描述下动态规划和分治算法,它们的区别
快排和归并排序的区别
HashMap、ConcurrentHashMap
synchronized 和 lock 锁的区别及原理
G1 和 CMS 的区别
redis list、zset 底层实现原理
redis 持久化、主从同步、哨兵、删除策略、淘汰策略
Spring Aop 如何使用及实现原理
Mysql 事务实现原理
单例模式有哪几种写法?双检锁为什么要多次判断
新奥
redis incr 命令实现原理,key的删除策略,实时删除如何找到有过期时间的key?缓存淘汰策略,集群、主从、哨兵
消费者如何从mq中获取消息的?推模式、拉模式
创建类时,除了 class,还有哪些关键字,说明使用场景
重点聊了下注解,元注解的各种用途,还出了些场景题
锁
sync的原理、优化
lock 和 sync 的区别,使用场景
ReentrantLock 实现原理,公平锁,非公平锁的实现原理,加锁的过程<br>
ReadWriteLock <br>
线程池的参数,运行过程
设计并实现 Map.putIfAbsent() 方法<br>
设计模式在项目中怎么用的,策略、工厂(简单工厂、抽象工厂,工厂方法的区别,使用场景)、责任链
聊一聊 DDD
得物
hashmap 扩容流程?
hashmap 底层数据结构?
java8 中 hash 运算优化?
高并发下 hashmap 数组中死循环如何解决?
rabbitMQ 为啥这么快?
https://www.cnblogs.com/smallJunJun/p/11356076.html
mysql 中索引的数据结构?
为什么使用B+树索引?
数据放在叶子节点有什么好处?
字节-变现
你最近做过最有挑战性的项目是什么?
Redis 用的主从还是集群?
集群一个节点宕机了,怎么办?做些什么?
主从模式下: master slave 如何同步数据的?
一致性 hash 算法?
分布式 ID 算法?
mysql 300w 行数据,B+树索引有多高?
mysql 为什么使用 B+树索引?
为什么MySQL数据库要用B+树存储索引?
1,更少的IO次数
因为非叶子节点可以存储更多数据,减少树的高度
2,更适用于范围查询
B+树种范围查询只需要遍历主键索引,找到对应的叶子节点即可。
3,更稳定的查询效率
B+树的数据都在叶子节点,查询复杂度稳定为 树高。
sychronized 底层原理?
AQS了解吗?
MVCC了解吗?
分布式事物?
Spring事务的传播属性?
Spring事务的隔离属性?
数据库 ,Redis 双写一致性?
先更新数据库再删除缓存,删除缓存失败怎么办?
事务回滚
字节-教育
Redis zset 底层数据结构
你工作中最有挑战的一件事,一定要把这件事中涉及的技术点搞清楚
RabbitMQ 实现原理
Redis 消息消费失败,丢失?
文件中有一亿个数,找出出现次数最多的前 n 个数
Redis 为什么这么快?
说说 Redis 的 IO 多路复用?
算法: 给一个数组,找出这个数组中每个每个数字右边比它小的数,没有就 -1
阿里
自我介绍
最近两年工作的核心东西,避免流水账
做了什么参与到了什么,亮点是什么?遇到过什么困难?怎么解决的?
要让面试官直到你解决过什么?
工作中成长与收获?
微店
整个系统的一个请求链路?
限流怎么实现的?
根据项目问其中的技术点?并让你介绍业务背景,怎么做的?
写DB成功, 发MQ消息 失败<br>发MQ消息成功, 写 DB失败
如何解决?
java 中的线程池如何调度的?
后台线程如何保证不影响应用起停?
介绍下 java 中的锁怎么用的?
Lock -AQS
线上加锁导致的问题如何排查?
jastack
visualVM
我怀疑应用程序线程太多,上下文切换太频繁?如何确定?<br>
压测的时候如何判断一个接口开销最大的方法?
关于sql 优化你有什么要说的?
B+树索引的底层结构?
为什么用了索引就变快?
通过一个 id=1, 如何寻址到叶子节点?<br>即: 聚簇索引的索引过程?
hash 索引?
接触过分库分表吗?
分库分表的设计?
什么情况下分库分表?
大数据生态相关的东西了解吗?
linux?
怎么看 linux 进程打开了哪些文件?
JVM 内存泄漏怎么排查?
通联数据
项目亮点?
sychronized 锁升级?
对象头 markword 有哪些字段?
了解 哪些垃圾收集器?
CMS 有哪些 BUG?
三色标记了解吗?
Spring 循环依赖了解吗?
Spring 循环依赖分为三种:
<b><font color="#f15a23">构造器</font></b>
Spring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中。<br><br>因此如果在创建Bean过程中发现自己已经在“当前创建Bean池”里时将抛出BeanCurrentlyInCreationException异常表示循环依赖;<br>而对于创建完毕的Bean将从“当前创建Bean池”中清除掉。
<b><font color="#f15a23">setter循环依赖(单例)</font></b>
Bean 实例化图
对于 setter 方式注入,Spring 是先将 Bean 实例化后再设置属性的, Spring 先将这个 实例化的 Bean 放在一个早期的 Bean 引用池中,当需要 setter 设置属性时,就从这个 早期引用池中寻找赋值. --> 参考:<b><font color="#f15a23"> DefaultSingletonBeanRegistry.java </font></b>
<b><font color="#f15a23">setter 循环依赖(原型)</font></b>
不支持循环依赖,因为对于 原型的 Bean,Spring 无法进行早期 Bean 的缓存,每次获取的都是一个新对象,无法解决循环依赖.
SpringBoot 自动装配了解吗?
hashmap put 过程?
hashmap resize()扩容?
hashmap hash 算法?
hashmap 什么情况下会造成线程不安全?<br>你会怎么解决?
volatile 如何保证内存可见性的?
美团
1.线程安全的类有哪些,平时有使用么,用来解决什么问题?<br>什么是线程安全?
java 并发包下常用的是: ConcurrentHashMap
线程安全: 多线程对共享资源的并发读写操作
结合 JMM; java 内存模型解释
2.mysql日志文件有哪些,分别介绍下作用
binlog
主从复制
三种模式: STATEMENT,ROW,MIXED
结合 海南监管平台的 binlog 日志监听, 发布订阅案例说明
redolog
事物持久性
崩溃恢复
innodb 是以页为单位进行磁盘 IO 的,每次事物完毕,要保证持久性,就要迅速刷盘,性能差
因此 采用 redolog 日志
undolog
事物原子性
失败回滚
undolog 记录的是与操作相反的日志, insert -> delete,update-> update ,以便回滚的时候可以找到更新前的数据.
3. mysql innodb 事物实现原理?
事物四大特性:ACID
事务的原子性是通过 undo log 来实现的<br>事务的持久性性是通过 redo log 来实现的<br><b><font color="#f15a23">事务的隔离性是通过 (读写锁+MVCC)来实现的</font></b><br>而事务的终极大 boss 一致性是通过原子性,持久性,隔离性来实现的!!!
隔离性实现原理:
隔离级别
读未提交
事务中的修改即使还没提交,对其他事务也是可见的。<br>事务可以读取未提交的数据,造成<b>脏读</b>。
不用加锁,效率最高,但是不可靠
<b><font color="#f15a23">读已提交</font></b>
一个事物未提交的数据对其他事物不可见.<br>会造成<b>不可重复读</b>
MVCC 实现+读写锁
<b><font color="#f15a23">可重复读</font></b>
MVCC 实现+读写锁
MVCC:undolog+readview
版本链:ubdolog 日志组成
trx_id
roll_pointer
readview:
作用: 可以判断版本链中哪个版本是当前事物可见的
结构:
m_ids
生成 ReadView 的事物 ID 列表
creater_trx_id
生成该 ReadView 的事物 ID
串行化
全表加锁,事物完全船型执行,效率最低,但是最可靠
4.redis字典结构,hash冲突怎么办,rehash,负载因子?
喜马拉雅
一面
mysql 索引
mysql 死锁,怎样曹成的,如何解决
sql 语句性能优化,explian
file sort 了解不
spring 事物传播属性
手写线程池?
手写责任链模式?
二面
说一下你最最有挑战性的项目,遇到的问题,背景,技术,怎么解决的?
说完后,从中摘出来技术点细问
DDD 的理解?
平常喜欢干什么?
涂鸦
一面: 整个面试过程,感觉面试官都是浅尝辄止的感觉, 整个过程也就 20 分钟. <br> 问个问题,一单发现我能说出来,就 立刻切换到下一个问题, 绝不深追
聊聊职业规划,为什么来杭州?
JVM 内存结构
如何判断一个对象是否是垃圾对象
GC 算法
K8s 如何暴露一个 Service?
二面:
技术点扫一遍: mysql, 索引, 缓存穿透,jvm,设计模式等
Object 类中有哪些方法?
散发问道hashcode?
为什么重写equals要重写 hashcode?
设计模式:
你用过啥设计模式结合项目说一下呗?
责任链模式了解不?
有哪些框架用到了什么模式有看过吗?
介绍一个项目
三面:HR
携程(租车)
一面: 技术基础
实现一个LRU 算法,怎么做?
hashmap
currentmentHashMap put 过程? 如何保证线程安全的?
如何判断对象是个垃圾对象?
慢查询优化?
缓存穿透?
请求缓存中不存在的数据会造成什么问题?
怎么解决?
你们的微服务之前如何调用的?
服务注册中心?
K8s 之间如何服务发现的?
二面: 偏项目
画架构图
一次服务调用链路耗时太长,如何优化?
SQL慢查询优化?
合并远程调用? 减少远程调用次数
异步远程调用?
缓存
三面: CTO
讲业务
谈价值观
<b><font color="#f15a23">对自己未来规划</font></b>
996 的看法
四面:HR
比心
简单问些技术和项目经验
SpringBoot 的启动流程?
SpringBoot 和 Tomcat 的整合原理?
Spring Bean 的加载过程?
二面会更注重基础
TCP 滑动窗口
IO 多路复用
同步IO与异步IO
redis setnx 底层原理
状态模式与策略模式有什么区别
德邦证券
视频面试: 两个技术面试官一个HR一块面试
sychronized 用在用在哪里? 方法? 代码块?区别?
系统架构和系统调用流程?
<b><font color="#f15a23">如何设计一个高并发系统?</font></b>
<ol><li>系统拆分</li><li>Cache(缓存)</li><li>MQ</li><li>数据库拆分(分库分表)</li><li>读写分离</li><li>ElasticSearch</li><li>HTML 页面静态化</li><li>CDN 加速</li></ol>
分布式全局ID 设计思路?
爱回收
一面技术点问的很全面
currenthashmap 的 put 过程?
可重复读和读已提交的区别:?
1、在可重复读级别下,在事务开始的时候会创建一个readview<br><br> 2、在读提交级别下,每个语句执行前都会重新生成一个新的readview
<b><font color="#f15a23">select 会加读锁吗?</font></b>