云原生面试题30道
本文最后更新于68 天前,其中的信息可能已经过时,如有错误请发送邮件到3082654005@qq.com

云计算基础(5 题)

  1. 题目:什么是云计算?它的核心特点是什么?
    答案:云计算是通过网络(通常是互联网)提供按需分配的计算资源(如服务器、存储、数据库等)的服务模式。核心特点包括:按需自助服务、广泛的网络访问、资源池化、快速弹性伸缩、可计量的服务。
  2. 题目:云计算的三种主要服务模式(IaaS、PaaS、SaaS)分别指什么?
    答案
    • IaaS(基础设施即服务):提供底层 IT 基础设施(如服务器、存储、网络),例如阿里云 ECS、AWS EC2。
    • PaaS(平台即服务):提供开发和运行应用的平台(如数据库、中间件、开发工具),例如阿里云 RDS、Google App Engine。
    • SaaS(软件即服务):直接提供可使用的软件应用(如在线办公软件、CRM 系统),例如钉钉、Salesforce。
  3. 题目:公有云、私有云、混合云的区别是什么?
    答案
    • 公有云:由第三方服务商提供,资源共享给多个用户,例如阿里云、腾讯云。
    • 私有云:仅为单个组织服务,部署在组织内部或托管,例如企业自建的云平台。
    • 混合云:结合公有云和私有云,可在两者间灵活迁移数据和应用,兼顾安全性和扩展性。
  4. 题目:云计算中的 “弹性伸缩” 指什么?有什么作用?
    答案:弹性伸缩是指根据业务需求自动调整计算资源(如增加 / 减少服务器数量)。作用是:高峰期保证服务稳定,低峰期减少资源浪费,降低成本。
  5. 题目:虚拟化技术在云计算中的作用是什么?
    答案:虚拟化技术能将物理硬件资源(如服务器)抽象为多个虚拟资源,实现资源的高效利用和隔离,是云计算实现资源池化、按需分配的基础。

二、Docker 容器基础(10 题)

  1. 题目:什么是 Docker?它与传统虚拟机的区别是什么?
    答案:Docker 是一个开源的容器化平台,能将应用及其依赖打包成轻量级容器。与传统虚拟机的区别:
    • 容器共享宿主机内核,启动快、资源占用少;虚拟机需要完整操作系统,启动慢、资源占用多。
    • 容器隔离性低于虚拟机,但更轻量、效率更高。
  2. 题目:Docker 镜像(Image)和容器(Container)的关系是什么?
    答案:镜像是静态的模板(包含应用及依赖),容器是镜像的运行实例。可以理解为:镜像 = 类,容器 = 对象。
  3. 题目:Docker 常用的基本命令有哪些(至少列举 3 个)?
    答案
    • docker pull [镜像名]:拉取镜像。
    • docker run [镜像名]:创建并启动容器。
    • docker ps:查看运行中的容器(-a查看所有容器)。
    • docker stop [容器ID/名称]:停止容器。
    • docker rm [容器ID/名称]:删除容器。
  4. 题目:如何查看本地已有的 Docker 镜像?如何删除一个镜像?
    答案
    • 查看本地镜像:docker images 或 docker image ls
    • 删除镜像:docker rmi [镜像ID/名称](需先停止并删除依赖该镜像的容器)。
  5. 题目:Dockerfile 的作用是什么?它的基本结构包含哪些部分?
    答案:Dockerfile 是用于构建 Docker 镜像的文本文件,包含一系列构建指令。基本结构包括:基础镜像(FROM)、维护者信息(MAINTAINER)、构建命令(RUN)、端口暴露(EXPOSE)、启动命令(CMD/ENTRYPOINT)等。
  6. 题目docker run -d -p 8080:80 nginx 命令中,-d-p参数的含义是什么?
    答案
    • -d:让容器在后台(守护进程模式)运行。
    • -p 8080:80:端口映射,将宿主机的 8080 端口映射到容器的 80 端口(外部通过宿主机 8080 访问容器内 80 端口的服务)。
  7. 题目:Docker 容器的数据如何持久化?常用方式有哪些?
    答案:容器删除后数据会丢失,持久化方式包括:
    • 数据卷(Volume):Docker 管理的宿主机文件系统目录,独立于容器生命周期。
    • 绑定挂载(Bind Mount):将宿主机任意目录直接挂载到容器。
  8. 题目:什么是 Docker Registry?Docker Hub 是什么?
    答案:Docker Registry 是存储和分发 Docker 镜像的仓库。Docker Hub 是官方公共 Registry,提供大量开源镜像(如 nginx、mysql),用户可上传 / 下载镜像。
  9. 题目:如何进入正在运行的 Docker 容器内部?
    答案:使用 docker exec -it [容器ID/名称] /bin/bash-it 表示交互式终端,/bin/bash 是进入容器后执行的命令)。
  10. 题目CMDENTRYPOINT在 Dockerfile 中的区别是什么?
    答案:两者都用于指定容器启动命令。
    • CMD:命令可被docker run后的参数覆盖(例如docker run nginx echo "hello"会覆盖默认 CMD)。
    • ENTRYPOINT:命令不可被覆盖,docker run后的参数会作为其附加参数(更适合固定启动命令的场景)。

