哔哩哔哩Java 实习 一面
今日福利:B站会员
第一篇文末参与讨论即有机会领取
3月7日一面
面试官人很好;先是聊了会天;
他说极客时间《MYSQL实战45讲》的点赞数最多的几条评论就是他写的(直呼好家伙!!)
然后聊转Go,说是新的业务线,问我考虑是否转语言。。(他说我很会回答,哈哈)
问我看来哪些书,我说《高性能mysql》,《从根儿上理解mysql》
然后就开始了。。问了得有半小时的mysql
【MYSQL】
谈谈你对索引的理解?
聚集索引和非聚集索引的区别?
联合索引的叶子节点是怎么存储的?回表?索引覆盖?
怎么对回表进行优化?
顺序IO和随机IO?
索引是怎样参与到我们查一个数据的排序的?(面试官说这个问题比较难。。)
我有点懵,从数据页来回答的,提到数据页的格式,pageHeader,然后一个页里面有最小记录,和最大记录。。。
面试官说:排序优化有两种方案 全排序和IOID排序,(⊙o⊙)…。。
MYSQL为什么设计一张表要有主键(InnoDB下)?
然后给我写了个sql,让我设计一下怎么建立索引。。
select * from t where a = 1 and b >2 and order by c desc
然后你能聊聊mysql事务?
隔离级别?没种隔离级别会产生什么问题?怎么去解决的?
MVCC,间隙锁,ACID底层实现?
然后redolog,binlog,两阶段提交?
★
【缓存Redis】
常用数据结构?底层实现?
着重讲了SDS和Hash?
SDS的优点?
SDS底层的attribute_packed优化
然后面试官问Hash的另一种实现??这里面试官是想问压缩链表
然后提到压缩链表会造成连锁更新等,后面提到quickList,ListPack。。面试官比较满意
Redis如何保存缓存和数据库的一致性?
常见的读写模式?我说 旁路缓存
面试官说知道另外两种吗?各有什么缺点知道吗?我说读写穿透,异步缓存写入?
面试官又提到延时双删,说用得很少,不知道没关系
场景题:许多请求查询缓存中不存在的数据?(面试官应该是想问缓存穿透)
答了:布隆过滤器和缓存无效key
★
【消息队列】
简单聊一聊MQ,怎么做的?
引入MQ的缺点?
怎么解决哪些缺点的?就是怎么保证高可用(镜像集群)
怎么保证消息不丢失?怎么保证消息不重复消费?
【java虚拟机】
让我介绍JVM,这个问题很广;
我从java运行时数据区,
类加载器子系统
垃圾收集算法等等, ,巴拉巴拉。。。。
面试官问我java之前采用过哪些垃圾收集算法,意思想问问我对虚拟机的历史了解?
【Go】
问我,进程,线程,协程的区别?
java可以实现线程吗?
【微服务】
如何做服务注册与发现?Nacos是如何去做服务注册与发现的?面试官想问我原理。。。我说我不知道,就仅限于使用,面试官说会用就很不错了。。
让我结合项目,来如何做服务拆分的?
有了解微服务的一些设计原则吗?
【项目】
哪些项目有挑战性?怎么去解决的?
多级缓存?怎么解决本地缓存与redis数据不一致的情况
【算法】
★
【反问】
哪些方面需要加强?对我评价不错。。
反问业务:b端技术部 ,介绍他们的业务,b站跨年,f11,好像是做KPL,LOL春季赛那个板块的,感觉挺有意思的
实习生培养,面试官说包教包会,哈哈。。
今早收到二面邮件