Nginx&Git常见面试题

以下是 NginxGit 的常见面试问题扩充,以及简短的回答建议:


Nginx 相关问题扩充

  1. Nginx 的工作原理是什么?

    • 回答: Nginx 采用事件驱动的异步架构,使用多 worker 进程处理请求,适合高并发场景。
  2. 如何配置 HTTPS?

    • 回答: 使用 ssl_certificatessl_certificate_key 配置证书和私钥。
    server {
        listen 443 ssl;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
    }
    
  3. 如何限制访问频率?

    • 回答: 使用 limit_req 模块限制请求速率。
    location / {
        limit_req zone=one burst=5;
    }
    
  4. 如何配置静态文件缓存?

    • 回答: 使用 expires 指令设置缓存时间。
    location /static/ {
        expires 30d;
    }
    
  5. 如何实现 Nginx 高可用?

    • 回答: 使用 Keepalived 或 Nginx 集群,结合负载均衡和健康检查。
  6. 如何查看 Nginx 日志?

    • 回答: 日志默认在 /var/log/nginx/access.log/var/log/nginx/error.log,可以用 tail -f 实时查看。
  7. 如何优化 Nginx 的 SSL 配置?

    • 回答: 使用更安全的协议和加密套件,如 TLS 1.2/1.3,禁用不安全的加密算法。
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    
  8. Nginx 如何实现动静分离?

    • 回答: 通过配置不同 location 分别处理静态资源和动态请求。
    location /static/ {
        root /var/www/html;
    }
    location / {
        proxy_pass http://backend;
    }
    

Git 相关问题扩充

  1. Git 的工作流程是什么?

    • 回答: 工作区 -> 暂存区 (git add) -> 本地仓库 (git commit) -> 远程仓库 (git push)。
  2. 如何查看 Git 提交历史?

    • 回答: 使用 git log,可以加 --oneline 简化输出。
    git log --oneline
    
  3. 如何撤销本地修改?

    • 回答: 使用 git checkout -- <file> 撤销工作区修改,或 git reset HEAD <file> 撤销暂存区修改。
  4. 如何删除远程分支?

    • 回答: 使用 git push origin --delete <branch_name>
    git push origin --delete feature-branch
    
  5. 如何合并分支?

    • 回答: 使用 git mergegit rebase
    git checkout main
    git merge feature-branch
    
  6. 如何解决 Git 合并冲突?

    • 回答: 手动编辑冲突文件,标记为已解决后提交。
    # 编辑冲突文件
    git add <conflicted_file>
    git commit
    
  7. 如何查看 Git 远程仓库地址?

    • 回答: 使用 git remote -v
  8. 如何创建并切换到新分支?

    • 回答: 使用 git checkout -b <branch_name>
    git checkout -b new-feature
    
  9. 如何打标签(Tag)?

    • 回答: 使用 git tag
    git tag v1.0.0
    git push origin v1.0.0
    
  10. 如何查看 Git 配置?

    • 回答: 使用 git config --list
  11. 如何克隆特定分支?

    • 回答: 使用 git clone -b <branch_name> <repo_url>
    git clone -b develop https://github.com/user/repo.git
    
  12. 如何查看文件的修改记录?

    • 回答: 使用 git blame <file> 查看每行修改记录。
    git blame README.md
    
  13. 如何清理本地未跟踪的文件?

    • 回答: 使用 git clean -f
  14. 如何修改最后一次提交?

    • 回答: 使用 git commit --amend
    git commit --amend
    
  15. 如何查看 Git 状态?

    • 回答: 使用 git status

git merge | rebase 的区别

git mergegit rebase 是 Git 中用于整合分支的两种常用方式,但它们的工作方式和结果有显著区别。以下是它们的区别和适用场景:


1. git merge

  • 作用: 将两个分支的历史合并在一起,生成一个新的合并提交。
  • 工作方式:
    • 将目标分支(例如 main)的更改与当前分支(例如 feature)合并。
    • 如果存在冲突,需要手动解决冲突并提交。
    • 最终会生成一个新的合并提交(Merge Commit),保留两个分支的历史记录。
  • 命令:
    git checkout main
    git merge feature
    
  • 优点:
    • 保留完整的历史记录,适合团队协作。
    • 操作简单,不易出错。
  • 缺点:
    • 历史记录可能会变得复杂,尤其是频繁合并时。
  • 适用场景:
    • 公共分支(如 maindevelop)的合并。
    • 需要保留完整历史记录的场景。

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: 重点掌握基本操作、分支管理、冲突解决、撤销操作和远程仓库管理。

回答时尽量简洁明了,结合实际操作经验会更加分!

posted @ 2025-02-17 13:56  脆皮鸡  阅读(67)  评论(0)    收藏  举报