飞道的博客

美团运维面试官没想到jenkins我用得这么溜,人直接傻掉

187人阅读  评论(0)

前言

春天来了,在家玩了半年,也该出去散散心了,顺便收获几个offer练练手,要不然都没有办法给小伙伴们发面试题了。

所谓知己知彼方能百战不殆,我先是在网上搜索了一下关于最近的运维职位,发现还行,大多薪资都在25-50K之间。于是就在boss上更新了简历,设置简历开发,去把快递收回来。

刚到电脑面前做下,就看到boss上有人要简历,之前有个小伙伴说: 你不在江湖,但江湖还是你的传说。
诶。。。真烦啊,太烦恼了,那就去吧,为了小伙伴们的真题,我舍命陪君子。

找出了半年未动的面试服装,打印好了三页纸的简历,带着一瓶红牛我就直奔面试现场。

到的时候有点早,越好的下午2点,我1点就到了,没办法找个地方喝个咖啡,补充下能量,一会打起来我好有力气跑。

叮咚, 距离面试还有15分钟,暗自窃喜的来到了某团现场面试的办公室,我丢,这就是面试官? 不是吧?


发量感人,见我来了赶紧带上帽子,这造型就是传说中的国外特聘CTO?

Hello, I’m ki, your interviewer. You can call me A.k, Look at my hairstyle, you should be able to guess my identity. I don’t have to say anything. Shall we just start

我丢,这TM是人话?

于是我用英语说: sure,can you speak chinese?

阿K笑了笑说,当然了,我们开始吧:

你们服务器的日常巡检的主要工作是什么?

额,确定是认真的吗?你这面试题不会是哪个蹩脚的系统运维帮你准备的吧。虽然十分不情愿回答,但也没办法,好在脑海里还有点印象:

  • 服务器物理硬件的巡检
  • 操作系统的磁盘,内存,cpu,硬盘读写情况
  • 服务器系统日志
  • 运行与服务器上应用是否 可用
  • 应用系统日志检查
  • 数据库运行状态,运行日志检查
  • 数据库定时备份机制情况
  • 系统定时任务执行情况

你能说一下上线流程吗?

这,跳跃也太快了吧。

好的面试官,我们这边上线流程比较简单,运维人员收到产品经理的上线工单(一般是邮件),邮件中包含了要上线的项目地址和版本号。
然后我们按照既定的上线脚本执行上线,完成后,运维人员会给相应的开发或者产品回邮件,宣布上线完成。

他们会回复是否上线上线成功,如果半小时未回复,就回滚。

"哦,你们有没有用到jenkins?”
来了来了,加分项来了,这个我还真遇到过,装B的机会终于来了。

有的面试官,这个题我会!!

开发上传代码到版本库,版本库我们用的gitlab,jenkins进行拉取编译,然后打包传到镜像仓库(harbor),在harbor中进行测试。 测试完毕之后,docker从镜像仓库中进行拉取,然后在k8s部署。部署完成之后,调用K8s的API进行健康检查。(healthcheack)

那…

还有还有,我还有,您别着急问下一个,让我再加点分,拖延一下面试时间。

我们可以设置让jenkins分支代码更新后,jenkins自动构建, 在jenkins的控制面板上我们设置构建触发器,把此处的URL复制下来,放到gitlab上的webhook中使用。


点击高级按钮,去输入要处罚的分支及复制token

然后我们在gitlab上设置,在setting-integrations

把上一步在jenkins里复制的网址和token,粘贴到此处


粘贴完后,根据自己的需求去选择要实现的触发事件

当然了,在这个过程中,我们也需要在jenkins里安装一些插件,比如:

  • git parameter
  • gitlab
  • gitlab hook

通过上面的步骤,我们就完成了代码发布到gitlab,然后jenkins就去拉取。

jenkins通过制定的代码地址url,将代码拉取到jenkins的安装位置,进行编译,打包和发布

面试官:我丢,这货知道的还挺多,下面我要考考他原理了。

嗯嗯,你回答的很全面,那么你能跟我说说jenkins的工作的原理吗?**

