vlambda博客
学习文章列表

哔哩哔哩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春季赛那个板块的,感觉挺有意思的

实习生培养,面试官说包教包会,哈哈。。

今早收到二面邮件