Java SpringCloud Docker面试题


前言

最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,会持续更新。

如果对老铁有帮助,帮忙免费点个赞,谢谢你的发财手!

1、什么是 Docker 容器?

  • Docker 是一个开源的应用容器引擎,它可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 服务器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

2、一个完整的Docker由哪些部分组成?

  • Docker Client 客户端:负责处理用户输入的命令与 Docker 的守护进程通信;
  • Docker Daemon 守护进程:负责和Docker client交互;
  • Docker Image 镜像:是创建容器的模板,同一个镜像可以创建多个不同的容器,如果把镜像比作程序里面的类,那么容器就是对象。可使用build 命令创建镜像。一个镜像是一个可执行的包,其中包括运行应用程序所需要的代码,依赖库、环境变量、和配置文件。
  • Docker Container 容器: 是通过镜像生成的运行实例,不同容器之间是相互隔离、独立运行的,拥有自己的ip和文件目录;运行容器前需要本地存在对应的镜像,如果本地不存在该镜像则会去镜像仓库下载;
  • Docker Registry 仓库:用来保存镜像,比如 DockerHub,可以将自己的镜像上传上去,每个镜像可以有不同标签(tag),可以理解为代码控制中的代码仓库。

3、Docker常用命令?

  • 查看本机的所用镜像:docker images
  • 搜索镜像:docker search mysql;
  • 下载拉取镜像:docker pull mysql,没写 tag 就默认下载最新的 lastest;
  • 将镜像推送至远程仓库:docker push mysql
  • 清理一个或多个镜像:docker rmi -f 镜像id 镜像id 镜像id;
  • 创建(并运行)容器:docker create(run), 通常一个容器就是一个应用或一个服务,也是我们常说的微服务;
  • 启动/停止/杀死已有的容器:docker start/stop/kill <container_id>;
  • 查看运行中/全部的容器:docker ps/ps -a;
  • 导入/导出容器:docker import/export;
  • 查看和配置仓库:cat /etc/docker/daemon.json;
  • 容器与主机之间的数据拷贝:docker cp。

4、描述 Docker 容器的生命周期?

  • Docker 容器经历以下阶段:
    创建容器、运行容器、启动容器、停止容器、重启容器、杀死容器、销毁容器。

5、Docker的工作原理是什么?

  • Docker是一个C/S架构的系统,docker守护进程运行在宿主机上,它从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境,也就是我们说的集装箱。

6、Docker 与 虚拟机 有何不同?

  • 1、传统虚拟机是需要安装整个操作系统的,然后再安装应用,启动应用,通常需要几分钟,而docker是直接使用镜像来运行业务容器的,只需要几秒钟就可以启动了;
  • 2、Docker消耗的资源更少,Docker容器和内核交互,几乎没有性能损耗,而虚拟机运行着整个操作系统,占用物理机的资源就比较多;
  • 3、Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
  • 4、Docker隔离性会弱一些,Docker属于进程之间的隔离,而虚拟机是系统级别的隔离; Docker通过签名机制来对镜像进行验证隔离,并采用了cgroup技术(control groups),可以限制某个容器使用内存的上限、可以在哪些CPU上运行等等。
  • 5、Docker安全性也弱一些,,Docker的租户root和宿主机root相同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,可以随意的操作。但虚拟机租户root和宿主机的root是分开的。

7、进入容器的方法有哪些?

  • 1、使用docker attach 784fd3b294d7,attach是直接进入容器启动命令的终端,不会启动新的进程;
  • 2、使用 docker exec -it 784fd3b294d7 /bin/bash,exec则是在容器里面打开新的终端,会启动新的进程;
    一般建议用exec进入容器。

8、如何临时退出一个正在交互的容器的终端,而不终止它?

  • 按Ctrl+p,后按Ctrl+q
    如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。

9、如何在生产中监控 Docker?

  • Docker 提供 docker stats 和 docker events等命令来监控生产中的 Docker。
  • Docker stats:可以获得容器的CPU,内存使用情况等。它类似于 Linux 中的 top 命令。
  • Docker events:可以实时输出 Docker 服务器端的事件,包括容器的创建、启动、关闭等。

