Skip to content

1: cicd 的理解是什么

2: docker 网络怎么实现

3: docker 用了哪些技术实现

4: nginx/haproxy/lvs的区别

5: awk 怎么取最后一列

6: $? 是什么意思

7: 硬连接和软连接区别

8: 他们是否可以跨文件系统

9: python 怎么调api

10: python里面一个函数被多个装饰器装饰,运行顺序是怎么样的

11: 数据库集群有做哪些

12: mysql 主从原理

13: 通过binlog 的主从会有什么缺点,如果突然断电

14: 未来职业规划

15: 出差怎么看 1: 做过哪些mysql集群, 主从复制原理

2:CI/CD的理解

3: OpenStack集群搭建过程

4: OpenStack遇到的问题及处理

5: k8s 架构组件和作用

6: docker 的网络模式有哪些

7:OpenStack使用的网络类型有哪些

8:python 写过是什么项目,用过哪些库

9:nginx 负载均衡是怎么实现的

10: 上家公司数据库主要做了哪些

11: redis 问题我没记住, 不会redis...

12: 零碎的小问题 都是基本命令

13: openstack 工作流程 1: 服务器启动流程

2: awk,sed 的使用(截取得到指定字段)

3: kubernetes 怎么装的,admin 安装步骤

4: osi 七层模型,以及每一层的协议及作用

5: tcp 三次握手和四次挥手

6: nagios,zabbix,prometheus 的区别有哪些

7: ansible 是干嘛的, playbook怎么写

8: elk 是干嘛的, 工作流程是什么,每一个组件是干嘛的

9: jenkins-master 解决了什么问题

10: cloud-init 是干嘛的

11: keepalived 是怎么工作的, haproxy 是怎么工作的, nginx 负载是怎么实现的

12: vrrp-static 配置说明一下是干嘛的

13: 怎么自己做镜像

14: 10块硬盘,每个硬盘2T做raid5 ,可用空间是多少

15: 如果给你50台服务器, 你怎么管理,服务器管理,服务管理都可以

16: tcp 协议各层的作用是什么

17: cri, csi ,cni 是什么

最后他说,他有些他还没问 kubeadm init 的具体流程是什么 此视频为个人面试的一些总结以及一些常用面试题总结

网络: 1: 用tcp会话解释vpn原理 原始报文封装

2:dns解析寻址过程 浏览器输入域名-> 自身dns缓存-> 没有则读取host文件-> 没有指向本地dns服务器,运营商-> 没有发起迭代dns请求,从根域到底层找-> 没有向NetBIOS name Cache 请求 -> 没有查询wins 服务器 -> 没有则广播

3: tcp/ip 工作流大概说下 源主机发送数据到传输层 传输层加tcp包头发送到网络层 网络层加上原目的地址的ip报头,生产一个ip数据包发送给链路层 链路层在mac帧的数据部分加上ip数据包,源目的地址的mac和帧头,排好发送给传输层 传输层检查顺序号,判断是否正确,错误要求源主机重发,正确会将排好的顺序发送给程序

4:tcp/http 区别 一个是传输层,一个是应用层

5:k8s里面 pod 和pod 之间怎么通讯的 同一主机上面的pod 如果在同一个namespace里面,会共享一个ipc,可以通过进程间的通讯方式通讯 如果不是则会走flannel0网口以及docker0 网口

6:http里面 response 是代表什么 响应

中间件: 1:apache,nginx,tomcat 在作为web服务器的时候有什么区别 apache 模块化服务,处理静态页面 tomcat 属于应用服务,处理动态页面较好 nginx 是轻量级服务,配置多

2:nginx 和 lv是的区别 nginx 是7层负载,但配置简单对网络依赖小;lvs 是4层负载,对网络依赖大,但负载能力强

3:nginx反向代理用的模块是什么 proxy_pass

4:lvs 的三种负载方式 DR 直接路由 NAT 网络地址转换 TUN 隧道,调度器仅处理请求

5:memcache 的数据怎么存的 memcache 的数据存在内存中,所以如果重启memchache 数据会丢失

