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

聊骚阶段

嗲妹妹:你好,我是爱奇艺的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全套代码。

爱奇艺面试Python,竟然挂在第5轮……的更多相关文章

  1. 爱奇艺面试Python,竟然挂在第5轮…(转)

    今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? 我:(这声音也太酥了吧我 ...

  2. 深入理解Java之线程池(爱奇艺面试)

    爱奇艺的面试官问 (1) 线程池是如何关闭的 (2) 如何确定线程池的数量 一.线程池销毁,停止线程池 ThreadPoolExecutor提供了两个方法,用于线程池的关闭,分别是shutdown() ...

  3. Java结束线程的三种方法(爱奇艺面试)

    线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...

  4. Python 爬虫实例(5)—— 爬取爱奇艺视频电视剧的链接(2017-06-30 10:37)

    1. 我们找到  爱奇艺电视剧的链接地址 http://list.iqiyi.com/www/2/-------------11-1-1-iqiyi--.html 我们点击翻页发现爱奇艺的链接是这样的 ...

  5. 如何利用python爬虫爬取爱奇艺VIP电影?

    环境:windows    python3.7 思路: 1.先选取你要爬取的电影 2.用vip解析工具解析,获取地址 3.写好脚本,下载片断 4.将片断利用电脑合成 需要的python模块: ##第一 ...

  6. 2019上海爱奇艺大数据Java实习生-面试记录

    目录 一轮 电话面试 二轮 代码笔试 三轮 技术面试 总结 附:电话面试问题点解惑 补充:面试未通过 一轮 电话面试 2019.04.28 16:21 [w]:面试官,[m]:我,下面的内容来自电话录 ...

  7. 爱奇艺用券付费VIP电影+python爬虫程序+可视化界面+下载本地

    申明:本博客中的工具及源码仅供个人学习使用,请勿用作商业等其他任何违法用途!否则后果自负 直接步入正题吧! 工具开发环境:windows10,python3.6 工具界面设计:基于python 自带的 ...

  8. 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!

    众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...

  9. Python爬虫实战案例:爬取爱奇艺VIP视频

    一.实战背景 爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟.比如加勒比海盗5的URL:http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1 ...

随机推荐

  1. BUPT复试专题—二进制数(2012)

    https://www.nowcoder.com/practice/103dd589fed14457a673c613d8de3841?tpId=67&tqId=29634&tPage= ...

  2. [Oracle] 获取运行计划的各方法总结

    总的结论: 一.获取运行计划的6种方法(具体步骤已经在每一个样例的开头凝视部分说明了): 1. explain plan for获取:  2. set autotrace on .  3. stati ...

  3. [Adobe Analytics] Segments types

    There are three types of Segmentation Hit-based Visit-based Visitor-based There are four segment con ...

  4. 天津政府应急系统之GIS一张图(arcgis api for flex)解说(二)鹰眼模块

    解说GIS功能模块实现之前,先大概说一下flexviewer的核心配置文件config.xml,系统额GIS功能widget菜单布局.系统的样式.地图资源等等都是在这里配置的,这里对flexviewe ...

  5. 使用网络监视器(IRSI)捕捉和分析协议数据包

    转载请注明原地址. 实验名称:  理解子网掩码.网关和ARP协议的作用             一.实验目的和要求 (1) 熟悉IRIS的使用 (2) 验证各种协议数据包格式 (3) 学会捕捉并分析各 ...

  6. 使用maven创建项目和cannot change version web module 3.0

    近期下载了最新的Eclipse mars.2, 这个eclipse自带了maven插件,于是就用maven尝试创建一个java web项目. 第一步,例如以下图所看到的选择 Maven Project ...

  7. v-for指令

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. gdb调试使用autotools工程的项目

    1 保留debug sympol和优化等级设置为-O0的最简单的方法 在执行configure脚本生成Makefile文件时,使用CXXFLAGS宏,因为标准的configure脚本给了这个宏. .. ...

  9. https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

    https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

  10. 浏览器和服务器 对post get请求 url长度限制

    1. URL长度限制 2. Post数据的长度限制 3. Cookie的长度限制 1. GET  URL长度限制 在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的, ...