面试题一
一、描述下数据库中的事务–ACID各个的特点。
原子性:事务中的操作要么全部成功要么全部失败。
一致性:事务前后数据的完整性必须保持一致。
隔离性:多个并发的事务之间是相互隔离的,互不干扰的。
持久性:事务提交后,数据是永久改变的。
二、什么是springboot?你们公司是用的哪个版本?
SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务。
版本号:2.1.6
三、什么是redis?
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
四、如何理解springcloud微服务项目中,eureka,provider,consumer它们之间的关系?
eureka:提供服务注册于发现
provider:服务提供方法将自身注册到eureka,让消费方找到
consumer:服务消费方从eureka获取注册服务列表,能够消费服务
五、mysql默认的存储引擎是什么?
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB。
MyISAM不支持事务,InnoDB支持事务。
MySIAM不支持外键,InnoDB支持外键,
MySIAM支持全文索引,InnoDB不支持全文索引。
六、什么是跨域?
要了解跨域,先要说说同源策略。所谓同源是指,域名,协议,端口相同,有一个不一样则是跨域。
七、什么是token?
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。
当第一次登录后,服务器生成一个Token便将此Token返回给客户端,
以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
八、什么是RESTful?
首先rest是一种API的模式,常以JSON格式编写。符合rest约束风格和原则的应用程序或设计就是RESTful。
九、SpringCloud解决了哪些问题?
与分布式系统相关的复杂性
处理服务发现的能力
解决冗余问题
负载平衡
减少性能问题
十、微服务中什么是熔断?什么是服务降级?
服务熔断的作用是当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。
服务降级是为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。
十一、微服务的优缺点是什么?
优点:
易于开发和维护:因为一个服务只关注一个特定的业务,业务就变得比较清晰。同时维护起来也是比较方便。
单个服务启动比较快:单个服务代码量不会很多,启动起来就会很快。
便于伸缩:如果系统中有三个服务ABC,服务B的访问量比较大,我们可以将服务B集群部署。
缺点:
运维要求比较高:之前就一个war包,现在一个系统中会有很多的服务,每个服务都对应一个war包,维护起来就会变得很麻烦。
技术复杂性提高:微服务就会带来一系列的问题,事务问题,Session一致性问题,锁问题等。
十二、微服务之间如何独立通讯的?
同步通信:dobbo通过 RPC 远程过程调用、springcloud通过 REST接口json调用等。
异步:消息队列,如:RabbitMq、ActiveMq、Kafka 等。
十三、SpringCloud 和 Dubbo 有哪些区别?
首先,他们都是分布式管理框架。
dubbo 是二进制传输,占用带宽会少一点。SpringCloud是http 传输,带宽会多一点,同时使用http协议一般会使用JSON报文,消耗会更大。
SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接口无序升级。
最大的区别:
Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
十四、SpringBoot 和 SpringCloud 之间关系?
SpringBoot:专注于快速方便的开发单个个体微服务(关注微观);
SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观);
SpringBoot可以离开SpringCloud独立使用,但是SpringCloud不可以离开SpringBoot,属于依赖关系。
十五、eureka和zookeeper的区别?
eureka和zookeeper都可以提供服务注册与发现的功能,zookeeper 是CP原则,强一致性和分区容错性。eureka 是AP 原则 可用性和分区容错性。
zookeeper当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但是选取主节点期间会导致服务不可用,这是不能容忍的。
eureka各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务。
十六、mycat是什么?你们公司分库分表的分片规则是什么?
Mycat是基于MySQL的数据库中间件,用来协调切分后的数据库,使其可以进行统一管理。
分片规则:取模分片 PartitionByMode
十七、什么是集合?
集合有两个父接口,一个collection,一个Map;
而collection有两个子接口,一个List,一个Set;
List有两个常见的实现类 ArrayList,LinkedList;
Set有两个常见的实现类 HashSet,TreeSet;
Map有两个常见的实现类 HashMap,HashTable。
十八、什么是dubbo?
Dubbo和Springcloud都是分布式服务中常用的框架。dubbo与cloud不同,dubbo基于RPC协议。*它提供了三大核心功能: 面向接口的远程方法调用,*智能容错和负载均衡, 以及服务自动注册和发现。
十九、什么是spring?
Spring是一个开源的轻量级的Java开发框架。是一种简化应用程序的开发。
在spring出来之前,service层调用dao层都是用new的方式,在spring出来之后,service层和到dao层都会放在spring容器去管理,这是spring的第一种特性,我们称之为IOC,控制反转。
spring还有一种特性,我们称之为AOP,大白话,所谓“面向切面”,说白了就是专门的人干专门的事。在项目很多公有的或是要被重复被调用的模块可以被抽取出来,利用的就AOP的特性,例如日志模块。
面试题二
一、SSM的开发步骤是什么?
"二八"
web.xml
1.前端控制器DispatcherServlet
2.过滤器CharacterEncodingFilter
applicationContext.xml
1.扫描包 <context:component-scan base-package="cn"/>
2.mvc驱动 <mvc:annotation-driven/>
3.事务驱动 <tx:annotation-driven transaction-manager="txManager"/>
4.配置数据源
5.SqlSessionFactoryBean
6.配置事务
7.数据映射器
8.视图解析器
二、设计一个权限模块?
权限模块是数据库的安保系统,决定谁可以使用,谁拥有权限,有user、role、permission表,通过user-role、role-permission关联表(码表)进行关联,
给角色分配权限,角色发放权限给用户。
三、什么是docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,
也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
四、什么是dockfile?
Dockerfile是一个包含用于组合映像的命令的文本文档,可以使用在命令行中调用任何命令。
五、什么是docker-compose?
可以管理多个 Docker 容器组成一个应用,定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。
然后,只要一个命令,就能同时启动/关闭这些容器。
六、什么是Portainer?
Portainer是Docker的图形化管理工具
七、在公司里使用的docker的版本是什么?
18.09.7
八、镜像和容器的关系?
容器是可写的,镜像是可读的。容器是镜像的实例,镜像是容器的静态备份。
九、分布式锁中的基于redis的setnx的原理以及set和setnx的区别是什么?
分布式锁基于setnx原理,如果 SETNX 返回1,说明该进程获得锁。
如果 SETNX 返回0,说明其他进程已经获得了锁,进程不能进入临界区。进程可以在一个循环中不断地尝试 SETNX 操作,以获得锁。
redis中set是将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
setnx是当且仅当 key 不存在时,可以设置 value值 。若给定的 key 已经存在,则 SETNX 不做任何动作。
十、什么是springcloud,springcloud中的组件有哪些?分别描述下它的原理?
SpringCloud架构中最核心的是Eureka注册中心,它是一个通讯录。所有p端和c端都会注册在上面,cloud中c端调用p端应用feign组件进行调用。应用程序导致网络请求出现问题时,hystrix组件实现容错机制。用户请求量变大是,用ribbon组件实现客户端的负载均衡。而服务器端的负载均衡通常使用nginx反向代理。SpringCloud中有类似于servlet过滤器的组件,zuul网关组件对整个服务架构进行安全过滤。当使用一个服务调用多个feign组件的时候,sleuth+zipkin组件用来服务追踪,可以用来调试接口(追踪问题)。config组件进行统一配置。
dubbo基于RPC,SpringCloud基于RESTful。
组件ribbon、feign、hstrix 、eureka、zuul。
十一、什么是jmeter?
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。
发送请求到服务端,获取目标服务的统计信息,生成不同格式的报告。
面试题三
一、什么是mybatis?
一种持久层框架,类似于JDBC访问数据库的操作,
我们说JDBC使用到的对象有Connection对象,PreparedStatement对象,ResultSet对象。
而Mybatis框架的核心对象有SqlSessionFactoryBuilder对象,SqlSessionFactory对象,SqlSession对象。
并且myibatis框架和hibernate框架最大的区别就在于mybatis它的灵活性比较高。
二、什么是spring?
在spring出来之前,service层调用dao层都是用new的方式。
在spring出来之后,service层和dao层都会放在spring容器去管理,这是spring的第一种特性,我们称之为IOC,控制反转。
spring还有一种特性,我们称之为AOP,大白话,“面向切面”,说白了就是专门的人干专门的事。在项目很多公有的或是
要被重复被调用的模块可以被抽取出来,利用的就是AOP的特性,例如日志模块。
三、什么是SpringMVC?
当用户发送请求到springmvc中的前端控制器中,通过映射器和适配器返回ModelAndView对象到客户端。这就是SpringMVC的基本原理。
四、什么是SSM?
SSM搭建的版本有很多,例如有一个版本可以这么搭建,两个核心配置文件web.xml,applicationContext.xml。
1.前端控制器DispatcherServlet
2.过滤器CharacterEncodingFilter
applicationContext.xml
1.扫描包 <context:component-scan base-package="cn"/>
2.mvc驱动 <mvc:annotation-driven/>
3.事务驱动 <tx:annotation-driven transaction-manager="txManager"/>
4.配置数据源
5.SqlSessionFactoryBean
6.配置事务
7.数据映射器
8.视图解析器
五、什么是集合?
集合有两个父接口,一个Collection,一个Map,而Collection有两个子接口,一个List,一个Set,List有两个常见的实现类ArrayList,LinkedList,
Set有两个常见的实现类HashSet,TreeSet,Map有两个常见的实现类HashMap,HashTable
六、什么是SpringCloud?
SpringCloud架构中最核心的是Eureka注册中心,它是一个通讯录。所有p端和c端都会注册在上面,cloud中c端调用p端应用feign组件进行调用。应用程序导致网络请求出现问题时,hystrix组件实现容错机制。用户请求量变大是,用ribbon组件实现客户端的负载均衡。而服务器端的负载均衡通常使用nginx反向代理。SpringCloud中有类似于servlet过滤器的组件,zuul网关组件对整个服务架构进行安全过滤。当使用一个服务调用多个feign组件的时候,sleuth+zipkin组件用来服务追踪,可以用来调试接口(追踪问题)。config组件进行统一配置。
dubbo基于RPC,SpringCloud基于RESTful。
七、什么是Dubbo?
Dubbo和Springcloud都是分布式服务中常用的框架。dubbo与cloud不同,dubbo基于RPC协议。*它提供了三大核心功能: 面向接口的远程方法调用,*
*智能容错和负载均衡, 以及服务自动注册和发现。*
Dubbo按照分层的方式来架构,可以最大限度地松耦合。Dubbo采用一种非常简单的模型, 要么提供方提供服务, 要么是消费方消费服务, 所以基于这一点可以抽象出服务提供方和服务消费方两个角色。
八、什么是消息中间件?
消息中间件利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式环境下扩展进程间的通信。
九、eureka和zookeeper的区别?
首先他们都是服务注册和发现的功能,cloud一般选择eureka作为注册中心,dubbo一般选择zookeeper作为注册中心。基于CAP原则,eurek是AP原则,即可用性和分区容错性,zookeeper是CP原则,即强一致性和分区容错性。
十、分布式锁的概念?
在分布式系统中,由于分布式系统的分布性,即多线程和多进程并且分布在不同机器中,这两种锁将失去原有锁的效果,需要我们自己实现分布式锁——分布式锁。
在多线程的环境下,多个线程同时访问同一个资源,导致线程不安全,使用分布式锁来解决这个线程安全问题。
分布式抢购用到分布式锁,上锁;第二个用户要等待第一个用户完成才能进行抢购;利用setnx设置解决安全性问题,缺点是性能过低。
面试题四
1.描述一下你上一家公司SSM项目的功能模块有哪些?
2.描述一下你上一家公司dubbo+zookeeper项目的功能模块有哪些?
3.描述一下你上一家公司springcloud项目的功能模块有哪些?
4.描述一下你上一家公司项目中权限模块的思路?
5.描述一下上一家公司项目中的报表模块的思路?
面试题四