数据库: 1:mysql主从原理 老生常谈的问题,我这里就不说了 2:数据库备份怎么做 数据库的备份分为逻辑备份和物理备份,具体的应用场景选用不同的备份方式,如果数据体量小,不考虑锁表消耗,使用mysqldump 否则使用xtraback 一般数据库的备份策略都会选择全备加增备的方式 3:mongod 的分片是怎么做的,为什么需要分片 分片可以对数据进行切割然后保存在服务器上面,减少cpu消耗,mongod有自己分片机制,简单配置即可

硬件: 1:Raid0 1 5 有什么区别 raid0: 无冗余条带卷 raid1: 镜像条带卷 raid5: 2n+1 一块磁盘用来存储热备

2:ext4 和 xfs 有什么区别 xfs最大限制为16T ext4 为1EB

运维: 1:你进入一个公司大的时候如何让监控系统从0-1 硬件:路由,交换,防火墙 系统:cpu 内存 磁盘,进程 服务: web:响应时间,渲染时间,加载时间, 日志:elk 数据库:进程, qps tps

3:k8s的探针有哪些 存活和就绪 实现方式是有3种,httpget tcpsocket exec

4:k8s service 类型 Cluserip,nodeport,loadblancer,externalname

5: externalname说下你的理解 我个人理解就是一个域名解析的功能

6:k8s 个组件分别有什么功能 此问题为架构基础问题,这里就不说了

7:说下一个pod 创建过程的时候各组件的通讯过程

kubelet 调用apiserver 发起创建命令,apiserver生成一个配置表yaml,然后将这些数据写入etcd scheduler 将查看k8s api,判断 是否为新请求(pod.spec.Node=None?),然后进行调度计算,如果没有selector 选择固定node 则会选择最”闲“的node调度,然后将记录写入etcd kubelt 检测etcd,发现新的node,如果发现node编号和自己的相同,则调用容器api 进行容器的初始化创建,然后pod创建完成

8:如果保证一个k8s 集群不会出现雪崩的状态 创建集群的时候为集群预留20%的资源,或者对pod进行资源限制80%

9:如果我有一台机器,不在k8s 集群网络里面我怎么加入到集群里面 iptables -t nat -A output -d masterip -j dnat --to-destination nodeip

10: 如果我集群中发现有一个应用的pod 一直处于pending ,可能原因有哪些 节点资源不够,cpu负载,nodeSelctor 不满足,没有容忍度,scheduler 异常

11:pipline脚本里面怎么指定一个agent label

12: pipeline脚本怎么写 指定agent,stages,stage,post

13:实际项目问题 a: 在k8s 里面,client 是怎么访问到你的真实服务的? 我之前是使用的nginx 做的负载均衡后面是多个pod,kube_dns做的解析 b: 负载策略是什么呢? url_hash c: 那不是后端pod 都是相同的 是的

a: 你在工作中遇到过什么问题
   维护的项目遭受了DDOS
b: 那你说下DDOS 的原理是什么
   短时间大量请求
c: 如果让你用tcp 连接来说呢
   大量的sys_send过来,服务器不能处理,导致sys_wait信号出现 ,大量的wait 信号导致网络崩溃
d: 那你怎么解决的
   当时是准备买高防机器后来对防火墙,iptables,端口做了规划,只放行必要程序端口,然后对流量进行过滤解决
e: nginx 你有做过流量过滤吗?
   只知道nginx的流量控制和流量切割

a: 大概说下你对于DevOps 的理解
   devops理念是将运维测试开发结合在一起的一套工作流程
b: 看你用过Jenkins 你说下jenkins来做devops 工作流程是怎么样的
   看项目类型,简单的可以用shell 就可以实现,负载一点的写pipline脚本,触发构建,打包,测试,推送,跟新
c: 如果现在有一套线上负载均衡的集群,我现在jenkins自动流程已经有了,我需要做更新操作,你怎么处理
   先将发布机器踢出负载集群做发布工作,如果没有异常,加入集群做多机器发布,如果有问题,做回滚

开发:

1:打印出0-500 里面5 的倍数 seq 0 5 500

2: nginx访问日志,获取访问最大的10个ip cat nginx.log |awk '{print $1}' |sort|uniq -c |sort -n

