北京-快手 一面面经

1.自我介绍

面试官:“你先做一下自我介绍吧。”

:“面试官您好,我叫XX ,是XX大学网络工程24届应届生,本次应聘的是贵公司的运维开发工程师,我现在是在XX公司当运维开发实习生,主要负责的内容是Shell脚本维护,数据库集群搭建,LVS的配置;大二的时候是在XX做Java开发实习生,工作内容是参与XXWeb平台的开发,和数据爬取处理的工作。现在呢我对运维方案也有了自己的一些理解,后续职业规划也是朝着SRE,和运维这方面发展,希望能够成为快手运维的一份子。”

面试官:“讲下你在实习中遇到的某个问题,解决办法,以及对自己的提升,在其中学到了什么?”

我:“我现在的主要实习工作是写Shell脚本,在上上周的时候有个需求是产品版本升级,需要写了一个seaweedFS ——分布式文件存储的安装脚本,并导入一些系统配置,我在之前是没有用过这个文件存储系统,然后按照网上的系统安装步骤,转成Shell 脚本进行安装,在我写好这个脚本之后自己测试是可以正常安装的,但是当我把这个脚本添加到原来的产品一键部署脚步后,发现这个脚本异常终止,遇到这个情况第一反应就是换一个虚拟机重新试一下,发现还是不行,依旧异常终止;确定不是电脑环境问题,这个时候就需要看启动日志了,我cd 到seaweedFS 的安装目录,然后用less命令查看日志,发现是ElasticSearch 报错,当前集群状态为“red”,seaweedFS 配置错误;询问了开发人员了解到,初始化安装的时候默认往seaweedFS 存储了一些文件,然后需要保存到ElasticSearch 方便检索,但是现在ES状态为Red不允许插入数据,所以报错;后面更改了脚本逻辑在安装seaweedFS之前先判断ES集群状态,等待集群健康值为yellow或为green时再进行,seaweedFS的安装。其中提升了排错的能力,然后也了解到学技术,做SRE不是埋头苦干,需要和同事多交流,才能够提示自己的效率

面试官:“有了解ES状态为什么会是red吗?或者说什么情况下才是green,yellow?

我:“有了解,只要是ES有一个主分片未分配完成就是red状态,主分片分配完成,但是副本分片没有分配完成就是yellow,可以把yellow当成是一个warning其实是不影响我们的正常使用的(毕竟我搭建ES的状态全是yellow 哈哈哈),副本分片和主分片均分配完毕,集群状态就是green

2.计算机网络

面试官:“我问点计算机基础,TCP四次挥手过程讲一下

我:“四次指的是,客户端A发出一次断开请求,服务端先返回一次我收到了你的断开请求,然后再返回一次我已经断开了,之后客户端向服务端发送一次,我知道你已经断开了,总共四次;具体的细节就是三次握手后Client端和Server端都进入ESTABLISHED状态,Client 发送SYN=1,和序列号seq=u 给服务端,自身进入FIN_WAIT_1 状态,服务器收到请求后发送ack=u+1,seq=v,ACK=1,Server端进入close_wait状态,Client端接收到后进入FIN_WAIT_2状态,之后Server端再次向Client端发送报文,FIN=1(表示关闭),seq=w,ack=u+1,进入LAST_ACK状态,Client收到后进入TIME_WAIT状态,像Server端发送ACK=1,seq=uu+1,ack=w+1等待2MLS后进入Closed转态,Server端收到后也进入Closed状态

大概是下面这个样子

面试官:“TCP拥塞控制是怎么做的?

:“TCP进行拥塞控制有四个部分,慢开始,拥塞避免,快重传,快恢复;慢开始从小到大加倍增加拥塞窗口的数值,拥塞避免:每经过一个往返时间RTT就把发送发的拥塞窗口加1,而不是像慢开始阶段那样加倍增长;快重传:接收方快速重传丢失的报文;快恢复:与慢开始类似,慢开始在TCP连接建立时或者是网络拥塞后才使用,快恢复是在遇到3-ACK时触发,常常伴随着快重传”

