猫眼测试开发面经(整理)
作者:小橘子454
链接:https://www.nowcoder.com/discuss/105746
来源:牛客网
一面:(60分钟)
1.输入一个网址,在浏览器中会发生什么?
https://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html
2.了解同步与互斥吗?怎样解决互斥?
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
PV是用来解决互斥和同步问题的。Peterson算法才可以算正确的且简洁的解决
a. 关中断 b. 测试并加锁 TSL指令 c. 交换指令 XCHG
3.malloc,是怎样申请内存的?
http://www.cnblogs.com/hanyonglu/archive/2011/04/28/2031271.html
4.堆和栈的区别
堆和栈的区别
-
功能不同
- 栈内存用来存储局部变量和方法调用。
-
而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。
-
共享性不同
- 栈内存是线程私有的。
- 堆内存是所有线程共有的。
-
异常错误不同
如果栈内存或者堆内存不足都会抛出异常。
- 栈空间不足:java.lang.StackOverFlowError。
- 堆空间不足:java.lang.OutOfMemoryError。
-
空间大小
栈的空间大小远远小于堆的。
5.写了一个数据库的查询语句,查询,成绩大于平均成绩60的学号
select S#,avg(score)
from sc
group by S# having avg(score) >60;
https://bbs.csdn.net/topics/280002741
6.http请求的具体格式
https://blog.csdn.net/u010002184/article/details/78885733
7.get/post的区别
HTTP请求方法我这里只讨论GET方法与POST方法
l GET方法
GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大
l POST方法
POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。
从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。
8.平时怎么测试自己写的代码?
9.写一个链表公共节点查询
public class Solution14 {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
int l1=0,l2=0;
ListNode n1,n2;
n1=pHead1;
n2=pHead2;
//求两条链表的长度
while(n1!=null){
l1++;
n1=n1.next;
}
while(n2!=null){
l2++;
n2=n2.next;
}
//让两条链表一样长,在比较第一个一样的
if(l1>l2){
int temp=l1-l2;
while(temp-->0){
pHead1=pHead1.next;
}
}else{
int temp=l2-l1;
while(temp-->0){
pHead2=pHead2.next;
}
}
while(pHead1!=null&&pHead2!=null){
if(pHead1.val==pHead2.val)
return pHead1;
pHead1=pHead1.next;
pHead2=pHead2.next;
}
return null;
}
public static void main(String[] args) {
int[] a = { 4, 5, 1, 6, 2, 7, 3, 8 };
Solution14 b = new Solution14();
// System.out.println(b.GetLeastNumbers_Solution(a,10));
}
}
10.给美团猫眼电影评论编写一个测试用例。
11.黑盒测试和白盒测试的区别
https://blog.csdn.net/qq_33642117/article/details/54571302
12.刚刚写的公共链表查询编写测试用例。
13.有没有学过java?我回答说,我愿意学。
14.指针和引用的区别,我直接举例子
https://blog.csdn.net/dujiangyan101/article/details/2844138
你还有什么要问我的
二面:(60分钟)
1.C语言程序从编写到运行的过程。
http://c.biancheng.net/cpp/html/729.html
2.静态库、动态库区别?
3.面向对象和面向过程的区别?
4.数据库事务?
5.ACID说一下?脏读、幻读
https://www.cnblogs.com/fjdingsd/p/5273008.html
6.用过哪些测试工具?
7.怎么测试项目?
8.子查询和连接查询的区别?
9.智力题:10个箱子每个箱子有10袋奶粉每袋奶粉1kg,其中有一个箱子奶粉只有0.9千克,现有一个电子称如何只称一次找出这个缺斤少量的箱子
10.代码栈实现队列
11.各种排序的稳定性,选择排序时间复杂度?最坏时间复杂度,举例最坏?
12.为什么选测试。
13.哈希负载因子
14.给我讲讲你的项目怎么测试的。
15.生产者消费者模型,什么场景我们会用到。16.一条sql语句执行比较慢原因有哪些?
17.你还有什么要问的?