2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面)

  • 时间:
  • 浏览:
  • 来源:互联网

title: 2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面)
tags: 面经


2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面)

自我介绍
  你能介绍一下你了解什么集合吗?(当时回答的是 HashMap 和 ConcurrentHashMap)
  你能讲一下这两者的区别以及底层原理吗?
  那你能讲讲 ConcurentHashMap 是怎么实现线程安全的吗?
  那HashMap的查找的时间复杂度是多少呢?为什么查找时间复杂度是O(1)呢?
  你能讲讲 ConcurrentHashMap 和 Hashtable 的区别吗?
  你能讲讲 HashMap 和 Hashtable有什么区别?
  为什么 HashMap 的底层或者说 ConcurentHashMap 的底层为什么需要用到红黑树呢?
  你对 hashCode 有什么了解吗?
  那你再讲讲红黑树和AVL树之间有什么区别呢?以及红黑树和AVL树一般都是使用在什么样的场景呢?
  那你能讲讲红黑树的查找性能的时间复杂度是多少吗?
  那接下问问你一些MySQL的内容,先来讲讲MySQL,你了解多少呢?
  讲讲 InnoDB 引擎的索引是用的什么呢?
  讲讲事务的特性以及他们的隔离级别有哪些?
  说一下 读未提交 这个事务隔离级别是怎么的一个过程?以及在该过程当中,可能会遇到什么问题呢?
  (这里只要说一下可能会引起脏读、幻读以及不可重复读即可,因为我是这样回答的)
  然后再讲讲什么幻读,以及幻读与脏读有什么区别?
  然后说一说MySQL的默认的事务隔离级别是什么?
  最后问到,你了解Redis吗?还有你了解Spring框架吗?(这两个答的都是不太清楚,然后面试官也没为难我,还说没关系。。。)
  手撕代码环节
  反问环节。

1.1 HashMap 和 ConcurrentHashMap 的区别以及底层原理

主要的区别:

HashMap 是线程不安全的,而如果要去保证线程安全的话,就要使用ConcurrentHashMap。

HashMap 的底层原理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ps3GMIuY-1616258683540)(/Users/cdf/Library/Application Support/typora-user-images/image-20210310140412917.png)]

ConcurentHashMap 的底层原理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v9Lgp5VN-1616258683562)(/Users/cdf/Library/Application Support/typora-user-images/image-20210310142039375.png)]


1.2 那你能讲讲 ConcurentHashMap 是怎么实现线程安全的吗?


1.3 那HashMap的查找的时间复杂度是多少呢?为什么查找时间复杂度是O(1)呢?

HashMap 的查找时间复杂为O(1)。

为什么呢?:


1.4 你能讲讲 ConcurrentHashMap 和 Hashtable 的区别吗?


1.5 为什么 HashMap 的底层或者说 ConcurentHashMap 的底层为什么需要用到红黑树呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cA4xYQsf-1616258683571)(/Users/cdf/Library/Application Support/typora-user-images/image-20210310171225726.png)]

hashmap为什么用红黑树不用b树_【181期】HashMap 面试二十一问!


1.6 你对 hashCode 有什么了解吗?

Java面试——HashCode的作用原理和实例解析

HashCode原理

HashCode 的概念:根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值


1.7 那你再讲讲红黑树和AVL树之间有什么区别呢?以及红黑树和AVL树一般都是使用在什么样的场景呢?

参考博客:

【数据结构】红黑树与平衡二叉树的区别以及原理详解(附图解)

红黑树和AVL树(平衡二叉树)区别

应用场景:

–AVL 的应用场景:

Windows NT内核中广泛存在;

–红黑树的应用场景:


1.8 那你能讲讲红黑树的查找性能的时间复杂度是多少吗?

红黑树的查找、插入、删除的时间复杂度最坏为O(log n)


1.9 讲讲 InnoDB 引擎的索引是用的什么呢?


2.0 讲讲事务的特性以及他们的隔离级别有哪些?

事务是逻辑上的一组操作,要么都执行,要么都不执行。


2.1 说一下 读未提交 这个事务隔离级别是怎么的一个过程?以及在该过程当中,可能会遇到什么问题呢?


2.2 然后再讲讲什么是幻读,以及幻读与脏读有什么区别?


2.3 然后说一说MySQL InnoDB引擎的默认的事务隔离级别是什么?


2.4最后问到,你了解Redis吗?还有你了解Spring框架吗?

这里就直接直接见JavaGuide了。。。


2.5 手撕算法题

算法题:

class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        if(left == right || head == null) return head;
        ListNode dum = new ListNode(0);
        dum.next = head;
        ListNode pre = dum;
        
        for(int i = 0; i < left - 1; i++){
            pre = pre.next;
        }

        ListNode cur = pre.next;
        ListNode next;
        for(int i = 0; i < right - left; i++){
            next = cur.next;
            cur.next = next.next;
            next.next = pre.next;
            pre.next = next;
        }
        return dum.next;
    }
}

本文链接http://www.dzjqx.cn/news/show-617149.html