下栽地止:https://www.itwangzi.cn/2458.html
复试造推进器组织工作拧螺钉,前段时间一名好友在复试中被问及各式各样的原产没落服务工程项目的复试题,也提问上去了。不过,等正式宣布入职后,辨认出另一家子公司竟然全数是采用乙烯工程项目,全然没原产没落服务工程项目的夏斯利,沮丧到极点!
倒并非说进来搞体系结构,你这乙烯服务工程项目复试问俺所以多微服务工程项目原产式控制系统有关难题G540用呢?重点项目是那位好友还和党委见过面工程项目的问题,党委责怪那个乙烯能搞掂,不须要搞protons服务工程项目商业模式(真想一顿呼往后)。
好吧,不说多了,上面来谈谈那位爸爸妈妈在复试中碰到的许多难题。
复试题:说说RocketMQ 消费需求商业模式
RocketMQ 新一代消息堆栈的消费需求商业模式通常有三种,即软件产业消费需求和该台消费需求。
软件产业消费需求(Clustering)
软件产业消费需求是指数个消费需求者与此同时消费需求同一主轴(Topic)的新一代消息,每一新一代消息根本无法被当中两个消费需求者处置。当消费需求者第四组的某一消费需求者读出来后,其它消费需求者会手动接手该消费需求者的大部份未证实的新一代消息展开消费需求。此种消费需求商业模式适用于于并行计算新一代消息的情景。
该台消费需求(Broadcasting)
该台消费需求是指数个消费需求者与此同时消费需求同一主轴(Topic)的新一代消息,每一消费需求者单厢消费需求两遍大部份的新一代消息,而并非协力消费需求大部份新一代消息。此种消费需求商业模式适用于于须要将新一代消息发送给大部份消费需求者的情景,如控制系统通告。
在实际情景中,可以根据不同的业务需求选择不同的消费需求商业模式。
复试题:你知道哪些JVM调优参数?
常见的JVM调优参数包括:
-Xms:设置JVM初始分配的内存大小,如-Xms512m表示初始分配512MB内存。-Xmx:设置JVM最大可用的内存大小,如-Xmx1024m表示最大可用1GB内存。-XX:PermSize:设置JVM方法区初始大小,如-XX:PermSize=256m表示初始分配256MB内存。-XX:MaxPermSize:设置JVM方法区最大可用的内存大小,如-XX:MaxPermSize=512m表示最大可用512MB内存。-Xmn:设置JVM年轻代的大小,如-Xmn256m表示年轻代分配256MB内存。-XX:SurvivorRatio:设置JVM年轻代中Eden区和Survivor区的比例,如-XX:SurvivorRatio=8表示Eden区和Survivor区的比例为8:1。-XX:MaxTenuringThreshold:设置JVM对象进入老年代的年龄阈值,如-XX:MaxTenuringThreshold=15表示对象年龄超过15就进入老年代。-XX:NewRatio:设置JVM年轻代和老年代的比例,如-XX:NewRatio=2表示年轻代和老年代的比例为2:1。
设置参数大小须要根据具体的应用情景和控制系统配置来展开调整。通常来说,须要根据应用的内存占用情况和控制系统的硬件配置来确定合适的参数大小。如果设置过小,会导致频繁的Full GC,影响控制系统的性能;如果设置过大,会浪费控制系统的资源。可以通过监控控制系统的GC情况和内存占用情况来展开调优。与此同时,也可以通过许多工具来辅助调优,如JVisualVM、JConsole等。
在JDK8中,元空间(Metaspace)是用来存储类信息的区域,它替代了JDK7及之前版本中的永久代(PermGen)。与永久代不同,元空间不再有固定的大小限制,而是根据须要动态地调整大小。以下是许多常见的元空间调优参数:
-XX:MetaspaceSize:设置元空间的初始大小,默认为21MB。-XX:MaxMetaspaceSize:设置元空间的最大大小,默认为无限制。-XX:MinMetaspaceExpansion:设置元空间手动扩容的最小值,默认为3MB。-XX:MaxMetaspaceExpansion:设置元空间手动扩容的最大值,默认为无限制。-XX:MetaspaceSizeSizeIncrement:设置元空间手动扩容时的增量,默认为12MB。-XX:MinMetaspaceFreeRatio:设置元空间释放空间后的最小比例,默认为40%。-XX:MaxMetaspaceFreeRatio:设置元空间释放空间后的最大比例,默认为70%。
须要注意的是,元空间的大小和手动扩容机制是根据应用程序的须要动态调整的,因此须要根据实际情况展开调优。可以通过监控元空间的采用情况和控制系统的性能指标来展开调优,保证应用程序的稳定性和性能。
复试题:什么是逃逸分析什么是栈上分配
逃逸分析和栈上分配是JVM的三种优化技术。
逃逸分析是一种分析技术,用于判断对象的作用域是否超出了方法的范围。如果对象的作用域仅限于方法内部,所以就可以将其分配到栈上,从而避免在堆上分配对象的开销。逃逸分析可以提高程序的性能,减少垃圾回收的开销。
**栈上分配**是指将对象分配到栈上而并非堆上。栈上分配可以避免在堆上分配对象的开销,从而提高程序的性能。栈上分配的前提是对象的生命周期必须在方法内部结束,否则对象会被强制转移到堆上。栈上分配可以和逃逸分析结合采用,从而进一步提高程序的性能。
须要注意的是,逃逸分析和栈上分配都是JVM的优化技术,并非大部份的JVM都支持这些技术。在采用这些技术时须要根据具体的JVM版本和应用程序的特性展开调优。与此同时,也须要注意不要过度优化,避免出现反效果的情况。
复试题:MyBatis中一级缓存和二级缓存
MyBatis是一种开源的Java持久化框架,它提供了一系列的功能,包括SQL映射、对象关系映射(ORM)、缓存等。MyBatis中的缓存机制包括一级缓存和二级缓存,它们都是为了提高数据库访问效率而设计的。以下是它们的详细介绍:
一级缓存:
一级缓存的作用域是SqlSession级别的,即同一SqlSession中的大部份操作共享同一缓存。当两个SqlSession被关闭时,该SqlSession中的缓存也会被清空。如果须要在数个SqlSession之间共享缓存,则须要采用二级缓存。
二级缓存:
二级缓存是指在数个SqlSession之间共享缓存,它可以提高数个SqlSession之间的数据共享和访问效率。二级缓存是可选的,须要在MyBatis配置文件中展开配置。如果开启了二级缓存,则在执行查不一致的难题。
二级缓存的作用域是Mapper级别的,即同一Mapper中的大部份操作共享同一缓存。如果须要在数个Mapper之间共享缓存,则须要采用自定义缓存。
须要注意的是,缓存虽然可以提高数据库访问效率,但是也会带来许多难题,比如数据不一致、缓存过期等难题。
复试题:请