2021个人被面试的面试题

1.SpringCloud的组件有哪些?
Spring Cloud 提供了配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选分布式会话和集群状态管理等,一系列的解决方案

Config:配置管理工具,支持 git 存储配置实现应用外部配置化,支持远程客户端读取配置并根据初始化参数启动项目
Netflix:核心组件
Eureka:服务治理组件,可以注册服务接口中心
Hystrix:容错管理组件,实现断路器模式,服务依赖中出现的延迟和故障提供容错性
Ribbon:客户端负载均衡服务调用组件
Feign:基于 Hystrix 和 Ribbon 声明式服务调用组件
Zuul:提供路由,访问过滤
Archaius:外部化配置参数组件
Bus:事件消息总线,用于将服务和服务实例与分布式消息传递连接在一起的事件总线。触发后续作业的业务联动性
Cluster:针对 Zookeeper、Redis、Hazelcast、Consul 的选举算法和通用状态模式的实现
CloudFoundry:与 pivotalCloudFoundry 的整合支持
Consul:服务发现与配置管理工具
Stream:通过 Redis、RabbitMQ、Kafka 实现消息微服务,通过消息队列的形式生产和消费消息
Security:安全管理组件
Sleuth:SpringCloud 分布式跟踪,兼容Zipkin、HTrace和基于日志的跟踪(如ELK)。
Zookeeper:基于 Zookeeper 的服务发现和配置管理组件
Starts:基础组件,基于 SpringBoot 风格的基础依赖模块

2.在一房间里有4个小孩,2个戴黑帽子,2个戴白帽子,但你自己不知道戴什么颜色的帽子,A与B,C,D之间有堵墙,所以看不见,同时谁都不能摘下帽子看,也不能回头看。沉默片刻后,4个小孩中有人猜中了自己戴的帽子的颜色。请问A,B,C,D究竟是谁猜中了?理由是什么?

网上搜索的答案:
C知道自己帽子的颜色,只有CD才可能知道自己帽子的颜色,刚开始D没有回答说明BC帽子颜色是不同的(如果是相同的,那么D就知道自己帽子的颜色了)C一看D没有立马回答,说明自己和B的帽子是不同颜色,B是白色,那么C就是黑色

3.10ml试管10ml的水,一个7ml,一个3ml,将10ml分成两个5ml的
10ml水到三次进3ml里,3ml里的到三次进7ml,把7ml的倒进10毫升里,3毫升里的再倒进7毫升里,10毫升的倒进3毫升里,3毫升里的再到进7毫升里,这是10毫升里有5毫升液体,7毫升里有5毫升液体

4.序列化的作用和序列化ID的作用
序列化的作用:
转成字节流 进行 存储或传输
首先的话,java序列化会更有利于传输,它的速度会更快,并且也会更安全,被调用方序列化,调用方反序列化即能够得到传输之前的最原始的java对象,常常用来做不同进程之间的对象传输。

其次的话呢,就是能够更加便于储存,不论是存储成文件又或者是存储成数据库都是可以的,存储成文件,下回要用可以直接反序列拿到对象。
序列化ID的作用:
java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。
我们可以显示的定义一个序列化ID控制反序列化成功。
5.悲观锁和乐观锁是什么?举例使用过的场景
悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。

Java synchronized 就属于悲观锁的一种实现,每次线程要修改数据时都先获得锁,保证同一时刻只有一个线程能操作数据,其他线程则会被block。

乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。乐观锁适用于读多写少的应用场景,这样可以提高吞吐量。

乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

乐观锁一般来说有以下2种方式:

  1. 使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据。
  2. 使用时间戳(timestamp)。乐观锁定的第二种实现方式和第一种差
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值