百度测试实习面试记录

内推QA实习后当晚收到电话确认面试时间,一面为电话面试,时间大概30多分钟。网络电话效果不好,需要找个安静的地方才能接听电话。

1.简述下自己做过的项目

2.在项目中负责哪些部分,主要解决的问题

项目因为是NLP方向的,和面试的内容不符合,就没有再深入的提问了

3.介绍一下TCP协议

4.TCP协议的三次握手及四次挥手具体的过程

5.linux的命令是否熟悉,占用cpu前5的app如何进行查看

ps -aux | sort -k4nr | head -N head表示显示行数,ps显示瞬间进程的状态,sort表示按照第几列进行排序

top -M top -P top命令是实习进行监控的,-M表示内存,-P表示CPU

6.linux下查看日志的命令

7.n*m的矩阵,从左上到右下,用n+m步走完,共有多少种方法

其实就是向右移动n,向左移动m,实际就是在n+m步中选择n个位置进行右移,组合问题

8.单链表的逆序遍历

开始提出的办法是遍历并进行记录,时间复杂度为o(n[2])

面试官提示后提出了使用栈进行存储再输出的办法,面试官再问了下时间复杂度的对比,这个复杂度以访问来说的话就是o(n)

9.对于一个手机app应该如何进行测试

  • 功能测试

  • 客户端性能测试

  • 适配兼容测试

  • 安全性测试

  • 服务器性能测试

  • UI测试

  • 健壮性测试

  • 回归测试

10.对于手机app里面的html页面如何测试

考虑回答的角度:用户界面测试,浏览器兼容性测试,网络测试,安全测试,性能测试

  • 1、由于HTML5嵌入在App里面,输入框需要调用原生键盘。由于andriod不同手机的差异化,会导致原生键盘功能不同。

  • 2、App底部导航栏是否带入到H5页面中,打开键盘是否会影响导航栏位置变动。一般在HTML5页面中应该删除App的导航栏;

  • 3、App与HTML5对接部分需要加密传输;

  • 4、App头部的点击后返回的是前一个页面还是退回app主界面,需要注意;

  • 5、IOS、Android的部分机型由于键盘的打开和收起会出现提示或确认页面弹框上下不居中;

  • 6、由于网络问题偶现的App的报错需要包装;

  • 7、从App各个入口进入HTML5界面都是免登录,各入口登录、登出正常;

  • 8、在各个机型中,屏幕较小和较大的机器会出现不能全部显示或者部分空白的情况。

  • 9、长时间不操作HTML5或者App,需要重新登录,或者需要重新输入密码;

  • 10、屏幕较小手机提交参数的确认页面,由于字数较多会出现换行的情况,需要做适配。

    11.对于一个测试出的问题,研发人员认为没问题,如何解决

对该问题要进行沟通,确认是哪方面出现了理解的偏差,如果沟通过后无法解决,再将问题报给上级人员

12.介绍一下常用的排序算法

插入排序 冒泡排序 简单选择排序o(n[2])

快速排序 归并排序 堆排序 o(nlogn)

13.介绍一下快速排序算法

基本思想:以某个记录的关键字为比较的基准,将序列划分为两组,左边小于划分元,右边大于划分元,对左右再进行划分元的选择,一般是选择当前记录的第一个关键字。

public static int partition(int []array,int lo,int hi){
    //固定的切分方式
    int key=array[lo];
    while(lo<hi){
        while(array[hi]>=key&&hi>lo){//从后半部分向前扫描
            hi--;
        }
        array[lo]=array[hi];
        while(array[lo]<=key&&hi>lo){从前半部分向后扫描
            lo++;
        }
        array[hi]=array[lo];
    }
    array[hi]=key;
    return hi;
}

public static void sort(int[] array,int lo ,int hi){
    if(lo>=hi){
        return ;
    }
    int index=partition(array,lo,hi);
    sort(array,lo,index-1);
    sort(array,index+1,hi); 
}

14.介绍一下二分查找

二分查找的时间复杂度是o(logn)

15.接口和抽象类有什么区别

16.error 和 exception的区别

  • error和exception都是继承于throwable

  • error一般是指与虚拟机相关的错误,系统崩溃,虚拟机错误,内存空间不足,栈溢出等,这类错误仅靠程序本身无法恢复和预防,一般建议程序停止

  • exception表示程序可以处理的异常,捕获或是抛出或是处理,应尽可能处理,在exception里面又分为runtime exception和受检查的异常

  • runtime exception不进行检查,不抛出或捕获都可以,例如除数为0,数组越界等错误,应该程序员处理

  • 受检查异常如果没有捕获或抛出编译无法通过,例如文件无法找到等外部错误