测试工程师面试常常遇到的问题总结

Linux命令相关java

1. 文件个数查找: find  -type f -print|wc -l ;
    查找某个文件: find /xxx/xx -name "filename";
2.  文件行数查看:
 2.1查看文件前5行:head -5 /xxx/xx/filename;
 2.2查看文件后几行:tail -5 /xx/xx/filename;
 2.3查看新加入到文件中的内容:tail -f /xx/xx/filename;

3.查找系统内匹配某个字符的文件信息(例如tomcat):
   ps -ef | grep tomcat

4.查询当前所在的路径 :pwd     
5.强制终止进程命令: kill -9 pid (终止number=pid号的进程)
6.显示当前登陆用户名:whoami或者id -un
7.显示用户使用过的命令: history
8.查看磁盘空间使用状况 :df -hl
9.在file.txt中搜索包含有”hello”的行并计算其行数。 grep "hello" file.txt|wc -l
10:字符分隔 awk: 
awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可使用-F指定其余分割符。cat file.txt | awk -F, '{print $1 "," $3 }'这里咱们使用,做为字段分割符,同时打印第一个和第三个字段。若是该文件内容以下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令输出结果为:Adam Bor, IndiaKerry Miller, USA

windows命令相关
查看某个端口被哪一个进程占用,并杀掉进程
查看:netstat -ano //获得全部端口使用状况,可得到被占用端口的pid
查看端口号:netstat -ano | findstr "80" //查看21号端口被占用状况
测试工程师面试常常遇到的问题总结
查看具体进程使用:tasklist | findstr "2804" //查看任务列表中pid对应的进程名称
测试工程师面试常常遇到的问题总结
**面试


网络相关算法

3.1http和https的区别windows

HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTP 工做于应用层,而 HTTPS 工做在传输层
HTTP 无需加密,而 HTTPS 对传输的数据进行加密
HTTP 无需证书,而 HTTPS 须要认证证书

HTTP工做原理:数组

浏览器打开一个 TCP 链接
浏览器发送 HTTP 请求到服务器端
服务器发送 HTTP 回应信息到浏览器
TCP 链接关闭

SSL的原理:浏览器

验证服务器端
容许客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
建立一个加密的 SSL 链接
基于该 SSL 链接传递 HTTP 请求

3.2 cookie和session的区别
通俗的将,Cookie是访问某些网站之后在本地存储的一些网站相关的信息,下次再访问的时候减小一些步骤。另一个更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每个请求发送至同一个服务器,是一种在客户端保持状态的方案。tomcat

Cookie的主要内容包括:名字,值,过时时间,路径和域,可经过抓包工具查看安全

Session是存在服务器的一种用来存放用户数据的类HashTable结构。服务器

当浏览器 第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来惟一标识这个HashTable,并将其经过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的全部Session ID进行对比,找到这个用户对应的HashTable。通常这个值会有一个时间限制,超时后毁掉这个值,默认是20分钟。

Session的实现方式和Cookie有必定关系。session id存在Cookie中,而后每次访问的时候将Session id带过去就能够识别了
很容易看出来最明显的不一样是一个在客户端一个在服务端。由于Cookie存在客户端因此用户能够看见,因此也能够编辑伪造,不是十分安全。cookie

3.3 post和get的区别
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址能够被Bookmark,而POST不能够。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST没有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,由于参数直接暴露在URL上,因此不适合用来传递敏感信息。
GET参数经过URL传递,而POST放在Request body中。


算发相关
冒泡法排序

package testdemo;

import java.awt.List;
import java.util.ArrayList;
import java.util.Arrays;

