校招官网投递
2轮技术1轮hr
自我介绍
四个场景题:
select ..... where B = 20 and C > 200, select .... where A = 10 and B = 20 and C = 30,如何建立索引最高效
4TB的文件,文件每一行都存储一行数字,如何高效判断一个数字在不在这个文件里面,限定内存
40亿数字,限定100M,如何找到最大的100个数字
如何设计一个更加高效的LRU缓存
常用的Linux命令有哪些
CPU飙高问题如何排查
常用的Redis的数据结构有哪些
tcp是如何保证可靠传输的
tcp和udp的区别
服务端出现大量time-wait的原因是什么,怎么解决
介绍一下虚拟内存,操作系统如何管理虚拟内存
mysql的日志都有什么,作用是什么
mysql的索引结构是什么
常见的负载均衡算法有哪些
算法:岛屿数量
面试流程:
自我介绍
问项目(详细内容,怎么针对这个项目设计测试用例)
无八股
怎么保证产品质量
测试人员可以做什么推动开发的质量提升呢
无手撕,感觉像是kpi,面试官反馈还行,但是今天挂了,头一次一面挂
八股部分:
Python相关:可变不可变类型,装饰器原理和具体应用,深拷贝浅拷贝,进程和线程;
MySQL相关:事务是什么,事务的特性,主键索引和唯一索引的区别;
计网:TCP三次握手,为什么要三次握手;TCP和UDP的区别,从输入网址到响应的全流程;
手撕部分:
简单SQL查询
合并区间(intervals为指定类型非数组)
感受:
面试官不想听测试理论,想听实操。基本不会,面试官全程叹气;既然想要有测开实习经验的为什么要约面我呢
基本面完测试部分心态已经崩盘了
4轮技术面+1轮hr面,hr面主要咨询目前有哪些offer,工资地点是否服从调配,以及之前的项目中,如何进行团队合作的,5轮面试都是1对1面试
面试官问的面试题: 问简历的内容,其实还行。主要环节是,智能指针拷打,一致性哈希拷打,RPC拷打。
用过C++11吗?
用过
知道 unique_ptr 吗?
知道,是独占所有权的智能指针
怎么实现独占所有权?怎么转移所有权?
b = a; 怎么实现?b = move(a); 怎么实现?
就是说了移动构造函数/移动赋值运算符的流程
知道 shared_ptr 吗?
知道,是共享所有权的智能指针
怎么实现的共享所有权?
引用计数
引用计数和管理的内存地址怎么实现的?是同一块内存空间吗?
都在堆区
make_shared 会放在同一个空间
引用计数和管理的内存是相生相依的吗?
没搞懂,最后就问了这两个是同时创建的吗?
其实不是,传入 new xxx 的构造函数就不是
同样问了 shared_ptr 的 b = a; 怎么实现?b = move(a); 怎么实现?
同样说了下拷贝构造函数/拷贝赋值运算符、移动构造函数/移动赋值运算符的流程
(想问点分布式存储相关的)知道raft吗?
只了解是个分布式共识算法,没了解具体内容(论文都没看,我可不敢说我了解了)
看我没有相关经历,那就挖一挖简历吧
知道一致性哈希吗?
顺便提了一嘴自己的RPC实现了这个东西
解释一致性哈希是什么,然后开始深挖一致性哈希,怎么减少这种数据的移动,分桶结果改变的
然后开始引出虚拟节点
互斥锁,信号量使用的场景区别
一个线程互斥,另一个线程同步
互斥锁,读写锁,自旋锁的区别
八股文,只说了自旋锁,就没让继续说了
怎么实现自旋锁
说了原子操作,test and set指令(tsl)
RPC的实现流程?
八股文
怎么在同一个端口,发布多个服务?
就说说自己咋实现的
怎么实现的超时?
socket设置,recv超时
然后开始问重试机制,如果需要我实现应该怎么实现?
最大重试次数,计数
如果同时发出很多个RPC请求,这个qps上不去,咋办?
不知道,想了一会说,也不能总是创建很多个线程吧
然后就说可能得用I/O多路复用了
RPC调用的同步和异步,和之前说的同步和异步,是一个意思吗?
socket的同步阻塞,是收到数据前,一直阻塞,等着
这个是在得到调用结果前,是否可以继续做下面的事情
那我继续问,如果同一个RPC调用,按照你之前的重试机制实现,如果前一个请求(涉及到写,非幂等,比如文件创建)是成功的(但是做的太久,设置的超时太短,以为超时失败了),后面重试的请求失败了(显示文件已创建),应该怎么解决?
想了很久,说同一个请求的数据包都是通过请求id关联的,
那么每个请求,都单独开个线程去等(因为重试的次数本就不多),然后请求到的结果,放入哈希表,当然,也放到队列里面
通过请求id,索引哈希表,看看有没有最近的成功请求结果,如果有,之后的失败请求,就没必要记录了
那么,根据这个实现,如果第一次的请求是响应成功的,但是由于网络原因失败,应该怎么办?
不懂了,之后没继续深挖
那么就说webserver吧(简历的项目名称不是webserver,不过被一眼看出,老面试官了)。你知道I/O多路复用机制,除了epoll,还有啥吗?
select,poll,原理差不多,没让说具体原理
ET和LT的区别?
八股文
ET和LT哪个性能更好?
一般认为ET更好,毕竟可以从内核中少拷贝就绪文件描述符
但是,ET伴随着使用非阻塞socket,要一次性读完、写完数据,也就是说可能进行的 read 或者 write 系统调用会更多
至于是否真的更好,目前没有定论,需要在更多的环境、场景下去测试