Nginx&Git常见面试题
以下是 Nginx 和 Git 的常见面试问题扩充,以及简短的回答建议:
Nginx 相关问题扩充
-
Nginx 的工作原理是什么?
- 回答: Nginx 采用事件驱动的异步架构,使用多 worker 进程处理请求,适合高并发场景。
-
如何配置 HTTPS?
- 回答: 使用
ssl_certificate和ssl_certificate_key配置证书和私钥。
server { listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; } - 回答: 使用
-
如何限制访问频率?
- 回答: 使用
limit_req模块限制请求速率。
location / { limit_req zone=one burst=5; } - 回答: 使用
-
如何配置静态文件缓存?
- 回答: 使用
expires指令设置缓存时间。
location /static/ { expires 30d; } - 回答: 使用
-
如何实现 Nginx 高可用?
- 回答: 使用 Keepalived 或 Nginx 集群,结合负载均衡和健康检查。
-
如何查看 Nginx 日志?
- 回答: 日志默认在
/var/log/nginx/access.log和/var/log/nginx/error.log,可以用tail -f实时查看。
- 回答: 日志默认在
-
如何优化 Nginx 的 SSL 配置?
- 回答: 使用更安全的协议和加密套件,如 TLS 1.2/1.3,禁用不安全的加密算法。
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; -
Nginx 如何实现动静分离?
- 回答: 通过配置不同
location分别处理静态资源和动态请求。
location /static/ { root /var/www/html; } location / { proxy_pass http://backend; } - 回答: 通过配置不同
Git 相关问题扩充
-
Git 的工作流程是什么?
- 回答: 工作区 -> 暂存区 (
git add) -> 本地仓库 (git commit) -> 远程仓库 (git push)。
- 回答: 工作区 -> 暂存区 (
-
如何查看 Git 提交历史?
- 回答: 使用
git log,可以加--oneline简化输出。
git log --oneline - 回答: 使用
-
如何撤销本地修改?
- 回答: 使用
git checkout -- <file>撤销工作区修改,或git reset HEAD <file>撤销暂存区修改。
- 回答: 使用
-
如何删除远程分支?
- 回答: 使用
git push origin --delete <branch_name>。
git push origin --delete feature-branch - 回答: 使用
-
如何合并分支?
- 回答: 使用
git merge或git rebase。
git checkout main git merge feature-branch - 回答: 使用
-
如何解决 Git 合并冲突?
- 回答: 手动编辑冲突文件,标记为已解决后提交。
# 编辑冲突文件 git add <conflicted_file> git commit -
如何查看 Git 远程仓库地址?
- 回答: 使用
git remote -v。
- 回答: 使用
-
如何创建并切换到新分支?
- 回答: 使用
git checkout -b <branch_name>。
git checkout -b new-feature - 回答: 使用
-
如何打标签(Tag)?
- 回答: 使用
git tag。
git tag v1.0.0 git push origin v1.0.0 - 回答: 使用
-
如何查看 Git 配置?
- 回答: 使用
git config --list。
- 回答: 使用
-
如何克隆特定分支?
- 回答: 使用
git clone -b <branch_name> <repo_url>。
git clone -b develop https://github.com/user/repo.git - 回答: 使用
-
如何查看文件的修改记录?
- 回答: 使用
git blame <file>查看每行修改记录。
git blame README.md - 回答: 使用
-
如何清理本地未跟踪的文件?
- 回答: 使用
git clean -f。
- 回答: 使用
-
如何修改最后一次提交?
- 回答: 使用
git commit --amend。
git commit --amend - 回答: 使用
-
如何查看 Git 状态?
- 回答: 使用
git status。
- 回答: 使用
git merge | rebase 的区别
git merge 和 git rebase 是 Git 中用于整合分支的两种常用方式,但它们的工作方式和结果有显著区别。以下是它们的区别和适用场景:
1. git merge
- 作用: 将两个分支的历史合并在一起,生成一个新的合并提交。
- 工作方式:
- 将目标分支(例如
main)的更改与当前分支(例如feature)合并。 - 如果存在冲突,需要手动解决冲突并提交。
- 最终会生成一个新的合并提交(Merge Commit),保留两个分支的历史记录。
- 将目标分支(例如
- 命令:
git checkout main git merge feature - 优点:
- 保留完整的历史记录,适合团队协作。
- 操作简单,不易出错。
- 缺点:
- 历史记录可能会变得复杂,尤其是频繁合并时。
- 适用场景:
- 公共分支(如
main或develop)的合并。 - 需要保留完整历史记录的场景。
- 公共分支(如
2. git rebase
- 作用: 将当前分支的提交“重新应用”到目标分支的最新提交上,使历史记录呈线性。
- 工作方式:
- 将当前分支(例如
feature)的提交“移动”到目标分支(例如main)的最新提交之后。 - 如果存在冲突,需要逐个提交解决冲突。
- 不会生成新的合并提交,历史记录更加简洁。
- 将当前分支(例如
- 命令:
git checkout feature git rebase main - 优点:
- 历史记录更加线性、清晰,便于阅读。
- 避免了不必要的合并提交。
- 缺点:
- 操作复杂,容易出错,尤其是在解决冲突时。
- 会重写提交历史,不适合公共分支。
- 适用场景:
- 个人开发分支,希望保持历史记录整洁。
- 需要将本地分支与远程分支同步时。
3. 区别对比
| 特性 | git merge |
git rebase |
|---|---|---|
| 历史记录 | 保留完整历史,生成合并提交 | 历史记录线性化,不生成合并提交 |
| 冲突解决 | 一次性解决所有冲突 | 需要逐个提交解决冲突 |
| 适用场景 | 公共分支合并,团队协作 | 个人分支整理,保持历史整洁 |
| 风险 | 低,适合新手 | 高,容易重写历史,需谨慎使用 |
| 命令 | git merge <branch> |
git rebase <branch> |
4. 示例
git merge
# 切换到 main 分支
git checkout main
# 合并 feature 分支
git merge feature
合并后历史记录:
* Merge commit (合并提交)
|\
| * Commit on feature
* | Commit on main
|/
git rebase
# 切换到 feature 分支
git checkout feature
# 将 feature 分支 rebase 到 main 分支
git rebase main
合并后历史记录:
* Commit on feature (重新应用)
* Commit on main
5. 总结
- 使用
git merge:- 适合公共分支合并,保留完整历史。
- 操作简单,适合团队协作。
- 使用
git rebase:- 适合个人分支整理,保持历史线性。
- 操作复杂,需谨慎使用。
根据实际需求选择合适的方式,公共分支推荐 git merge,个人分支推荐 git rebase。
总结
- Nginx: 重点掌握配置、优化、高可用、日志管理和 HTTPS。
- Git: 重点掌握基本操作、分支管理、冲突解决、撤销操作和远程仓库管理。
回答时尽量简洁明了,结合实际操作经验会更加分!

浙公网安备 33010602011771号