2021 暑期实习面经

个人情况

最近自己在找今年暑期的实习,感觉很容易就把面试的经历忘了,所有打算把这个过程写下来,也看看能不能帮助到有需要的人。

我自己在某 C2 高校读计算机大三,基本在搞 *CPC 的比赛,目前有一金两银,绩点和排名不是很好看(保研边缘,小方向好惨啊)。实习经历和非玩具的项目也没有。

我投的基本是 C++ 方向和服务器后端。在准备面试的过程中,我基本上看的牛客网的面经汇总,如果上面的题目都能答上来的话面试基本没问题了。遇到提问如果不会直接说不会就行了,面试时我数据库还没学,开场就跟面试官说了。

腾讯

我在三月初投的腾讯的 WXG 事业群的后端,腾讯是直接发面试通知,然后让你选择是否参加或者另选时间(如果拒掉不保证有下一次)。

腾讯一面

三月十日是用腾讯会议的电话一面(大雾)。首先是四道笔试题:

  • 翻转单向链表;
  • 给定两个字符串 aim 和 str,问 aim 是否有一个子串字符集(可重)等于 str;
  • 求下一个排列;
  • 实现 LRU(最近最少使用)算法。

之后问了几个八股题和其他:

  • TCP 三次握手的过程,为什么是三次;
  • Linux 下软链接和硬链接的区别(不会);
  • 举一个大数据学的算法,我举的水库抽样,证明没写出来;
  • strcmp 和 memcpy 的区别;
  • 死锁;
  • 举一个最近做过的算法题。

腾讯二面

三月 12 日二面,也是首先三道笔试题:

  • 求 \(a^2 + b^2 = c\) 的一个正整数解;
  • 给十亿个数排序并去重;
  • 问一个字符串中有多少个子序列等于另一个给定字符串。

面试问了:

  • C++ 的多态如何实现;
  • 虚函数的实现,纯虚函数是什么,构造函数和析构函数能否为虚函数,析构函数如果不是虚函数会怎么样;
  • TCP 和 UDP 的区别;
  • 进程和线程的区别,他们如何通信;
  • socket 通信的方式;
  • 问了一下实习时间地点和读研相关的事;
  • 反问。

腾讯 HR 面

三月 18 日 HR 面,问了:

  • 实习经历(然而我没有。。。);
  • 读研和工作;
  • 比赛经历,团队合作;
  • 实习城市的倾向。

云证等了大概半周,三月 23 日 Offer Call,24 日发的邮件。

字节跳动

我最早在二月份的时候投了一下西瓜视频的内推,然后就什么都没有复习就裸上了。。。结局就是无情秒挂, C++、Linux 和计网都答得很差,算法题也做的一般。

三月初又投了一下字节教育。当时投的时候记得自己选的是后端,结果简历到了客户端的那里了。

字节跳动一面

三月 11 日一面,问了:

  • 项目相关的事情,问我如何实现的内存管理;
  • 代理和反向代理(不会);
  • 字节对齐,问一个包含一个 char,两个 int 和一个 double 的结构体的大小和内存分布;
  • 访问 int 和 double 时 CPU 分别需要访问几次;
  • static 关键字的作用(全局/局部变量,类的函数和变量);
  • 程序的内存分布;
  • 尾递归优化;
  • 智能指针,weak_ptr 的意义和应用场景;
  • http 和 https 的区别;
  • DNS 的作用和访问;
  • git 的使用;
  • 手算 1000 转 12 进制;
  • leetcode:二叉树寻路;
  • 反问:业务范围,产品,实习可能干什么。

字节跳动二面

三月 26 日晚上二面(隔了半个月),问了:

  • session 和 cookie 的区别,如何防止网站访问其他网站的 cookie(然而我不了解 session);
  • https 的连接过程,如何保证证书有效,防止 CA 被劫持(也不知道);
  • 内存分布,内存泄露,野指针和栈溢出;
  • 说一下自己了解的设计模式;
  • 写一个单例模式代码,然后让我优化一下;
  • 算法题:求无序数组中满足左边的数比它小、右边的数把它大的所有数;
  • 算法题:求树上的最大路径和;
  • 反问:为什么等待了这么长的时间,实习地点。

当天晚上约了三面的时间。

字节跳动三面

三月 29 日晚上三面,没有问什么八股,全程都在写代码:

  • IPv4 的地址和 int32 之间的转换;
  • 查错:给定了一个插入和清空链表的函数,标注所有错误;
  • 给定元素全为非负整数的非空数组,数组的度等于出现最多的元素的次数。找到具有和原数组度相同的最小子串。
  • 后续想给我出一个数据库的题,但知道我才开始学后就没问了。后续问了实习时间和读研计划。

四月 13 日,字节终于把我挂了(后续问了一下,是因为实习时间不够)。

阿里巴巴

