今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考

聊骚阶段

嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗?

我:(这声音也太酥了吧我去……)嗯,你好,信号不太好,能在说下吗?(让我再酥一次吧)

嗲妹妹:(重复)

我:(我去,真的好酥啊)啊听到了,嗯,最近有在看 (不看机会,就没机会聊下去了啊)

嗲妹妹:嗯嗯,那简单的介绍一下,……,公司在xxx,你看什么时候方便过来一次吗?

我:可以可以,那就约在周xx吧,我应该可以,那天是你本人接见我吗?(卧槽……不由自主的就问出去了……)

嗲妹妹:当然是啦,我会全程负责你的这次面试(没有这次面试几个字多好?)的,好呀,那我们周xx见咯,拜拜~

我:嗯……(快不行了……)

准备环节

这是一个运维开发的岗位,在去之前呢,我也看了下爱奇艺的JD,讲道理,我这个人呢,还是喜欢做点准备的,如果去,就是我可能会考虑对吧,(毕竟他们除了要我,还有其他选择吗?)那最爽的结果就是手握各大厂的OFFER,然后沉浸在无法做出选择的幸福中了。

那准备过程中,发现他们的要求中需要对ansible熟悉,那我之前是有用过ansible的,但是对saltstack是比较熟悉的,因为产品化的东西更吸引我,而且在工作中也用他做过二次开发,所以就去对ansible做了一些调研,然后自己写了几个playbook,包括python api调用。

这里要说下,网上很多资料都是ansible 2.2 的,这个老版本了,截至发稿,已经是2.5了,其中的api调用也发生了很多的变化,建议大家多去看Official Guide,百度到的真的太乱。这里不展开讲了。

那天到了后,进入爱奇艺大厦(大厂都是有独栋的,确实不一样,下次有机会在分享其他的bilibili、鹅厂、饿了么的),就在下面等着呗

然后坐了一会,来了个男的,把我接上去了(我去???难道电话对面就是你?变声器?这么套路的?还好呀?还嗯嗯?),领到小房间后,让我填表格什么的。

我很老实的告诉大家,我全程脑子里就在循环电话那头的声音。我很低落,很难过,难道真的是jc上脑?

填完单子后,就等着呗,然后那个变声男就把我的单子拿走了,然后丢了句,“稍微等下,面试官马上就来”(心想,你走吧走吧,我也差不多准备走了……)

初面

来了位个子一般的(因为我胖啊,我怕谁),做个自我介绍

我觉得这个还是有说明的必要的,自我介绍一定要强势,一定要底气足。是你们要我,不是我自己找你们的,不要搞错好伐……

那么需要凸显的有

  • 自己的项目介绍(运开的话,就是CMDB、CI/CD、k8s、OpenStack,有什么吹什么,千万别不好意思)

  • 武器库(Python什么级别?用过协程就别说多进程,用过Tornado就别说只会Django)

Q:Python的列表解析式会写吗?会的话,写一个呗。比如选出1-100中的奇数。

A:[i for i in range(100) if i % 2 != 0](其实这里有很多种做法,比如最简单的用切片就可以了 list(range(100))[1::2]都不需要列表解析式,但为了迎合他的问题,你得往他身上靠啊……)

Q:那 (i for i in range(100) if i % 2 != 0) 这个和你写的有什么区别呢?

A:你现在写的是生成器解析式,返回的是一个可迭代对象,不是list对象(其实技术面试呢,如果你能摸到对面的小心思,那就稳了呀)

Q:装饰器有用过吗?用过的话,一般你是用于解决什么场景的?

A:用过。典型的,用户认证,简单点的可能日志处理等。主要用来处理一类问题的时候。

Q:那你能写一个装饰器吗?用来对用户的参数进行检查,如果参数类型不匹配,就返回一个error报文,否则返回success。

A:好的。(就写呗。这里不以代码为主,思路很简单么,如果你用py2可能就要用attr了,但我py3 可以用inspection啊,简单啊,然后把获取到的参数检查一下类型就好了呗,但这里也有一个要求,类型是定义在函数声明时?py3.5开始的类型注解。还是写在配置文件或者函数体里面?反正我就当你用py3写了类型注解了。)

……(省略一些基础问题)

由上可以看出,面py开发,基础是很重要的,因为大多自学py的,按照我的经验,对于基础部分内容掌握得不牢靠,以为py就是调调第三方库那么简单。

