测试面经

测试面试题目

1. Tcpudp区别

2. 进程和线程的区别

3. 输入www.baidu.com到解析完成的过程

4. 创建线程的三种方法

5. 线程的生命周期

6. 线程同步机制

7. Getpost区别

8. http的状态码

9. http连接(分为持久性连接和非持久性连接)

10. http请求报文格式以及代表含义

11. Tcp三次握手,四次挥手

12. 为什么会进行三次握手,不进行两次握手

13. Tcp为什么是可靠的

14. OSI七层模型以及相关作用

15. httphttps的区别

16. Cookiesession的区别

17. DNS是如何工作的

18. 什么是死锁,死锁的四个必要条件,怎么避免死锁

19. 什么是数据库事物

20. 数据库事物的特性以及解释

21. 什么是数据库索引,数据库索引的好处,是不是索引越多越好

22. 数据库的增删改查操作

23. 数据库查询

24. 内连接,外链接

25. 什么是左连接,右连接,外链接

26. 查找某个年级平均分小于60的学生等等这种sql语句

27. Linux简单命令相关

28. 查找文件中出现该字符的那行打印出来等等

29. 查询日志操作,查询动态日志tail -f

30. 测试的基本理论

31. 接口测试过程

32. 软件测试流程

33. 微信聊天测试方法

34. 测试用例的设计,必须包括哪几个条件

链表:

1. 合并两个有序的链表

public class 合并两个有序的链表 {

public static void main(String[] args) {


}


public static ListNode  mergeSort(ListNode list1,ListNodelist2) {

ListNode head=new ListNode(-1);

head.next=null;

ListNode root=head;

while(list1!=null && list2!=null) {

if(list1.data<list2.data) {

head.next=list1;

head=list1;

list1=list1.next;

}else {

head.next=list2;

head=list2;

list2=list2.next;

}

}

if(list1!=null) {

head.next=list1;

}

if(list2!=null) {

head.next=list2;

}

return root.next;

}

2. 环形链表

public class 环形链表 {

public static void main(String[] args) {


}


public static boolean hasCycle(ListNode head) {

if(head==null || head.next==null) {

return false;

}

ListNode fast=head.next.next;

ListNode slow=head;

while(slow!=fast) {

if(fast==null ||fast.next==null) {

return false;

}

fast=fast.next.next;

slow=slow.next;

}

return true;

}

}

3. 链表反转

public static void main(String[] args) {

ListNode list1=new ListNode(1);

ListNode list2=new ListNode(2);

ListNode list3=new ListNode(3);

ListNode list4=new ListNode(4);

ListNode list5=new ListNode(5);

list1.next=list2;

list2.next=list3;

list3.next=list4;

list4.next=list5;

//System.out.println(ReverseList(list1).data);

ReverseList(list1);

}


public static void ReverseList(ListNode head) {

ListNode pre=null;

ListNode tmp=null;

while(head!=null) {

tmp=head.next;

head.next=pre;

pre=head;

head=tmp;

}

while(pre!=null) {

System.out.print(pre.data+">");

pre=pre.next;

}

//return pre.next;

}

4. 删除排序链表中重复元素

public ListNode deleteDuplicates(ListNode head) {

ListNode current=head;

while(current!=null && current.next!=null) {

if(current.data==current.next.data) {

current.next=current.next.next;

}else {

current=current.next;

}

}

return head;

}

5. 冒泡排序(O(N*N)

public static void bubblesort(int []nums) {

int len=nums.length-1;

//执行的次数

for(int i=0;i<nums.length;i++) {

//进行数字交换

for(int j=len;j>i;j--) {

if(nums[j-1]>nums[j]) {

int temp=nums[j-1];

nums[j-1]=nums[j];

nums[j]=temp;

}

}

}


6. 快速排序

public static void quicksort(int []nums,int i,int j) {

int middle=partition(nums,i,j);

quicksort(nums,i,middle-1);

quicksort(nums,middle+1,j);


}

//排序是从小到大进行排序

public static int partition(int[] nums, int i, int j) {

//先定一个基准元素

int temp=nums[i];

while(i<j) {

//从后往前进行查找数据,当后面的数据比前面是数据小的时候,退出循环

while(i<j && nums[j]>=temp) {

j--;

}

//把找到更小的放到右边

nums[i]=nums[j];

//从前往后进行查找数据,当前面的数比后面的数大的时候,退出循环

while(i<j && nums[i]<temp) {

i++;

}

//把找到更大的数放到了右边

nums[j]=nums[i];

}

nums[i]=temp;


return i;

}

7.简单选择排序,将数组分为有序区和无序区,每次从无序区中取出最小的放到有序区中(o(n*n)

public static void selectsort(int []nums) {

int i,j,k;

for(i=0;i<nums.length;i++) {

k=i;

for(j=i+1;j<nums.length;j++) {

if(nums[j-1]>nums[j]) {

k=j;

}

}

if(k!=i) {

int temp=nums[k];

nums[k]=nums[i];

nums[i]=temp;

}

}


}

7. 二叉树最长长度

public static int longestRoad1(TreeNode root) {

if(root==null) {

return 0;

}

int left=longestRoad1(root.left);

int right=longestRoad1(root.right);

return left>right?left+1:right+1;

}



更多内容 面经测试



#测试##面试题目#
全部评论
你好,请问测试为什么还要问数据结构的东西呀?感谢解答
点赞 回复
分享
发布于 2020-05-30 11:21
请问是什么公司的啊?
点赞 回复
分享
发布于 2020-05-30 11:59
联想
校招火热招聘中
官网直投
796156532 可以加群讨论交流下
点赞 回复
分享
发布于 2020-05-30 12:01

相关推荐

1 28 评论
分享
牛客网
牛客企业服务