美团测试开发面经1
1、项目经验和实习经历
2、面向对象和面向过程的区别
面向过程就是分析出解决问题需要的步骤,然后用函数把步骤实现,使用时依次调用;
面向对象就是把整个问题分成多个对象,然后提供对象在解决整个问题的步骤中所需要的功能;
面向过程:
不需要实例化,性能较高,但是不易维护,复用扩展;
面向对象:
需要实例化,降低代码直接的耦合,使系统更加灵活、易于维护、易于扩展。
参考:面向过程与面向对象编程的区别和优缺点 - TerryChou - 博客园
3、死锁问题(重点)
死锁定义:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
产生死锁需要四个条件:
1)互斥条件:一个资源只能被一个进程使用;
2)请求与保持条件:一个进程因为请求资源而阻塞时,对已获取资源保持不放;
3)不可抢占条件:进程已获取的资源,不能强行剥夺,只能自己释放;
4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
参考:c++多线程之死锁的发生的情况解析(包含两个归纳,6个示例) - CSDN博客
死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法 - CSDN博客
4、测试相关知识,接口如何测试,函数如何测试
接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。
5、反转单链表和双向链表,树的前序遍历,排序算法,手写冒泡
class Solution {public: /** * @param A: an integer array * @return: nothing */
void swap(int& a,int& b){ int temp; temp = a; a = b; b = temp; }
void sortIntegers(vector &A) {
// write your code here
for(int i = 1; i < A.size();i++){
for(int j = 1;j < A.size()-i+1;j++){
if(A[j-1] > A[j]){
swap(A[j],A[j-1]);
}
}
}
}
};
6、黑猫白猫问题
7、进程与线程(进击的小学生还要再过一遍)
9、为什么做测试
https://www.cnblogs.com/feng0815/p/7509541.html