面试过程是一个由浅入深的过程,面试官先给求职者抛出一个相对简单的问题,而后经过一环套一环的追问深刻考察求职者对知识点的理解掌握程度。java
以下是一个实际的关于redis知识点的面试场景:mysql
面试官: 你用过redis吗?你:用过面试
面试官:你知道redis是单线程仍是多线程呢?redis
你:在4.0以前是单线程,可是在4.0以后开始支持多线程了。算法
面试官:为何redis使用了单线程仍是那么快?sql
你:单线程能够避免多线程竞争,内存操做,I/O多路复用机制...数据库
面试官:Redis是如何保证数据不丢失的?编程
你:redis持久化主要经过AOF、RDB、以及4.0后提供的混合持久化方式实现的缓存
......安全
经过上面的例子能够看出,一个知识点能够牵扯出不少关联的小知识点,而要掌握全部的面试点是很难的,因此我们不要轻易说吊打面试官了,一不当心就会被面试官吊起来打,毕竟问题永远比方法多,对吧。
本文结合本人参与的相关面试以及做为面试官对别人的面试,精心挑选十几道高级开发面试题,每一个题目都涵盖不少知识点。
若是你是面试官,能够将此文涉及的面试点归入本身的面试题库,借此考察求职者的技术深度;
若是你是求职者,能够经过此文的面试点准备面试,按我我的的经验来讲,虽不说100%经过,若是都能答好的话经过几率起码85%以上。
若是你不是面试官,也不是求职者,也能够经过此文的面试点夯实技术水平,以文促学,带着问题学技术会让你事半功倍。
数据库篇
MySQL数据库相关
-
MySQL有哪些常见的存储引擎?
-
索引的原理是什么?
-
MySQL三种日志分别起到什么做用?(redoLog,undoLog,binLog)
-
为何选择B+树索引?
-
什么状况下会出现索引失效?
-
如何查看执行计划?
-
如何优化SQL查询?
-
MySQL主从复制原理?
-
数据库死锁的缘由?如何快速定位并解决?
事务隔离级别
-
事务有哪些隔离级别?
-
每种隔离级别会致使什么问题?
-
mysql 和 oracle默认状况下分别采用哪一种隔离级别?
-
mysql如何解决幻读的?
中间件篇
MQ的相关问题
-
你用过消息队列吗?用了哪一个消息队列?
-
在使用MQ的时候怎么确保消息 100% 不丢失?
-
怎么解决消息的重复消费问题?
-
如何实现顺序消息?
-
如何解决引入消息后的事务问题?
分库分表相关问题
-
你用过度库分表吗?
-
如何实现单个维度的非sharding-key 的查询问题?好比经过userID 做为 sharding-key,那么如何实现基于userName进行查询?(映射法、基因法)
-
如何实现多个维度的多个字段非 sharding-key 如何查询?时间、用户名、类别等...
-
多维度查询须要配合其余查询引擎,那么如何实现数据同步?如何保证双写的一致性?
-
不少状况下并非一开始就实现分库分表,等咱们须要分库分表的时候如何进行数据迁移?
Redis
-
用过Redis吗?Redis支持哪些常见的数据结构?
-
Redis的线程模型
-
Redis如何保证数据不丢失的(如何实现持久化)?
-
AOF 和 RDB的实现原理?
-
Redis如何实现高可用?
-
什么是缓存穿透,缓存击穿,缓存雪崩?分别如何预防解决?
分布式锁相关问题
-
用过度布式锁吗?用什么实现的分布式锁?
-
有没有用过基于redis分布式锁?有没有用过基于Zookeeper的分布式锁?
-
如何给锁设置合理的加锁时间?锁超时了怎么办?Redisson看门狗的原理?
-
Redis如何解决集群状况下分布式锁的可靠性?
-
RedLock算法的原理?
并发编程篇
锁相关
-
说一下synchronized 底层实现原理?
-
说一下synchronized、volatile、CAS 的区别?
-
synchronized 和 Lock 有什么区别?
-
什么是CAS,CAS的原理?
-
CAS有什么缺点?如何解决CAS中常见的ABA问题?
-
AQS的原理,AQS的实现过程是什么?
-
有没有用过读写锁ReentrantReadWriteLock,说一下ReentrantReadWriteLock的原理?
线程池相关
-
有哪几类线程池?如何建立线程池?
-
解释一下线程池的核心参数,线程池的执行过程?
-
若是提交任务时,线程池队列已满,这时候会发生什么?
-
线程池线上参数如何优化?
分布式篇
分布式理论
-
说说你对CAP理论的理解?
-
说说你用过的注册中心,分别使用了什么模型?(AP,CP)
-
说说你对BASE理论的理解?
分布式事务相关
-
如何解决分布式事务问题?你用过哪些解决分布式事务的方案?
-
说一下对2PC,3PC协议的理解?
-
有没有用过SEATA,SEATA的实现过程是什么?
-
如何基于MQ实现最终一致性?
实战篇
-
如何设计接口并保证他们的安全?
-
如何快速定位CPU溢出?
-
如何设计实现一个限流组件?
-
如何让系统能抗住预定抢购活动的流量压力?
以上就是我推荐给大家的十几道面试题,你都能答好吗?欢迎留言评论哟!
本文分享自微信公众号 - JAVA日知录(javadaily)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。