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

本文详细介绍了Linux和Windows系统的常用命令操作,如文件查找、进程管理等,并对HTTP与HTTPS、Cookie与Session、GET与POST进行了对比说明。此外,还提供了冒泡排序、字符串逆序输出、约瑟夫环及快速排序等算法实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux命令相关

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的区别

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是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。

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

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

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

Session的实现方式和Cookie有一定关系。session id存在Cookie中,然后每次访问的时候将Session id带过去就可以识别了
很容易看出来最明显的不同是一个在客户端一个在服务端。因为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);  
    }  
}

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

转载于:https://blog.51cto.com/4998165/2095948

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值