191113面试题总结

1.Maven 中A依赖B B依赖C 那么A可以使用C中的类吗?

*按照依赖关系,可推C继承A,则C可以使用A中修饰符为public,protected的类

2.SpringBoot中有一个类标记了@Controller注解,通过自动扫描把这个类的对象加入IOC,那么这个 类应该放那?

*在@SpringBootApplication所在包或者下面的子包,才能被自动扫描到

#3.通过Maven下载jar包,下载失败怎么处理

*a.使用文件搜索工具,输入.lastupdate删除所有以.lastupdate结尾的文件。updataMaven。
*b.通过报错信息了解报错jar包,找到并且删除加拷贝相应可用jar,手动导入本地库。
*c.修改pom文件中的个别字符或者空格格式,多updata几次。
*d.仓库全删除了,全部重新下载。

5/6.项目的单一架构和分布式架构有什么本质区别

*单体式架构
	-->    只需要一个模块,所有的功能部署在一起,流量小!
		   面对简单业务时开发,测试,部署,扩容简单易行,有优势
		   编译慢,启动慢,代码冲突,扩展不易
*分布式架构
	-->	   分模块拆分部署系统应用功能,服务之间互相调用。实现了流量分担,解决了高流量并发
		   面对复杂业务性能好,效率高,可扩展性可优化性强

7.分布式和集群有啥区别

	*集群
 	集群倾向于物理概念,即多台机器组成一个集群。这多台机器是否有合作关系并不能保证
	但是从物理角度,由于都部署在一起,在同一个机房,就可以称之为集群。
*分布式
	分布式倾向于逻辑概念,即多个节点或程序为了一个共同的目标,部署在一个或者多个物理机器上。
	负责具体的业务逻辑处理,是一种工作方式。

8.实现分布式的主流技术

1.SOA架构(面向服务的架构)
Dubbo
2.微服务(MicroServices)架构
springboot
springcloud
3.服务网格(Service Mesh)架构

9.注册中心起到的作用

保存某个服务所在地址等信息,方便调用者实时获取其他服务信息
服务提供者注册服务
服务消费者服务发现

10.理解负载均衡

负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中
负载均衡主要解决网络拥塞问题,提高服务器响应速度,服务就近提供,
达到更好的访问质量,减少后台服务器大并发压力。

11.悲观锁和乐观锁

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,
所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。
传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改
,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。
乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。
两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,
即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。
但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

12.redis的常用数据类型

	Strings
	Lists
	Sets 
	Sorted Set
	hashes

13.???

倒序加入表中
	orange grape banana	apple

14.Redis的持久化机制是如何工作的

	1、快照(snapshots)
	缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。
  	工作原理
  . Redis forks.
  . 子进程开始将数据写到临时RDB文件中。
  . 当子进程完成写RDB文件,用新文件替换老文件。
	. 这种方式可以使Redis使用copy-on-write技术。
	2、AOF
	  快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,
	  Redis就不是一个合适的选择。
	  Append-only文件模式是另一种选择。
	  你可以在配置文件中打开AOF模式
	3、虚拟内存方式
	  当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
	  当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
	  vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
	  自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式或者其他数据库

15.redis主从复制集群中配置哨兵起到什么作用

	 	1.监控所有节点数据库是否在正常运行。
	 	2.master数据库出现故障时,可以自动通过投票机制,从slave节点中选举新的master,实现将从数据库转换为主数据库的自动切换。

16.????

	命令格式:mkdir -p

	说明:建立一个子目录。

	参数:-p 确保aaa目录名称存在,如果aaa目录不存在的就新创建一个

17.???

-r 递归处理,将指定目录下的所有文件与子目录一并处理
cp -r /usr/men /usr/zh
将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中

18.pwd是个啥?

pwd
显示工作目录的路径名称

19.MyBatis的Mappeer.xml配置文件中#{}和${}有什么区别?

#{} 这种取值是编译好SQL语句再取值   
#{}方式能够很大程度防止sql注入。

${} 这种是取值以后再去编译SQL语句
$方式无法防止Sql注入。
$方式一般用于传入数据库对象,例如传入表名.

20.假设spring boot环境下yml配置文件中偶一个属性,如何通过@Value取出这个属性的值

@Configuration注解是必须的,@Component同样适用
@Value("${spring.redis.port:#{null}}")
其中
:#{null}
作用为在取不到对应配置值时,采用默认值null赋值

21.在liunx中如何通过命令查看指定进程信息?

ps -ef|grep 进程名

22.在liunx中如何通过命令查看指定进程占用的端口号信息

ps -ef|grep 进程名 获取pid
lsof -p pid -nP | grep 进程名

23.linux命令中的管道要用什么符号?他们是如何工作的?

操作符是:”|”
正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。
通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面

24.简单介绍一下springcloud中的服务器熔断机制

熔断机制是对系统的防护,比如受到一些恶意攻击,
那么需要熔断机制来保护系统的微服务,做出响应,避免资源被耗尽。
既要能响应,又要能防护,当我们的请求达到一个负载阈值,
就启用熔断,把真实接口关掉,给客户端请求一个响应,这个响应,我们可以设置。
服务熔断就是对该服务的调用执行熔断,对应后续请求,不在继续调用该目标服务,而是直接返回,从而可以快速释放资源,
或者服务出现故障,会把故障信息返回给客户端

25.为什么说Ribbon是一种客户端负载均衡

每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。
而在服务端负载均衡中,只要负载均衡器维护一份服务端列表 。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值