矩阵起源 运维实习 面经
运维实习生一面(25年9月)
面试流程
自我介绍与背景
向面试官介绍了自己是某高校计算机专业的应届毕业生,技术方向是自动化运维。
在之前的实习中,我主要负责:
- 使用Shell脚本来管理本地的KVM虚拟环境。
- 通过Python调用主流云厂商的API,将云资源成本和配置信息汇总并写入数据库。
- 主导开发了针对GitLab Merge Request的代码质量自动检测工具。
技术知识考察
面试官在听完我的介绍后,开始对我进行技术知识的考察,问题由浅入深,覆盖了Linux、Docker和Kubernetes。
Linux基础
- 问:你用过哪些Linux发行版?
- 答:实习时主要用CentOS系,自己平时用的是Debian。
 
- 问:如何查看系统内核版本?
- 答:uname -a。
 
- 答:
- 问:如何查看CPU信息?
- 答:可以通过cat /proc/cpuinfo查看,也可以用lscpu命令。
 
- 答:可以通过
- 问:怎么查看网络端口的监听情况?
- 答:可以用lsof或者ss命令。
 
- 答:可以用
- 问:如何修改文件权限?
- 答:使用chmod命令,例如chmod +x filename来添加执行权限。
 
- 答:使用
- 问:如何统计一个文件的行数?
- 答:当时有点忘了,回答说可以用vim打开文件然后看行号。面试官追问文件很大的情况,我意识到这个方法不妥。(正确答案应为wc -l)。
 
- 答:当时有点忘了,回答说可以用
Docker
- 问:Docker和虚拟机的区别是什么?
- 答:主要区别在于内核共享。Docker通过Cgroups和Namespace实现资源隔离,与宿主机共享内核,启动快、开销小。而像KVM这样的传统虚拟机,则是通过Hypervisor创建包含独立内核的完整虚拟硬件,隔离性更强,但更重。
 
- 问:如何构建一个Docker镜像?
- 答:编写Dockerfile,在其中定义基础镜像、拷贝文件、执行命令等步骤,然后使用docker build命令来构建。
 
- 答:编写
- 问:ENTRYPOINT和CMD的区别?- 答:这里我回答得不太准确。后来查了一下,ENTRYPOINT定义了容器启动时要执行的命令,而CMD为ENTRYPOINT提供默认参数,并且可以被docker run后面的参数覆盖。
 
- 答:这里我回答得不太准确。后来查了一下,
- 问:如何从宿主机进入容器内部?
- 答:使用docker exec -it <container_id> /bin/bash。
 
- 答:使用
Kubernetes (K8s)
这部分因为我提到自己玩过K8s,所以面试官问得比较多,但我的实践经验主要来自个人项目,实习接触不多,有些问题答得比较吃力。
- 问:K8s的核心组件有哪些,作用是什么?
- 答:
- API Server: 集群的统一入口,提供RESTful API。
- etcd: 键值数据库,存储集群的所有状态数据。
- Scheduler: 调度器,负责将Pod分配到合适的Node上。
- Kubelet: 运行在每个Node上的代理,负责管理Pod的生命周期。
- Kube-proxy: 负责实现Service的网络通信。
 
 
- 答:
- 问:Deployment和StatefulSet的区别?- 答:StatefulSet主要用于有状态服务,比如数据库。它能保证Pod拥有稳定、唯一的网络标识和持久化存储。Deployment则适用于无状态应用。
 
- 答:
- 问:K8s中最小的调度单元是什么?
- 答:Pod。
 
- 问:DaemonSet的作用是什么?- 答:确保在每个(或部分)Node上都运行一个Pod副本,常用于部署日志采集、监控等系统级服务。
 
- 问:Service有哪些类型?- 答:这个问题我回答不上来,只知道它是提供网络访问的。面试官提示了NodePort,我表示只是听说过。
 
- 答:这个问题我回答不上来,只知道它是提供网络访问的。面试官提示了
- 问:如何将本地端口转发到Pod上?
- 答:我回答说用Ingress Controller,但面试官似乎想问的是kubectl port-forward这个调试命令。
 
- 答:我回答说用
- 问:分享一个你解决过的K8s问题。
- 答:我分享了之前遇到的一个镜像拉取问题。在拉取镜像时,发现拉到最后一层(通常是很多小文件)时速度特别慢。经过排查,怀疑是MTU值设置问题。最终发现是云厂商的负载均衡MTU和K8s容器网络的MTU不一致导致的,统一后问题解决。
 
其他技术
- 数据库:了解MongoDB和PostgreSQL。
- Ansible:实习时用过,通过SSH批量扫描机器上的配置,知道它底层是Python,但具体原理不清楚。
- Helm:了解,但没有实际用过。
实习意向与个人情况
- 工作地点:我表示可以接受北京,如果深圳有岗位会更倾向于深圳。面试官告知深圳南山科技园有办公室。
- 实习时间:我说明自己课程不忙,可以长期全职实习,并且毕业设计不需要在公司完成。
- 职业规划:确认了自己希望从事运维和技术支持方向的工作。
反问与面试建议
- 我的提问:
- 深圳分部的具体位置?(某科技园)
- 面试结果多久会通知?(节后)
 
- 面试官的建议:
- 公司的业务对K8s依赖较深,建议我加强这方面的知识学习。
- 介绍了公司运维岗位偶尔需要短期出差(toB技术支持),确认我是否可以接受。
 
总结
整体比较轻松,不过后面说只能北京,就算能开300一天也只能婉拒了,
#运维##发面经攒人品#