3.23 17:50-18:50,就1个小时
题量很大,20道单选题,11道多选题,5道填空题,5道综合题,1道附加题。
考察范围很广,Java基础,JVM,JUC,SQL,redis,消息队列,微服务。
鼠人寄了,好多没做出来。
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;
synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
1.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的
2.volatile仅能实现变量的修改可见性,并不能保证原子性;synchronized则可以保证变量的修改可见性和原子性
3.volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
4.volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化
String,StringBuffer,StringBuilder增加字符串长度哪个效率高:StringBuilder效率高,但是线程不安全,StringBuffer效率低一些,但是线程安全。
微服务的优点
·易于开发和维护: 一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量少。开发和维护单个微服务相当简单。而整个应用是若干个微服务构建而成的,所以整个应用也被维持在一个可控状态。
·单个微服务启动较快: 单个微服务代码量较少,所以启动会比较快。
·局部修改容易部署: 单个应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
·技术栈不受限: 在微服务架构中,可以结合项目业务及团队的特点,合理选择技术栈。例如某些服务可以使用关系型数据库 Mysql,有些服务可以使用非关系型数据库如 redis;甚至可根据需求,部分微服务使用 Java 开发,部分微服务使用 Node.js 开发。按需收缩: 可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级 CPU 或者增加节点。
微服务的缺点
·运维要求较高: 更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行。而在微服务中,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战。
·分布式固有的复杂性: 使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟等都会带来巨大的挑战。
·接口调整成本高: 微服务之间通过接口进行通信。如果修改某一个微服务 API,可能所有使用该接口的微服务都需要调整。
————————————————
版权声明:本文为CSDN博主「Blue92120」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
贴上原文链接:什么是微服务架构?微服务架构有什么优缺点?
#23届春招##Java笔试面试##卓望##卓望数码#