3: python里面元组和列表的区别 一个不可变一个可变

4:装饰器的作用 函数预处理

5:python里面怎么理解闭包的含义 函数里面应用自由变量函数

6:sed替换,追加,

7: 你用过python 写了什么 使用django写平台 8:说下django 的理解 前端url -> url 路由-> 试图view函数 -> 视图指向的页面 --> 渲染器

1: k8s 组件有哪些

2: etcd 有什么作用

3: 1 2 > dev/null 分别代表什么

4: 慢盘怎么查询

5: linux 怎么做系统监控

6: 网络流量监控怎么做

7: 慢盘怎么处理

8: iptables 工作流程

9: iptables 三链五表

10: sql 查询语句

11: mysql 索引类型

12: 虚拟化下 磁盘类型

13: docker是怎么实现的

14: docker的网络类型,具体是怎么实现的

15: k8s的资源控制怎么做,request 和limits 有什么区别

16: 什么是cicd 面试总结

1: 怎么在脚本中获取自身的名字 $0

2: 在python 中同一个函数使用了多个装饰器,是怎么调用的 从里到外

3: sql左连接和内连接的区别 左连接是以左表为基础,如果对应的右表没有数据,则会自动初始化为0或者null 内连接会将两张表的所有关联数据展示出来

4: keepalived 是的实现原理 keepalived是采用不同的模块来实现的,主要的模块有core check 和vrrp core是实现keepalived的主进程维护,加载全局配置文件 check是实现后端服务器的健康检查(healthchecker),也可以基于脚本对后端ipvs节点进行健康检查 vrrp子进程主要是实现vrrp协议,这也是keepalived高可用的实现的主要通信原理 vrrp的原理是通过竞选机制来实现主备,主的优先级会高于备,备一直处于等待状态,主宕机之后,备会主动接管资源,然后对外提供服务 在keepalived服务对之间,主节点会一直发送vrrp广播,以告诉备自己还在存活状态,当备不再接收到vrrp广播包的时候,会自动根据优先级 选出其他的主

5: keepalived 出现的了什么问题

脑裂 脑裂的原因可能有很多种 可能是防火墙导致心跳消息传输拒绝 如果有使用仲裁机制,仲裁机器故障也会导致 ip 配置冲突,网卡问题等也会导致 心跳线的故障如网卡或者交换机故障

解决方案的话,主要是针对脑裂进行监控 使用两条心跳检测的线路(串行电缆和以太网)

6:监控有没有 做自动化处理 通过手机回复数据或者字符串来知道机器做对应的操作

7: kvm使用的时候是怎么做镜像的 virsh-install

8:kvm里面的网络模式又要有什么 虚拟网桥kridge和用户网络nat

9:Dockerfile里面主要有哪些东西 FROM RUN ENV ADD VALUEM WORKER USER CMD EXPOSE

10:docekr 自定义镜像怎么做 写dockerfile 然后build

11: docekr load 和save 有什么区别 一个是加载镜像 一个是保存镜像

12: docker 本地仓库怎么建 docker run -d -p 5000:5000 --restart always --name registry --privileged -v /mnt/registry:/var/lib/registry registry:2 修改daemon.json 添加 "insecure-registries": ["ip:5000"] 重启docker 查看使用curl

13: gitlab里面有哪几种权限 Guest 可以发表评论,但不能读写版本库 Reporter 可以克隆,不能提交 Developer 可以克隆,开发,提交,push Master 可以创建项目,tag,分支,添加项目人员,编辑项目, Owner 删除项目、迁移项目、管理组成员

14:有没有redis集群,mongo集群的经验

15: devops的工作理念 开发人员和运维人员的沟通合作 做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。

16:logstash 和firebeat 的优缺点 logstash是jvm跑的 消耗内存比较大,具有filter的功能 filebeat更轻量,消耗资源更少

17: 如果需要有特别大的日志收集怎么实现 firebeat收集,使用kafka或者mq做消息队列中间件,logstash 获取,filter 过滤,然后存储在es中

18:firebeat加logstash一起有什么好处 logstash和firebeat可以实现节点间的负载均衡,多个logstash 可以实现高可用 使用firebeat收集日志时,可以保证至少一次交付,从firebeat 到logstash ,以及logstash到es 这两种通讯协议是同步的,并且支持确认.并且 这个过程是完全加密的

