猫眼测试开发面经(整理)

作者:小橘子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.堆和栈的区别

堆和栈的区别

https://iamjohnnyzhuang.github.io/java/2016/07/12/Java%E5%A0%86%E5%92%8C%E6%A0%88%E7%9C%8B%E8%BF%99%E7%AF%87%E5%B0%B1%E5%A4%9F.html

  • 功能不同

    • 栈内存用来存储局部变量和方法调用。
  • 而堆内存用来存储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.你还有什么要问的?

 

三面:(45分钟)
1.你选测试的动机
2.还投了哪些公司,为什么挂了
3.日常生活用app有没有遇到bug,你怎么解决?4.性能测试工具,测试服务器(我自己说了一堆)
5.工作地点的要求。
6.项目代码量。
7.了解我们的工作流程吗。
8.谈谈自己的职业规划
9.用过单元测试吗?
10.愿不愿意学java?
11.一二面有哪些答的不好,你补充了吗?
12.自己怎么测试代码
13.给我讲了测试的部分实例
14.有什么要问的?