3.操作系统

面试官:“操作系统内存寻址过程

我:“忘了

面试官:“操作系统中死锁的处理策略?”

我:“构成死锁有几个必要条件,资源独占,不可剥夺,保持申请,循环等待;死锁预防可以通过破坏这几个条件来实现,死锁避免银行家算法”

面试官:“Linxu 防火墙配置 禁用一个ip,禁用某个TCP 端口,聊天框打出来”

禁用一个端口

firewalled-cmd --zone=public --remove-port = 8080/tcp --permant

禁用一个ip

firewalled-cmd --permant --remove-rich-role="rule family="ipv4" source address = "xxx.xxx.xx.xx" port protocol="tcp" port="8080" accept"

面试官:“iptables 会吗?

我:“不会,我都是用的firewalld-cmd”

4.Java

  • Java 忘的有点多,大佬们帮忙补充吧

面试官:“Java String,StringBuilder,StringBuffer 的区别联系”

HashMap底层怎么实现的

HashMap 怎么解决哈希冲突

SpringBoot Bean的生命周期

面试官:“SpringBoot, IOC是什么,设计的好处?”

我:“IOC 控制反转,是一种软件开发的思想,将对象创建交给了IOC容器进行管理,然后我们通过依赖注入@ Autowired @ Resource 的方式来调用;好处是降低了程序的耦合性,让程序员更加专注于业务,比如操作数据库,xml到mapper再到service,再到Controller,每一层我们不太需要关注他的下层是怎么操作的,只管用就行,这也是我理解的Java面向接口编程;对于测试来说,也只需要依赖注入对应的层进行测试,同样是减少耦合”

面试官:“MySQL索引采用什么数据结构,说下自己的理解?”

我:“MySQL采用的是B+树的存储结构,查询数据其实都是和磁盘IO次数有关,越少的话查的也就相对越快,而B+树的特点就是树的高度其实不会很高,他的数据存储在最下面一层也就是叶子结点当中,查找从根节点开始,每一个子节点都有关键字和一些记录项,顺着树的分支进行查找,就能找到目标节点”

5.算法

算法题:数组第k大个数(自己写样例输入输出,尽量不要用库)

(一个 快排+分治 敲了20多分钟,提交19次,我tm真是个菜b)

c++ 版


#include<iostream>
#include<vector>
using namespace std;
int quickSortGetK(vector<int> v, int left, int right, int k) {
    if (left >= right) return v[left];
    int key = v[left];
    int i = left;
    int j = right;
    while (i < j) {
        while (key <= v[j] && i < j) j--;
        while (key >= v[i] && i < j)i++;
        cout << i << " " << j << endl;
        swap(v[i], v[j]);
    }
    swap(v[i], v[left]);
    if (i == k) return v[i];
    if (k < i) return quickSortGetK(v, left, i - 1, k);
    else return  quickSortGetK(v, i + 1, right,k);
}
int main() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        int data;
        cin >> data;
        v.push_back(data);
    }
    int k = 3;
    cout << "到这" << endl;
    cout<<quickSortGetK(v, 0, v.size() - 1, v.size()-k);
}
/*
* 10 2 5 3 6 3 6  3 6 3
*/

go 版

package main
import "fmt"
func sortArray(nums []int, k int) int {
	var quick func(nums []int, left, right int, k int) int
	quick = func(nums []int, left, right int, k int) int {
		// 递归终止条件
		if left >= right {
			return nums[left]
		}
		// 左右指针及主元
		i, j, pivot := left, right, nums[left]
		for i < j {
			// 寻找小于主元的右边元素
			for i < j && nums[j] >= pivot {
				j--
			}
			// 寻找大于主元的左边元素
			for i < j && nums[i] <= pivot {
				i++
			}
			// 交换i/j下标元素
			nums[i], nums[j] = nums[j], nums[i]
		}
		// 交换元素
		nums[i], nums[left] = nums[left], nums[i]
		if k < i {
			return quick(nums, left, i-1, k)
		}
		if k > i {
			return quick(nums, i+1, right, k)
		}

		return nums[i]
	}
	return quick(nums, 0, len(nums)-1, k)
}

