当前位置:   article > 正文

SRE面试总结

sre面试

#目录

  1. 总结hr相关问题及回答方向
  2. 总结个人自我介绍的要点
  3. 总结关于cicd, kubernetes, mysql, redis面试题,各3个。

总结hr相关问题及回答方向

问题1:你在上一家的离职原因是什么?

千万不要回答:工资低、离家远、任务重无法完成、压力过大;这种问题每家单位都多多少少会有,如果对方对号入座,那你的面试肯定就终止了;
可以回答:职业规划、技术发展、个人规划等。

问题2:你在上一家单位的薪资构成是什么?发放时间是否按时?

基础工资+绩效(一般会问你能否查看银行流水,如果回答:不能,将不会被采信),按时发放

服务水平目标(SLO)和服务水平指标(SLI)是衡量SRE的基本指标。SLO是特定应用程序的目标。SLI是针对这些目标的绩效的实际衡量标准。Lachhman指出,SRE功能通常是定义和完善SLO和SLI的核心。通常情况下,开发人员不一定了解他们构建和维护的应用程序的规范或基准,特别是在SRE才入职的情况下。招聘经理应该深入研究求职者如何识别和定义SLO和SLI;而作为求职者,则应该准备回答如何使用这些指标。此外,确保可以讨论经过深思熟虑的过程,以便随着时间的推移重新评估和优化这些指标。而就SLO/SLI的改变进行协商是十分重要的。”

问题3:可观察性的三个因素中哪一个对你最重要?你觉得需要更加关注哪一个?

可观察性的三个支柱是日志记录、指标和跟踪。总体而言,可观察性是SRE领域固有的特征。测量系统的科学是聘用SRE的核心。哪个因素可以帮助你确定最佳的信号?这些因素最终将引导你进行SLO/SLI测量。而对一个或多个因素表现出兴趣将会表明你已准备好扮演自己的角色。”通常情况下,在任何SRE职位上衡量都是至关重要的,因此,如果你希望从另一个IT领域担任这一角色,需要记住这一点:这是一个数据驱动的规程。

问题4:你在上家单位如何实施流程改进和其他更改?

SRE中的“E”代表工程师,虽然SRE具有技术技能。但是这一角色比其他IT人员需要更多的软技能和变更代理功能。
虽然SRE职位是一个工程角色,但与人们认为的工程角色不一样。尽管在某些组织中已经建立了现有的监视实践、呼叫程序和其他标准流程,但SRE应该思考并挑战现有的工作方式。这需要具有创造力和坚韧性。创造性和坚韧性实际上是SRE关键的特征,尤其是在处理自我意识、对变革的文化抵制和其他挑战时。作为招聘经理,我会问求职者在哪些方面表现出了这样的素质,他们是如何做到的,以及取得了哪些成就。

问题5:你如何平衡团队中不同主管部门的意愿和需求?

工作的另一个关键目标出现在SRE的名称中:可靠性。不同的组织和不同的客户群对可靠性的最佳途径有不同的看法。即使在DevOps社区中也存在意见和分歧。存在上游(开发)和下游(运营)的任务、流程和程序,需要理解、利用或潜在地改变。这意味着有时上游和下游所有者可能会保护已经存在的东西。
这就是DevOps和SRE的角色经常重叠的原因。
透彻的技术知识、真诚的改进意愿,专注于任务而不是自我,所有这些都是SRE必不可少的特质。作为招聘经理,我将会关注求职者在开发和运营两个部门之间如何工作的意愿。

问题6:客户经验或员工经验如何影响你的SRE策略?

招聘经理和SRE都应提防这一警告标志:可以整天谈论指标,但不能将这些指标与客户或内部用户的结果联系起来。
出色的平均恢复时间(MTTR)和满足服务水平目标(SLO)并不能自动提高客户或员工满意度。SRE需要从外向内思考,并将SLO、SLA和SLI转化为重要的内容。”
SRE通常需要精通脚本、编排和监视等领域。但是他们需要知道这些技术如何在严格的技术范围之外解决问题。
我们所见过的最好的SRE是可以将外部视角(即客户和员工体验)转化为可靠的可观察性和监控策略的人员,这种策略会慢慢转向积极主动的客户和员工体验。因此询问他们在客户体验(CX)和员工体验(EX)管理方面的专业知识可能是一个好主意。”

