目录

20年字节跳动后端开发面试

第一轮面试

首先自我介绍

开发知识

问我比较熟悉什么语言,答Java,遂开始问Java

  • 讲讲HashMap实现原理,HashTableHashMap有什么不同?
  • 讲讲ConcurrentHashMap怎么实现的,有什么特点?
  • Objectwait()notify()方法有什么作用?
  • 讲讲Jvm内存结构。
  • synchronizedLock在 API/使用上有什么不同?
  • 了解过Redis吗,Redis有哪些常见数据结构?
  • 剩余的记不清了…

算法题

  • 如何判断两个单链表是否有交点,单链表是否成环?
  • n个二极管,超过n/2个二极管是好的。两个二极管可以相互判断对方是好还是坏,好的二极管给的判断一定是准确的,坏的二极管给出的结果是不准确的。找出所有好的二极管。
  • 写出二叉树的层序遍历。

反问

  • 请问岗位工作具体是干什么?

  • 一般面试学生主要考察基础知识,为啥没有询问 OS/计网的知识?

    答:目前比较需要能尽快上手工作的实习生,所以先考察技术。

第二轮面试

首先自我介绍

然后询问一下去年在头条的实习经历,谈了一下简历上的大作业。

基础知识

  • 讲讲网络的五层模型结构。

  • 讲讲三次握手、四次挥手。

  • 为什么要次握手,次挥手?

  • 讲讲线程和进程的区别?

  • 谈谈对协程的理解。

  • 线程间什么时候产生死锁?如何进行死锁避免/预防?

  • Java有哪些常见容器?

  • ConcurrentHashMap在并发访问时相较于HashTable有什么缺点?

    一时没想起来,面试官提示了size(),然后我讲了下ConcurrentHashMap在并发访问时调用size()的过程及overhead

算法题

  • 写一个二叉树左视图

    刚开始想到层序遍历,然后只记录每层第一个节点,后来面试官提示我简化,写成递归版本。

提问

  • 主要开发写什么,用什么技术栈?

HR 面试

HR 问

  • 首先自我介绍
  • 问有什么爱好?
  • 实习时间,对未来的职业规划?
  • 上次实习的经历,遇到什么困难?
  • 本次实习预计完成什么目标
  • 对加班的想法,接收度。

提问

  • 实习地点

最终在4-25收到了 offer call,确认了一下薪资福利,实习时间等。总的来说,今年春招实习投递经历主要是积攒经验了,最开始的两家准备不足,被挂的挺惨。之后面向面试学习了一段时间才拿到这个 offer。