10、为什么docker镜像要采用这种分层结构呢?

最大的一个好处是:共享资源。
比如:有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份base镜像,就可以为所有容器服务了,而且镜像的每一层都可以被共享。

11、如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如/etc下的文件,这时其他容器的/etc是否也会被修改?

不会,在容器中修改已存在的文件时,Docker会从上往下依次在各镜像层中查找此文件,一旦找到,立即将其复制到容器层,然后修改它,这就是容器的copy-on-write特性;
所有对容器的改动,无论添加、删除、还是修改文件,都只会发生在容器层中,因为只有容器层是可写的,容器层下面的基础镜像都是只读的,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。
(如果不同层中有一个相同路径的文件,那么上层的会覆盖下层的,也就是说用户只能访问到上层中的文件)。

12、什么是 DockerFile?

  • Dockerfile 是一个文本文件,其中包含我们需要运行以构建 Docker镜像的所有命令。
    我们可以用docker build来自动构建镜像。

13、什么是Docker Swarm?

  • Docker Swarm 是一个容器编排工具,它允许我们跨不同主机管理多个容器。
    使用 Swarm,我们可以将多个 Docker 主机变成单个主机,以便于监控和管理。

14、Docker在后台的标准运行过程是什么?

当使用docker run来创建容器时,运行过程大概是:

  • 1、检查本地是否存在指定的镜像。当镜像不存在时,会从镜像仓库下载;
  • 2、利用镜像创建并启动一个容器;
  • 3、分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
  • 4、从宿主机配置的网桥接口中桥接一个虚拟机接口到容器中;
  • 5、分配一个地址池中的 IP 地址给容器;
  • 6、执行用户指定的应用程序,执行完毕后容器被终止运行

15、什么是Docker的数据卷?

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作。
  如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
  容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。

16、Docker的镜像是什么?

  • Docker镜像是Docker容器运行所需的一切,是一个独立的软件包,包含了应用程序、本地库、其他依赖项和预配置设置等。
  • Docker镜像可以轻松地创建、部署、共享和存储,可以通过Docker Hub或私有仓库共享给其他用户或团队。

17、Docker和虚拟机有什么区别?

Docker与传统虚拟机的不同之处在于,虚拟机模拟了整个操作系统,而Docker只是模拟了容器。
这种容器化技术可以避免虚拟机的资源浪费和分布式环境下难以部署的问题,容器在系统层面上隔离,运行在同一系统内,但是不会干扰到其他容器和主机。

18、接⼝限流⽅法?

限制总并发数(⽐如:数据库连接池、线程池)

  • 1、限制 瞬时并发数(如 nginx 的 limit_conn 模块,⽤来限制 瞬时并发连接数)
  • 2、限制 时间窗⼝内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req模块,限制每秒的平均速率)
  • 3、限制 远程接⼝调⽤速率
  • 4、限制 MQ 的消费速率
  • 5、可以根据 ⽹络连接数、⽹络流量、CPU或内存负载等来限流。

19、什么是漏桶算法?

规则接口是IRule
漏桶算法思路很简单,请求先进入到漏桶里,漏桶以固定的速度出水,也就是处理请求,当水加的过快,则会直接溢出,也就是拒绝请求,因此漏桶算法能够限制请求调用的速率。

20、什么是令牌桶算法?

从某种意义上讲,令牌桶算法是对漏桶算法的一种改进,令牌桶算法能够限制请求调用的速率,同时还能防止一定程度的突发调用。在令牌桶算法中,存在一个桶,用来存放固定数量的令牌,以一定的速率往桶中放令牌,每次调用需要先获取令牌,只有拿到令牌,才有机会继续执行,否则只能进行等待或者直接拒绝。
如果桶中令牌数达到上限,就丢弃令牌,比如设置qps为100,那么限流器初始化完成后,桶中就已经有100个令牌了,等启动完成对外提供服务时,该限流器可以抵挡瞬时的100个请求,从而避免服务挂掉。

  • 实现思路:可以准备一个队列,用来保存令牌,另外通过一个线程池定期生成令牌放到队列中,每来一个请求,就从队列中获取一个令牌,从而实现限流。