我在三月初投的阿里云智能事业群的 Java 工程师,内推的学长告诉我可以使用 C++ 去面试。

首先是做的评测(30 道智力测试和 98 道情感测试,太草了)。之后是三道常规的笔试编程题。

阿里巴巴一面

三月 16 日晚上一面,面试官首先介绍了一下业务,然后我自我介绍,之后问了:

  • TCP 和 UDP;
  • CPU 缓存和流水线机制;
  • 编程题:链表各三个翻转;
  • 问如何给元素去重;
  • 如果在 100 台机器上运行呢?
  • 如何处理数据倾斜和单台机器的去重效果不佳。

阿里巴巴二面

三月 22 日晚上二面,面试官说明了一下组内的业务(主要负责分布式计算),然后是我自我介绍。之后面试官让我介绍一下自己在大数据课上学习的知识点。我讲了一下自己对于流计算和惰性计算的理解。之后面试官问了我了解的排序算法,问了一下快速排序,归并排序和基数排序的区别,之后让我手写了一下基数排序。之后问的有点像 HR 面了。。。问了一下竞赛经历,成就感最大和挫折感最大的事,如何排解挫折和个人爱好,之后让我反问。面试官当时告诉我过了(惊),让我约三面时间。

阿里巴巴三面

三月 27 日下午(三面总监面),总共就问了十五分钟,感觉凉了。

  • WordCount 的分布式算法;
  • 大文本的 JOIN 操作;
  • 如何实现一个哈希表;

最后让以后我读一下 Google 的论文。

阿里巴巴 HR 面

四月二日 HR 面,HR 首先就开花迟到了十分钟:问了一下读研的打算(问得挺细,学校政策都问了)和自己的竞赛经历(还问了区域赛金牌大概是什么含金量。。。)。后续问了一下自己对于 996 的看法和自己的部分课程成绩(自己的简历上有啊)。感觉 HR 面之前没有仔细看自己的简历,阿里 HR 面体验不是很好,感觉和前面的技术面是两个不同的公司。

四月六日收到意向书,但是因为时间问题拒了,后续 HR 说可以秋招时直接终面。

微软

我在二月底投的微软,三月七日做的笔试,也是三道常规的笔试编程题。然后等到三月 15 日才通知面试。

微软一面

三月 22 日上午一面,两道编程题:

  • 链表上做快排,面试官觉得我几分钟就能写完,然而自己傻逼了,一直按照数组上的做法想,当时感觉完蛋了(哭)。后来想起自己在学 Haskell 写的快排,然后意识到了问题。
  • 昨天晚上 Kick Start 的最后一道题,先写了一个暴力,之后讨论了一下 \(n = 500\) 的做法。我想了一个网络流加高斯消元的做法(面试完发现复杂度算错了,该用最大生成树做)。

感觉微软面试太紧张了,一直不在状态。

微软 Leader 面

三月 26 日下午 Leader 面,先写了一道编程题:给定两个单向链表,找是否有交点。我首先写了一个类似求 LCA 的做法,之后面试官问我如何处理有环的情况,我先是使用 set 来求交集,之后判断是否有环来分情况讨论:

  • 如果一个有环,一个无环,那么一定无交点;
  • 如果都有环,那么就让两个链表在环上的点来跑一个 BSGS;
  • 如果都无环,那么就判断两个链表的最后一个点是否相等。

之后就是闲聊了,比如实习的时间,能否去北京实习,要不要去实验室,后面因为时间问题拒掉了。

猿辅导

三月中旬投的猿辅导,无回复。

米哈游

三月中旬投的米哈游,三月 27 日晚上笔试赶作业咕了。

元戎启行

三月 25 日投的元戎,HR 先问了一下实习时间,之后无回复了。

作业帮

三月 25 日晚上宣讲会现场面的一面和二面。

作业帮一面

一面问了:

  • 首先问自己有什么项目(全是玩具);
  • TCP 和 UDP 的区别和应用;
  • 线程和进程的区别和应用;
  • 数据库的事务和隔离级别;
  • 自己知道拿些大数据相关的知识(Spark,Storm,流计算);
  • Java 的基础类型和封装类型,等于符号和数字加字符串的结果;
  • redis,中间件和缓存相关的知识(然而我不会);
  • 原码,补码和反码;
  • 写一个二分搜索;
  • 写一个 Python 脚本;
  • 自己的技术栈倾向。

作业帮二面

二面问了:

  • 写一个 SQL 语句(GROUP BY 语法忘了);
  • 括号匹配;
  • 一个简单算法题(二分和数学都可以);
  • 两个智商题: 36 匹马六赛道求前三和找规律(都挂了)。

因为对于作业帮不太感兴趣,后续就没有跟进了。

Licensed under CC BY-NC-SA 4.0
Last updated on Jul 17, 2021 16:07 CST
comments powered by Disqus