三、Docker 下数据库一主二从配置(7 题)

  1. 题目:数据库 “一主二从” 架构的作用是什么?
    答案:主库(Master)负责写操作,两个从库(Slave)负责读操作。作用是:分担读压力(读写分离)、提高数据可用性(从库可作为主库的备份)。
  2. 题目:MySQL 主从复制的基本原理是什么?
    答案
    1. 主库将写操作记录到 binlog(二进制日志)。
    2. 从库通过 IO 线程读取主库的 binlog,写入本地 relay log(中继日志)。
    3. 从库的 SQL 线程解析 relay log,执行相同操作,实现数据同步。
  3. 题目:在 Docker 中部署 MySQL 主库时,需要配置哪些关键参数(至少 2 个)?
    答案
    • server-id:主从集群中每个节点的唯一标识(主库需设置,如server-id=1)。
    • log_bin:开启 binlog(如log_bin=/var/lib/mysql/mysql-bin),主库必须开启。
    • binlog_do_db(可选):指定需要同步的数据库。
  4. 题目:Docker 中启动一个 MySQL 主库容器的命令大致是什么样的(举例说明)?
    答案:bashdocker run -d --name mysql-master -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /path/to/master/data:/var/lib/mysql \ mysql:8.0 \ --server-id=1 \ --log_bin=/var/lib/mysql/mysql-bin
  5. 题目:从库如何连接主库进行同步?关键步骤是什么?
    答案:关键步骤:
    1. 在主库创建用于同步的用户(如create user 'repl'@'%' identified by 'repl123';)并授权(grant replication slave on *.* to 'repl'@'%';)。
    2. 在从库执行change master to命令,指定主库 IP、端口、同步用户及密码、binlog 文件名和位置。
    3. 启动从库同步(start slave;)。
  6. 题目:如何检查 MySQL 主从复制是否正常运行?
    答案:在从库执行 show slave status\G;,查看两个线程状态:
    • Slave_IO_Running: Yes(IO 线程正常)。
    • Slave_SQL_Running: Yes(SQL 线程正常)。两者都为 Yes 则表示同步正常。
  7. 题目:Docker 中 “一主二从” 的三个 MySQL 容器如何实现网络互通?
    答案:可通过 Docker 网络实现:
    1. 创建自定义网络(docker network create mysql-net)。
    2. 启动三个容器时都加入该网络(--network mysql-net)。
    3. 容器间可通过容器名(如mysql-master)相互访问(无需暴露端口到宿主机)。

四、Docker Compose 容器编排(8 题)

  1. 题目:什么是 Docker Compose?它的作用是什么?
    答案:Docker Compose 是 Docker 官方的编排工具,通过 YAML 文件定义多个容器的配置(如网络、卷、依赖关系),可一键启动 / 停止所有关联容器,简化多容器应用的部署。
  2. 题目:Docker Compose 配置文件的默认名称是什么?如何指定其他名称的配置文件?
    答案:默认名称是 docker-compose.yml。指定其他文件使用 docker-compose -f [文件名] up(如docker-compose -f my-compose.yml up)。
  3. 题目:Docker Compose 配置文件中,servicesnetworksvolumes三个顶级节点分别表示什么?
    答案
    • services:定义需要启动的容器服务(如 mysql、nginx),包含每个服务的镜像、端口、环境变量等配置。
    • networks:定义自定义网络,用于服务间通信。
    • volumes:定义数据卷,用于服务的数据持久化。
  4. 题目:Docker Compose 的常用命令有哪些(至少 3 个)?
    答案
    • docker-compose up:创建并启动所有服务(-d后台运行)。
    • docker-compose down:停止并删除所有服务、网络、卷。
    • docker-compose ps:查看所有服务的状态。
    • docker-compose logs [服务名]:查看指定服务的日志。
  5. 题目:在 Docker Compose 中,如何定义一个依赖关系(例如:web 服务依赖于 db 服务启动)?
    答案:使用 depends_on 关键字,例如:yamlservices: web: image: my-web depends_on: - db # web服务会在db服务启动后再启动 db: image: mysql
  6. 题目:如何通过 Docker Compose 为服务配置环境变量?
    答案:两种方式:
    1. 直接在environment中定义:yamlservices: db: image: mysql environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=mydb
    2. 通过.env文件定义,Compose 会自动读取该文件中的变量。
  7. 题目:Docker Compose 中,如何将宿主机目录挂载到容器中?
    答案:使用volumes配置,例如(将宿主机./data目录挂载到容器/var/lib/mysql):yamlservices: db: image: mysql volumes: - ./data:/var/lib/mysql # 宿主机目录:容器目录
  8. 题目:使用 Docker Compose 启动服务后,如何单独重启其中一个服务(如 db 服务)?
    答案:使用命令 docker-compose restart dbdb是服务名)
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