天天看点

Java面试题:假如一个程序接口已经实现了 A所描述的功能,接口定义如下:“Public Boolean hasTheSameElements(List<T> a, List<T> b);作为测试人员...

笔试题

A.请用你熟悉的编程语言或者伪代码实现一个方法,判断给定的两个无序列表中是否含有完全一样的元素?(注:列表中的元素是可以重复的,完全一样是指两个列表在不考虑顺序的情况下可以相互替代)ps: 不使用第三方库或者内建函数

package com.duoceshi.test;

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

/**
 * 2023-02-28
 * author:杭州多测师_王sir
 */
public class HasTheSameElement {

    public static <T extends Comparable<T>> boolean hasTheSameElement(List<T> list1, List<T> list2){
        if (list1 == null && list2 == null) {
            return true;
        }
        else if(list1 == null || list2 == null) {
            return false;
        }
        else if(list1.size() != list2.size()) {
            return false;
        }
        list1 = new ArrayList<T>(list1);
        list2 = new ArrayList<T>(list2);
        Collections.sort(list1);
        Collections.sort(list2);
        return list1.equals(list2);
    }


    public static void main(String[] args) {
        List<Integer> list1 = Arrays.asList(1, 2, 3);
        List<Integer> list2 = Arrays.asList(1, 2, 3);
        List<Integer> list3 = Arrays.asList(2, 1, 3);
        Boolean result1 = hasTheSameElement(list1,list2);
        System.out.println(result1);
        Boolean result2 = hasTheSameElement(list1,list3);
        System.out.println(result2);
    }
}           

B.假如一个程序接口已经实现了 A所描述的功能,接口定义如下:“Public Boolean hasTheSameElements(List<T> a, List<T> b);作为测试人员请针对该接口设计测试用例以验证该接口的实现符合需求,未提及处如有需要可以作合理的条件假设。

解读:Public Boolean hasTheSameElements(List<T> a, List<T> b);  ==》这是一个接口,接口有2个入参,入参为2个list集合,一个a和一个b,然后list后面这个<T>表示泛型 就是说我这个list集合的返回值可以是任意的数据类型。

1.可以把元素的顺序打乱,看判断是否为true
2.元素不一样
3.传参一个为integer一个为string
4.2个传参都为integer
5.2个传参都为string
6.2个传参长度不一致
7.其中一个为空的列表
8.元素都一样,但是用中文格式的逗号
9.传入3个参数验证
10.2个参数都不传入           

继续阅读