func main() {
	var number = []int{8, 9, 20, 12, 23, 32, 10, 10, 9, 12} /* n 是一个长度为 10 的数组 */
	k := 1
	answer := sortArray(number, len(number)-k)
	fmt.Print(answer)
}


网页没代码提示,字母打错了报错我也找不到位置 ,size打成zize ,排编译错误浪费很多时间,没看懂网页的那个报错提示,早知道粘IDE上,脑袋抽了,我当时为什么不在IDE上写

反问:贵公司是哪个部门,部门业务

#快手信息集散地##快手24秋招##面经##如何判断面试是否凉了#
全部评论
歪日,运维这么卷吗
6 回复 分享
发布于 2023-08-18 11:58 浙江
这牛客排版好费力呀
6 回复 分享
发布于 2023-08-17 23:43 福建
怎么什么语言都会佬
3 回复 分享
发布于 2023-08-18 08:32 广东
到底怎样才能把四次挥手过程记得这么清楚呀😭
2 回复 分享
发布于 2023-08-31 20:33 北京
堆排序考虑一下,做最大k好理解一点
1 回复 分享
发布于 2023-08-18 09:29 北京
我来学习一下
1 回复 分享
发布于 2023-08-17 23:47 广东
试试携程,帮忙看流程,NTAW3GA
点赞 回复 分享
发布于 2023-09-11 14:36 上海
点赞 回复 分享
发布于 2023-09-01 01:21 陕西
同学请问你已经oc了嘛
点赞 回复 分享
发布于 2023-08-29 14:27 湖南
运维还要考Java啊
点赞 回复 分享
发布于 2023-08-28 18:02 四川
问我问的好简单,是不是因为一上来就暴露低水平了
点赞 回复 分享
发布于 2023-08-28 15:23 北京
好猛啊,现在感觉我挂了都很正常,放宽心了😅
点赞 回复 分享
发布于 2023-08-28 14:36 四川
m
点赞 回复 分享
发布于 2023-08-28 11:14 陕西
1
点赞 回复 分享
发布于 2023-08-18 12:01 广东

相关推荐

