后台实习阿里腾讯百度美团艰难上岸之旅

面经总结

广告

给团队打个广告,我们腾讯游戏魔方工作室一人之下 IP 新游后台团队正在招 2024 届毕业的后台开发实习生有兴趣的欢迎来撩,以下是一点技能树要求(非必须,学习能力好就ok)

  • 熟练使用一门以上编程语言(团队目前Golang为主)和具备一定编码设计能力
  • 有较好的软件工程设计能力思维
  • 有较强的沟通、协作能力
  • 有容器化、K8S、云原生技术经历更佳
  • 热爱游戏行业,热衷于为玩家创造高品质游戏体验

一人之下 IP 新游的 实机演示链接

正文

这到五一了,闲的无聊正好百度又发了春招的最后一个offer,来写个面经来回馈一下牛友吧(毕竟学习路线和大多面经都是在牛客网看的,大佬太多了%%%)。在这次春招了陆陆续续面了六家公司,运气比较好拿了四家公司的offer,然鹅头条是我第一家面的没什么经验果断凉凉了...(面完自闭了挺久的),微软后面因为自己时间上的冲突没面完挺可惜的,微软还是蛮棒的

腾讯互娱IEG(C++)

美团到店事业群(java)

阿里国际化某部门(部门不是很大,不说太细了,C++)

百度基础研发(具体部门还没说,C++)

关于我个人的背景,在找实习过程应该还是处于劣势的,因为我是非科班渣硕(通信狗),学历也就刚好够用,只学了一年多点时间后台开发,所以能看的出来找实习真的要求没有太高,还没上岸的兄弟们要有信心啊,说不定只是运气不好。再来讲一下关于找实习时候的一些感受和经验吧,因为我投的都是后台开发,所以在其他岗位并不一定适用哈。

  1. 第一个逃不掉的,面试官肯定还是希望能有一个小项目的。因为书本知识可能比较零散,会希望你能把知识有一个具体的运用,但是我的建议是项目不一定要多大,多牛逼,但是你一定要真的懂的很透彻,不然碰到一个稍微熟悉一点的面试官必凉...我面头条在项目优化上就被怼的无言以对,确实想得太少了
  2. 对于每个岗位总有几大知识模块是必要,对于后台来说,那么操作系统计网数据库网络编程这几大块肯定是跑不掉的,大家如果没有明确的学习计划可以在牛客搜一搜大佬们的学习计划啊,我就不列了(因为我的学习路线几乎就是完全照着@健康成长天线宝宝啊 来的,膜拜加感谢),在春招里能把几大块的基础知识回答的很好的话通过的概率就很大了。
  3. 然后其实在学习过程中,可能有很多东西可以看一看源码更加能理解设计者的初衷,对于面试官来说,如果知道你有深入底层研究源码的习惯应该也是个不错的加分项吧。(STL源码剖析必看,还有epoll的设计思想和源码)
  4. 最后一点还是多做算法题吧,这一点没什么好说的,刷leetcode就完事了,可能是因为我自己刷题也不厉害给不了太多建议(难过.jpg)。如果觉得题太多了,先把hot 100刷了吧,确实真的挺高频的。

这些只是我个人的一点看法,大家的学习方法都不一样也就看个乐呵哈(哈哈哈,求生欲极强)。下面就列一下面经(但我没有面试里记录的习惯,都是后面回忆- -。将就看吧)

字节跳动一面(凉)

  1. 上来介绍项目,然后开始怼项目细节,面试官问到了很多自己都没有考虑到的细节(第一次面试也很紧张,所以感觉很多东西在瞎说),然后问我怎么解决这些问题... 完全不会卒。(大概40分钟)
  2. 知道怎样去做负载均衡吗
  3. 因为项目中用到了epoll,那么讲一讲select、poll、epoll是干嘛的,有什么区别(最好从底层实现来讲)
  4. epoll中为什么用红黑树,而不用hashtable来管理?插入删除复杂度不是更低吗?
  5. 了解虚拟内存吗,讲一讲
  6. 讲一讲C++中宏是干嘛用的
  7. 重载函数在编译阶段会怎么处理
  8. 讲一讲了解的页面置换算法
  9. 多线程和多进程的区别
  10. 常用的linux指令有哪一些
  11. malloc实现原理,malloc 2G能不能成功
  12. 内核态和用户态有什么区别
  13. 算法题:一个数组大小为N,数组中每个元素大小不大于N,统计数组中每个数字出现的次数,时间复杂度为O(N),空间复杂度为O(1),等于就是答案输出在原数组上。(这题还挺有意思的,运气好想到了负数用来计数的思路,以前没做过类似的还是菜...总结就是抽屉原理+负数计数,贴一下代码)