期间还问了上下文的实现原理,还有类的使用、继承、__init__和__new__的区别,实例方法、类方法、静态方法,实力属性、类属性等等。不一一展开了。

Q:你有做过CMDB吧,那你们CMDB里,如果有多套业务同时发生,你是怎么处理的?

A:(开始问我网络和并发了,这个要能听出来)我起初用的是多线程的,后来发现在处理并发的情况下,效果并不理想,就改用多进程了。但还是会有瓶颈,比如在作业模块上(主动抛出橄榄枝,我还做过作业平台),并发比部署系统更频繁,多进程处理会直接打满服务器CPU。后来就考虑换了协程,效果非常好。

Q:哦~你说到了协程,能说明一下协程和线程、进程的区别吗?

A:(知道你要问,这不被我带节奏了么)……(省略百度百科),协程主要解决的还是并发的问题,以及python GIL带来的并行处理能力。

接着就让我写一个协程。那就简单的写一个生产者消费者模型呗。

聊了大概四五十分钟吧。之后还聊了Django 和 前端的一些技术。感觉都ok。

最后了解了下,他是负责运开的技术开发。

二面

休息过后,就来了第二位面试官,面我运维的,运开嘛,如果没有运维知识肯定是不行的。

先从最简单的三次握手四次挥手问起来。

接着深入一点,开始问我在一次浏览器地址输入一个链接后,到显示出页面,中间经过了哪些过程?其实就是问你DNS呗。

A:先找hosts文件,如果没有就开始dns了,查询本地缓存,如果没有则向根发起查询,一层层向下请求,直到找到为止,响应给本地DNS服务器,在返回给客户端。(个人感觉dns这块回答的有点虚……相对py来说)

Q:那你有做过类似nginx的配置吗?能简单说下代理或者负载均衡吗?

A:nginx就自己用过,但没有生产维护过。(没有做过的话,个人建议还是老实交代为好,其实本来技术面试就有可能遇到你不会的,完全没有关系啊,只要符合要求,部分技术不合规也是没有关系的。)

后来的对话中,面试官也表示,可能之前做的更多的是DB的工作,对于web容器这块不熟悉关系也不是很大。

然后就和我聊起了DB,MySQL的高可用、分表,SQL优化,监控等。这些基本都回答的ok,也是老套路了,网上能查到很多,这里不做叙述。

技术组长

过了2轮后,竟然还有技术面,我去,是技术组长,然后还是自我介绍(不得不说,每轮都要自我介绍,每一轮我竟然说的还不一样……)

经过一些基础的可能上面两轮问过的问题后,就开始问我算法了,嗯,确实不太一样。这里我只能说靠平时积累了,有多少货就都掏出来吧!

Q:现在给出一个列表,[a,b,c,d,a,v,s,d,c,a],对他进行计数,返回出现次数最多的

A:嗯,我想想。然后给出了一个字典的存储方式,原因就是可以减少循环次数,尽可能降低时间复杂度。其实我一开始想说,直接用Counter模块不就好了么,但是没说出口,我知道会被打。

