第二轮面试

Posted day-day--up

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二轮面试相关的知识,希望对你有一定的参考价值。

1、SSM的开发步骤是什么:

(1)建库建表,导入测试数据

(2)先写数据访问层mapper层,写出所需要的增删改查接口,并创建映射xml文件,将对应的sql语句写好

(3)service层,先写好业务层的接口,然后实现接口,写好业务

(4)controller层

(5)配置过滤器CharacterEncodingFilter和前端控制器DispatcherServlet

(6)配置springMVC-servlet.xml文件:全局扫描包、数据源、SqlSessionFactoryBean、数据源事务管理、事务注解驱动、spring和mybatis整合、mvc注解驱动

2、设计一个权限模块:

权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。

基于 RBAC权限访问控制。也就是说一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个角色(多对多)。

设计表:用户表、用户角色关联表、角色表、角色权限关联表、用户权限表,通过通过用户表中的用户id在用户角色关联表中找到角色id,通过角色名找到权限id,获取权限id中的权限标识来获取权限。

 3、什么是docker

docker:是用一种虚拟化的技术模拟真实的开发环境的技术;
一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和生产环境一直性的问题。
 
docker作用:
构建、测试、部署和发布容器化应用的平台,称其为平台是因为Docker起始是一套用于管理与容器相关的所有事物的工具。
技术图片

 

 4、什么是dockfile?

  • Dockerfile是一个包含用于组合映像的命令的文本文档,可以使用在命令行中调用任何命令。
  • Docker通过读取Dockerfile中的指令自动生成映像。
  • docker build命令用于从Dockerfile构建映像,可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。例:docker build -f /path/to/a/Dockerfile
 
5.什么是docker-compose?
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

6.什么是portainer?
Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
 
 

7.在公司里使用的docker的版本是什么?
1.13.1

8.镜像和容器的关系?
docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository)。容器是由镜像实例化而来。
也可以说,镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。
docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。

docker利用容器来运行应用:docker容器是由docker镜像创建的运行实例。

docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
在Docker的生命周期中,最核心的两个部分,一个是镜像 Images,一个是容器 Containers。镜像运行起来就是容器。容器服务运行的过程中,基于原始镜像做了改变,比如安装了程序,添加了文件,也可以提交回去 (commit)成为镜像。

如果大家安装过系统,镜像有点像 GHOST镜像,从 GHOST镜像安装一个系统,运行起来,就相当于容器;容器里面自带应用,就像 GHOST镜像安装的系统里面不是裸的操作系统,里面可能安装了一些软件。安装好的系统使用过程中又安装了其他软件,或者下载了文件,还可以将这个系统重新 GHOST成一个镜像,当其他人通过这个镜像再安装系统的时候,则其他的软件也就自带了。

普通的 GHOST镜像就是一个文件,但是管理不方便。比如如果有几十个 GHOST镜像的话,你可能已经记不清楚哪个镜像里面安装了哪个版本的软件了。所以容器镜像有 tag的概念,就是一个标签,比如 dev-1.0,dev-2.0,production-1.1等,能够帮助你区分不同的镜像都可以。

为了镜像的统一管理,有一个镜像库的东西,可以通过 push将本地的镜像放到统一的镜像库中保存,可以通过 pull将镜像库中的镜像拉到本地来。

 九、分布式锁中的基于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 应用测试,但后来扩展到其他测试领域。
发送请求到服务端,获取目标服务的统计信息,生成不同格式的报告。

以上是关于第二轮面试的主要内容,如果未能解决你的问题,请参考以下文章

小米Java程序员第二轮面试10个问题,你是否会被刷掉?

腾讯Java程序员第二轮面试11个问题,你会几个?

腾讯Java程序员第二轮面试11个问题,你会几个?

小米二轮面试编程题:二叉树的前序遍历,要求非递归方式

HCI二轮面试任务

第二轮冲刺第三天