总结

都已经看到这里啦,赶紧收藏起来,祝您工作顺心,生活愉快!

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案.以下是部分目录: java面试题01.面试的整体流程.mp4 │ Java面试题02.java的垮平台原理.mp4 │ Java面试题03.搭建一个java的开发环境.mp4 │ Java面试题04.java中int占几个字节.mp4 │ Java面试题05.java面向对象的特征.mp4 │ Java面试题06.装箱和拆箱.mp4 │ Java面试题07.==和equals的区别.mp4 │ Java面试题08.String.mp4 │ Java面试题09.讲一下java中的集合.mp4 │ Java面试题10.ArrayList LinkedList.mp4 │ Java面试题11.HashMap和HashTable的区别.mp4 │ Java面试题12.实现一个拷贝文件的类使用字节流还是字符串.mp4 │ Java面试题13.线程的实现方式 怎么启动线程怎么区分线程.mp4 │ Java面试题14.线程并发库和线程池的作用?.mp4 │ Java面试题15.设计模式和常用的设计模式.mp4 │ Java面试题16.http get post请求的区别.mp4 │ Java面试题17.说说你对Servlet的理解.mp4 │ Java面试题18.Servlet的生命周期.mp4 │ Java面试题19.forward和redirect的区别.mp4 │ Java面试题20.jsp和Servlet的相同点和不同点?.mp4 │ Java面试题21.内置对象和四大作用域和页面传值.mp4 │ Java面试题22.Session和Cookie的区别.mp4 │ Java面试题23.mvc模式和mvc各部分的实现.mp4 │ Java面试题24.数据库分类和常用数据库.mp4 │ Java面试题25.关系型数据库的三范式.mp4 │ Java面试题26.事务的四大特征.mp4 │ Java面试题27.mysql数据库最大连接数.mp4 │ Java面试题28.mysql和oracle的分页语句(着重说思路).mp4 │ Java面试题29.触发器的使用场景.mp4 │ Java面试题30.存储过程的优点.mp4 │ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java面试题35.数据库连接池的作用.mp4 │ Java面试题36.HTML.mp4 │ Java面试题37.简单介绍了一下Ajax.mp4 │ Java面试题38.js和JQuery的关系.mp4 │ Java面试题39.jQuery中的常用选择器.mp4 │ Java面试题40.jQuery中页面加载完毕事件.mp4 │ Java面试题41.jQuery中Ajax和原生js实现Ajax的关系.mp4 │ Java面试题42.简单说一下html5.mp4 │ Java面试题43.简单说一下css3.mp4 │ Java面试题44.bootstrap的是什么.mp4 │ Java面试题45.什么是框架.mp4 │ Java面试题46.简单介绍一下MVC模式.mp4 │ Java面试题47.简单说一下对mvc框架的理解.mp4 │ Java面试题48.struts2的执行流程或者struts2的原理.mp4 │ Java面试题49.Struts2的拦截器是什么?你都用它干什么?.mp4 │ Java面试题50.Spring MVC的执行流程.mp4 │ Java面试题51.SpringMVC和Struts2的不同.mp4 │ Java面试题52.简单介绍一下Spring或者Spring的两大核心.mp4 │ Java面试题53.AOP是什么?都用它做什么?.mp4 │ Java面试题54.Spring事务的传播特性和隔离级别.mp4 │ Java面试题55.ORM是什么?ORM框架是什么?.mp4 │ Java面试题56.ibatis和hibernate有什么不同.mp4 │ Java面试题57.hibernate对象状态及其转换.mp4 │ Java面试题58:hibernate的缓存.mp4 │ Java面试题59.webservice的使用场景.mp4 │ Java面试题60.Activiti的简单介绍.mp4 │ Java面试题61.linux的使用场景.mp4 │ Java面试题62.linux常用命令.mp4 │ Java面试题63:怎么操作linux服务器.mp4 │ Java面试题64:有没有使用过云主机.mp4 │ Java面试题65:数据库优化方面的事情.mp4 │ Java面试题66:如果查询和定位慢查询.mp4 │ Java面试题67:数据库优化之数据库表设计遵循范式.mp4 │ Java面试题68:选择合适的数据库引擎.mp4 │ Java面试题69:选择合适的索引.mp4 │ Java面试题70:使用索引的一些技巧.mp4 │ Java面试题71:数据库优化之分表.mp4 │ Java面试题72:数据库的读写分离.mp4 │ Java面试题73:数据库优化之缓存.mp4 │ Java面试题74:sql语句优化小技巧.mp4 │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │ Java面试题80:java访问redis级redis集群?.mp4 │ Java面试题81:微信公众号分类和微信开发原理.mp4 │ Java面试题82:怎么把微信和业务平台进行绑定.mp4 │ Java面试题83:项目的分类和项目参与者.mp4 │ Java面试题84:项目流程和业务注意事项.mp4 │ 面试必问-Mysql索引背后的故事 │ ├─java面试专属 │ ├─1.面试必考之HashMap源码分析与实现 │ │ 1.面试必考之HashMap源码分析与实现.mp4 │ │ │ ├─2.探索JVM底层奥秘ClassLoader源码分析与案例讲解 │ │ 2.探索JVM底层奥秘ClassLoader源码分析与案例讲解.wmv │ │ │ ├─3.锁、分布式锁、无锁实战全局性ID-悟空 │ │ 3.锁、分布式锁、无锁实战全局性ID-悟空.mp4 │ │ │ ├─4.SpringMvc深入理解源码分析 │ │ 4.SpringMvc深入理解源码分析-悟空.mp4 │ │ │ ├─5.Nosql Redis Jedis常用命令 │ │ 5.Nosql Redis Jedis常用命令-悟空.mp4 │ │ │ ├─6.互联网系统垂直架构之Session解决方案 │ │ 6.互联网系统垂直架构之Session解决方案.mp4 │ │ │ ├─7.分布式框架ZooKeeper之服务注册与订阅 │ │ 7.分布式框架Zookeeper之服务注册与订阅.mp4 │ │ │ ├─8.高性能网络编程必备技能之IO与NIO阻塞分析 │ │ 8.高性能网络编程必备技能之IO与NIO阻塞分析.mp4 │ │ │ ├─9.JAVA并发编程之多线程并发同步业务场景与解决方案 │ │ 9.JAVA并发编程之多线程并发同步业务场景与解决方案.wmv │ │ │ ├─10.微服务架构之Spring Cloud Eureka 场景分析与实战 │ │ 10.微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11.高性能必学之Mysql主从架构实践 │ │ 11.高性能必学之Mysql主从架构实践.mp4 │ │ │ ├─12.架构师不得不知道的Spring事物不能回滚的深层次原因 │ │ 12.架构师不得不知道的Spring事物不能回滚的深层次原因.mp4 │ │ │ ├─13.RPC底层通讯原理之Netty线程模型源码分析 │ │ 13.RPC底层通讯原理之Netty线程模型源码分析.wmv │ │ │ ├─14.分库分表之后分布式下如何保证ID全局唯一性 │ │ 14.分库分表之后分布式下如何保证ID全局唯一性.mp4 │ │ │ └─15.大型公司面试必答之数据结构与算法精讲 │ 大型公司面试必答之数据结构与算法(一)-达摩老师.mp4 │ 大型公司面试必答之数据结构与算法(二).mp4 │ ├─面试必问-JVM性能调优 │ JVM性能调优 2018-10-25.mp4 │ ├─面试必问-mybaits源码分析 │ │ 鲁班学院-上课笔记mybaits源码分析9-05.docx │ │ │ └─mybaits源码分析 │ mybaits源码分析.mp4 │ ├─面试必问-springcloud架构微服务项目 │ springcloud架构微服务项目.mp4 │ ├─面试必问-SpringMVC源码分析 │ SpringMVC源码分析.mp4 │ ├─面试必问-webservice原理分析 │ webservice原理分析.mp4 │ ├─面试必问-使用Springboot快速搭建SSM框架 │ 使用SpringBoot快速搭建SSM框架.mp4 │ ├─面试必问-双十一系统架构之Mysql索引技术剖析 │ 双十一系统架构之Mysql索引技术剖析.mp4 │ ├─面试必问-大牛带你手写dubbo框架 │ 大牛带你手写Dubbo框架.mp4 │ ├─面试必问-实战分布式之手写分布式事务框架 │ 实战分布式之手写分布式事务框架.mp4 │ ├─面试必问-带你精通springAOP—面试无忧虑 │ 带你精通AOP——面试无忧虑.mp4 │ ├─面试必问-微服务架构深入浅出讲解springcloud │ 微服务架构 --深入浅出讲解springcloud.mp4 │ ├─面试必问-教你手写MyBatis框架 │ 一小时教你手写MyBatis框架.mp4 │ ├─面试必问-架构杀手锏——java混乱的日志体系 │ java混亂日志体系源码揭秘.mp4 │ ├─面试必问-深入微服务之SpringBoot&Docker1 │ 深入微服务之SpringBoot&Docker.mp4 │ └─面试必问-聊聊哈希算法与HashMap
Docker —— 从入门到实践 - v1.0.pdf Dubbo部署文档.doc Dubbo面试专题.docx java后端面试题答案.pdf Java并发Fork-Join框架原理解析.docx JAVA核心知识整理.pdf JAVA核心知识点整理.pdf Java面试笔记.docx JAVA面试题解惑系列.pdf Java面试题(基础).pdf JVM 实用参数系列 - v1.0.pdf JVM与性能优化知识点整理.pdf JVM面试专题.docx JVM面试专题及答案.pdf Linux系统Redis笔记.docx MongoDB学习笔记.docx mybatis原理.docx MyBatis面试专题.docx MyBatis面试专题及答案.pdf Mybatis面试题(含答案).pdf MySQL性能优化的21个最佳实践.pdf mysql面试专题.docx MySQL面试题(含答案).pdf Netty面试专题.docx Nginx实战.pdf ORACLE数据库SQL语句编写优化总结.pdf Redis面试题(含答案).docx Redis面试题(含答案).pdf solr索引搜索.docx Spring Boot实战 .pdf Spring Boot面试专题.docx Spring Cloud面试专题.docx SpringBoot面试专题及答案.pdf SpringCloud面试专题及答案.pdf SpringMVC面试专题.docx Spring全家桶知识笔记.pdf Spring源码分析.pdf Spring面试专题.docx Spring面试专题及答案.pdf Spring面试题(含答案).pdf Tomcat面试专题.docx vivo2021届春季招聘在线编程考试.docx 哔哩哔哩2021招聘后端笔试卷(一).docx 哔哩哔哩2021招聘后端笔试卷(二).docx 多线程面试59题(含答案).pdf 多线程面试专题及答案.pdf 完整面试题(含答案).pdf 小米2021软件开发工程师笔试题一.docx 小米2021软件开发工程师笔试题二.docx 并发编程面试专题.docx 微服务面试专题及答案.pdf 快手2021招聘秋招笔试--工程A试卷.docx 快手2021招聘秋招笔试--工程B试卷.docx 快手2021招聘秋招笔试--工程C试卷.docx 拼多多2021部分编程题合集.docx 数据库面试专题及答案.pdf 正则表达式.pdf 消息中间件面试专题及答案.pdf 深入浅出Redis.pdf 爱奇艺2021Java方向笔试题.docx 爱奇艺2021Java方向笔试题(第一场).docx 看透springMvc源代码分析与实践.pdf 网易2021招聘笔试- 系统开发研发工程师(提前批).docx 网易2021笔试- Java 开发工程师(提前批).docx 网易2021笔试- Java 开发工程师(正式批).docx 网易2021笔试- 系统开发研发工程师(正式批).docx 美团点评2021校招后台开发方向笔试题.docx 美团点评2021系统开发方向笔试题.docx 腾讯2021招聘-后台.docx 设计模式面试专题及答案.pdf 详细解析_Log4j_配置 .docx 阿里百度美团面试题集合.pdf 面试宝典.pdf

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值