我的秋招面经——问题篇

楼主是从七月份开始参加秋招的,结束秋招大概是在九月初,按理说这篇面经应该提前一个月发,由于自己比较拖延,并且在等一些公司的消息,所以当时就没写相关的经验贴。自己也在牛客的面经上学到了很多,因此想回馈一下社区。下面这篇帖子会大致介绍我的秋招情况,也会分享在面试中遇到的问题,其中可能也会插一些我认为的相关方向的一些重点内容或者是面试技巧。


先大致说说我的情况吧。我是硕士生,我对自己的职业规划是运维研发那块,偏容器运维与研发,因为我觉得运开比纯开发可能会接触更多东西,成长会更快,因此秋招我投的大多数岗位也是偏运维开发的,只有少数校招不招运开的公司,我就投递的后端或者基础开发岗。

截至目前,已经确认收到的Offer有蚂蚁,百度,快手,美团,拼多多,小米,思特沃克,多益,图森,金山云,华为,91ACT等,还有b站,vipkid在等消息。由于有些公司需要去现场面,也就拒了,包括了旷视(复试要去北京),依图和招行卡中心(终面要去上海),猿题库(由于来成都太晚,所以就放弃现场二面了),keep(在了解到keep运维那边没用容器,就拒了二面了),网易游戏和网易(都需要去现场,拒了)

单从秋招结果上来看,虽然比不上牛客上的一些大佬,但是应该还是比下有余了。从我多次的面试经验来看,面试也是有一定的套路和技巧的,比如如何做自我介绍,准备哪些基础知识以及如何准备,如何介绍项目等,下一篇可能会详细谈这些问题,这一篇文章主要还是以记录面试问题为主。下面是我春招实习及秋招的一些面试问题,供大家参考。大部分都是问题,写答案的话会占太多精力和篇幅,如果有同学对某些问题不懂,搜索引擎也没办法帮到你的话,欢迎在评论区提出来一起探讨。


春招实习

我大概是在寒假回来,也就是三月份开始准备秋招的。我们导师不让实习,相信也有很多同学和我的情况一样。这种情况下我还是建议尝试去参加自己所感兴趣的方向的实习笔试和面试,主要有两个原因:(1)可以熟悉笔试和面试流程,并且能知道该方向(当然是针对你的简历)大致面试会出现哪些问题;(2)即使不能实习,实习过了有些公司有秋招绿色通道,比如招行卡中心直通终面,网易游戏免秋招对应岗位的笔试,搜狗(面试我那个部门负责人说秋招要对搜狗有意向,直接联系她就行了,由于感觉自己过了也不会去搜狗,所以秋招就没好意思联系负责人)。但是有的实习公司面试不通过,可能会影响秋招,比如腾讯,我实习挂了,听说秋招简历还是被锁着,因此秋招就没办法面试腾讯了。这些大家都可以提前了解清楚,我感觉找工作很多时候信息都不够对称,信息掌握得越多的同学找工作自然也不会那么被动。

我实习的时候面试了阿里,腾讯和头条,搜狗,网易游戏,流利说,招行卡中心和携程,阿里、腾讯和头条挂了,其他过了。

阿里是我读研来第一次面试,由于当时自己完全没经验,甚至自我介绍都说的结结巴巴的,面完就挂了,面试问的全是项目中的东西。面完后面试官说,我的沟通能力可能存在问题,也可能是由于太紧张导致的。第一次面试便吃了闭门羹,然后我总结了原因: 对简历的东西准备得不够充分,比如自我介绍和项目细节。阿里面试官特别喜欢挖细节。腾讯实习面试一面面试官对我评价非常高,二面迟到了,我到现场后面试官直接说我迟到就安排了下一个同学,我感觉二面答得一般,后来就挂了。腾讯问的东西主要也还是项目,然后有一些基础知识,手写代码的题目都是剑指Offer上的原题。头条的话,不太具有参考性,我投的岗位是网络爬虫实习生,面试大部分时间是在写算法,三面因为一个算法题没写出来就挂了,这方面确实是自己刷的不多,有想去头条的可以多刷刷剑指Offer和Leetcode。

流利说(职位是后端开发工程师)

1.Python中高阶函数是什么?

在Python中,例如lambda,map,reduce和filter等称为高阶函数,他们的特点是可以以函数作为参数进行传递,或者返回对象是函数

2.在一个数组中找出现次数只有一次的元素

先从最简单的解法开始,做一个词频统计。这种解法需要考虑 hash 冲突的情况。时间复杂度可能比O(N)高。也可以将数组进行排序,比较两个数是否相等。不相等的时候,前面那个就是需要找的数。逐步分析,最后可以谈多个数异或,最后剩下的就是要找的数,因为异或运算满***换律和结合律

3.实现一个限流算法(手写代码)

4.谈谈对kubernetes的各个组件的理解,他们的作用?kuberproxy有哪几种实现方式?原理是什么?kubernetes的元数据是如何管理的?

5.sorted set实现原理?跳表是如何实现的?

6.矩形柱子算最大面积?(手写代码)

网易游戏(运维开发工程师)

题目记得不太清楚了

1.介绍项目

2.谈谈自己对运维及运维开发的看法,它们有什么区别?为什么要做运维开发?

3.Python深拷贝和浅拷贝区别?a=b算是拷贝吗?为什么?(不算,拷贝对于不可变对象来说,会生成新的对象,而a=b只是将a指针指向b)

搜狗(运维开发工程师)

搜狗

