前言
毕业后到今年也刚好开发有5年,一直在小厂工作,干着一些CRUD的活,在今年的年底终于想要去突破自己去,去大厂历练历练,这才有这篇文章的由来, 这篇文章不只是一个分享,也会再给出面试题去解析,大家在阅读时候,也不要忘记去思考问题哦!
阿里Redis面试题
如何解决缓存穿透?
解决缓存穿透也有两种方案:
- 由于请求的参数是不合法的(每次都请求不存在的参数),于是我们可以使用布隆过滤器(BloomFilter)或者压缩filter提前拦截,不合法就不让这个请求到数据库层!
- 当我们从数据库找不到的时候,我们也将这个空对象设置到缓存里边去。下次再请求的时候,就可以从缓存里边获取了。这种情况我们一般会将空对象设置一个较短的过期时间。
如何解决缓存雪崩?
对于“对缓存数据设置相同的过期时间,导致某段时间内缓存失效,请求全部走数据库。”这种情况,非常好解决:
- 解决方法:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。
对于“Redis挂掉了,请求全部走数据库”这种情况,我们可以有以下的思路:
- 事发前:实现Redis的高可用(主从架构+Sentinel 或者Redis Cluster),尽量避免Redis挂掉这种情况发生。
- 事发中:万一Redis真的挂了,我们可以设置本地缓存(ehcache)+限流(hystrix),尽量避免我们的数据库被干掉(起码能保证我们的服务还是能正常工作的)
- 事发后:redis持久化,重启后自动从磁盘上加载数据,快速恢复缓存数据。
阿里消息中间件面试题:
RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
答:broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。
什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?
答:在非 cluster 模式下,元数据主要分为 Queue 元数据(queue 名字和属性等)、Exchange 元数据(exchange 名字、类型和属性等)、Binding 元数据(存放路由关系的查找表)、Vhost 元数据(vhost 范围内针对前三者的名字空间约束和安全属性设置)。在cluster 模式下,还包括 cluster 中 node 位置信息和 node 关系信息。元数据按照 erlang node 的类型确定是仅保存于 RAM 中,还是同时保存在 RAM 和 disk 上。元数据在cluster 中是全 node 分布的。
RAM node 和 disk node 的区别?
答:RAM node 仅将 fabric(即 queue、exchange 和 binding 等 RabbitMQ 基础构件)相关元数据保存到内存中,但 disk node 会在内存和磁盘中均进行存储。RAM node 上唯一会存储到磁盘上的元数据是 cluster 中使用的 disk node 的地址。要求在 RabbitMQ cluster 中至少存在一个 disk node 。
阿里概念性问题
第一题:线程的基本概念、线程的基本状态及状态之间的关系?
第二题:线程与进程的区别?
这个题目问到的概率相当大,计算机专业考研中也常常考到。要想全部答出比较难。
第三题:多线程有几种实现方法,都是什么?
第四题:多线程同步和互斥有几种实现方法,都是什么
限于篇幅原因,我有很多的心得来不及全部分享出来,我已经总结出一份文档,可以关注我后获取
快速领取通道:点这里免费获取!诚意满满!!!
Kafka面试
Kafka面试
mybatis源码原理面试
mybatis源码原理面试
Dubbo面试
Dubbo面试
我的面试经验PDF:
学习之余的一些心得笔记!
借此机会分享出来,有需要的程序员别忘记点个关注
有机会再给大家分享我去面试的过程中国完整解析,可以关注我,没准我那一天有时间就更新了,现阶段有点忙,更新的也不确定,另外,如果你有需要上面的面试文档与心得点击下方链接查看获取方式!
如何获得这份优质的资料呢?
快速领取通道:点这里免费获取!诚意满满!!!
Java面试精选题、架构实战文档传送门:https://jq.qq.com/?_wv=1027&k=iWJZw1rp