vector findNumbers(vector& nums) {
        int n = nums.size();
        for (int i = 0; i < n; ++ i )
        {
            while (nums[i] > 0)
            {
                int cur;
                if (nums[nums[i]-1] > 0) 
                {
                    cur = nums[i]-1;
                    nums[i] = nums[nums[i]-1];
                    nums[cur] = -1;
                }
                else if (nums[nums[i]-1] != inf)
                {
                    cur = nums[i]-1;
                    nums[i] = inf;
                    nums[cur] -= 1;
                }
                else
                {
                    cur = nums[i]-1;
                    nums[i] = inf;
                    nums[cur] = -1;
                }
            }
        }
        vector ans;
        for (int i = 0; i < n; ++ i ) 
            if (nums[i] == inf) ans.push_back(0);
            else ans.push_back(-nums[i]);
        return ans;
    }

腾讯一面(过)

腾讯一面是一个声音好听的年轻小哥,问题问的也挺少的28分钟就过了,其中介绍自己的项目介绍了差不多10分钟左右,然后问了几个问题就过了。都是一些C++很基础的问题,唯一还记得的就是介绍了一下右值引用以及std::move实现原理。

腾讯二面(过)

这一面面了一个半小时,大部分时间在项目上,腾讯二面面试官是一个很硬核的面试官,可能是项目太烂大街了,问了很多改进思路和对于现有方案的实现以及为什么要这么做,被头条折磨过后这次有答得好一点点...

  1. struct C
    {
        int i;
        double j;
        float d;
        char s[6];
    };
    

    在32位系统机里面占多少个字节,在64位系统机里面占多少字节

  2. 了解C++内存布局吗,然后写了几个继承关系的class,问它们各自的内存布局是什么样子的

  3. class C {}; sizeof(C)大小是多少 ,为什么是这个结果

  4. 了解Deque的底层实现吗(STL源码剖析上讲的比较明白)

  5. 算法题:LRU,leetcode原题

  6. 最后是一个设计题,有很多个任务,每个任务都有自己的注册时间,你实现几个API分别可以注册一个新的任务,获取最早应该完成的任务(记得踢掉完成的任务)还有一个好像,记不太清了,写写伪代码就可以了。

腾讯三面(过)

腾讯三面应该是我面的最久的一面了(两个多小时),总体感觉还是很不错的,应该是leader面,面试官一直在跟我介绍游戏后台的一些知识点,也问了很多我对于游戏后台的一些看法,为什么魔兽世界可以用TCP,而有的游戏要用到UDP,更像是一个挖掘我对游戏后发的思考面试,不太具有借鉴经验,但是大家在leader面之前都可以了解一下部门具体业务,然后看一看相关的知识应该会有帮助。

美团一面(凉)

一上来面试官就想问我java问题,我说完全不会,他还是执意问了一个泛式编程还是啥的,不懂完全不会java了(哭泣.jpg)。然后开始问一些基础知识

  1. 讲一下索引是什么,有什么优点
  2. 为什么索引要用B+树,不用B树
  3. HTTP POST和GET有什么区别
  4. 了解乐观锁,悲观锁吗
  5. HTTP属于哪一层协议
  6. linux进行日志分析的时候常用的一些指令讲一讲
  7. 算法题:一个数组找到数组中某个值的下标,比如[1,2,3,4,5],3的下标为2,简单二分就好了
  8. 算法题:牛客直接搜 取球放球,很难的一道DP,当时没写出来给了个暴力dfs思路

其实这一面的问题除了最后一个算法题都答上来了,但是部门业务是大数据和我太不匹配了,所以挂掉了。

美团一面(过)

