由于博主刚去爬楼撒了泡尿,接到电话的时候有点喘,让面试官等了2分钟,容我缓缓。。
- 自我介绍
A:讲了讲自己从毕业到现在的履历,工作之余喜欢做些什么,主要还是强调我是1年,希望轻虐 - 讲讲你在公司经历的项目,以及你在项目中的角色
A:博主是做产品的,讲了讲自己负责的几个模块,以及这些模块的理念,至于具体细节,面试官想问再做解释,避免说的太多没有重点 - 你觉得在你做的这些模块中,他们的核心点是什么?
A:讲了讲自己对于模块的理解,比如模块是做什么,为什么要有这么一个东西,怎么做能使项目功能达到闭环 - 看你还做了模块XXX,里面这个是基于策略模式去做的吧,你能说说策略模式的优缺点吗?
A:这个就见仁见智了,没有标准答案,你觉得你用了使你的代码有怎样的优缺点 - 你觉得为什么你们要分模块?不分模块之前有什么问题?
A:分摊流量、代码解耦 - RocketMQ实现分布式事务的原理?他底层是用了什么模型?
A:讲了下RocketMQ实现事务A和事务B的分布式事务的过程,一开始没明白底层模型是要问什么,面试官提示了一波是2PC吗?然后讲述了一下2PC和RocketMQ实现分布式事务异同 - RocketMQ是如何保证消息不丢失的?
A:讲了讲从消息产生到消费一整个链路去分析如何保证消息不丢失 - 你是如何保证消息顺序性的?
A:讲了讲RocketMQ内部的队列如何保证有序性 - 我看Redis你们是用来做缓存的,你们的失效时间是如何设计的?
A:当时回答的可能不那么好,这个是要对具体的业务进行分析的,因为博主这边缓存的用户端信息比较多,直接就说了没有设置TTL。。。其实可以设置和不设置两者结合说 - 那你们没有设置过期时间的话,是先更新数据库然后再更新缓存的?
A:并不是,我们是删除了缓存,讲了为什么是考虑删除缓存而不是更新 - 那先更新数据库然后删除缓存会出现什么问题?
A:分析了下缓存不一致的可能原因 - 那如果现在同时有三个线程,线程A和线程B做的都是更新数据库后删除缓存,线程C来获取数据,你觉得会有什么问题?
A:分析了一下,这种场景出现的可能性,已经有可能出现问题的点。。感觉自己有点糊弄的意思 - 你会怎么解决这种场景发生的情况?
A:分布式锁、binlog监听 - 讲讲JVM的类加载机制吧?
A:八股文,了解的多就多说点。。加载、链接(校验、准备、解析)、初始化、使用、卸载,根据每个步骤展开说 - 什么情况下会产生FullGC?
A:老年代空间不够用 - 你们项目中用的是什么垃圾收集算法?或者说垃圾收集器是哪一个?
A:我也不知道。。 吹说用的是G1收集器,分代算法 - 你了解其他的一些收集器的实现机制吗?
A:讲了讲说就知道有哪些,以及彼此之间的区别,源码层面的实现没有了解过 - MySQL底层的索引了解过吗?
A:讲了讲MyISAN、InnoDB的索引结构 - 说说聚集索引和非聚集索引的区别?
A:讲了讲两种索引的实现区别 - 索引字段实际数据太长会怎么样?
A:索引文件臃肿,I/O增加 - 范围查询能使用到索引吗?
A:讲了讲使用到的情况以及使用不到的情况
|