2022届暑期实习笔经面经总结,已拿微软微信offer

背景介绍:某211大三学生,之前有一段大厂的边缘部门的日常实习,这次暑期实习投递的主要是国内各大厂在深圳的部门,还有一些在北京上海的外企。国内各公司投递的岗位全都是后台开发,外企则是概念比较宽泛的swe/sde

作者:Na1ve
链接:https://www.nowcoder.com/discuss/648274?source_id=discuss_experience_nctrack&channel=-1


2021年C/C++Linux服务器开发/后台架构师知识体系整理(持续更新中):https://blog.csdn.net/weixin_52622200/article/details/118494556?spm=1001.2014.3001.5506

 2022年秋招/春招/提前批/大厂面经整理(持续更新中~):https://blog.csdn.net/lingshengxueyuan/article/details/118499528?spm=1001.2014.3001.5506


0. Google

去年年底投的简历,一月中旬面试

上来就是一道很难的题,难度大概是Google的笔试kickstart第三第四题的难度,时间有点久远记不清楚题目的具体内容了,只记得我在面试结束之前只想出来一个很暴力的解法 然后凉了😢


1. 微软

2月底投的简历,大部门是上海C+AI,3.12-14笔试,2小时3道英文算法题

题目1:给定一个数组S代表每辆车的座位数,数组P代表以及坐在该车上的乘客数,求最少需要几辆车运送所有乘客

排个序再贪心

题目2:给定一个数组代表一堆石头的高度,青蛙只能从一个石头跳到高度大于等于该石头的相邻石头上,两只青蛙从同一个石头向相反方向跳,求两只青蛙之间的最远距离

用dp求出每个石头从该石头出发的最大非递减子数组长度inc和在该石头结束的最大非递增子数组长度dec,最远距离则为max(inc[i]+dec[i]-1)

题目3:一个由0和1组成的二维数组,两行n列,给出第一行、第二行以及每列元素的和,通过这些信息还原出数组内容

先还原都为0和都为1的列,再根据剩下的两行的情况处理

满分通过了笔试,大约一周后收到面试邀请,在3.29下午连续进行一二面

微软的一二面是平行面,只要通过了其中一轮就可以,有些部门会先发一面邀请,挂了再给二面机会,C+AI则是直接发出两面的邀请

一面:

1.中文自我介绍

2.问项目

3.三次握手和四次挥手

4.hashmap和红黑树

5.算法题:给定一个整数数组,求出该整数数组能拼接得到的最大整数

这道题的核心思路是把整数按照”字典序“排序,所以把所有数都可以当作字符串处理,这个排序的关键是处理一个数字是另一个数字的前缀的情况

举个例子,59应该放在591前面,而596又应该放在59前面

但是当时脑子没转过弯来,写了一个及其丑陋的递归比较函数,如下 



def cmp(a,b):
    if a>b:
        if len(a)>len(b) and a[:len(b)]==b:
            return cmp(a[len(b):],b)
        return True
    if a<b:
        if len(b)>len(a) and b[:len(a)]==a:
            return cmp(b[len(a):],a)
        return False
    return a>b

标准答案是这样:

def cmp(a,b):
    return a+b>b+a

因为面试官不熟悉python,而且这个递归比较函数实在是很不直观,我花了很多时间解释代码并且测试正确性,整个面试就只做了这一道题,不知道一面评价如何

二面:

1.中文自我介绍

2.线程调度的算法

3.tcp和udp

4.数据库的ACID

5.c++的stl以及各种数据结构

这一段问了特别多,从vector,list,map,unordered map一路问过去,数据结构和c++的具体实现都有涉及,我就从顺序表到红黑树都讲了

八股文环节耗时有点久,这时面试已经过去快半个小时了,于是这一面也只有一道算法题旋转数组,需要新数组和原地旋转的两种都写了

3.30收到lead面邀请,3.31lead面:

1.中文自我介绍

2.深挖实习内容,最终暴露了我之前的实习完全是curd的事实
3.接下来可能算得上是传说中的系统设计题,给一个一元多项式,探讨各种储存这个多项式的方法

我就从数组,链表,哈希表,二叉树之类的各种方法都讨论了一下,每提出一种方法都要和面试官探讨使用这个方法的优缺点,从储存空间,查找速度,修改等方面都要涉及,指针大小之类的的细节都要考虑到