好的面试官,我这里给你画一张图:

我已SVN为例,也可以改成gitlab等作为仓库代码

  • 开发人员把代码发送到gitlab
  • CI系统会为每个项目创建一个单独的工作空间,当预设或者请求一次新的构建的时候,他就将代码仓库的源码存入对应的工作区
  • CI系统会在对应的工作区内执行构建过程,build,这个构件是根据事先设置好的脚本进行bulid,这个脚本可以做很多事情,比如编译,测试,生成测试报告等等。
  • 构建完成后,CI系统会在一个新的构建中执行一套定义好的测试,完成后触发通知给相应的当事人。
  • 如果构建成功,这个构件就会被打包转移到一个部署目标,或者存储为软件仓库里的一个新版本。
  • CI会根据请求发型相应操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

elk你们用过吗,能不能讲一下你的理解?

用过的面试官

ELK由三部分组成:

  • 数据的采集,分析,过滤日志: logstash
  • 数据的存储,分析,搜集: elasticsearch
  • 数据的展示:提供web界面,kibana

这个图是一个数据分析的架构图,涉及到kafka做为boker使用

简单的说:位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。

logstash工作原理你能说一下吗?

好的,好的,好的,别急面试官,听过慢慢吹,额慢慢给你说:

Logstash事件处理有三个阶段:inputs → filters → outputs,接收,处理,转发日志

input:输入数据到logstash
在logstash里有三个部分,一个是shipper,用来收集日志数据和监控日志数据的变化,及时将日志最新的内容收集起来。
另一个是borker: 相当于日志的hub,用来暂时存储shipper收集起来的日志信息。
indexer: 从borker中读取文本,经过加工,过滤,输出到指定的介质。

我们logstash端都是部署在被采集端,当然后期我们会用filebeat来代替, 安装好之后,logstash的三个组件,shipper负责检测日志变化并收集,然后发送给boker,进行存储,然后传送给indexer

在indexer这个地方进行数据清洗,分析和过滤,然后作为kafka的生产者传送给kafka,这个传送过程呢,是这样的。
首先producer先从zookeeper的brokers的state节点找到该partinon的leader,然后

  • producer将消息发送给leader
  • leader将消息写入本地log
  • followers 从leader pull消息,写入本地log后给leader发送ack
  • leader 收到所有的ISR中replica的ASK之后,增加HW(就是完成的offset,)并向porducer发送ack

消费者就是elasticsearch,去拉取tiopic的消息。

kafka同步到es的方式有四种:
1) logstash_input_kafka插件,但是这个不太好用
2) spark stream 同步,太庞大
3) kafka connector同步
4) 自写程序去读取解析写入

kafka connet 可以将完整的数据库注入到kafak topic中

KafkaConnect有两个核心概念:Source和Sink。 Source负责导入数据到Kafka,Sink负责从Kafka导出数据,它们都被称为Connector
kafkaConnect通过Jest实现Kafka对接Elasticsearch。

如果用logstash去将Kafka中的数据写入到ElasticSearch
input需要logstash-input-kafka插件,该插件logstash默认自带。

面试官: 好的,你不仅把我问的都回答了,我不知道的你也说了,这样你还有什么想问我的吗?

嗯,有的面试官,咱们招聘的这个岗位是AB复制还是新增,未来的这个岗位的规划是怎样的?

面试官:巴拉巴拉小魔仙巴拉巴拉

好的,我大体了解了,也对这个岗位比较感兴趣,期待能 有机会共事,感谢。那我先回去了,有消息第一时间通知我哈。

面试官: 我送送你

面试官给我送到了地铁刷卡口,看着我刷卡进站,他才离去。

害,我只能在面试官走后又刷卡出来,因为下一家面试就在隔壁楼上

无奈。

后记

本文略去了一些寒暄的过程,以及一些无意义的问题,诸如你老家是哪的,未来打算回老家发展吗,家人都在北京吗等等。


转载:https://blog.csdn.net/xinshuzhan/article/details/115627028
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场