前言
毕业后到今年也刚好开发有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 。
阿里概念性问题
第一题:线程的基本概念、线程的基本状态及状态之间的关系?
第二题:线程与进程的区别?
这个题目问到的概率相当大,计算机专业考研中也常常考到。要想全部答出比较难。
第三题:多线程有几种实现方法,都是什么?
第四题:多线程同步和互斥有几种实现方法,都是什么
限于篇幅原因,我有很多的心得来不及全部分享出来,我已经总结出一份文档,可以关注我后获取
正在跳转jq.qq.com
Kafka面试
Kafka面试
mybatis源码原理面试
mybatis源码原理面试
Dubbo面试
Dubbo面试
我的面试经验PDF:
我的面试经验PDF:
学习之余的一些心得笔记!
借此机会分享出来,有需要的程序员别忘记点个关注
有机会再给大家分享我去面试的过程中国完整解析,可以关注我,没准我那一天有时间就更新了,现阶段有点忙,更新的也不确定,另外,如果你有需要上面的面试文档与心得点击下方石墨文档查看获取方式!正在跳转jq.qq.com
.