面试题:后端
后端工程师岗位相关的接口设计、服务端基础、并发、存储和稳定性面试准备。
容器和虚拟机分别隔离什么,为什么容器启动更快?
容器通常共享宿主机内核,通过 namespace 隔离视图、通过 cgroup 限制资源;虚拟机还提供独立的 guest kernel,因此隔离层次和启动成本不同。
容器运行时后端中频题
容器镜像的 layer、manifest 和 digest 分别是什么?
镜像由可复用的文件系统层和描述配置组成,manifest 指向具体架构的镜像内容,digest 用内容哈希标识不可变内容。
容器运行时后端中频题
Dockerfile 的 RUN、CMD 和 ENTRYPOINT 有什么区别?
RUN 在构建阶段执行并生成镜像层,CMD 和 ENTRYPOINT 描述容器启动时的默认进程与参数;三者属于不同生命周期。
容器运行时后端中频题
为什么容器里应该让应用以前台进程运行?
容器运行时通常以主进程的生命周期作为容器状态,应用后台化会让信号、退出码、日志和健康状态失去清晰的管理边界。
容器运行时后端中频题
容器中的 PID 1 为什么需要特别处理信号和僵尸进程?
容器内的 PID 1 承担特殊的信号和子进程回收职责;如果应用本身不具备这些能力,应使用合适的 init 或进程管理方案。
容器运行时后端中频题
Docker build context 为什么会影响构建速度和安全?
构建上下文是发送给构建器的文件集合,过大文件会拖慢构建并增加误传秘密的风险;.dockerignore 应与实际 COPY 边界一起设计。
容器运行时后端中频题
Dockerfile 为什么要利用构建缓存,缓存失效时应怎样判断?
构建缓存按指令、上下文文件和依赖输入判断是否可复用;把稳定依赖和频繁变化的源码分开,通常能减少重复安装。
容器运行时后端中频题
多阶段构建解决什么问题,为什么能减小生产镜像?
多阶段构建把编译工具和运行时分开,最终阶段只复制运行所需制品,从而减少镜像体积、攻击面和不必要的运行权限。
容器运行时后端中频题
容器中的 writable layer、volume 和 bind mount 有什么区别?
容器可写层通常随容器生命周期存在,volume 由容器运行时管理,bind mount 直接映射宿主机路径;持久化、性能和隔离边界不同。
容器运行时后端中频题
容器网络中的 bridge、host 和端口发布分别意味着什么?
bridge 通常为容器提供独立网络命名空间和虚拟网络,host 让容器使用宿主机网络命名空间,端口发布则建立外部端口到容器端口的转发。
容器运行时后端中频题