前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试:2021.05.24

Java面试:2021.05.24

原创
作者头像
夕梦
修改2021-05-27 18:04:10
3600
修改2021-05-27 18:04:10
举报
文章被收录于专栏:每日面试每日面试

1、Redis 持久化方案你了解吗?

redis持久有两种形式,RDB,AOF俩种,RDB是一种快照的方式来存储的,这也是redis的默认的持久化方式,每隔一段对数据进行一次存储,默认是15S。

 AOF是即时性的持久化方式,这种方式对数据的保存完整性比较高,但是性能比较差。而RDB存在的问题主要是服务器宕机或者断电,就会造成数据丢失,我们可以适当的把存储间隔缩短一些。

2、什么是Dubbo?

1. Dubbo的理解

    工作在soa面向服务分布式框架中的服务管理中间件。Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

    它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。

    Dubbo使用的是缺省协议, 采用长连接和nio异步通信, 适合小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

    反之, Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

2. Dubbo的调用流程

1. 服务提供方启动时,向注册中心注册服务地址;

2. 服务消费者启动时, 向注册中心订阅地址;

3. 服务地址变更时, 注册中心向服务消费方, 变更时推送服务地址列表;

4. 服务消费方随机调用一个服务地址, 如果失败, 重试另一个地址;

5. dubbo后台定时采集服务调用次数和调用时间等信息。

3、Dubbo和Springcloud有什么区别?    

  • SpringCloud和Dubbo都是主流的微服务架构.
    • SpringCloud是Spring体系下的微服务解决方案.
    • Dubbo是阿里旗下的后来交给Apache维护的一款分布式微服务治理框架.
  • 技术方面对比
    • SpringCloud功能远远超过Dubbo, Dubbo只实现了服务治理(注册和发现). 但是SpringCloud提供了很多功能, 有21个子项目
    • Dubbo可以使用Zookeeper作为注册中心, 实现服务的注册和发现, SpringCloud不仅可以使用Eureka作为注册中心, 也可以使用Zookeeper作为注册中心.
    • Dubbo没有实现网关功能, 只能通过第三方技术去整合. 但是SpringCloud有zuul路由网关, 对请求进行负载均衡和分发. 提供熔断器, 而且和git能完美集成.
  • 性能方面对比
    • 由于Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC。
    • 而SpringCloud是基于Http协议+Rest接口调用远程过程的,相对来说,Http请求会有更大的报文,占的带宽也会更多。
    • 使用Dubbo时, 需要给每个实体类实现序列化接口, 将实体类转化为二进制进行RPC通信调用.而使用SpringCloud时, 实体类就不需要进行序列化.

4、mybatis中的#{}和${}有什么区别?

#{}是预编译处理,${}是字符串替换。

Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;

Mybatis在处理${}时,就是把${}替换成变量的值。

使用#{}可以有效的防止SQL注入,提高系统安全性。 一般能用#的就别用$

5、说一下ArrayList的自动扩容机制?

ArrayList底层是采用数组来进行数据的存储,第一次扩容时数组大小为10,之后加入的数据元素大于10的话,就会自动扩容为原先的1.5倍大小,并复制好数据元素,每一次扩容都是创建一个新的数组,将数据元素存到新的数组里。

6、什么是自动拆装箱?

自动装箱: 就是将基本数据类型自动转换成对应的包装类。

自动拆箱:就是将包装类自动转换成对应的基本数据类型。

7、final 在 java 中有什么作用?  

final 修饰的类叫最终类,该类不能被继承;

final 修饰的方法不能被重写;

final 修饰的变量叫常量,必须赋值才能使用,并且只能赋值一次。

8、讲一下MySQL数据库事务的隔离级别?

Read Uncommitted(读取未提交内容)

 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取提交内容)

 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它可以避免脏读问题,一个事务只能看见其它事务已经提交的修改。这种隔离级别,会有不可重复读(Nonrepeatable Read)问题,即一次事务中的两次相同查询拿到了不同的结果。

Repeatable Read(可重读)

这是MySQL的默认事务隔离级别,它能避免脏读及不可重复读问题。但还是会有幻读 (Phantom Read)现象。幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行。MySQL 提供了间隙锁可以避免幻读,例如

select * from 表 where id >= 10 这时其它事务无法插入id >=10以上的新行。

Serializable(可串行化)

这是最高的隔离级别,它利用了共享锁解决幻读,即两个事务可以同时读数据,而不能一个读、一个写,或者两个都去写数据。但性能太低。

9、讲一下MySQL数据库事务的特性?

原子性:事务内的多条 sql 作为一个整体执行,要么全部成功,有一条失败之前成功的也要回滚;

一致性:事务的执行使得数据库从一种正确状态转换成另一种正确状态;

隔离性:多个事务并发执行时,事务之间数据更改的可见性,隔离级别越高,事务内数据的一致性越高;

持久性:事务正确提交后,即使出现了其它故障(如断电等)也应当有机制保证提交后的数据永久保存。

10、讲一下MySQL数据库什么是左连接?

(左外连接)以左表为基准进行查询,左表数据会全部显示出来,右表 如果和左表匹配 的数据则显示相应字段的数据,如果不匹配,则显示为 NULL。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Redis 持久化方案你了解吗?
  • 2、什么是Dubbo?
  • 3、Dubbo和Springcloud有什么区别?    
  • 4、mybatis中的#{}和${}有什么区别?
  • 5、说一下ArrayList的自动扩容机制?
  • 6、什么是自动拆装箱?
  • 7、final 在 java 中有什么作用?  
  • 8、讲一下MySQL数据库事务的隔离级别?
  • 9、讲一下MySQL数据库事务的特性?
  • 10、讲一下MySQL数据库什么是左连接?
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档