个人情况
最近自己在找今年暑期的实习,感觉很容易就把面试的经历忘了,所有打算把这个过程写下来,也看看能不能帮助到有需要的人。
我自己在某 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 匹马六赛道求前三和找规律(都挂了)。
因为对于作业帮不太感兴趣,后续就没有跟进了。