之后就对我自己做的一个MiracleOps问了很久,主要围绕的还是实现的方式和原理,能理解啊,你做的东西,自己一个人做的,那随便问你都知道咯,(就是看看你是不是在吹呗,很多人会把自己参与的项目说成是自己独立完成的

这里就会涉及到应用层的逻辑分化,以及软件层面的架构选型。这个还是看你个人经验了,如果没啥的话尽量别硬吹,很容易吹破。

比如为什么我的运维平台是用MongoDB,没用MySQL。在处理多租户、多任务的时候你是怎么解决竞争关系的。作业交付中,如果断点了怎么办,是等待还是结束?一系列的问题都值得讨论。

整个三面大概也持续了要有不到一个小时。

技术总监

终于熬出头了,和技术总监对吹环节终于到了,和技术总监聊就有一个好处,你可以不用说具体的实现了,和“老人家”聊技术,你就得让他觉得你这个小伙很靠谱,思维很先进,有意思

我充分发挥了我12年的语文词汇,把能说的成语都套上了技术的字给丢出去了。让我谈谈理想,我就吹啊,我要把自己的余生交给公司,为公司开辟疆土,将运维盈利化、产业化。让我们的部门成为公司最受瞩目的part,让总监你成为老板的左膀右臂!

我也不知道这波吹的怎么样,反正总监是笑了。你们觉得呢?

其实我觉得我更适合和总监面试,因为我这人有个毛病,喜欢吹……遇到同类型选手可能会激发我的斗志,通过身体的荷尔蒙喷发出更强大的吹的欲望

那给大家的建议就是,对于和总监、领导面试,放轻松点,没什么的,技术都过了,总监无非就是关心一下你的家里情况,方便后面加班咯……在关心下你的个人情况,看看身体能不能吃得消996咯……

你如果真的想进这家公司,那你面试的时候就表达出自己身体贼好,家里全部交代清楚了。当然你也可以明确说明我不加班,我不996。

HR

吹完江山,接下来就是和美人聊咯,嗯,hr小姐姐来了,和我说完大概情况后,和我开始聊起待遇,问我要多少。

划重点了,大家在这个时候一定要稳住,千万别兜底,你自己得要有自己的底,过了咱就不伺候了

你可以在自己的工资上面稍微加一点,把平时的奖金、福利、打车报销balabala,都加在基本薪资上,毕竟涨薪和福利可没关系

另外,hr如果要你说期望,你就往高了说,反正高了也会压你,低了也会压你。别做老好人,我遇到太多读者和我抱怨要少了,后悔,也没办法了。

经过一番博弈后,hr小姐姐终于问出了那句“如果薪资没有达到你的预期,你还会考虑我们公司吗?”

小伙伴们,这句话你们应该不陌生对不对,千万不要方,你可以委婉的告诉他,“经过一天的面试,我觉得贵司的流程制度还是非常完善的,而我应聘的部门气氛也非常好,我相信我能为公司、部门带来看得到的提升,也相信公司会正确的给予我一个合理的范围。”

这叫什么?打太极啊!你推我,我推你,不就那回事吗,hr就懂了呀。

在薪资方面我就不多说具体数字了,毕竟透露公司薪资是不道德的,反正那个薪资是在我合理涨幅里的,其实还高了一点,20%+,但我想要更多,哈哈哈。最后就考虑下呗

总结

好了,吹了一天的面试经历,到家就已经7点多了。真的累了,但我还是忘不掉那天电话里的声音。为什么始终没有出现。还是出现了我并没有发现……

面试流程大体相同,不同的是技术问题,以及每个人对应的方式方法,给大家总结一下我的经验

  • 技术面的时候,一定要把自己有的全都掏出来,让对面看看咱的真家伙……

  • 在和总监面的时候,尽量说的眼界大些,能给部门带来收益是最好的了,但别越界了,让领导觉得你过来会威胁到他,那估计就没戏了。

  • 和hr再聊薪资的时候,不要过早暴露自己底线,另外hr想要知道你的期望都是ok的,但你可以多加一点,反正合不合适hr都会告诉你的,要你就会说在考虑下,或者争取下,如果不合适,你低了过去也没意思。

希望这篇文章能给大家带来一些思考,而不是纯技术上的刷面试题。

公众号「Python专栏」后台回复:运维自动化平台,获取MiracleOps全套代码。

最新文章

  1. selenium 3.0 beta2 初体验
  2. android 一条线
  3. C# 顺序高斯(Gauss)消去法计算一元多次方程组
  4. poj 2408 Apple Tree
  5. mybatis 多参数处理
  6. 8.2.1.1 Speed of SELECT Statements 加速SELECT 语句
  7. VC连接数据库方式
  8. 对MySQL数据量日益增长产生的一点小想法
  9. UML图学习之三 状态图
  10. PreparedStatement和Statement区别
  11. 使用VS Code开发asp.net core (下)
  12. JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)
  13. Java中 Linux下安装Redis
  14. varStatus="vs"
  15. CentOS7版本区别和下载
  16. JDBC、JNDI和DBCP的区别
  17. openssl证书及配置
  18. Spark 实践——基于 Spark Streaming 的实时日志分析系统
  19. FAT AP v200R005 配置二层透明模式(web&命令行,开局)
  20. 整理前端css/js/jq常见问题及解决方法(3)

热门文章

  1. 一道题目- Find the smallest range that includes at least one number from each of the k lists
  2. 跟阿根一起学Java Web开发一:开发环境搭建及JSPGen基础配置
  3. python实现QQ机器人(自己主动登录,获取群消息,发送群消息)
  4. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯
  5. 一个TAB的jquery简单写法
  6. XenServer网卡Bonding
  7. 李洪强iOS开发之-入门指南
  8. 【Android开发-8】生命周期,Activity中打开另外一个Activity
  9. 登录日志的访问日志的 统计 MapReduce
  10. poj 1742 Coins(二进制拆分+bitset优化多重背包)