先介绍了一下项目,然后开始问基础问题

  1. C++多重继承会出现什么问题(多次继承基类的基类,用虚基类实现菱形继承)
  2. 为什么要三次握手?可以两次握手吗
  3. TCP和UDP有什么区别,TCP怎么保障安全
  4. new一个对象,delete两次会出现什么后果
  5. C++函数重载是怎么实现的
  6. 智力题:100个玻璃瓶,其中有一个有毒,怎么用十只小白鼠来检测出哪个瓶子有毒(都用不到十只...)
  7. 算法题:井字棋,很简单但找bug找了一会...卒

美团二面(过)

一如既往的先开始问项目,基础也必不可少

  1. 指针和数组有什么区别
  2. 指针大小是多少
  3. 数组和队列的查询和删除速度谁更优?包含同样多个元素的数组和队列谁占用内存更大?(队列不是只能进队和出队吗?查询岂不是一次次出队查询,当时就不是很懂这个问题)
  4. 手写一个mysql,从一个student表(name,score),每十分一档找出每档的人数
  5. 哈希表怎么解决碰撞问题
  6. 讲一讲红黑树的性质,为什么要用红黑树,AVL树不行吗?
  7. GET和POST的区别
  8. cookie和session的区别
  9. 问了单例模式,怎么自己实现一个pthread_once类似的功能
  10. 算法题:找链表里是否有环,leetcode原题
  11. 算法题:写一个sqrt函数,leetcode原题

美团三面(过)

一大早突然接到电话,说是美团三面(有点点子惊吓),说好的三面是随便聊一聊咋还是聊技术呢???(1551)面试官还是很好的,要我先介绍一下我的项目,简单的提了几个问题没有深挖。接着又问了几个计网常见问题,HTTP和HTTPS的区别阿,SSL用的什么加密方式阿巴拉巴拉这种,问我了不了解数据库,我说基础知识了解,项目里没用到过,面试官就没继续问了,最后聊了一会天(java现在用的公司多阿,转java不错的各种...)就结束了。

阿里一面(过)

  1. 首先问了两个关键字是啥意思(volatile,mutable)
  2. 重载和重写,怎么实现的,最好从底层讲一讲
  3. 你了解多少种排序呢,讲一讲思路,哪一种排序是稳定,哪一种是不稳定的
  4. 进程间通信有几种方式
  5. new和new[]有什么区别,如果一个对象是new[]出来的,那么我delete它可以吗
  6. 算法题:100万人口,每个人都有党派,已知一组结果集(id1,id2,yes or no),yes代表一个党派,no代表不是一个党派。我随机挑选两个人问你是不是一个党派(这个题应该是随机挑选的两个人必然能从已知集合里得出答案吧,面试官没有提到)
  7. 算法题:100万个数,是一个无序数组,想得到第4万个数大小是多少(快排最坏复杂度是多少,在最坏情况下怎么优化)

阿里二面(过)

这一面面完不知道为什么好多问题想不起来了...太早了很懵

  1. static和const修饰符有什么作用
  2. struct和union的区别
  3. 数组和指针的区别
  4. 概率题:左轮枪 六颗子弹 只有两颗连续的子弹 对手先开了一枪没死 你有两种选择1. 不转弹夹 2. 转弹夹 你会选择哪种对自己开一枪
  5. 算法题:经典题two sum

阿里三面(过)

这一面又大多是聊了一下部门业务场景和基础知识(基础知识上面好多出现过了就不列了),然后中间还有一段英文对话考核(我...当时差点一句话都没说出来,真的是英语8行啊- -。)

  1. 场景题:支付宝有几亿个用户,想要实现年度账单,获取年度消费前10%的用户这种功能,你怎么来设计

阿里四面(过)

我阿里最难的一面应该是四面交叉吧,先是扣了好久的项目,然后关于项目里一些问题深入到了操作系统去问,有几个瞎扯都没扯上上来,我都以为自己凉了

  1. 负载均衡问题
  2. 单核和多核 多线程工作内存处理起来有什么区别
  3. 1000万个key-value数据,问你怎么设计方案保存数据,要快速查找,其中会有更新,读远远大于写(1000万个数据要考虑在磁盘里或者直接存在内存上的情况)
  4. 算法题:一个NxM矩阵里都是0或1,给你一个(x,y)位置且该点为1,要去找最近为1的点的曼哈顿距离和欧氏距离(曼哈顿距离显然就是BSF,欧氏距离当时没想出来,给了个暴力解,后面想了一下可以考虑围绕点作为中心扩展来做,距离x,y的距离依次增加1)

