信息技术大学
工程工具链
计算机基础面试八股 · 第 4 章 编程语言与工程素养
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
信息技术大学
工程工具链
计算机基础面试八股 · 第 4 章 编程语言与工程素养
Git 分支模型与回滚
分支是指向提交的轻量指针:主干稳、分支活,回滚有 reset 与 revert 两把刷子。
分支模型
主干受保护,feature 分支开发,PR 评审合入
revert
追加反向提交抵消历史,公共分支的安全选择
reset
移动分支指针,soft/hard 决定是否动工作区
reflog
本地操作全记录,误删提交的后悔药
Docker 镜像与容器
镜像是不变的模板,容器是跑起来的实例:分层复用让交付即装即用。
分层
镜像按层堆叠,层可缓存可复用可共享
容器
镜像的运行实例,namespace 隔离、cgroups 限资源
Dockerfile
声明式构建,多阶段构建瘦身镜像
正则表达式
文本匹配的迷你语言:字符类、量词、分组、锚点四件套覆盖八成需求。
字符类
\d 数字、\w 单词、\s 空白,方括号自定义集合
量词
* + ? {n,m},默认贪婪,加 ? 变懒惰
分组
捕获组提取,(?: ) 不捕获,断言定边界
CI/CD 流水线
提交即构建,构建即部署:自动化把「人肉上线」变成可重复的流水线。
CI
提交触发构建与测试,坏提交分钟级暴露
CD
交付自动出包,部署按环境逐级晋级
质量门禁
测试、lint、安全扫描不过不放行
本节要点
- ✓revert 安全回滚,reset 本地撤销
- ✓镜像分层复用,容器隔离运行
- ✓正则四件套:字符类/量词/分组/锚点
- ✓流水线:提交即构建,门禁放行
延伸主题:练习一次 revert 合并写个多阶段构建镜像
课后思考
先自己回答,再展开参考答案——能讲出来才算真懂。
1公共分支上的错误提交,为什么用 revert 而不用 reset?
参考答案reset 改写历史,他人本地与远端分叉,拉推全面混乱;revert 追加反向提交,历史完整保留,所有人的合并都安全。reset 只留给私有未推送的分支。
2Docker 容器与虚拟机的本质区别是什么?
参考答案虚拟机虚拟整套硬件并带完整客户操作系统;容器共享宿主内核,只用 namespace 隔离视图、cgroups 限制资源。所以容器秒级启动、开销近零,隔离强度也弱于虚拟机。
3贪婪量词导致匹配过多时,有哪些处理思路?
参考答案量词后加 ? 变懒惰做最小匹配;或用排除字符类(如 [^>]*)明确边界;复杂场景用前后断言锚定上下文。核心是把「匹配要吃到哪」讲清楚。