4.然后是写一个基于二叉树的多项式的类,要求实现初始化,加法乘法运算和打印结果的几个函数

lead面面试完一周后4.7收到信息收集邮件,4.14收到offer


2.腾讯

3月初暑期实习开始招聘时就投了简历,最开始被捞了约了个电话面试,但是那天没空,反馈修改时间也没人理我,于是我的简历就被卡了十几天...

在这段时间里参加了一个笔试,2小时5题

题目1:给定一个二叉树,查询若干次,每次查询一个点,按深度从小到大返回从根节点到该点的所有结点

题目2: leetcode1553

题目3:给定N个数组,每次挑若干个数组合并,求合并完数组的第k小的数

直接暴力合并+快速选择居然能过80%,就没再去优化了

题目4:一个公司有W元给n个员工发年终奖,给定每个员工的奖金下限x[i],上限y[i],求最大的奖金中位数能有多少

贪心+二分查找,对于小于中位数的员工直接把给他们的钱设为下限,大于中位数的员工则是中位数和他们下限的最小值

题目5:有n个商品,每个价值w[i],再给一个整数m,挑选若干个商品,求这些商品价值总和是m的倍数时的最大值

设一个长度为m的dp数组,dp[i]代表挑选的商品价值模m余i时的最大值,对每个商品都遍历一遍dp数组,最后的dp[0]即是最大值,这样只过了50%,但是我算了复杂度是没有问题的,应该是python的问题,换c++应该可以绝杀,可惜换不得,时间不够了

5题过了4.3,然后被wxg捞了

3.26一面:

1.自我介绍

2.网络五层的内容
3.三次握手四次挥手
4.讲讲熟悉的算法,我讲了分治和dp

5.了解网络流问题吗,说说解决这个问题的方法(增广路算法)
6.b树与b+树

7.b+树的插入过程
8.数据库为什么用b+树

9.两道算法题

算法题1:给两个字符串a和b,删除字符串b中所有a的子字符串

实际上这只是个文字游戏,把所有在a中出现过的字符删了就行了
算法题2:判断一个链表是否是回文链表
反问的时候得知了居然是wxg捞我,还是挺惊讶的,主要是这两道算法题实在是😅,不符合我心目中wxg的形象,而且和前面问网络流的反差有点大

3.29二面:

1.自我介绍

2.问项目

3.字符串匹配的方法

4.KMP算法的原理,next数组怎么计算
5.搜索的方法,dfs和bfs

6.dfs和bfs用的数据结构
7.其他数据结构的八股文
8.进程线程协程
9.用户态和内核态定义,切换过程,通信

10.算法题:某一个大文件被拆成了N个小文件,相应大小分别记为S[i]。给定磁盘空间为C,从N个文件中选出若干个文件拷贝到磁盘中,使得磁盘剩余空间最小

这道题一题两用,分选出的文件必须连续以及可以不连续两种情况讨论,文件连续时用滑动窗口遍历一遍,不连续时则是01背包问题

4.6hr面:

都是比较常规的hr面问题

1.实习经历

2.为什么不继续在原来的公司实习

3.自己最大的优点缺点

4.有没有家人在腾讯

5.未来打算,读研or工作

6.是否接受在深圳

hr面完马上收到云证,4.8oc,4.9offer,在deadline前微软的正式offer都没发下来,就接了腾讯的offer


3.字节

3.21笔试,2小时4题

题目1:给定一个数组代表猴子的食量,每个猴子按顺序取食,猴子们会拿比自己食量多的食物,但不会超过自己食量的一倍或者当前食物量的一半,求最少需要多少食物才能保证所有猴子都吃饱

反向模拟一遍即可,每次加上min(当前食物量,当前猴子食量两倍)

题目2:蛋糕店老板有N块蛋糕,每块美味值a[i],他决定送给李华其中连续的若干块,李华最多接受M块,求最大能接受的美味值

思路类似于leetcode239,但是这次要维护的是滑动窗口内前缀和的最大值

题目3:一个文本编辑器,有三种操作,增加或减少一个字符,花费为A,复制粘贴一遍所有字符,花费为B,求恰好生成N个字符的最小花费

leetcode1553的增强版,多了一个减少字符的操作让这题复杂了很多,而且数据范围特别大(1e18),我怎么搜都会爆栈,最终只过了30%

