常见的30道java面试题及答案(九)

配置文件不会变多,配置的节点主机会变多?

不会

进程调度的种类有哪些?

高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行
低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU
中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换

了解过哪些存储引擎?各有什么优缺点?

常用的是MyISAM和InnoDB。
InnoDB:支持事务、支持外键、支持行级锁、不支持全文索引、
MyISAM:不支持事务、不支持外键、不支持行级锁、支持全文索引

zookeeper负载均衡和nginx负载均衡区别

zookeeper
不存在单点问题,zab机制保证单点故障可重新选举一个leader
只负责服务的注册与发现,不负责转发,减少一次数据交换(消费方与服务方直接通信)
需要自己实现相应的负载均衡算法

TCP对应的协议和UDP对应的协议

TCP对应的协议:

Elasticsearch是如何实现Master选举的?

Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;
对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。
如果对某个节点的投票数达到一定的值(可以成为master节点数n/2+1)并且该节点自己也选举自己,那这个节点就是master。否则重新选举一直到满足上述条件。
补充:master节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理;data节点可以关闭http功能。

什么是 Eureka服务注册与发现?

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。

当实体类的属性名和表种字段名不一致怎么办?

有两种解决方案:可以在sql语句给字段名取别名,别名于实体类属性名同名,也可以用resultMap来映射字段名和实体类属性名一一对应.

微服务之间是如何通讯的?

第一种:远程过程调用(Remote Procedure Invocation)

如何使用 Docker 技术创建与环境无关的容器系统?

Docker 技术有三中主要的技术途径辅助完成此需求:

集合框架中的泛型有什么优点?

Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。

监控 Kafka 的框架都有哪些?

面试官其实是在 考察你对监控框架的了解广度,或者说,你是否知道很多能监控 Kafka 的框架或方法。下面这些就是 Kafka 发展历程上比较有名气的监控系统。

解释MySQL外连接、内连接与自连接的区别

先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。

进程的通信方式有哪些

进程通信,是指进程之间的信息交换(信息量少则一个状态或数值,多者则是成千上万个字节)。因此,对于用信号量进行的进程间的互斥和同步,由于其所交换的信息量少而被归结为低级通信

如何在 Spring Boot 中禁用 Actuator 端点安全性?

默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。 我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。

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

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

依赖的解析机制

当依赖的范围是 system 的时候,Maven 直接从本地文件系统中解析构件。

Mycat中全局ID方案有哪些?程序自定义全局ID的方案有哪些?

1.mycat的全局id方案

sleep() 方法和 wait() 方法的区别和共同点?

相同点:
两者都可以暂停线程的执行,都会让线程进入等待状态。

InnoDB的数据是怎么存储的?

InnoDB的主键索引文件上直接存放该行数据,称为聚簇索引,非主索引指向对主键的引用。

什么是Kubernetes?

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。

Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?

ISR:In-Sync Replicas 副本同步队列
AR:Assigned Replicas 所有副本
ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。

段式虚拟存储器

段式管理: 把主存按段分配的存储管理方式.它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间.段长可以任意设定,并可放大和缩小.

解释自动装配的各种模式?

自动装配提供五种不同的模式供Spring容器用来自动装配beans之间的依赖注入:

tomcat 有哪几种Connector 运行模式(优化)?

bio:传统的Java I/O操作,同步且阻塞IO。
maxThreads="150"//Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。 
minSpareThreads="25"---Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。 
maxSpareThreads="75"--一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。一旦创建的线程超过此数值,Tomcat会关闭不再需要的线程。线程数可以大致上用 “同时在线人数*每秒用户操作次数*系统平均操作时间” 来计算。 
acceptCount="100"----指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。如果当前可用线程数为0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。 
connectionTimeout="20000" --网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 
## Java中用到的线程调度算法是什么?

抢占式。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。
## 了解过粘包拆包吗?为什么会出现粘包拆包?怎么处理粘包拆包?

粘包的主要原因:发送方写入数据<套接字缓冲区大小;接收方读取套接字缓冲区数据不够及时。
## 什么是Container资源监控?

对于用户而言,了解应用程序的性能和所有不同抽象层的资源利用率非常重要,Kubernetes通过在容器,pod,服务和整个集群等不同级别创建抽象来考虑集群的管理。现在,可以监视每个级别,这只是容器资源监视。
## 说一下resultMap和resultType?

resultmap是手动提交,人为提交,resulttype是自动提交
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
1.当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
2.当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
## sed 命令

当你将 Dos 系统中的文件复制到 Unix/Linux 后,这个文件每行都会以 \r\n 结尾,sed 可以轻易将其转换为 Unix 格式的文件,使用\n 结尾的文件:sed 's/.$//' filename 。
反转文件内容并输出:sed -n '1!G; h; p' filename 。
为非空行添加行号:sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /' 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值