SRE Daily Internship First Round Ii
虾皮-运维日常实习一面面经
问题
- 自我介绍
先拷打了实习
-
你简历上写的实习经历是你负责公司海外网文平台和后台管理系统,能更详细说说你在里面具体做的事情吗
-
你刚刚有提到负责开发后端的一些接口、实现一些功能,你能举一个实际的接口开发过程的例子吗,比如你接到这个需求之后是怎么去思考、分析和设计的,用到了哪些组件,或者说 db,然后你是怎么去实现交互的
-
那假设这个接口的功能你这边已经开发自测好了,那到最终这个功能要上线,中间会经过哪些环节,会用到哪些工具,或者说你们是如何发布到线上的
-
我看你投的岗位是 db 的运维工程师,我想问一下你对这个岗位的理解是什么,你知道这个岗位的主要工作是什么吗
-
运维其实分为大的三类,分别是最外层的面向业务的业务运维,中间的叫平台或者系统运维,下面的叫 db 运维,你投简历时投的是 db 运维工程师,那你的意向实际是偏向哪里
-
你实习工作中有接触过 Linux 系统吗
接着拷打操作系统和计网的八股
-
假设我发现我的一台服务器上面的 cpu 使用率很高,在告警,对于这个场景你要怎么去排查(面试官提示操作系统相关的问题回答时最好能给出相关的指令)
-
我该用什么样的指令看当前服务器上正在运行的项目
-
一个进程在操作系统中,它有哪几种状态表现
-
那如果你发现某个进程它的内存使用很高,你会怎么去排查来解决这个问题
-
那假设你现在的服务部署上去了,但在启动时报错,然后报错的提示说系统空间不足,那对于这个问题你会怎么去排查
-
假设是磁盘空间不足的话,你会怎么去看然后怎么去解决
-
你在实习过程中或者你自己有在 Linux 操作系统里面做一些实际的操作和开发吗
-
假设你现在开发了一个你刚刚提到的获取书的周排行的功能,你开发的这个后端服务上线了,结果运行了一天之后,可能因为某一本书特别爆火,然后有很多人都来看,前端可能触发了某个异常然后来调用你的接口,调用得很频繁,在你的这个服务接口所在的操作系统里发现,有很多 time_wait 的连接状态,那你觉得导致这个问题的原因是什么,然后你可以怎么去优化解决这个问题
-
time_wait 状态是怎么出现的
-
如果站在网络的 TCP 协议层面去看的话,time_wait 是在什么情况下产生的
-
你能讲一下 TCP 四次挥手的详细过程吗
-
time_wait 会出现在连接的哪一方?
-
那如果站在 TCP 连接层面来看的话,要解决 time_wait 连接数很多的问题,最直接的方式是怎么去优化
然后问了一些数据库相关的八股,涉及 redis 和 MySQL,另外还有 nginx、docker 相关的一点东西
-
你刚刚提到有一种方式是可以通过 redis 做缓存来降低对于后端服务的访问压力,那你知道 redis 的过期 key 的删除策略有哪些吗
-
我们在 MySQL 里面去创建一些数据库的话,为了提高数据库的查询效率,一般我们会去创建索引,那在创建索引时需要注意什么
-
创建索引时我们的匹配原则应该是什么样的,是左前缀还是右前缀
-
如果我对某个字段做了索引,那索引列它能参与计算或者函数操作吗
-
索引的优缺点有什么,索引的类型有哪些
-
什么样的场景索引会失效
-
你对于一些组件,比如说负载均衡,nginx,有了解吗
-
假设你现在搭建了一个个人博客,你要对外发布,那你在 nginx 上需要去做哪些关键的配置
-
我看你的项目经历里有写涉及到 docker、k8s 相关的一些东西,如果你需要自己写一个 dockerfile 去启动一个容器的话,在 dockerfile 里面你会用到哪些关键的指令
-
那假设我想从外部去拉一个依赖的包,来对我的服务进行编译构建,那在 dockerfile 里面我应该用什么指令
-
那如果我想让我的容器启动的时候默认以某个进程启动,我应该用什么指令去指定
最后是一道 SQL,不是算法题,因为当时没剩下什么时间了加上我没怎么准备过手撕 SQL 实在撕不出来,就问了点问题
- 手撕 SQL:
找工资排名前五的部门员工
详细描述
Employee 表:id,name,salary,departmentId,Id 是该表的主键列。departmentId 是 Department 表中 ID 的外键。该表的每一行都表示员工的 ID、姓名和工资。它还包含了他们部门的 ID。
Department 表:id,name,Id 是该表的主键列。该表的每一行表示部门 ID 和部门名。
高收入者是指一个员工的工资在该部门的不同工资中排名前五。
编写一个 SQL 查询,找出每个部门中收入高的员工。
Department | Employee | Salary
输入输出描述
输出描述 查询字段如下: Department | Employee | Salary
-
时间关系,你说一下这题的思路以及关键点是什么
-
你应该取工资还是员工
-
这里面会用到哪个函数
-
说一下 DENSE_RANK() 和 ROW_NUMBER() 这两个函数的区别
无反问
反思总结
这场是 9.25 面的,差不多三周前了
其实本来是国庆最后那一两天发出来的,但七号突然开始发烧,连续烧了四五天,大病一场,直到上周天才好转,这周周中又要上班并且学校还有各种事情,就拖到现在才整理完
这是第二次面虾皮了,岗位其实是一样的,但面试官风格挺不同的,这次这场就一直在问各种指令,但我实际上并没有专门背过(谁不是要用到了去查一下然后用多了就会了👉👈),所以其实很多问题回答得都不太好,特别是操作系统的几个场景题目,面试官也一直在强调运维岗和研发岗的区别,说运维就是会更偏底层,然后需要对于这些指令非常熟悉才行
再加上我自己对于八股的熟练度还是不太够,尤其是最后还手撕的是 SQL,直接当场懵了,之前一直都是刷算法,自然也就没有撕出来,其实能感觉到题目并不是很难的那种,这是我第一次在面试中遇到手撕 SQL 而不是算法题
无论如何,面经应该就先整理到这里啦,短期内不会再面了,要等到十二月才会再次开始海投什么的,我还是先再好好准备一下吧;本来还有一篇面腾讯 wxg 客户端开发的面经,部门是企业微信,但由于那场我是组内直推所以其实面试流程跟正常的不太一样,参考价值并不是很大,而且我未来的方向也不会把重心放到 cpp 上,所以就不整理啦
最近是准备边实习的同时,刷算法题看八股和准备项目、实习可能被问到的问题这些老生常谈的当然会继续弄,但我另一个方向准备是要回归自己对于技术的热情,感觉之前实在是太面试导向了导致很多东西总是容易背了忘忘了背,希望自己能在实操中找回一些东西,目前的想法是先把自己的网站好好搭起来,把各个招聘网站的门面弄好一点,再部署几个项目,争取更有竞争力一点,然后专注于某个领域深挖一下,不出意外会是 go 的高并发云原生什么的,后续应该会写几篇技术博客发出来,主要是记录自己的学习过程和一些经验心得
周末快乐!
继续加油,无限进步~