1.cpu核数如何查看(/proc/cpuinfo

2.cpu负载怎么看(uptime),参数的意义

3.快排的过程

4.Python中"is"和"=="的区别

5.说说Nginx和Apache的区别

6.一个请求从点击开始到Flask的请求流程

7.说说保留的IP字段是哪些,192.xxx它们是哪一类地址

8.MySQL的优化?MySQL如何应对大并发场景?

9.说说haipproxy如何做调度的?

10.Linux中怎么取出文本最后一列的数据?

11.TCP三次握手的各个状态,详细说说?

12.Python中哪些数据结构用了哈希表?它们的查找时间复杂度为多少?

13.用过装饰器和上下文管理器吗?什么场景使用它们的?

14.除了看书,你平时怎么学习新知识的?

携程(运维开发工程师)

1.celery中soft-time-limithard-time-limit的作用和区别?

两个参数都是为了防止任务执行过程占用太久的时间。前者允许在celery强制结束某个长时间任务之前抛出一个异常给该任务,然后该任务可以捕获到该异常并清理任务环境或者做一些别的事情

2.使用celery遇到过线上程序cpu或者内存占用过高的情况吗?如何排查线上程序CPU或者内存占用过高的问题?

没遇到。CPU占用过高的情况可能有两种,一种是任务本来就是CPU密集型,这是正常的情况,第二种是代码中出现了死循环之类的问题,属于代码本身的问题。我们可以通过
top
定位到占用CPU最高的进程,这里比如是1234。然后再通过
top -H -p pid
或者
ps -mp pid -o THREAD,tid,time
来定位究竟是哪个线程占用了过多的CPU,然后可以用pstack,strace和gdb,jstack这类工具来定位到具体哪个线程出了问题。我们也可以在启动程序的时候,记录线程号,然后根据线程号和对应的线程名,就能查找到哪个线程的问题了。
内存占用过高的情况可能是需要处理的文本很大,程序未做较多的优化。还有一种非正常情况就是内存泄露。引起Python程序内存泄露的原因有两个
对象被另一个生命周期特别长的对象所引用
循环引用中的对象定义了del函数,这个时候Python垃圾回收器并不知道该先回收哪个对象。
我们可以使用gc模块和objgraph模块来解决内存泄露问题,objgraph模块可以将对象的引用关系可视化。并且在出现循环引用的时候,如果开启了Python的自动垃圾回收功能,那么不可达对象就会被垃圾回收器清除。
关于循环引用的解决方法还有一个就是,如果业务允许(比如不需要保证a.b,b.a引用目标存活,如缓存,事件回调等,那么可以使用弱引用)。

3.redis做高可用的方案?具体操作?

4.爬虫一个请求从开始到收到响应的整个过程?

5.对于运维开发的理解?

6.http状态码502和504,出现这两个状态码分别是因为什么原因?

502: Bad Gateway。主要是因为后端服务器,比如uswgi响应的内容是nginx无法理解的,那么就可能出现502。比如在后端服务器挂掉的情况下就会出现502
504: Gateway timeout. 主要是因为后端服务器处理任务太久,超过nginx的等待阈值。比如将nginx的请求等待时间设置得太小就可能出现504
503: Service unavailable.主要是因为瞬间并发量太大,导致后端服务器没有足够的资源去处理请求

7.根据nginx的访问日志,如何能查找状态码为504的访问列?

awk '$9==200 {print $1,$9}' /var/log/nginx/access.log

8.你是如何在程序中做异常处理的?日志是使用的文本日志吗?有用别的日志框架吗?

9.vue等前端框架和jquery等库有什么区别?

框架相对于库来说,开发更加便捷快速,而且可能在业务代码层面,代码会更稳定
jquery的业务逻辑和UI混合在一起,并且掺杂着交互逻辑,而vue等框架对分层会更加友好,可以实现业务层和UI的解耦

以上便是实习的一些问题,下面说说秋招的一些面试问题,除了算法之外的大部分题目都是根据简历的基础知识或者项目扩展的,所以大家需要对自己简历上的每一个字负责,后续时间如果允许的话,我可能会写一篇文章来分享一下我自己准备简历内容的一些经验和方法。

秋招

我分时间先后顺序把面试问题列出来,大家对有兴趣的问题可以一起讨论

多益提前批 (Offer)

游戏运维工程师

1.自我介绍

2.如何看待加班

3.介绍一下你的项目

4.C++中引用和指针的区别(这个我不会,面试的时候不会的问题直接说不会就好,如果你能凭借已有的认知进行推断那是很好的,但是不能瞎猜,也就是说推断得有依据,即使不是标准回答,给面试官的感受也会比较好,因为你会积极思考)

5.Python和C++的区别

6.如果工作中让你用C++写一些工具,你如何看

7.算法题: 将数组右移k位

百度运维部提前批(Offer)

SRE工程师

1.画一下Docker的架构图

2.Docker的镜像是如何运行成容器的?

作为静态的镜像,如何才有能力转化为一个动态的 Docker 容器呢?此时,我们可以想象:第一,转化的依据是什么;第二,由谁来执行这个转化操作。

其实,转化的依据是每个镜像的 json 文件,Docker 可以通过解析 Docker 镜像的 json 的文件,获知应该在这个镜像之上运行什样的进程,应该为进程配置怎么样的环境变量,此时也就实现了静态向动态的转变。

谁来执行这个转化工作?答案是 Docker 守护进程。也许大家早就理解这样一句话:Docker 容器实质上就是一个或者多个进程,而容器的父进程就是 Docker 守护进程。这样的,转化工作的执行就不难理解了:Docker 守护进程手握 Docker 镜像的 json 文件,为容器配置相应的环境,并真正运行 Docker 镜像所指定的进程,完成 Docker 容器的真正创建。

3.微博爬虫和实验室项目相关吗?老师知道你开源了吗?参与维护的人多不多?

4.如何想到要学习Docker的?如何想到要去学习k8s的?

5.画一画微博爬虫的架构图?任务是如何下发给各个节点的?

6.你的项目star如何涨星这么快?(这个挺惭愧的,有大v帮忙转发了,自己也做了一些推广)

旷视(需要去北京现场面,放弃了)

后端开发工程师

一面

1.自我介绍

2.说说Python的以__开头的系统函数有哪些

3.说一下你理解的Python的装饰器

4.TCP三次握手过程

5.谈谈项目(***IP池)对于各个筛选维度的优先级

6.谈谈你知道的排序算法?对于各个排序算法的时间复杂度和最差情况的理解?

7.http协议你所知道的所有方法?option方法是什么时候使用?它的作用是什么?

8.在做爬虫的时候,说一下比较重要的http header内容

8.你知道***服务器的http header是如何设置的吗

9.怎么删除一个git的commit?不知道的话如何删除最近一个commit呢

10.谈谈你对Https协议的理解?CA的作用?工作方式?它是如何保证身份不被伪造的?CA证书中有些什么内容?CA机构持有的是公钥还是私钥?Charles是怎么实现对Https抓包的?有过反编译APP的经验吗?

11.知道RSA的具体实现吗?

12.你有什么要问我的?

二面

1.谈谈你理解的Python吧?

2.Python能多线程运行吗?为什么?那怎么办?

3.你了解GIL的加锁和释放锁的过程吗?如何实现的?

4.如果我们要用Python调用系统命令,用什么模块?

5.用过multiprocessing吗?你怎么实现进程间通信的?

6.Python的generator是如何实现的?谈谈你对它的理解

7.Python是单继承还是多继承?如果子类要调用一个父类的方法,应该怎么做?你知道super关键字的实现方式吗?

8.MySQL的索引类型有哪些?(不清楚面试官想听的是从索引的数据结构实现方式来讲,还是业务上的类型)

9.MySQL的特点有什么?(面试官想听的是事务的数据一致性)

10.具体SQL语句,一个User表中统计不同城市的分布

11.谈谈你对Redis的理解?

12.Redis有哪些常见的数据类型?

13.Redis的list可以从两端进两端出吗?

14.Redis的Master/Slave模式了解吗?它是如何实现数据同步的?

15.既然你说了Redis是单线程架构,那么在什么情况下它会阻塞?

16.给你一个100G内存的服务器,如何给Redis分配CPU?

17.说一下从http请求发出到得到响应的过程?越详细越好

18.跨域攻击了解过吗?

19.谈谈对Linux的理解

20.你常用的一些linux命令

21.了解xargssed吗?

22.Redis默认有多少个库?如果我的库不够用了该怎么办,也就是如何从16个扩展到100个?

23.ssh的作用是啥?是如何实现的?如何实现不输入密码进行登录?

24.ssh用户这边保存的是公钥还是私钥?对于ssh的端口转发了解吗?

25.linux平台上某个程序线上出了问题,本来该30分钟结束的结果3个小时都还没结束,如何定位问题?

26.linux的fork了解吗?什么是写时复制机制?

27.用http上传文件,原理是什么?(难道不是ftp传文件吗?这里没理解到想考察的是什么?数据分段和分片?MSS和MTU?)

28.redis的过期命令了解吗?如何取消一个过期的键?

29.Docker你熟悉是吧?你说说Docker的三个核心概念?

30.谈谈你对镜像的理解?

31.同一台服务器上有多个docker容器,如何让他们通信?dockerfile中应该怎么写,让docker容器能知道对方的ip?

32.说说Dockerfile常见的指令

33.有什么方法可以将外部的数据挂载到容器中?对于臃肿的数据,我要怎么才能只挂载我需要的?

34.我没用过k8s,你可以给我讲讲k8s吗?

35.说说你了解的数据结构和算法?

36.堆排的过程?

37.我现在有10个过程有相互依赖关系,我想找出谁先谁后,该怎么做

38.有一个流数据,我要实时求它的中位数,应该怎么做?

39.我有一个定时任务需要周六晚上执行,应该怎么做?

40.我有任务需要开机启动,应该怎么做?

41.用过Python的inspect模块吗

斯特沃克(Offer)

开发工程师

HR面

1.自我介绍

2.平时喜欢上一些什么样的网站

3.你了解的思特沃克

4.平时和同事出现了意见不一致怎么解决

5.平时编程遇到了问题怎么解决

6.你一般解决问题的过程是怎么样的(不仅仅限于技术问题)

7.平时怎么学习的,都看一些什么书

8.对于出差你怎么看

9.对于不同的开发语言,你怎么看,工作需要,你愿意换一种不喜欢的开发语言吗

10.英语怎么样,具体听说读写

11.现在拿到了哪些offer?百度给你开多少?你期望的薪资是多少?

12.你有什么问题想问我

技术面

1.先把原来的代码进行一些重构,主要是把业务无关的方法抽象出来

2.给定新的需求,在原来的代码上加一个新的功能

3.讲讲你的项目(任何项目都行)

4.讲讲微博爬虫登录那里怎么做的

5.画一下你的微博爬虫的架构图?它的消息是如何路由的

6.这个架构看起来和rabbitmq有点像啊,是不是光用rabbitmq就能实现了?

7.你MySQL在哪里用到了呢?你为啥称之为熟悉MySQL呢?我现在有一条慢查询,你会怎么优化它?

8.平时看一些什么书

蚂蚁金服(Offer)

Java开发工程师

先投递了一个成都的蚂蚁金服,直接简历拒了。然后被杭州那边捞起来了。

一面

1.讲讲你的项目?讲讲如何做大规模数据抓取的?

2.说说celery的各个节点如何保证公平消费的?broker的任务是如何分发给各个节点的?

3.celery的各个节点如何保证可用性?挂了如何让别的节点感知?(定时到broker的一个频道更新一个关键字段,也可以参考Redis的做法,通过节点之间互相ping,然后像指定频道发送对worker的判断,再做下线标志)

4.微博的页面较为复杂,你是怎么做解析的?

5.TCP的三次握手是怎样的?

6.在线编程: 求K小个数

7.平时有过多人协作的经历吗?

8.你觉得你自己的能力如何?在同年级中?

二面

1.讲讲你的项目

2.怎么保证你的程序能感知到账号被封了?你可能需要面对的是微博的封号的一些特征一直在变

3.怎么保证你的消息会被消费

4.当你的爬虫集群扩大之后,你觉得瓶颈会是什么?应该怎么解决

5.平时数据库用的多吗?为什么会看一些数据库的知识?

6.数据库查询缓慢怎么排查

7.Git如何回滚到某个版本?git checkout 和 git revert的区别是什么

8.我有一个大文件,需要找出其中出现最频繁的10万个单词,怎么做

9.如何用Linux命令统计文件中每个单词出现的词频

10.给定一棵二叉树,再给定一个需要查找的值,如果查找到了该值,就打印出从根节点到该节点对应的路径的字符串。我用的先序遍历实现的。然后问了实现的时间复杂度和空间复杂度

三面

1.说说MySQL的优化?为啥要遵循最左前缀索引是如何实现的?为啥不用hash索引呢?假设给你一个内存较大的服务器,那个时候hash索引和b+树
还有啥区别?

2.讲讲Redis中你印象深刻的一个点?redis的过期策略具体怎么实现的?

3.本科也是川大的吗?为啥要读研?

4.讲讲上本科以来和别人最大的冲突?如何解决的?

额,就只有四个问题,然后也没问我想问他啥问题不,直接说今天面试结束了,技术面到此也结束了,后续可能会有hr面

HR面

1.你为什么要投递蚂蚁金服?你说蚂蚁开源了一些中间件,具体有什么你了解过吗?

2.你投了哪些别的公司?手上有哪些Offer?

3.相比于别人,你有哪些优势呢?

4.你觉得你自己哪些方面还有不足呢?你觉得自己以后要进步还有啥可以提升的地方?

5.说一个你们实验室你比较佩服的同学?为什么?

6.我看系统中你的简历投递是八月初,为什么到八月才投递简历呢(我说我想抽时间复习一些基础知识)?你复习的内容包括什么呢?

7.如果蚂蚁给你offer,你会怎么选呢?为什么呢?

8.你对地点有什么要求呢?

9.你有什么想问我的呢?(我说前面面试已经了解得差不多了,没有想问的)

依图(终面需要去上海,拒了)

运维开发工程师

一面

1.自我介绍

2.MySQL优化讲一下?在平时你有优化数据库的经历吗?

3.MySQL主从复制,主主复制的原理和实践有吗?

4.对于MySQL的数据管理有哪些心得?比如说导出导入数据有过实践吗?

5.你Docker用了多久了呢?K8s用了多久了呢?Docker使用的时候遇到了什么问题(举个例子就好了,想知道平时你是如何查找和解决问题的)?k8s你平时怎么学的呢?

6.k8s除了有集群搭建经验,有过pod调度相关经验吗?k8s的调度策略是怎样的?

7.看你使用Linux这么久了,对于Linux的日常管理有什么经验吗?

8.你具体在项目中是如何使用Prometheus的呢?对于请求速率是如何结合Prometheus来做一些监控的?前端的UI展示是通过什么来做的?

9.你什么时候毕业?能来实习吗?

10.你有什么想问的问题?

整个过程18分钟。。。面试官说提前看了一下我的博客,感觉有一些了解,所以没问太多

二面

1.现在devops比较火,你是怎么看待的运维开发或者devops的?为什么它能这么火?

2.讲讲你对Python的多线程的理解

3.讲讲你常用的Python第三方库和标准库

4.你的项目中怎么确保Celery的ACK

5.MySQL优化有哪些方法呢

6.SQL中的in和exists的区别

7.你是怎么做docker的镜像管理的

8.docker运行服务暴露端口有哪些方法?(我只提了通过-p进行端口映射,面试官给我讲了还有host网络模式直接和宿主机共享网络端口)

9.ansible你一般怎么使用的?自己写playbook吗还是使用自带的简单命令?它有什么弱点?(面试官说ansible在大规模集群中会有性能问题,确实没机会接触大规模集群,所以这个也没答上来)

10.linux常见命令?awksed用过吗?

11.讲讲http2.0主要改进的地方

12.TCP和UDP的区别?它两各自适用的场景

13.二分的时间复杂度是多少?

14.使用git的时候,你和同学怎么做的冲突管理?

15.你有啥想问我或者想了解的吗?

有赞(一面挂,技能不匹配)

开发工程师

1.自我介绍

2.Python的多线程的理解

3.了解Java吗?让你转Java你是什么想法呢?

4.能不能实习呢

5.讲讲你的两个开源项目?讲到微博爬虫那里详细问了登录是怎么实现的

6.你对自己的职业有什么规划呢?我说我想做分布式和中间件的相关东西

面试时间比较短,信号不是很好,面试官语速也比较快,这次面试感觉不好

金山云(Offer)

运维开发工程师

一面

1.为啥想做运维开发呢?

2.对Flask和Django了解吗?

3.你平时用的Python3还是Python2

4.asyncio了解吗

5.你平时开发是在docker上还是宿主机上呢

然后就过了。主要是面试官以前机缘巧合地在github上看过我的项目,说我代码写得不错,然后在面试之前也看了我的博客,觉得内容比较有深度,然后就给我放水过了,然后一面过了就直接拿了Offer了。

有感而发: 对于某些同学来说,找工作是日积月累的准备,还有些同学是集中几个月准备,我比较推荐前者。日积月累的准备的话,我主要做的就是:(1)写博客;(2)做开源项目。因为导师不让实习,所以也只能自己做开源项目。说实话,这两点对我找工作帮助很大,好多次我都感觉是面试官给我放水让我过的,因为无论是个人博客,还是Github的commit热力图,有经验的面试官都能看到你的学习轨迹,从侧面可以判断你到底对技术有不有热情,有不有恒心。

华为(Offer)

华为的面试没太多借鉴意义,一面面试官让我挑一个基础知识点给他讲,然后再挑一个项目给他讲。讲到一半了,他说不用讲了,给我过了,并且帮忙申请了专家面。

二面(专家面)的面试官问了项目的动机,我的代码量,看了一下我的代码,就没别的了

三面(综合面)的面试官只问了一个问题,“如果华为给你offer,你来吗”,其他时候就是在给我讲他们部门的业务

小米云平台运维(Offer)

运维开发工程师

一面

1.自我介绍

2.有一个服务的日志需要进行定时清理,你可以想到哪些方案?如果写脚本的话,你会怎么写?(想考察find`tmpwatch的命令)

3.Linux查看系统负载,你能想到哪些命令?如果要查看网络IO呢?

4.Linux根据进程查看所占用的端口,使用什么命令?

5.Python的__new____init__有什么区别?

6.Python的__args_args有什么区别?

7.MySQL的主从复制了解吗?可以说说你了解的部分

8.MySQL的优化技巧讲讲你知道的点?

9.用户打开浏览器输入mi.com到接收到响应,中间经历了什么过程?详细讲讲

10.说说TCP为啥需要三次握手,而挥手要四次?

11.对于树的中序遍历,递归和非递归怎么写?

12.docker的网络模型,你了解哪几种?

13.如果两个容器需要互相通信,应该怎么做?(估计是提示我用containerd网络模型,我给忘了,只说了其他几种,这里我说的是通过link或者docker create network让两个容器在同一个网络中)

14.docker如何查看进程的相关状态?(我答的docker ps,其实可能是docker logs...)

15.如果有一些容器长期不用,需要删除,怎么做?

16.了解docker的网络通信方案吗?(fannel和calico)

17.有什么想问我的吗?对于北京和武汉,你会如何选择?

二面

1.自我介绍

2.项目介绍

3.Redis的高可用方案你了解哪些?你的***池为啥要用Redis做持久化呢?Redis的持久化方式有哪些?说说它们的区别

4.如何统计nginx日志文件中的每个状态码出现的次数和对应的URL

5.场景: 某个文件夹每个小时会生成很多小文件,你如何将小文件全部删除?(这里我说用rm,面试官说rm会卡死,需要用rsync或者)

其他记不清楚了,面试官说看过我的文章,感觉不错,然后就给通过了

三面

1.介绍一下你的高可用是怎么做的?

2.对自己职业发展有啥规划吗?

3.对于工作地点有啥要求吗?

4.有啥问题想问我的吗?

快手(Offer)

运维开发工程师

一面

1.自我介绍

2.讲讲你的项目?和别人的项目比起来,你的项目有什么亮点?平均每秒几个请求,这个也不算很高的请求啊,有用***的必要吗?

3.既然你对网络爬虫比较熟悉,讲讲从输入一个URL到收到响应的整个完整过程吧?

4.你了解Python的并发实现方案吗?多进程和多线程有什么区别呢?

5.对于多线程或者多进程并发的情况下,如何解决死锁问题呢?

6.你了解MySQL吗?在大并发插入情况下如何解决?(insert delay into,批量插入,消息队列削峰)如果是持续而不是短暂的大并发插入呢?(可能他想问集群方面或者读写分离的知识,这个我没动手弄过,没太多底气去说,就直接说的不太清楚)

7.Linux平时用过吗?软连接和硬链接了解吗?它们有什么区别?底层如何实现的?你提到了inode,inode的作用是什么呢?

8.我们来写一个题吧,其实就是一个简单的版本比较问题

9.你有用过ansible吗?你知道ansible为啥可以做批量操作不?你在使用ansible的时候是每台机器输入密码还是怎么做的?ssh-copy-id它的作用是什么?你知道它把公钥copy到本机哪个文件中了吗,具体说说?

10.你在项目中是如何使用Prometheus的?Prometheus的数据源是哪来的?你了解Prometheus的数据类型吗?各种数据类型有什么区别,分别在什么样的场景下使用呢?

11.你是基于什么目的使用Docker的呢?你知道Docker的资源限制方案吗?它的底层是如何实现的,有不有看过相关源码?cgroups文件夹中有些什么内容,自己有不有编写过cgroup中的一些文件?你知道Docker的网络资源限制是如何做的吗?(网络这个就不清楚了,查了一下貌似可以通过openswitch或者其他qos系统来做)

12.了解imcp吗?了解traceroute吗?它的底层如何实现的?

13.你还有什么想问我的?

二面

1.自我介绍

2.项目介绍。你的IP***源怎么来的?可用***IP有多少呢?

3.项目有使用数据库吗(只用了Redis)?Redis你了解吗?讲讲Redis的单实例和集群吧?Redis集群的一个数据流向你了解吗?Redis的应用场景有哪些呢?

4.关系型数据库有了解吗?加索引就一定有效吗?它的索引是什么数据结构?为什么用B+树?它和B树有什么区别?

5.写个题: [1~2018],计算同时能被2,3,5三个数整除的数的个数

6.你还有什么想问我的吗?你现在还有投哪些公司?拿了什么offer呢?

hr面

说是HR面,但是感觉是个部门Leader,因为他懂很多技术术语,沟通起来也很专业

1.你是川大保研的吗?本科学习成绩大概在哪个范围

2.你当时有考虑保外校吗

3.你对快手这边有啥看法

4.对你的面试官,你觉得面试感受如何

5.你倾向于哪个城市呢?有投递别的公司吗?拿了哪些offer

6.你有什么想问我的吗

图森未来(Offer)

运维开发工程师

一面

1.自我介绍

2.选一个你觉得不错的项目来说说?项目都是你一个人写的吗?

3.你熟悉docker是吧,讲讲你对docker的理解吧?

4.讲讲docker的镜像的原理吧?docker的网络模型清楚吗,有哪几种?你平常用的哪种呢?能给我讲讲bridge网络模型的原理吗?

5.既然说到网络,我们就来聊聊计算机网络,先说说计算机七层网络模型?说说DNS是使用的什么协议?

6.现在你实验室有一台笔记本,ip为192.168.1.135,然后你从浏览器输入baidu.com,你说说整个过程发生了什么?我们再单单看从应用层,依次往下发生了什么,说说每一层的包会封装什么内容?IP层的包头大小为多少呢?现在你有百度的服务器IP了,你说说你的网络包是如何从内网传输到该地址的,比如包经过交换机,路由器等会查路由表和选定端口,你来说说详细过程是怎么的?你说到了网关,为什么需要网关呢?

7.我们再聊聊操作系统吧?你说说进程和线程的区别是啥?进程可以共享哪些资源?线程呢,可以共享哪些东西?

8.多线程会有什么缺点?(锁开销?)

9.你了解Python吧,说说Python的is==的区别?

10.说说Python的垃圾回收机制?

11.了解Flask和Django吗?你是怎么看待它们的?还问了一个Django的ORM的问题,我基本不怎么用Django,就说的不知道

12.现在你回家了,你的笔记本在实验室,你想连接进去,怎么做?(其实就是想问内网穿透的问题)

13.supervisor你用过吗?讲讲你的一些使用经验?

14.我想使用8090端口,它却被别的程序占用了,这个时候怎么做?

15.对于Python的程序打包上传如何做?

16.你有什么想问我的吗?(问了一下要求,还真高,既要工程能力,还要数据结构和算法能力,还要基础知识扎实...)

其他问题记不清楚了,总共面了一个多小时,面试官人还是挺好的,一直笑嘻嘻的,让我不要紧张。网络那块简直问到灵魂深处了,每个细节都要扣,答不上来答不上来

二面

1.自我介绍

2.对运维的理解

3.docker中数据持久化的方式由哪些?(本地挂载,容器挂载,云的方式)各有啥优缺点

4.你还有什么想问我的

在自我介绍和说对运维的理解的时候,谈了很多,这场面试持续了50多分钟,很多时候我也在主动问面试官一些东西,技术上的问题面试官只问了极少,所以面试的主动性很重要,当然,它的前提是你对自己所面试的岗位有一定的思考,这样问出来的问题或者聊天才会显示出专业水平

三面

1.写个算法题

#a[] = 734 234 -123 546 -234 456 -87 23 12 
#x = 654
#[l,r], sum = a[l] + a[l+1] + .. + a[r] >= x && min{sum}

求最小的sum

2.你熟悉的语言中多态是如何实现的

3.MySQL事务特性?你对它的理解?

4.MySQL中B+树是如何存放的?

5.Docker镜像管理如何做?我想在启动Docker容器的时候传入一些参数,怎么做?entrypointcmd的区别?别的用户怎么得知这个传入的参数呢?

6.Docker镜像删除命令?如何将所有镜像一次性删除?

7.K8s集群你搭建过吗?用的什么方法?讲讲K8s的各个组件?在K8s集群上跑过应用吗?

美团(Offer)

数据开发工程师

一面

1.自我介绍

2.项目介绍,在中途问了Redis的过期策略是怎么样的,然后说到定时器的时候问了Redis是如何查找到设置有过期时间的key的,问了***IP是如何进行筛选和调度的

3.Redis在项目中有哪些作用

4.说说MySQL的优化

5.说说微博的模拟登录整个流程,再说说你是如何做大规模数据采集的,各种Cookie的调度方式是如何的,为什么有两种调度方式

6.写个你熟悉的排序算法(我选了快排,没写出来,囧)

7.说说数据库优化的方式有哪些

还有一些问题记得不清楚了

二面

1.自我介绍

2.项目介绍,其中也问了一些项目具体细节问题

3.讲讲MySQL数据库有哪些存储引擎,它们之间有啥异同,适合于什么场景?你知道数据库的锁吗?(说锁这里面试官其实在提醒我Innodb支持的锁粒度更细,MyISAM比较粗,不支持行级锁和列锁)

4.对于Innodb存储引擎,你知道它的索引底层是什么数据结构吗?b+树对于b树来说,有啥区别?

5.讲讲TCP三次握手,讲讲TCP和UDP区别,你了解的哪些协议使用的TCP,哪些用的UDP

6.讲讲输入一个URL到得到响应的整个过程

7.讲讲HTTP的GET和POST方法的区别,Session和Cookie的区别

一面和二面连着面的,大概面了两个小时,有的问题记不得了,感觉问的都还算比较基础,项目也花了很多时间考察

三面

1.说说你想做什么,什么是基础方面的开发,为什么想做这个?

2.讲讲你的项目

3.讲讲MySQL有哪些存储引擎?MyISAM和InnoDB的存储引擎用的索引数据结构分别是什么?(MyISAM用的是B树,Innodb用的B+树)画一下b+树的数据结构?现在有index(a,b,c),联合索引使用(a,c)会使用到索引吗?使用(b,c)会使用到索引吗,结合b+树的图来说说

4.explain主要看哪些字段呢?你知道哪些扫描表的方式呢,除了ref

5.讲讲常见的反爬虫方式?对于验证码的处理方案是怎样的?你有了解业界一些其他的***IP的相关方案吗?

6.最近看了什么书?你觉得哪里让你印象深刻?(我说的docker的资源控制)它底层如何实现的?可以用笔画画图。虚拟机和Docker有哈区别呢?你还知道哪些虚拟化方式呢?如果集群中的部分容器挂掉了,怎么办?如果虚拟机的资源占用导致别的虚拟机挂掉了,怎么办?

HR面

1.你对美团的面试有啥感受?感觉自己发挥得如何?

2.你觉得自己最大的缺点是啥?

3.你是哪里人呢?为什么想留成都?你有女朋友吗?她在哪里?

4.听说你手上有一些Offer了?现在就已经发Offer了?(有的发了,有的发的录用意向书)为什么要拒offer呢?

5.你有什么想问我的吗?

Bilibili(等消息)

运维开发工程师

一面

1.说说你的项目?如何做的分布式定时任务调度器?你的分布式节点是如何消费任务的,如何保证任务不会丢失?我看你也用过celery,这里为什么不用celery的定时器来做呢?(celery定时器有单点故障问题,还有就是自己想动手模拟一下celery的相关功能)

2.你觉得用什么方案可以提高爬虫的并发请求量呢?(这里提到了epoll和多线程等)我用异步的方案是如何知道我的数据已经准备好了呢(不知道是不是想考察回调)

3.你平时Git用得多吗?讲讲你平时的分支管理策略吧?讲讲你的发布策略是基于主干分支发布的吗还是基于其他分支发布的?

4.除了Python,还了解别的语言吗?我说了Java和Go。你更倾向于哪门静态语言呢,为什么?

5.场景题:实现一个类似tail的功能,现实场景下有很多日志,它们产生得很快,比如我要查看100行,如何保证切割日志的时间点我查看到的日志不会丢失,即可能有一些行已经在其他文件中了?(我答了通过偏移量来做,面试官后来说了可以用一个线程来监控日志切割这个事件,然后再通过偏移量来做,并且日志切割的时候注意使用inode作为一个文件唯一的依据)

6.场景题:CDN中,有多个运营商,然后每个运营商对应了海量IP,我现在有个IP,如何通过IP查找到对应的运营商?(二分)

二面

1.项目介绍,然后问了细节:(1)***IP源;(2)和同类项目的效果比较;(3)项目怎么做的分布式;(4)项目使用Prometheus如何做的监控,监控了哪些指标;(5)分布式消息的数据结构是如何的?去Redis取数据会加锁吗?

2.Docker网络模型?有了解第三方的网络模型吗?

3.Docker Cgroups可以限制哪些资源?cupsetcpushare有啥区别?要是使用cpuset的话,cpu用超了会怎么样?(这里我没答出来,下来想了一下,超了的话也不会影响别的cpu吧,只是说>100%cpu占用会影响应用程序本身,内存用超了可能出现OOM

4.你有什么想问我的吗?(1)组里技术栈 (2)你看重应届生什么技能或者素质

5.我给你讲讲整个招聘流程吧,后续会有hr联系你?

拼多多(Offer)

基础平台开发工程师

一面

1.自我介绍

2.项目介绍

3.进程和线程的区别

4.TCP和IP协议的区别

5.TCP三次握手

6.讲讲Docker和K8s

7.epoll和select的区别

8.数据库索引用的什么数据结构?为什么用B+树?红黑树和搜索二叉树有什么区别,红黑树有什么好处?

9.写一个堆排序

10.协程了解吗,简单说说

二面

1.自我介绍

2.项目介绍,具体问了微博的模拟登录实现,验证码识别细节

3.HTTP协议讲讲你所知道的。我讲了HTTP Request,HTTP Response的具体内容,HTTP方法,HTTP状态码等

4.HTTP如何知道这次响应所有的数据都已经准备完了?(通过content-length?)我如何区分header和body中的content-length?(通过添加一个结束标记符?)

5.Redis的高可用方案有哪些?分别有什么优缺点呢?

6.MySQL具体场景问题:(1)查询姓“王”的同学(2)查询不重复的字段(3)表数据量大了,要根据姓名进行查询,如何做?(4)这种方式索引为什么有效?(5)给性别加索引可以吗?

7.MySQL有哪些存储引擎?各有什么优缺点?

8.算法题:(1)多叉树求最近公共祖先(不会,然后让写二叉树的公共祖先)(2)快排

9.有什么想问我的吗

很久没写算法了,脑袋生锈了,估计挂了,算法题都没搞定

HR面

1.父母做什么的

2.工作意向城市

3.手上有哪些Offer

4.自己的就业意向(基础平台或者运维开发)?为什么?

5.有什么想问我的吗?

vipkid(等消息)

云平台运维工程师

一面

1.自我介绍

2.你对于运维是如何理解的

3.项目介绍,然后问了很多项目细节上的问题

4.意向城市是哪里,手上还有其他Offer吗

总体来说,面试难度中规中矩,问题基本上是围绕着项目展开的,这个不太具有参考性,所以不贴详细问题了

二面

1.自我介绍。在自我介绍的时候说到了《SRE运维解密》,然后就问了读这本书的收获,还有对运维的理解

2.项目介绍,围绕项目问了很多东西。然后出了一个场景题: vipkid在国外有很多机房,每个机房可以提供很多***IP,你如何设计一个工具来抓取国内的网站,让效率最高(经过沟通,发现面试官想听的是GFW这个点和域名负载均衡这个点)

3.docker的网络模型?每种网络模型的优缺点

4.k8s各个组件有什么?又扩展了一个场景题: 在国内外vipkid有多个机房,每个机房可以提供很多***IP,你需要利用k8s集群搭建一个爬虫平台,对国内某个站点进行抓取,你会怎么设计?(这里他想听的是k8s的调度策略的实现,还有动态伸缩)

5.有了解别的公司容器这部分是怎么做的吗?有拿到哪些公司的offer呢?你对工作城市有啥要求呢?

总的来说,还是围绕项目问的,扩展问题比较有意思。基础知识基本问的很少

猿题库(拒了二面了,面疲了)

服务端开发工程师

一面

1.自我介绍

2.项目介绍(背景、做的工作、实现的方法、亮点、遇到的问题、解决方法)

3.HTTP2.0和HTTP1.0有哪些区别?

4.TCP四次挥手过程?为什么需要四次挥手?如果服务器和客户端同时断开,挥手过程又是怎样的?每次挥手的状态机是怎样的?

5.端口占用后,如何处理?写一下命令

6.手写代码:一个字符串里,去除两个相邻的char,得到一个新串,比如aab->b, aadcbbcd->''

7.场景题:游戏地图里,找到离自己最近的玩家,给定如下数据结构: Point(x, y), Map(Point leftBottom, Point rightTop),再给定一个函数findAllInRange(Point leftBottom, Point rightTop),实现找离自己最近的玩家的函数(主要思路,二分+圆)

91ACT(Offer)

游戏运维工程师

一面

1.自我介绍

2.为啥要做运维开发呢?你对职位是如何理解的?

3.会做Web开发吗?(我就简单说了一下自己做Web开发的经历)为啥你的个人博客要用uwsgi呢?(我说Nginx无法理解Flask的参数,Flask也无法理解Nginx的参数,需要一个通用网关,他说是这样吗,确定flask无法直接和nginx使用吗?这里我有点不是很懂,就直接说的不大懂,以前实验没找到这方面的资料)

4.了解Redis都有哪些高可用方式呢?

5.我们这边持久化都是通过Redis做的,你知道Redis的持久化方式吗?(AOF和RDB)现在有这么一个场景:我要几乎精确的还原任何时间点的数据,在不修改Redis源码的基础上,应该怎么做?(我本来说的是通过改写Redis的AOF协议,加上一个时间戳,后来面试官提了不改变源码,结果没想出来,面试官这时候告诉我可以通过一个线程每个时间点都打一个时间戳到Redis中,然后AOF文件中也会有这个时间戳,那么我们截取该时间戳及之前的即可)

6.了解Docker和K8s吗?你是出于什么样的动机去学习它们的呢?你觉得K8s有哪些好处呢?(灵活编排,动态伸缩,滚动更新)

7.手上还有哪些Offer呢?你的意向呢?

二面

1.谈谈你对运维开发的理解?

2.你是怎么看待DevOPS和SRE的区别的呢?(我觉得SRE可能更偏开发一些工具,解决现有一些瓶颈和问题,对编程能力要求较高,而DevOPS更偏打通运维和开发的隔阂,具体会做一些CI/CD的事情,也会开发一些自动化工具和做一些自动化的工作)

3.你对Docker的镜像是如何理解的?K8s你是如何理解的呢?它适用哪些场景呢?

4.你是从哪里听说我们公司的呢?

5.听说你现在手上也有很多Offer了?你会如何做选择呢?意向的工作城市和期望的薪资呢?

其它问题记不清楚了,大概都是围绕DevOPS的话题展开的,给我的感受就是交流多过提问,所以说面试也是一个学习的过程吧

三面

三面是Boss面,91ACT的厂长,很有亲和力,聊了聊他对游戏,对团队管理的一些看法

整个面试下来感觉很不错,每个面试官都很Nice,公司规模不算大,听说每天工作7个小时,加班按1:1的工资给加班费,感觉这在游戏行业算是一股清流了

keep(拒了二面了,感觉有点累,面疲了)

一面

1.自我介绍

2.项目介绍?***IP怎么来的?封IP的时候有不有测试一个合适的抓取间隔?

3.算法题:求最大公倍数和最小公约数

4.算法题:从左上方到右下方的经过的点,求得到的最大值。说思路,并且阐述一下算法时间复杂度和空间复杂度

5.Linux命令:du和df的区别;当我们挂载一个盘的时候,可能用du看起来只有40个G,实际上有100个G,这是为什么?

6.Linux命令:2018-09-11 14:00:00 status:fail time:110ms msg:....... 按延迟从小到大排序,命令能写多少算多少

7.你有什么想问我的吗?


其实上述大多数问题都是根据简历或者项目来问的,很多面经说的引导面试官,其实把你的简历做好充足的准备便是第一步。因为你只有对你简历提到的基础知识都了熟于心,这样才能在上面扩展。比如我的简历的基础知识写得有熟悉MySQL,了解其常见优化方式,然后很多面试就问了这个,也有很多扩展,可以看上面的具体问题。我相信很多做后端开发的同学简历上也写了这句话。要是面试官问你,MySQL的优化方案有哪些,你觉得怎样的回答会脱颖而出呢?这类问题说起来也简单,因为网上有很多资料,但是也可以说不简单,因为光是把它说成一个体系我觉得还是要看过一些书,动手做过一些实验才会了解的。这个时候我们说的越是成体系,那么肯定面试官会越满意。比如我的回答方式是这样的:

在我看来,MySQL的优化可以从这几个方面考虑:(1)服务器日常运维和配置;(2)SQL查询优化(涉及到索引的底层数据结构,各种数据结构和存储引擎的适用场景);(3)客户端的优化;(4)其他一些优化;(如加缓存中间件)

然后再把每个点都展开说(比如我这个基础知识点就准备了大概4页纸的回答)。

这样不仅逻辑清晰,并且面试官会认为你是真的懂这个东西。这样做有两个好处:(1)你把熟悉的东西说得越多越清楚,面试官问别的问题,特别是问到你的短板知识的可能性就越小;(2)有的面试官会比较在意你是不是有个闪光点,比如数据库,网络,算法,容器技术等,可能一个点你掌握得很透彻,就足以打动面试官了。

第一次发面经,诚惶诚恐,希望对大家有帮忙。也希望自己拿到的Offer各方面都令自己满意。

#秋招##面经##Python##运维工程师#
全部评论
我擦,牛逼啊
1 回复 分享
发布于 2018-10-09 22:01
太棒了!感谢楼主分享!
点赞 回复 分享
发布于 2018-10-09 21:06
收藏收藏
点赞 回复 分享
发布于 2018-10-09 21:13
运维大佬 ~
点赞 回复 分享
发布于 2018-10-09 21:16
哇哇!!巨佬啊,面经收了,帮助好大!!!非常感谢
点赞 回复 分享
发布于 2018-10-09 21:33
大佬厉害啦。 顺便问一下,我近期想用python做GUI,楼主有什么建议吗?
点赞 回复 分享
发布于 2018-10-09 22:03
太厉害啦,很好的分享~~
点赞 回复 分享
发布于 2018-10-10 10:23
感谢分享!
点赞 回复 分享
发布于 2018-10-10 12:00
太强了lz,大佬打算去哪里?
点赞 回复 分享
发布于 2018-10-10 16:19
求楼主博客以及github地址!
点赞 回复 分享
发布于 2018-10-10 16:30
大佬你图森三面的面试官估计是我一面的面试官。。问的题都一样。。。我算法题没想出来。。
点赞 回复 分享
发布于 2018-10-10 16:40
关键词:比下有余
点赞 回复 分享
发布于 2018-10-13 21:29
九月就结束了秋招。。我十月才开始投简历。。
点赞 回复 分享
发布于 2018-11-15 07:50
大佬,是真的强。
点赞 回复 分享
发布于 2019-09-22 14:07
楼主博客可以给我看看吗
点赞 回复 分享
发布于 2019-11-05 00:09
楼主,实在是厉害呀,学到了很多
点赞 回复 分享
发布于 2019-11-18 12:58
楼主,可以发下github地址吗,在主页上没找到呀
点赞 回复 分享
发布于 2019-11-23 09:27
这是大佬啊,记忆力真杠杠
点赞 回复 分享
发布于 2020-03-31 21:10
我的天,这真是一篇高质量的面经,膜拜一下
点赞 回复 分享
发布于 2020-05-02 19:31
&来学习下
点赞 回复 分享
发布于 2020-05-09 12:22

相关推荐

1.TCP三次握手2.CPU寻址  虚拟内存的作用3.HashMap底层原理详细说一下  扩容是两倍说错了!!4.为什么扩容是两倍数组大小是2的幂时,可以用位与运算,更高效,而不是非2的幂时的取余运算(hash%length),同时,也也可以确保哈希码低位被使用,键更均匀的被分布在桶间。5.Sleep和wait的区别6.Java中四种引用Java四种引用类型 - Helldorado - 博客园强引用、软引用、弱引用、虚引用强引用:Java默认创建对象的引用,即时内存不足(OOM)也不会回收,除非手动置为null软引用:比较重要,除非发生OOM不然不回收弱引用:可有可无,GC时回收,不管是否发生OOM虚引用:每次get都返回null,说明无法通过虚引用获取对象,随时可能被回收,一定要和ReferenceQueue(引用队列)结合使用引用队列:当垃圾回收器回收时,可以将引用加入到相应的引用队列,垃圾回收器就可以通过引用队列判断当前对象是否回收,虚引用必须有引用队列7.CAS是乐观锁还是悲观锁8.类加载过程分为哪几部9.JVM三个默认的类加载器10.BootstrapClassLoader负责加载什么11.Linux服务器cpu飙升怎么排查12.内存泄漏怎么排查?怎么样会导致内存泄漏13.Mysql的事务隔离级别14.慢查询用什么命令去排查15.说说索引失效的四种情况16.Mysql有哪几种锁17.InnoDB为什么用B+树作为索引18.简单介绍Spring的AOP19.AOP使用了什么设计模式20.算法  简单dp:n阶台阶,一次可以走一阶或者两阶,求方案数#邦盛科技#
查看20道真题和解析
点赞 评论 收藏
分享
68 491 评论
分享
牛客网
牛客企业服务