19: prometheus的工作流程 定时从被监控节点或者metrics数据,每个被抓去的目标都需要暴露一个http服务接口,或者被监控节点定时使用pushgateway的方式推送给监控端

20: zabbix 的工作流程 分为主动模式和被动模式 主动模式,是agent通过10050端口主动将数据传送给zabbix-server 所在的10051端口 被动模式是默认的模式,是zabbix-agent 监听10050端口,服务器从agent端获取数据

21:OpenStack的工作流程 Horizon 通过restful 向keystone发起一个认证请求,keystone 认证通过,返回一个auth-token给认证请求, 通过restful api 向 nova-api 发送一个携带auth-token的instance请求, nova-api得到请求之后,向keystone发起认证auth-token是否有效,通过认证后 和数据库通讯初始化虚拟机的数据库记录,然后nova-api通过rpc-call 向消息队列发送一个查看host id 的请求,nova-scheduler 侦听消息队列得到请求,然后查询数据库需要的虚拟机信息是否符合调度情况, 然后通过rpc-call 向nova-computer发送创建虚拟机的请求 nova-computer通过侦听消息队列到的请求,然后通过rpc-call向nova-conductor请求虚拟机的信息, nova-conductor通过侦消息队列得到 请求之后查询数据库查询对应的信息,然后返回给消息队列,nova-computer侦听消息队列,得到虚拟机信息,然后通过auth-token 向glance-api 获取镜像数据,glance-api通过keystone验证auth-token是否有效,验证通过nova-computer得到一个虚拟机镜像的url,然后通过auth-token向 neutron-server请求得到网络信息,neutron-server通过keystone验证token是否有效,nova-computer得到虚拟机网络信息,然后通过auth-token 向cinder-api请求虚拟机需要的持久化存储信息,cinder-api通过keystone验证token是否有效,验证通过,nova-computer通过instance来创建 虚拟机

22:rabbitMQ 和 kafka的区别

RabbitMQ:用于实时的,对可靠性要求较高的消息传递上。以broker为中心,有消息的确认机制, 支持消息的可靠的传递,支持事务,不支持批量操作,存储可以采用内存或硬盘,吞吐量小。本身不支持负载均衡,需要loadbalancer的支持

kafka:用于处于活跃的流式数据,大数据量的数据处理上。以consumer为中心,无消息的确认机制,内部采用消息的批量处理, 数据的存储和获取是本地磁盘顺序批量操作,消息处理的效率高,吞吐量高.采用zookeeper对集群中的broker,consumer进行管理, 可以注册topic到zookeeper上,通过zookeeper的协调机制,producer保存对应的topic的broker信息,可以随机或者轮询发送到broker上, producer可以基于语义指定分片,消息发送到broker的某个分片上。

23: nginx 的ssl 怎么配置 server { listhen 443 ssl; servername xxx; root xxx; index index.html;

ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
ssl_prefer_server_ciphers on;


location  / {

}

}

24: raid 0 和raid 5的区别

raid0 最低2快盘, 任意一块坏掉都会造成数据丢失 raid5 最低3块, 可用空间为2块盘的空间,可以允许坏一块

25: gitlab ci文件怎么使用shell script

26: mysql备份策略是怎么样的 每天的00:00 做全库备份 使用mysqldump 每4个小时使用xtrabackup 做增量备份 备份文件除本地备份以外,存储到固定的物理存储上

27:mysql主从原理 主要有三个线程实现

binlog线程,有从库连接到主库的时候,会创建一个线程给从库发送binlog内容,从库创建两个线程进行处理 I/O线程,读取主库的binlog输出线程发送的更新并拷贝这些更新到文件,其中也包含reallog sql线程,读取I/O线程写到real log更新事件并执行

28: k8s的主要组件

kubelet etcd apiserver scheduler controller-manager kube-proxy

29: 维护集群时遇到什么问题没有

30: pod出问题被删除之后在哪里查询日志

31: k8s的日志有没有做收集

32:自动化流程有没有交付到k8s环境中