问题7:你如何学习并紧跟行业趋势和工具链的发展?

在IT面试中,提出有关学习和专业发展的问题相对常见,但它们在SRE领域中具有特定的用途:可以告知求职者其具备的一些知识可能很快就会过时。有时总是采用新技术解决传统问题,但也可能面临新的挑战。作为专家,SRE需要紧跟趋势和技术进步。与DevOps和各种开源项目一样,新兴的SRE领域值得探索。有很多针对SRE的社区。GitHub上的Awesome SRE存储库提供了资源列表。

总结个人自我介绍的要点

自我介绍的注意要点
1、前二分钟的自我介绍是面试成败的关键,时间控制十分重要。防止将自我介绍进行得时间太长,让考官产生厌倦感。清华大学的考生更要有时间观念,不要短于2分钟,也无论如何不要超过4分钟。
2、可以介绍一下自己的学习力,自我介绍不等于你所在的公司或创业发展的介绍。主语是“我”,要着重讲自己在公司中的工作内容、经历、业绩等。切勿变成“公司史”的宣讲和业务介绍。
3、回答问题最好直接切入要点,正面回答问题,要提高语言的“纯度"凝炼、清晰为最佳。不要经过大篇幅的背景介绍或论证再提出自己的观点或回答问题。
4、可以介绍一下自己的工作韧性,要突出自身的.优势。如果实在没有优势,至少要有明确的偏好或兴趣。简历中有的内容简要陈述也可以不做陈述。
5、个性突现或热情的表达要在面试中保持一致,自我评价要明确和客观,并且要言之有理,有事例等于以佐证。
6、坐姿端正,手势大方,防止颤抖、摇晃、舔嘴唇等习惯动作。(本文由大学生个人简历网www.wenshubang.com小篇为大家收集)
7、眼光不要长时间偏离三位(或两位)考官,不要上视天花板,不要盯住考官桌上的纸。
8、可以带一点工作中的业绩。

总结关于cicd, kubernetes, mysql, redis面试题,各3个。

cicd

1.请简述devops是什么?

答:DevOps是一种实现Dev(开发)与Ops(运维)工作流有效联合的思想。

2.简述集中式版本控制系统与分布式版本控制系统的区别?

答:集中式控制系统,必须联网才能工作,如果中央服务器挂了那么就完蛋了分布式版本控制系统可以不用联网工作,因为参与开发的每人都有一个版本库,并且分式地没有中央服务墨,可靠铁高,也可以有中央服务路但是只是用表贪太家修改地代码

3.请简述git本地食库有哪三太区,中间的那个区主要有什么作用?

答:工作区和暂存区和本地仓库,中间的区主要用来暂存你修改或更新的代码,但是还不是最终的结果,又不想提交到版本库里,因为修改一点就提交到版本库那样会造成版本库很乱,不方便管理,并且提交到版本库里之后删除不了,所以可以吧修改好但又不确定是不是最终的修改的都可以先放到暂存区。

kubernetes

题1:Kubernetes Service 都有哪些类型?

通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上。其主要类型有:

ClusterIP:虚拟的服务IP地址,该地址用于Kubernetes集群内部的Pod访问,在Node上kube-proxy通过设置的iptables规则进行转发;

NodePort:使用宿主机的端口,使能够访问各Node的外部客户端通过Node的IP地址和端口号就能访问服务;

LoadBalancer:使用外接负载均衡器完成到服务的负载分发,需要在spec.status.loadBalancer字段指定外部负载均衡器的IP地址,通常用于公有云。

题2:K8s 标签与标签选择器的作用是什么?

标签:是当相同类型的资源对象越来越多的时候,为了更好的管理,可以按照标签将其分为一个组,为的是提升资源对象的管理效率。

标签选择器:就是标签的查询过滤条件。目前API支持两种标签选择器:

基于等值关系的,如:“=”、“”“”、“! =”(注:“”也是等于的意思,yaml文件中的matchLabels字段);