public class Testjisuan {
        @SuppressWarnings("unchecked")
        public static void main(String[] args){
          //冒泡法排序,将数组从小到大排列输出
         int[] at= new int[]{4,3,5,78,3,7,13,56};
         int len=at.length;
         System.out.println("数组的长度为:"+len);
         //String aString =  Arrays.sort(at);
         System.out.println("数组使用Arrays类的从小到大排序为:"+Arrays.toString(at));

         int tmp=0;
         for(int i=0;i<len-1;i++)
         {
             for(int j=i+1;j<len;j++){
                 if(at[i]>at[j])
                 {
                     tmp =at[i];
                     at[i]=at[j];
                     at[j]=tmp;
                 }
             }
         }
         //输出数组
         System.out.println("该数组从小到大排列顺序为:"+Arrays.toString(at));

       }
}

字符串逆序输出

package test;

import java.util.ArrayList;
import java.util.Arrays;

public class teststr {
    public static void main(String[] args) {
        String st="hello,word!";
        int len =st.length();
        ArrayList newstr= new ArrayList();
        for(int j= len-1;j>=0;j--){
            newstr.add(st.charAt(j));
        }

        System.out.println("改字符串从尾到头输入显示为:");
        for(int k=0;k<len;k++)
        System.out.print(newstr.get(k));
        }
    }

输出结果

测试工程师面试常常遇到的问题总结


约瑟夫环

package testdemo;

import java.util.ArrayList;
import java.util.Scanner;

import com.melloware.jintellitype.Main;

public class YoSess {

    @SuppressWarnings({ "rawtypes", "resource" })
    public static  void main(String[] args){
        //生成约瑟夫环的数组
        ArrayList ls= new ArrayList();
        //从键盘得到输入值
        Scanner  sc1= new Scanner(System.in);
        int total=sc1.nextInt();
        int out = sc1.nextInt();
        //往数组中初始化值
        for(int i=0;i<total;i++){
            ls.add(i+1);
        }
        //
        int i=-1;
        int cut=0;
        System.out.println("出局的数据顺序为:");
        while(ls.size()!=0){//当数组中还有数据时,从头开始日后数
            ++i;
            if(i==ls.size()){//当数到头时,又从头开始数
            i=0;    
            }
            ++cut; 
            if(cut==out){ //当数到须要出局的数据时作处理
                System.out.print(ls.get(i)+",");
                ls.remove(i);
                cut=0;
                i--;
                }
            }

    }   

    }

输出:
测试工程师面试常常遇到的问题总结

快速排序

package com.quicksort;  

import java.util.Arrays;  

public class QuickSort {  
    public static void main(String[] args) {  
        int[] a = {1, 2, 4, 5, 7, 4, 5 ,3 ,9 ,0};  
        System.out.println(Arrays.toString(a));  
        quickSort(a);  
        System.out.println(Arrays.toString(a));  
    }  

    public static void quickSort(int[] a) {  
        if(a.length>0) {  
            quickSort(a, 0 , a.length-1);  
        }  
    }  

    private static void quickSort(int[] a, int low, int high) {  
        //1,找到递归算法的出口  
        if( low > high) {  
            return;  
        }  
        //2, 存  
        int i = low;  
        int j = high;  
        //3,key  
        int key = a[ low ];  
        //4,完成一趟排序  
        while( i< j) {  
            //4.1 ,从右往左找到第一个小于key的数  
            while(i<j && a[j] > key){  
                j--;  
            }  
            // 4.2 从左往右找到第一个大于key的数  
            while( i<j && a[i] <= key) {  
                i++;  
            }  
            //4.3 交换  
            if(i<j) {  
                int p = a[i];  
                a[i] = a[j];  
                a[j] = p;  
            }  
        }  
        // 4.4,调整key的位置  
        int p = a[i];  
        a[i] = a[low];  
        a[low] = p;  
        //5, 对key左边的数快排  
        quickSort(a, low, i-1 );  
        //6, 对key右边的数快排  
        quickSort(a, i+1, high);  
    }  
}

后续还会追加,也欢迎你们讲遇到的面试题回复下,我来总结查找答案**

相关文章
相关标签/搜索