岗位:测试开发工程师
部门:美团优选
一面(42min)
1、说一下OSI七层模型,每层有什么协议?
- 最上层是应用层,有
HTTP
、HTTPS
、FTP
、SMTP
这些协议;- 然后是会话层和表示层,这两层我不太了解;
- 下面是传输层,有
TCP
和UDP
;- 再下面是网络层,有
IP
和ICMP
;- 最底端是数据链路层和物理层,这两层我也不太了解,不知道有什么协议。
2、HTTP
与HTTPS
有什么区别?
3、看你简历上有写熟悉gcc
和git
,你说一下平时是怎么用它们的?
gcc
可以用来编译C程序,最近我常用它来生成动态库和静态库,比如-share
参数可以生成动态库,-L
指定动态库目录,-l
指定动态库文件名,-I
指定头文件目录等;追问1:静态库与动态库有什么区别?
静态库相当于把所需的目标文件都整合到一起,不需要外部依赖,但是体积较大,动态库可以只将需要的函数接口放进去,体积小,更灵活,但是会有外部依赖。
追问2:你有没有试过把编译好的程序放到其他机器上运行?能运行成功吗?
如果直接拷贝过去的话可能没法直接运行,需要配一些环境变量,比如动态库路径等。
git
的话我一般是用git add .
命令添加修改的文件,然后用git commit -m "commemt"
提交,双引号里面写这次修改的内容,最后用git push origin
推送到远端。追问3:你一般是直接在主分支(master)上进行修改吗?
不是,一般是从主分支拉一个新分支,在新分支上修改代码,最后再合并到主分支。
追问4:如果协同开发,那么肯定会有分支冲突,你是怎么解决冲突的呢?
解决冲突这块不太熟,答得不好,最后我干脆直接说不会解决冲突。。
4、看你简历里写了挺多排序啊,十大排序哈哈,那你说下快排的原理?
经典八股文,我一顿狂背,原理+优化方法,结果说到一半被面试官打断施法了。
追问:快排与归并有什么区别?
- 归并时间复杂度是稳定的
O(logN)
而快排是不稳定的,最好O(logN)
,最坏O(N*N)
;- 归并本身是稳定排序,快排不是。
5、你简历上说了解MySQL
,那你写几个增删改查语句吧
我说增是用
insert
,改是用update
,但我平时没怎么写过,都不会写,只会写查的语句,就是select
的语句。追问1:知道多表联查吗?
知道,用
left join
可以实现多表联查,相当于在多个表的并集里面做查询。追问2:
left join
和right join
有什么区别?
right join
我听过,但是没用过,不知道有什么区别。
6、进程与线程有什么区别?
7、用没用过管道?
用过,程序里面可以用管道
pipe
进行通信,命令行里的|
也是管道。追问1:用grep和find命令,找/root/目录下所有名字格式类似YYYY-MM-DD.log的文件中包含connection time out的日志。
我说我不会写正则表达式,面试官说可以不写,于是我解答如下:
find /root -name "YYYY-MM-DD.log" | grep "connection time out"这里被面试官秀了,本来我敲的是对的,然后他质疑说find这个地方写得有问题,我赶紧说哦哦对对应该那样写,然后他又质疑我grep那个地方写得有问题并问我是否知道xargs这个命令,我赶紧说哦哦对对应该用这个命令。然后他说刚才两点他提的都是错的,我写的本来就是对的,为了考验我是否自信。最后他说出这句话他自己都笑了,我也蚌埠住了,直接笑场。
8、为什么想做测开?
我觉得大家在学的时候应该都是往后端开发这个方向去学的,我最开始也是这么想的,但上次实习的时候发现测开其实挺有意思的。那时候我们部门有个很厉害的测开工程师,我每次实现一个功能,自己测了一下觉得没问题了,结果人家一眼就能看出很多破绽。而且做开发的话可能就只对几个技术栈比较熟悉,但是做测开的话,知识面会更广,技术栈也可以下潜很深,如果同时能保持广度和深度的话就太厉害了,所以我也想做测开工程师,往这个方向去发展。
9、既然你对测开那么感兴趣,那你最近有没有主动去了解过测开的一些知识?
有,但我现在时间很有限没有办法系统地去学,只是知道一些简单的概念,比如黑盒测试白盒测试这些概念,我还知道现在很流行用
python
来写自动化测试框架,但我自己也还没有时间去学phthon
。追问:黑盒测试与白盒测试有什么区别?
- 黑盒就是不去看程序内部,而是只根据输入输出来判断功能是否健全,好处是简单、测试成本低,但是容易遗漏bug;
- 白盒测试就是去看程序内部的实现,需要一些开发知识,成本较高,比如开发人员的自测就属于白盒测试。
面试官给我说不只是
python
可以写自动化测试框架,Java
和C++
也可以,美团自研的自动化测试框架就是用Java
来写的,只不过现在python
比较流行。
10、设计测试用例
题目:5层楼,包含地下一层,每层两个电梯厢,每个电梯厢有自己的按钮(外面),里面有许多按钮:-1,1,2,3,4,警报铃,开门、关门,请你设计测试用例。
- 进电梯按指定的楼层是否能到达该楼层,按警报玲会不会响,开门关门是否正常;
- 电梯里面应该有一套算法,比如你按下电梯,离你楼层较近的那台电梯会来接你;
- 停电的时候电梯里的应急灯会不会亮,里面通信设备能不能呼救;
- 承重方面,如果电梯人数超过上限会不会响警报;
追问:如果你第一天测,电梯是正常的,但第二天就出问题了,你会怎么办?
我觉得应该要增加测试的频度。
面试官补充:除了承重以外,还需要测一下电梯门的规格大小,比如你搬东西进去,能搬多大的东西,这也是需要测的一点。
11、问实习项目中遇到最大的困难是什么?
我说项目中要实现一个
ssh
功能,我觉得比较困难。追问:你用过
telnet
吗?telnet
和ssh
有什么区别?没用过
telnet
,不太清楚。
总结
美团测开感觉还是比较简单的,居然算法题都没写,惊了哈哈。现在面试已经比较从容了,不会的东西就直接说不会,感觉能和面试官谈笑风生,不再过分严肃和紧张。
全部评论
(3) 回帖