java面试题及答案2020
一面-2020/01/13-牛客网
-
一面面试官很不错,一开始还几次听不到我这边的声音,不知道是牛客的问题还是面试官的电脑问题;不过这个面试官真的挺好的,没有特别严肃,整体感觉还可以。
-
自我介绍:讲了下自己的项目经历、实习经历
-
问了下技术栈
-
HashMap 和 ConcurrentHashMap 的区别?(不会,当时太菜了)
-
线程池(当时就说了怎么用,连底层结构都答不上来,太丢人了)
-
数据库的锁(不会)
-
数据库的三范式(不会,还瞎扯了一堆)
-
第一范式是属性不可分;
-
第二范式是在第一范式的基础上,要求实体的属性完全依赖于主关键字,没有部分依赖;
-
第三范式是在第二范式的基础上,所有属性都和主键有直接关系,没有传递依赖。
-
线程和进程的区别
-
缓存(简单说了下浏览器缓存的作用)
-
算法题目1:随机链表复制(秒了)
-
给定一个链表,节点数据结构如下,除了包含一个next指针,还包含一个rand指针,随机指向链表的某一元素,或者为空指针,实现一个函数,深复制这个链表,要求空间复杂度O(1)。
struct Node {
int val;
Node* next;
Node* rand;
}
算法题目2:滑动窗口算法(卡了蛮久) -
给定m个不重复的字符[a,b,c,d], 以及一个长度为n的字符串tbcacbdata, 问能否在这个字符串中找到应该长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面的这个例子,acbd,返回3。要求优化到O(N)。
-
这道题没接触过,有点懵,不过在面试官提醒下写出了一个简单的版本,对不在m个中的字符和重复的字符进行了优化。
所有面试题持续更新+答案整理见这里:
java面试题及答案2020持续整理