20道常见道java后端面试题(十)

Redis如何设置密码及验证密码?

设置密码:config set requirepass 123456

死锁出现的条件?

定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程就是死锁的。或者在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。

说说Eureka的自我保护机制?

当一个服务未按时进行心跳续约时,在生产环境下,因为网络延迟等原因,此时就把服务剔除列表并不妥当,因为服务可能没有宕机。 Eureka就会把当前实例的注册信息保护起来,不予剔除。生产环境下这很有效,保证了大多数服务依然可用。但是有可能会造成一些挂掉的服务被剔除有延迟。

什么是 Maven 插件?

Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。插件通常提供了一个目标的集合,并且可以使用下面的语法执行:mvn [plugin-name]:[goal-name]

MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义

(1)、varchar与char的区别
(2)、varchar(50)中50的涵义
(3)、int(20)中20的涵义
(4)、mysql为什么这么设计

您能否介绍一下Kubernetes中主节点的工作情况?

Kubernetes master控制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。因此,如果必须部署pod,则可以使用用户界面或命令行界面部署它们。然后,在节点上调度这些pod,并根据资源需求,将pod分配给这些节点。kube-apiserver确保在Kubernetes节点和主组件之间建立通信。

什么是服务雪崩效应?

雪崩效应是在大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃。

什么是线程的饥饿问题?如何解决?

饥饿指的是某一线程或多个线程因为某些原因一直获取不到资源,导致程序一直无法执行。如某一线程优先级太低导致一直分配不到资源,或者是某一线程一直占着某种资源不放,导致该线程无法执行等。

通道是个什么意思?

  • 通道是对原 I/O 包中的流的模拟。到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象(通道)。一个 Buffer 实质上是一个容器对象。发送给一个通道的所有对象都必须首先放到缓冲区中;同样地,从通道中读取的任何数据都要读到缓冲区中。Channel是一个对象,可以通过它读取和写入数据。拿 NIO 与原来的 I/O 做个比较,通道就像是流。
  • 正如前面提到的,所有数据都通过 Buffer 对象来处理。您永远不会将字节直接写入通道中,相反,您是将数据写入包含一个或者多个字节的缓冲区。同样,您不会直接从通道中读取字节,而是将数据从通道读入缓冲区,再从缓冲区获取这个字节。

对象都是优先分配在年轻代上的吗?

不是。当新生代内存不够时,老年代分配担保。而大对象则是直接在老年代分配。

TCP建立连接时为什么要传回 SYN

接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

给我一个符合开闭原则的设计模式的例子?

开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增加一个新的功能,你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基于开闭原则的,如策略模式,如果你需要一个新的策略,只需要实现接口,增加配置,不需要改变核心逻辑。一个正在工作的例子是 Collections.sort() 方法,这就是基于策略模式,遵循开闭原则的,你不需为新的对象修改 sort() 方法,你需要做的仅仅是实现你自己的 Comparator 接口。

布隆过滤器了解过吗?

详见:https://www.cnblogs.com/liyulong1982/p/6013002.html

使用Spring Cloud有什么优势?

使用Spring Boot开发分布式微服务时,我们面临以下问题

find 命令如何使用?

查找指定文件名的文件(不区分大小写):find -iname “MyProgram.c” 。
对找到的文件执行某个命令:find -iname “MyProgram.c” -exec md5sum {} ; 。
查找 home 目录下的所有空文件:find ~ -empty 。

在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?

(1)Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。
(2)Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。

什么是Container Orchestration?

考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但如果没有容器编排就无法进行通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有服务协同工作以满足单个服务器的需求。

服务提供者能实现失效踢出是什么原理?

服务失效踢出基于 Zookeeper 的临时节点原理。

Java 中有几种类型的流?

(1)按照流的方向:输入流(inputStream)和输出流(outputStream);(2)按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReader)和处理流(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如 BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接);(3)按照处理数据的单位: 字节流和字符流。字节流继承于 InputStream 和 OutputStrea,字符流继承于InputStreamReader 和 OutputStreamWriter 。

常见的并发容器?

ConcurrentHashMap:使用了分段锁,锁的粒度变得更小,多线程访问时,可能都不存在锁的竞争,所以大大提高了吞吐量。简单对比来看,就好比数据库上用行锁来取代表锁,行锁无疑带来更大的并发。
CopyOnWriteArrayList:写入时复制,多线程访问时,彼此不会互相干扰或被修改的线程所干扰,当然copy时有开销的,尤其时列表元素庞大,且写入操作频繁时,所以仅当迭代操作远远大于修改操作时,才应该考虑使用。
BlockingQueue:阻塞队列提供了可阻塞的put和take方法,当队列已经满了,那么put操作将阻塞到队列可用,当队列为空时,take操作会阻塞到队列里有数据。有界的队列是一种强大的资源管理器,可以在程序负荷过载时保护应用,可作为一种服务降级的策略。阻塞队列还提供offer操作,当数据无法加入队列时,返回失败状态,给应用主动处理负荷过载带来更多灵活性。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值