基于集合的,如:in、notin、exists(yaml文件中的matchExpressions字段);

注:in:在这个集合中;
notin:不在这个集合中;
exists:要么全在(exists)这个集合中,要么都不在(notexists)。

使用标签选择器的操作逻辑:

在使用基于集合的标签选择器同时指定多个选择器之间的逻辑关系为“与”操作(比如:- {key: name,operator: In,values: [zhangsan,lisi]} ,那么只要拥有这两个值的资源,都会被选中);

使用空值的标签选择器,意味着每个资源对象都被选中(如:标签选择器的键是“A”,两个资源对象同时拥有A这个键,但是值不一样,这种情况下,如果使用空值的标签选择器,那么将同时选中这两个资源对象)

空的标签选择器(注意不是上面说的空值,而是空的,都没有定义键的名称),将无法选择出任何资源;

在基于集合的选择器中,使用“In”或者“Notin”操作时,其values可以为空,但是如果为空,这个标签选择器,就没有任何意义了。

两种标签选择器类型(基于等值、基于集合的书写方法):

selector:
matchLabels: #基于等值
app: nginx
matchExpressions: #基于集合

  • {key: name,operator: In,values: [zhangsan,lisi]} #key、operator、values这三个字段是固定的
  • {key: age,operator: Exists,values:} #如果指定为exists,那么values的值一定要为空。
    1
    2
    3
    4
    5
    6

题3:Kubernetes 如何实现集群管理?

在集群管理方面,Kubernetes将集群中的机器划分为一个Master节点和一群工作节点Node。其中,在Master节点运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是全自动完成的。

题4:如何解释 kubernetes 架构组件之间的不同 ?

Kubernetes由两层组成:控制平面和数据平面。

控制平面是容器编排层包括:

1)控制集群的 Kubernetes 对象。

2)有关集群状态和配置的数据。

数据平面是处理数据请求的层,由控制平面管理。

题5:Kubernetes 中 kube-proxy 有什么作用?

kube-proxy运行在所有节点上,它监听apiserver中service和endpoint的变化情况,创建路由规则以提供服务IP和负载均衡功能。简单理解此进程是Service的透明代理兼负载均衡器,其核心功能是将到某个Service的访问请求转发到后端的多个Pod实例上。

题6:什么是 Pod?

Pod是最基本的Kubernetes对象。Pod由一组在集群中运行的容器组成。 最常见的是,一个pod运行一个主容器。

题7:什么是 Kubelet?

这是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。因此,Kubelet处理PodSpec中提供给它的容器的描述,并确保PodSpec中描述的容器运行正常。

题8:为什么需要 Kubernetes,它能做什么?

容器是打包和运行应用程序的好方式。在生产环境中,管理运行应用程序的容器,并确保不会停机。例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更容易?

这就是Kubernetes来解决这些问题的方法!Kubernetes提供了一个可弹性运行分布式系统的框架。Kubernetes可以解决扩展要求、故障转移、部署模式等。 例如,Kubernetes可以轻松管理系统的Canary部署。

Kubernetes提供:

服务发现和负载均衡
Kubernetes可以使用DNS名称或自己的IP地址公开容器,如果进入容器的流量很大,Kubernetes可以负载均衡并分配网络流量,从而使部署稳定。

存储编排
Kubernetes支持自动挂载存储系统,例如本地存储、公共云提供商等。

自动部署和回滚
可以使用Kubernetes描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,可以自动化Kubernetes来实现部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。

自动完成装箱计算
Kubernetes允许指定每个容器所需CPU和内存(RAM)。 当容器指定了资源请求时,Kubernetes可以做出更好的决策来管理容器的资源。

自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。

密钥与配置管理
Kubernetes允许存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

题9:什么是容器编排?

容器编排是与运行容器相关的组件和流程的自动化。 它包括诸如配置和调度容器、容器的可用性、容器之间的资源分配以及保护容器之间的交互等内容。

题10: daemonset、deployment、replication 之间有什么区别?

daemonset:确保您选择的所有节点都运行Pod的一个副本。