百度一面(过)

一面还是先从项目聊起,然后发现我这是一个很简单的项目- -~ 就开始问基础了,还是问了很多基础知识的,可能答得还行后面两面问的问题就很少了,挺幸运的。

  1. 讲一讲底层内存布局,堆和栈有什么区别,.data和.bss有什么区别
  2. 讲一讲智能指针(最好从智能指针的底层实现讲吧)
  3. 定义引用的指针是合法的吗?
  4. 多态是什么?静态多态,动态多态,静态多态在编译期是怎么处理的,动态多态是怎么实现的
  5. 关于STL问了下vector的实现,迭代器是什么
  6. 了解哪些linux指令,ping,tcpdump,netstat这种可以讲讲实现
  7. 概率题:f(x)等于1的概率是P,等于0的概率是1-P,怎么得到等概率的0和1
  8. 算法题:反转链表
  9. 算法题:二叉树有多少条路径和为target的路径
  10. 最后还有一道设计题,设计一个解析类,不管是参数类型是什么类型都可以完成解析,考察的是反射类型,不了解反射类型没答到点子上。

百度二面(过)

首先了解了一下我的项目是个人项目还是团队项目,问了一下项目实现的细节,没太深挖问了十几分钟。后面问的大部分知识都是HTTP协议,cookie和session是什么,了解哪些请求命令(GET、POST、HEAD等等),GET和POST有什么区别,还有一些问题不记得了都挺常规的。最后又问了一下常用的linux指令和常见的设计模式(只会单例模式,讲了一下懒汉式单例和会遇到的一些问题)面试就结束了,不到40分钟让我继续等下一面面试官。(记起来了,还问了一会关于排序算法的问题,先问排序时间复杂度能不能做到O(n);那如果想要空间复杂度为O(1)的话,你知道哪些排序算法)

百度三面(过)

三面应该是总监面吧,但是面试官看起来比一二面面试官还要年轻...搞不懂啊。这一面没太多好记录的,更像是聊天吧,要我讲了讲学习路线,未来规划,平时看不看源码(我就顺着讲了讲我看过的一些源码),然后给我说了说未来可能哪些领域会比较有发展前景之类的,不到30分钟就结束了。百度面试体验太好了,半个上午就结束了三面,点赞!

上面这些就是我差不多一个月的所有面试经历了,其实过程真的挺煎熬的,特别是头条挂完之后的极度不自信,值得庆幸的是最后结果还算满意吧(希望不是花光了所有秋招的运气)。如果分享的这些经验能帮助到牛友那真的挺开心,有机会希望秋招完了还能有经验来分享(不要是凉经啊,求求了)。

#你觉得今年春招回暖了吗##大家都开始春招面试了吗#
全部评论
epoll用红黑树不用哈希是因为什么?红黑树每次操作确定性高吗?
点赞 回复
分享
发布于 2020-05-03 09:29
大佬!!!
点赞 回复
分享
发布于 2020-05-03 11:15
联想
校招火热招聘中
官网直投
haha 同道中人啊 都是通信的,连offer都差不多,最后选择方便告知一下吗?
点赞 回复
分享
发布于 2020-05-03 11:24
la4nh牛🐮
点赞 回复
分享
发布于 2020-05-03 22:05
牛逼羡慕
点赞 回复
分享
发布于 2020-05-03 22:42
楼主好,你做的什么项目哇
点赞 回复
分享
发布于 2020-05-04 00:44
大佬!我想了解一下你面的这些公司使用的会议视频软件是哪些?😊
点赞 回复
分享
发布于 2020-05-13 15:11
楼主看不到你@的大佬&nbsp;求项目是什么
点赞 回复
分享
发布于 2020-05-14 23:44
lz双985吗,这么顺利
点赞 回复
分享
发布于 2020-05-15 00:14
恭喜楼主,是哪个项目组啊
点赞 回复
分享
发布于 2020-06-10 19:57
In la4nh 哥哥 we trust!
点赞 回复
分享
发布于 2020-06-29 17:58
请务必给我来一打这样艰难的经历(我面11轮拿了两个offer已经不配艰难了吗)
点赞 回复
分享
发布于 2020-06-29 18:48

相关推荐

20 167 评论
分享
牛客网
牛客企业服务