开篇介绍

大家好,我是Java最全面试题库提裤姐,今天这篇是综合面试题系列的第九篇,主要总结了各个大厂的面试题相关的问题;在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。


Q:

选择题

下列哪两个数据结构,同时具有较高的查找和删除性能?
A. 有序数组
B. 有序链表
C. AVL 树
D. Hash 表

解析:平衡二叉树的查找,插入和删除性能都是 O(logN) ,其中查找和删除性能较好;
哈希表的查找、插入和删除性能都是 O(1) ,都是最好的。
所以最后的结果选择:CD

【085期】综合面试题系列(九)_JAVAimage.png

当 n = 5 时,下列函数的返回值是:

public static int foo(int n) {
    if(n<2)return n;
    return foo(n-1)+foo(n-2);
}

A. 1
B. 8
C. 7
D. 5

解析:D

对于派生类的构造函数,在定义对象时构造函数的执行顺序为?
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数
A.123
B.231
C.321
D.213

解析:D


Q:

简答题

如何从 cookie 中拿到 session?

session 在服务器端,cookie 在客户端(浏览器),session 默认被存在在服务器的一个文件里(不是内存),session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id);

session 可以放在文件、数据库、或内存中都可以。

用户验证这种场合一般会用session ,因此,维持一个会话的核心就是客户端的唯一标识,即 session id。


Q:

编程题

打印出下面两个数组的交集,结果不能重复
String[] arr1 = {"112","wqw","2121"};
String[] arr2 = {"112","aad","ewqw"};

public class Test {
    @Test
    public void test() {
        String[] arr1 = {"112""wqw""2121"};
        String[] arr2 = {"112""aad""ewqw"};
        String[] result = StringIntersection(arr1, arr2);
        for (String str : result) {
            System.out.printf(str);
        }
    }
    //取两个 string 数组的交集
    public String[] StringIntersection(String[] arr1, String[] arr2) {
        Map<String, Boolean> map = new HashMap<String, Boolean>();
        List<String> list = new LinkedList<String>();
        //取出 str1 数组的值存放到 map 集合中,将值作为 key,所以的 value 都设置为 false
        for (String str1 : arr1) {
            if (!map.containsKey(str1)) {
                map.put(str1, Boolean.FALSE);
            }
        }
        //取出 str2 数组的值循环判断是否有重复的 key,如果有就将 value 设置为 true
        for (String str2 : arr2) {
            if (map.containsKey(str2)) {
                map.put(str2, Boolean.TRUE);
            }
        }
        //取出 map 中所有 value 为 true 的 key 值,存放到 list 中
        for (Map.Entry<String, Boolean> entry : map.entrySet()) {
            if (entry.getValue().equals(Boolean.TRUE)) {
                list.add(entry.getKey());
            }
        }
        //声明 String 数组存储交集
        String[] result = {};
        return list.toArray(result);
    }
}