deployment:是Kubernetes中的一个资源对象,它为应用程序提供声明性更新。它管理Pod的调度和生命周期。它提供了几个管理Pod的关键特性,包括Pod健康检查、Pod滚动更新、回滚能力以及轻松水平扩展Pod的能力。

replication:指定应该在集群中运行多少个Pod的精确副本。它与deployment的不同之处在于它不提供pod健康检查,并且滚动更新过程不那么健壮。

mysql

1、count(*)实现方式以及各种 count 对比

对于 count(主键 id) 来说,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。
对于 count(1) 来说,InnoDB 引擎遍历整张表,但不取值。server 层对于返回的每一行,放一个数字“1”进去,判断是不可能为空的,按行累加。单看这两个用法的差别的话,你能对比出来,count(1) 执行得要比 count(主键 id) 快。因为从引擎返回 id 会涉及到解析数据行,以及拷贝字段值的操作。
对于 count(字段) 来说:如果这个“字段”是定义为 not null 的话,一行行地从记录里面读出这个字段,判断不能为 null,按行累加;如果这个“字段”定义允许为 null,那么执行的时候,判断到有可能是 null,还要把值取出来再判断一下,不是 null 才累加。也就是前面的第一条原则,server 层要什么字段,InnoDB 就返回什么字段。
但是 count * 是例外,并不会把全部字段取出来,而是专门做了优化,不取值。count() 肯定不是 null,按行累加。
所以结论是:按照效率排序的话,count(字段)<count(主键 id)<count(1)≈count(※),所以建议尽量使用 count(
)。

2、orderby 排序内部原理

MySQL 会为每个线程分配一个内存(sort-buffer)用于排序该内存大小为 sort_buffer_size;
如果排序的数据量小于 sort_buffer_size,排序就会在内存中完成;
内部排序分为两种
全字段排序:到索引树上找到满足条件的主键ID根据主键ID去取出数据放到sort_buffer然后进行快速排序
rowid排序:通过控制排序的行数据的长度来让sort_buffer中尽可能多的存放数据
如果数据量很大,内存中无法存下这么多,就会使用磁盘临时文件来辅助排序,称为外部排序;
外部排序,MySQL会分为好几份单独的临时文件来存放排序后的数据,一般是磁盘文件中进行归并,然后将这些文件合并成一个大文件;

3、如何高效的使用 MySQL 显式随机消息

随机取出 Y1,Y2,Y3之后,算出Ymax,Ymin
得到id集后算出Y1、Y2、Y3对应的三个id 最后 select * from t where id in (id1, id2, id3) 这样扫描的行数应该是C+Ymax+3

redis

1、Redis都有哪些使用场景?

Redis是基于内存的nosql数据库,可以通过新建线程的形式进行持久化,不影响Redis单线程的读写操作
通过list取最新的N条数据
模拟类似于token这种需要设置过期时间的场景
发布订阅消息系统
定时器、计数器

2、Redis有哪些功能?

1、基于本机内存的缓存

当调用api访问数据库时,假如此过程需要2秒,如果每次请求都要访问数据库,那将对服务器造成巨大的压力,如果将此sql的查询结果存到Redis中,再次请求时,直接从Redis中取得,而不是访问数据库,效率将得到巨大的提升,Redis可以定时去更新数据(比如1分钟)。

2、如果电脑重启,写入内存的数据是不是就失效了呢,这时Redis还提供了持久化的功能。

3、哨兵(Sentinel)和复制

Sentinel可以管理多个Redis服务器,它提供了监控、提醒以及自动的故障转移功能;

复制则是让Redis服务器可以配备备份的服务器;

Redis也是通过这两个功能保证Redis的高可用;

4、集群(Cluster)

单台服务器资源总是有上限的,CPU和IO资源可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,但是内存资源怎么办,主从模式只是数据的备份,并不能扩充内存;

现在我们可以横向扩展,让每台服务器只负责一部分任务,然后将这些服务器构成一个整体,对外界来说,这一组服务器就像是集群一样。

3、Redis支持的数据类型有哪些?

字符串
hash
list
set
zset

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/495152
推荐阅读
相关标签
  

闽ICP备14008679号