阿里 Java 三面凉凉:微服务,Redis,JVM 一个都搞不懂
前言:
金九银十过去了,不知道很多小伙伴都拿到自己心仪的 offer 没有,我这边也收到了一个粉丝投来的消息,说看到阿里的面试真题之后人都是懵的,发现自己一窍不通,下面给大家分享我这个粉丝的经历,以及我在这方面学习的经验。
阿里微服务面试真题
1.单片,SOA 和微服务架构有什么区别?
单片 SOA 和微服务之间的比较 – 微服务访谈问题
单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。
一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。
2.在使用微服务架构时,您面临哪些挑战?
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。
自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。
易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。
配置管理:有时在各种环境中维护组件的配置变得困难。
调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。
3.SOA 和微服务架构之间的主要区别是什么?
4.什么是领域驱动设计?
5.为什么需要域驱动设计(DDD)?
6.什么是 REST / RESTful 以及它的用途是什么?
7.什么是 Spring 引导的执行器?
8.在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
微服务面试学习路线
注意,注意,上面的学习路线都是自己总计的,免费获取,需要的小伙伴可以+ VX: mxk6072
阿里 Redis 面试真题:
1.Redis 与其他 key-value 存储有什么不同?
Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样 Redis 可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
2.Memcache 与 Redis 的区别都有哪些?
1、存储方式 Memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis 有部份存在硬盘上,这样能保证数据的持久性。
2、数据支持类型 Memcache 对数据类型支持相对简单。 Redis 有复杂的数据类型。
3、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
3.Redis 持久化机制
4.缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
5.热点数据和冷数据是什么
6.redis 的数据类型,以及每种数据类型的使用场景
7.Redis 常见性能问题和解决方案?
8.为什么 Redis 的操作是原子性的,怎么保证原子性的?
Redis 面试学习路线
注意,注意,上面的学习路线都是自己总计的,免费获取,需要的小伙伴可以+ VX: mxk6072
阿里 JVM 面试真题:
1.Java 中 WeakReference 与 SoftReference 的区别?
虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。
2.JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用
当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。
这也会对 CPU 缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到 64 位的 JVM 主要动机在于可以指定最大堆大小,通过压缩 OOP 可以节省一定的内存。通过-XX:+UseCompressedOops 选项,JVM 会使用 32 位的 OOP,而不是 64 位的 OOP。
3.怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
4.32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
5.JRE、JDK、JVM 及 JIT 之间有什么不同?
6.怎么获取 Java 程序使用的内存?堆使用的百分比?
7.描述一下 JVM 加载 class 文件的原理机制
8.GC 是什么?为什么要有 GC?
JVM 面试学习路线
注意,注意,上面的学习路线都是自己总计的,免费获取,需要的小伙伴可以+ VX: mxk6072
总结:
金九银十过去了也不要气馁,还有新的金三银四,主要是要总计自己在面试中不够的点,多增加自己实战项目的经验,然后也可以多刷刷面试题,以免面试的时候不知道说什么,上面的面试真题就没有把所有的答案都总结给大家了,需要答案以及上面高清思维导图的朋友,需要的小伙伴可以+ VX: mxk6072
评论