题目4:给定一个长字符串和一个长度为2的短字符串,允许最多修改长字符串k次,求修改后长字符串最多有多少个子序列等于短字符串

没时间写了,靠短字符串两个字符相等的情况骗了20%的分

总的来说字节的笔试是很难的,但是实际上看身边同学和网上其他人的情况,做个1.5题都有可能给面试,2题就已经很稳了

3.29抖音一面:

一个多小时的八股文轰炸,把我问晕了

1.继承多态重载

2.c++实现多态的方法

3.数据库ACID

4.脏读和幻读

5.mysql隔离级别

6.索引的作用

7.为什么用b+树

8.建索引建在哪些列
9聚类索引和非聚类索引

10.数据库的范式

11.sql注入

12.线程和进程的区别

13.进程间通信

14.管道有哪些

15.线程池

16.软连接和硬连接

17.了解vfs吗

18.tcp如何保证可靠性

19.gobackn和选择重传

20.arp协议

21.tcp包头部包含什么
22.http头部包含什么
我的八股文水平实在是不太行,在录音里听到自己说了好多次不清楚,不了解,没听说过 😥由于面试时带着耳机,录音只有我自己的回答,这些不清楚的问题有些没记录到,实际的问题比上面写的还要多一些

23.算法题:之字形打印二叉树

这个倒是很快用bfs写出来了,但是前面的八股文环节表现实在是太差了,过了两天收到感谢信

过了几天被一个产品研发的部门捞了起来

4.9产品研发一面:

1.C和C++区别
2.多态和虚函数

3.virtual关键字和虚函数表
4.构造函数和析构函数是不是虚函数
5.网桥、路由器、交换机分别属于哪一层,它们的功能
6.tcp和udp的区别和应用场景

7.如何改进udp使其变得可靠
8.http状态码
9.http加密方式
10.非对称加密
算法题1:有n个信封,如果一个信封长宽都严格大于另一个,则大的信封可以装入那个小的信封,求最多能够有几个信封能装成一个套娃

先排序,设一个信封能装dp[i]个信封,则dp[i]=max(dp[j])+1,j是能被这个信封装下的小信封,答案是dp的最大值
算法题2:一个由01表示的二维数组作为地图,0代表水,1代表陆地,有一天水平面上升了,淹掉了所有的岛,但是和陆地相连(在二维数组边缘)的部分不会被淹没,求水平面上涨后的地图

从二维数组周围绕一圈dfs,记录下与陆地相连的部分,再把其他地方都改成水就可以

一面过了马上就是二面:

1.三次握手四次挥手
2.tcp拥塞控制
3.如何改进udp使它拥有拥塞控制的功能
4.数据库ACID
5.隔离级别
6.脏读幻读
7.数据库索引 index(b,c),查询 where b=1 and a=1和where c=1 and b=1时是否会走索引
8.数据库为什么用b+树
9.算法题:K个一组链表反转

这个本身没什么思维难度,但是写起来很麻烦

这个时候我已经有腾讯的oc和微软的信息收集了,于是在hr约三面的时候主动终止了流程


4.阿里

没走系统,通过员工邮箱直接投的简历,因此没有笔试,部门是阿里云

4.8一面:

给我分了一个西雅图的面试官,早上8点面试

可能是面试官在西雅图的原因,面试的过程也比较”美式“,自我介绍和问项目之后就是两道算法题,没有八股文环节

算法题1:括号匹配,一个字符串里有左括号(和右括号)还有*,*可以被当作是任意一种括号,或者直接忽略,判断这个字符串的括号是否合法

写了两种方法,一个是dfs,遇到*就分支搜索对应的三种情况

另外一个方法是遍历字符串的同时维护一个左括号数量的最大值和最小值,遇到左括号两个值都+1,右括号都-1,*则是将最大值+1,最小值-1(不会让最小值小于0),如果某一刻最大值<0,或者遍历完的最小值>0,就返回false,否则返回true

算法题2: leetcode1691

在约二面的时候同样的也终止了流程,后来发现阿里暑期实习面试过了再拒offer的话秋招可以直通,早知道就继续面下去了


5.其他

国内其他公司还投了百度和快手,在面试开始前就主动结束了流程

还投了其他几家外企,Paypal明确回复实习生只招研究生,Amazon和Vmware则是没有回应的默拒了,好像也是隐性的要求有研究生学历


校招面经内推招聘技术交流群立即加入

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值