2021暑期实习面经

谷歌,微软,华为,腾讯,字节跳动

Posted by LYriC on February 24, 2021

时间线

  • 2020-12月末
    • Google SWE Intern投递(内推)
  • 2020-1月中
    • 腾讯云存储 SWE Intern内推
    • 一天后 一面挂(原因据说是我在面试中说可能要读研?)
  • 2021-1月末
    • 微软苏州SWE Intern官网投递(无内推)
  • 2021-2月初
    • Google拒信,第二天又发interview invitation,然后又不安排?看来是HC满了,把我当备胎。。
    • 华为2012实验室香港研究所投递(校招)
    • 微软一面挂与不挂之间的状态(因为一二面平行)
    • 同一周 二面通过
  • 2021-2月中 春节 一切面试停摆
  • 2021-2月末
    • 微软终面 offer√
    • 华为两天三面 offer√
    • 字节跳动(上海抖音音乐)内推
  • 2021-3月初
    • 字节被北京商业广告部门先看到,初面
    • 字节二面
    • 字节三面 offer√

有了去年的经验,今年的我早早地开始了春招实习生的申请。想要快点拿到至少一个offer,以来让自己不要太焦虑,而来早点从各种面试中脱身,做一些真正有意义的事情。

面试题

以下的总结都是算法题,计算机基础知识都没怎么问or记不清了。

  • 腾讯:
    • k个为一组翻转链表(简略代码)空间复杂度尽量常数
    • 二叉树中的最长路径
  • 微软:
    • 手撕Heap Sort
    • 给一个数组,找到一个i,使A[i] = i
    • 给一个链表,返回最中间的k个节点组成的数组。(更看重工程上的易调用性)
  • 华为
    • 链表求是否有环
    • 链表找两个节点的公共父节点
  • 字节跳动 (问了一些有意思的计算机基础)
    • Java中final,finally,finalized分别是什么作用?

    • 说一下JVM的内存构成? 答案

    • 多态的基本原理

    • 说一下一些常用的排序算法

    • 手撕快排

    • 找到一个数组中的最长子序列和

    • Java异常处理?

    • 手撕归并排序

    • 算法题:股票的最大收益

    • 说一下递归和迭代的异同

    • 给定一个矩阵n*m,矩阵中的每一行都是按从大到小的顺序排列,问如何找出矩阵中前K大的数?

      这道题我开始给出了n个指针的办法,就是用n个指针指向的数字构成大根堆,然后不断弹出再补全即可。后来面试官规定只能用小根堆。经过提醒得出以下方法:

      开始的时候先用每行的前几个数构建长度为n的小根堆,然后再以根顶的元素作为比较,不断去筛选每行中剩余的值,值得注意的是,如果一行中剩下的第一个元素都比该堆顶小,那么这一行就可以被剪枝。

可以看到,这几个大厂的的算法题几乎都是Leetcode简单到中等的难度,所以不用担心,只要刷题到位了,offer就是手到擒来的。

That’s all.