05-15 21:07
已编辑
门头沟学院 C++
当下就业形势极其严峻,本人目前在211大学读研,还有一个月毕业,历经千辛万苦,目前有1个专业对口的offer(主要和我导师有关,我一个专硕,却被强制要求发sci二区论文,不给做项目不给实习,坑死我了)。以下分享本人的实用经验,希望为高年级大学生指引一条正确的道路。由于这些经验都是本人经过大量实践和思考得出的,所以直接给出结论以节约时间。1.你需要重塑你的学生思维:读书归根结底是为了工作,而工作取决于市场需求而非个人能力!需求第一,能力第二!学历如果不能适应市场需求,哪怕是清华北大也没用!2.读研实现就业回报的平衡已被打破,往年对读研的认知不再适用!因为读研有高性价比的前提是市场需求不降低,但近几年的市场需求却持续大幅降低!考研/读研缓解就业的功能在急剧下降,不再具有高性价比!反而本科毕业就就业的性价比在上升,甚至在某些情况下比读研好的多,所以当下考研读研必须慎重再慎重!3.考研必须是从双非院校考到985院校才能实现高性价比!其他任何一种情况,除了必须读研的专业,不要考研!赶紧去找工作,不要犹豫!4.研究生分为学硕和专硕,读学硕就不要有硕士毕业就工作的想法,最好一口气读完博士,出来当老师或去科研院所工作。如果你考上了985的专硕,也别以为就能有好工作,得看你学的是否和工作有关!除非你的目标岗位条件中有论文要求,否则强烈建议:如果你的学院强制要求你发学术论文,否则不给毕业,请立刻退学找工作,不要犹豫!如果是你的导师强制要求你发论文,请立刻换导师!换不了也退学再找工作,不要犹豫!注意这里说的是专硕,不理解的同学请好好想想第一点。5.当下找工作必须想清楚具体岗位再找,不要瞎投简历!比如程序员岗位,这是外行的认知,但作为计算机专业的学生,你必须落实到Java/C++/Python程序员,总之,你必须确定具体的方向再投简历,如果简历没啥可写,那就先学技能,学技能也是学具体的方向,不要什么都学一点,没用。6.强烈建议大三/研二去实习,实习也是按具体岗位找,不要乱找,具体见上一点。注意,如果研究生所做项目内容和目标实习内容相近,可以不实习。实习的时候就可以准备秋招了(笔面试),请尽可能在秋招上岸,秋招的重要性远大于春招!7.找工作要线上线下火力全开,不要局限于学校的招聘会。线上,要下载至少两个求职app,比如boos直聘,智联招聘,猎聘,国聘,线上区域选择取决于你以后想在哪块发展,比如本省,长三角,慎重全国投。线下,要去至少两个大学的招聘会,大学招聘会时间可从该大学的就业信息网上查询。注意,招聘会不是宣讲会,宣讲会场次太多但是每次都是一个公司,建议以招聘会为主,宣讲会为辅。8.线下招聘会速通方法:直接收集投递渠道:二维码/邮箱/宣传册,当然前提是看准岗位。尽量别坐在位置上投简历,因为线上投也是一样的。按这个方法,一个下午看完两个招聘会应该没问题,收集完回去慢慢投即可。9.对于面试打扮,干净整齐就行。面试时要保持微笑和尊重,眼睛要尽量盯着面试官,不要乱看别处,要适当夸企业,夸自己的专业能力。如果提到校园活动之类的,可以造假,面试官不会去查。遇到知识盲区不要说我不知道,打个擦边球(相似知识)或提供个思路。面试官如果说你缺乏项目经验,你要说你基础理论扎实,自学能力强,如果贵单位给你机会,你很快能上手之类的。还有最好增加礼貌用语,比如一直用您称呼面试官,面试开始时说您好,结束时说谢谢。10.面试一般不超过两轮,如果有两轮,第一轮是技术面,第二轮是综合面,技术面就好好准备技术,综合面就多说/编造些软能力,比如校园活动,做志愿者,业余爱好等,然后一定表现得要彬彬有礼,有自信。如果问到职业规划,建议说1-3年如何,3-5年如何,比如1-3年熟悉业务成为合格的初级工程师,3-5年精通技能成为技术骨干。11.外包公司性价比不高,要放到最后考虑。专业不对口的岗位慎重投简历,放到最后考虑。如果你投的简历多了,可能有自称是猎聘公司的人打电话给你,说可以培训,培训完再交钱,这种不算诈骗,但是坑钱,性价比极低,也要放到最后考虑。总之,外包,专业不对口,猎聘公司培训都要放到最后考虑。如果你是研究生,千万别考虑猎聘公司的培训,因为在那里培训的都是本科生甚至大专生,你去了,那么研究生等于白读。12.考公考编是一条很好,甚至是最好的出路,也建议从大三/研二开始准备。如果觉得考公太难就考编,考编难度比考公低很多,尤其是考县级的事业编。不要嫌事业编工资不高,一个铁饭碗属性就吊打很多企业了,而且还有双休不加班制度,性价比不用怀疑。13.毕业后两年内不交社保即不工作还算应届生,如果毕业后工作了再读研,到研三时还是应届生。部分省份规定大学生毕业后交社保,报考公务员/事业单位时仍可按照应届身份报考,如果你符合这个规定,那么工作后再考公考编也是很好的。最后是最容易忽略的一点,考公考编和校招慎重同时进行!因为现在各行各业竞争都很激烈,要求比以前高,而人的精力是有限的,如果都准备最后可能一事无成!所以要么放弃校招,专注于考公考编,要么放弃考公考编,专注校招。或者在拿到一个offer后再考编制,留个底牌。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
75
332
分享

创作者周榜

更多
牛客网
牛客企业服务