什么是自旋锁?
自旋锁是SMP架构中的一种low-level的同步机制。
当线程A想要获取一把自旋锁而该锁又被其它线程锁持有时,线程A会在一个循环中自旋以检测锁是不是已经可用了。
容器与主机之间的数据拷贝命令?
Docker cp命令用于穷奇与主机之间的数据拷贝
mv 命令
将 file1 重命名为 file2 ,如果 file2 存在则提示是否覆盖:mv -i file1 file2 。
-v 会输出重命名的过程,当文件名中包含通配符时,这个选项会非常方便:mv -v file1 file2 。
什么是B+树?
B树的变种,拥有B树的特点
Resource 是如何被查找、加载的?
Resource 接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。 Spring 为 Resource 接口提供了如下实现类:
MySQL分库分表了解过吗?
详见:https://baijiahao.baidu.com/s?id=1622441635115622194
ElasticSearch中的分片是什么?
在大多数环境中,每个节点都在单独的盒子或虚拟机上运行。
索引 - 在Elasticsearch中,索引是文档的集合。
分片 -因为Elasticsearch是一个分布式搜索引擎,所以索引通常被分割成分布在多个节点上的被称为分片的元素。
动态链接库与静态链接库的区别
静态库
静态库是一个外部函数与变量的集合体。静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动态链接库那么复杂,在编译期间由编译器与链接器将它集成至应用程序内,并制作成目标文件以及可以独立运作的可执行文件。而这个可执行文件与编译可执行文件的程序,都是一种程序的静态创建(static build)。
什么情况下一个 broker 会从 ISR 中被踢出去?
leader会维护一个与其基本保持同步的Replica列表,该列表称为ISR(in-sync Replica),每个Partition都会有一个ISR,而且是由leader动态维护 ,如果一个follower比一个leader落后太多,或者超过一定时间未发起数据复制请求,则leader将其重ISR中移除 。
HashMap与HashTable的区别?
HashMap没有考虑同步,是线程不安全的;Hashtable使用了synchronized关键字,是线程安全的;
HashMap允许K/V都为null;后者K/V都不允许为null;
中断与系统调用了解吗?
所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类:
你们项目为什么选用 Maven 进行构建?
- 首先,Maven 是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。
- 其次,Maven 可以进行依赖的管理。使用 Maven ,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。
什么是Java注释
定义:用于解释说明程序的文字
Maven 常用命令
mvn archetype:create
:创建 Maven 项目。mvn compile
:编译源代码。mvn deploy
:发布项目。mvn test-compile
:编译测试源代码。mvn test
:运行应用程序中的单元测试。mvn site
:生成项目相关信息的网站。mvn clean
:清除项目目录中的生成结果。mvn package
:根据项目生成的 jar/war 等。mvn install
:在本地 Repository 中安装 jar 。mvn eclipse:eclipse
:生成 Eclipse 项目文件。mvn jetty:run
启动 Jetty 服务。mvn tomcat:run
:启动 Tomcat 服务。mvn clean package -Dmaven.test.skip=true
:清除以前的包后重新打包,跳过测试类。- 用到最多的命令
mvn eclipse:clean
:清除 Project 中以前的编译的东西,重新再来。mvn eclipse:eclipse
:开始编译 Maven 的 Project 。mvn clean package
:清除以前的包后重新打包。
在 Provider 上可以配置的 Consumer 端的属性有哪些?
1)timeout:方法调用超时
2)retries:失败重试次数,默认重试 2 次
3)loadbalance:负载均衡算法,默认随机
4)actives 消费者端,最大并发调用限制
消息队列积压怎么办
当消费者出现异常,很容易引起队列积压,如果一秒钟1000个消息,那么一个小时就是几千万的消息积压,是非常可怕的事情,但是生产线上又有可能会出现;
static注意事项
1、静态只能访问静态。 2、非静态既可以访问非静态的,也可以访问静态的。
Dubbo服务之间的调用是阻塞的吗?
默认是同步等待结果阻塞的,支持异步调用。
如何实现动态Zuul网关路由转发?
通过path
配置拦截请求,通过 Serviceld
到配置中心获取转发的服务列表,zuul内部使用 Ribbon
实现本地负载均衡和转发。
说下你熟悉的排序算法
详见:https://www.cnblogs.com/onepixel/articles/7674659.html
数据同步
整个集群完成Leader选举之后,Learner(Follower和Observer的统称)回向Leader服务器进行注册。当Learner服务器想Leader服务器完成注册后,进入数据同步环节。
详细描述一下Elasticsearch索引文档的过程。
协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。
shard = hash(document_id) % (num_of_primary_shards)
当分片所在的节点接收到来自协调节点的请求后,会将请求写入到Memory Buffer,然后定时(默认是每隔1秒)写入到Filesystem Cache,这个从Momery Buffer到Filesystem Cache的过程就叫做refresh;
当然在某些情况下,存在Momery Buffer和Filesystem Cache的数据可能会丢失,ES是通过translog的机制来保证数据的可靠性的。其实现机制是接收到请求后,同时也会写入到translog中,当Filesystem cache中的数据写入到磁盘中时,才会清除掉,这个过程叫做flush;
在flush过程中,内存中的缓冲将被清除,内容被写入一个新段,段的fsync将创建一个新的提交点,并将内容刷新到磁盘,旧的translog将被删除并开始一个新的translog。
flush触发的时机是定时触发(默认30分钟)或者translog变得太大(默认为512M)时;
sleep() 方法和 wait() 方法的区别和共同点?
相同点:
两者都可以暂停线程的执行,都会让线程进入等待状态。
如何使用 Docker 技术创建与环境无关的容器系统?
Docker 技术有三中主要的技术途径辅助完成此需求:
高吞吐量下如何优化生产者和消费者的性能?
1)开发
同一group下,多机部署,并行消费
单个Consumer提高消费线程个数
批量消费。消息批量拉取,业务逻辑批量处理。
kafka的message格式是什么样的?
一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成。
header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。
当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性。
body是由N个字节构成的一个消息体,包含了具体的key/value消息。
保护SpringBoot应用有哪些方法?
- 在生产中使用HTTPS
- 使用Snyk检查你的依赖关系
- 升级到最新版本
- 启用CSRF保护
- 使用内容安全策略防止XSS攻击
搭建mycat的核心配置文件有哪些?
schem.xml 配置参数:逻辑库,逻辑表,数据节点。节点主机
什么是shiro
Shiro是一个强大易用的java安全框架,提供了认证、授权、加密、会话管理、与web集成、缓存等功能,对于任何一个应用程序,都可以提供全面的安全服务,相比其他安全框架,shiro要简单的多。
Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
不同的Xml映射文件,如果配置了namespace,那么id可以重复;如果没有配置namespace,那么id不能重复