20年字节跳动后端开发面试
目录
第一轮面试
首先自我介绍
开发知识
问我比较熟悉什么语言,答Java
,遂开始问Java
。
- 讲讲
HashMap
实现原理,HashTable
和HashMap
有什么不同? - 讲讲
ConcurrentHashMap
怎么实现的,有什么特点? Object
的wait()
和notify()
方法有什么作用?- 讲讲
Jvm
内存结构。 synchronized
和Lock
在 API/使用上有什么不同?- 了解过
Redis
吗,Redis
有哪些常见数据结构? - 剩余的记不清了…
算法题
- 如何判断两个单链表是否有交点,单链表是否成环?
n
个二极管,超过n/2
个二极管是好的。两个二极管可以相互判断对方是好还是坏,好的二极管给的判断一定是准确的,坏的二极管给出的结果是不准确的。找出所有好的二极管。- 写出二叉树的层序遍历。
反问
-
请问岗位工作具体是干什么?
-
一般面试学生主要考察基础知识,为啥没有询问 OS/计网的知识?
答:目前比较需要能尽快上手工作的实习生,所以先考察技术。
第二轮面试
首先自我介绍
然后询问一下去年在头条的实习经历,谈了一下简历上的大作业。
基础知识
-
讲讲网络的五层模型结构。
-
讲讲三次握手、四次挥手。
-
为什么要三次握手,四次挥手?
-
讲讲线程和进程的区别?
-
谈谈对协程的理解。
-
线程间什么时候产生死锁?如何进行死锁避免/预防?
-
Java
有哪些常见容器? -
ConcurrentHashMap
在并发访问时相较于HashTable
有什么缺点?一时没想起来,面试官提示了
size()
,然后我讲了下ConcurrentHashMap
在并发访问时调用size()
的过程及overhead
。
算法题
-
写一个二叉树左视图
刚开始想到层序遍历,然后只记录每层第一个节点,后来面试官提示我简化,写成递归版本。
提问
- 主要开发写什么,用什么技术栈?
HR 面试
HR 问
- 首先自我介绍
- 问有什么爱好?
- 实习时间,对未来的职业规划?
- 上次实习的经历,遇到什么困难?
- 本次实习预计完成什么目标
- 对加班的想法,接收度。
提问
- 实习地点
最终在4-25
收到了 offer call,确认了一下薪资福利,实习时间等。总的来说,今年春招实习投递经历主要是积攒经验了,最开始的两家准备不足,被挂的挺惨。之后面向面试学习了一段时间才拿到这个 offer。