去美团实习了
Posted 拓跋阿秀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了去美团实习了相关的知识,希望对你有一定的参考价值。
作者:阿秀
校招八股文学习网站:https://interviewguide.cn
这是阿秀的第「251」篇原创
小伙伴们大家好,我是阿秀。
春招过半,很多学弟学妹都慢慢拿到了一些offer,其中上岸美团的相当不少,近一周以来断断续续收到不少私信说上岸美团的消息。于是我邀请了其中一些比较不错的学弟学妹来做一些分享,今天分享一位学弟上周拿到美团暑期实习的学习经验和面经。
其实以前就已经分享过不少类似的经验了,一些 23 届和 22 届的实习、秋招上岸分享都做过不少,多看看前人走过的路能帮你少走很多弯路,少踩很多坑。
感兴趣的可以看看下面这个往届校招上岸经验汇总:往届实习/校招经验汇总
不过这位学弟的在学习圈内发的面经涉及个人信息比较多,我帮他做了一些个人信息上的脱敏,避免被定位到。
说回这位学弟,其实我很早就有他好友了,他去年就加我好友了,而在今年二月份的时候还回答过他的一些学习进度咨询问题。
而今年三月初的时候还给他提过一些简历的意见和建议,因为打字比较慢,所以对于这些来找我帮忙看简历的学习圈的学弟学妹们我一般都是直接发语音说一些我的建议和意见。
好了下面就是这位学弟的分享,其中的”我“代表这位学弟本人:
大家好,我是入海。三月的最后一天受秀哥的邀请在此记录一下自己找暑期实习的经历。
一方面回顾和反思一下自己过去的工作和不足,另一方面也希望能够给友友们点帮助,祝大家早日拿到心仪的offer💯 !!!
接下来我将按照投递时间、简历、笔试准备、面试准备、个人美团面经等方面简单聊一聊我的拙见,大家可以按需观看。
1、投递时间
我目前拿到了美团骑行事业部的暑期实习offer,当时选择部门的时候都不太了解,想着美团外卖肯定是核心部门,送外卖会涉及到骑行,所以就选了该部门,啊哈哈,就是这个想法。
但实际上该部门的业务是关于单车骑行的,当我得知这个后觉得有点囧哈哈,不过问题不大哈哈。
具体时间线如下:3.7 投递简历,3.11 笔试(第一批),3.21 一面,3.22 二面,3.23 oc,3.28 正式offer。
我从 3.8 开始投递简历的,几乎把当时能投的互联网公司和银行等都投了一遍,那两天几乎啥事都没干一直都在重复填个人信息…
大家可能会困惑要不要第一时间投,总觉得自己没准备好,我的答案是一定要!我当时也是很纠结,最后还是硬着头皮上了,对此我的分析和理由如下:
当时投递的时候看到内推发了这句话:早投递早上岸!据统计,50%的 Offer 发给第一个月投的简历;80%的 Offer 发给前两个月投的简历!!
永远没有准备好的时候,确保自己学习的广度足够,知识点都差不多覆盖了就可以开始了,面试的时候谈到某一点都可以聊一些,在时间充裕的情况下拓展深度。
投递完简历到笔试和面试中间还会有一到两周的缓冲期。
不用过分担心投的早没准备好面挂的情况,一般大公司都会给你好几个志愿的,还是有一定容错率的。
2、简历
简历这块大家的结构都差不多,基本就包含:个人信息、学历、技能、项目、个人评价等,关于简历我想谈一下自己的想法:
简历模版
很多人说程序员的简历不需要花里胡哨,面试的时候人家更会关注你的技能。
道理是不错但还是有点太片面了,简历是不能太花里胡哨,但是该有的美感还是要有的。
有些简历模版真的是有点太“朴素”了,再加上如果内容没有重点信息标识,密密麻麻的黑字,我自己可能都读不下去了,甚至看了半天都不知道你找什么岗位。
所以你可以稍微修饰一下简历样式,例如换换主题颜色、重要信息加粗、段落字体差异明显……虽然打铁还需自身硬,但是这些小细节还是很能增加好感的。
技能
这块主要就是写自己所学的技术,我建议大家最好按照技术的类别进行分类罗列,例如编程语言、算法基础、数据库、计算机基础、开发工具等,这样看起来条理特别清晰。
每个技术最好也能罗列一下简要的内容,这可以帮助我们后期快速复习某块的具体知识,也能引导面试官去提问,另外技术名称不要写错字哦(例如是Java,不是java,细节啊!)
个人项目
这块常见的组织方法就是:技术点、项目描述、工作内容、个人收获等。
值得关注的一点就是工作内容就绞尽脑汁的写详细吧,即使可能是技术很简单的工作内容,不需要为了省篇幅简略写。
另外项目工作要与自己的岗位强相关,不要投递的后端岗位却做了许多页面的样式工作。
其实在准备项目技术点的时候也是对自己所学技术概念的回顾,而项目内容是对这些技术点的具体应用,二者相得益彰。
3、笔试准备
算法这块是我的大瓶颈啊,真的好难,大家还是尽早开始吧😭
建议前期可以跟着左程云老师的课把常见的算法过一遍(b站白嫖),然后再去刷题可能更有体系和想法一点,当然了大佬略过。
笔试时用的是ACM模式,即要自己输入输出和构建数据结构,这点有点麻烦,例如我们平时刷题都是别人直接把树建好了,给我们个头节点我们直接用就行,但是笔试的时候还要自己建树,这块可以去牛客上看看往年美团的真题,提前熟悉一下。
很多大厂笔试都是有好几轮,强烈建议参加第一场,和投递简历一样,很多人觉得自己没准备好再刷刷下次考,想法是好的,但是有个很大的问题就是你刷题能力的提高远远比不上笔试筛选难度的速度啊。
因为前期hc多大家水平都比较菜可能一两道题就进面试了,然后就可以快速推进流程了;如果你等等再投的话,可能一两周后你只是多刷了几十道题,但是hc少了的话,所以笔试可能需要你做对三四道,甚至全部 AC 了都难进面试,这真不一定是我们能力的问题啊!
我们直线提高的速度真是比不上指数级增长的难度啊,所以真的早点开始吧!
我现在都觉得我去年开始准备还有点晚了,这不是危言耸听,只有走过的人才知道这一路有多难走,要学的东西有多么的多!
4、面试准备
从Java后端来说技术栈实在是太多了,我认为从重要性上可以进行排序:集合 = 并发编程 = mysql = 计网 > JVM > Redis> Spring框架>操作系统>其他,需要说明的是,这里并不包括手撕算法和笔试算法。
当然每个公司的面试风格不一样,可以提前去看看面经找找侧重点,网上的Java面试资料真的太多了,我就不多说了。
5、美团面经
美团是我面试的第一家公司,面试体验也如网上说的一样好,非常感谢美团给予的机会和认可,也非常期待接下来的实习生活。
接下来是我的面经
一面(40min)
1、面试官介绍业务,个人自我介绍
2、MySQL索引(类型,实现的结构,区别和联系,检索的时间复杂度,检索的过程,回表)
3、浏览器输入网址搜索网页的过程
4、tcp和udp的区别
5、Spring循环依赖(项目涉及)
6、项目功能介绍和数据库设计(讲了许久……)
7、算法:二叉树展开为单链表、链表的中间结点(二选一)
二面(40-50min,忘记录音了残存的记忆)
1、几乎70%的时间一直在介绍项目,询问项目功能的细节,深挖细节!!!
2、概率题:52张 抽7张 有炸弹的概率是多少
3、面试官手写了一些SQL语句,让判断哪些索引会失效
index(a 、b、c)
where a = xx and b = xx
where a = xx and c = xx
where b = xx and a = xx
where a = xx order by b
where a = xx order by c
4、算法:移动零问题
非常感谢大家能看到这里,和大多数人一样找实习的这段时间真是身心俱疲,从0到1的突破真的很难。
不过即使目前还没有找到自己满意的offer也不要轻言放弃,现在开始都还不晚,至少现在还不是秋招,
最后希望大家都能找到满意的offer,人生不只有工作,也别忘记要好好生活,共勉!
若有收获,就点个赞吧!
前年和去年分享的很多校招上岸经验也都是出自阿秀的学习圈中的往届上岸人,阿秀的学习圈中置顶帖的「知识图谱」和「精华区」(如下图)中有很多计算机大学本科&研究生学习以及校招的内容和问题,多看看这些能够帮你走的更稳、更顺、更平坦。
一个人踽踽独行不如结伴而行,以后会继续在星球笔耕不辍,输出一些有价值的内容。
欢迎点击左下角阅读原文详细了解,这可能是你求职路上性价比最高的一次点击!
美团面试,我竟然输给了冒泡排序……
第一时间关注程序猿(媛)身边的故事
作者
倪升武
本文为作者投稿,如需转载,请联系原作者。
前一阵子有个读者在微信里跟我聊了一件很有趣的事情,他去美团实习,面试让他哭笑不得,因为败在了冒泡排序上。
情况是这样子的,当时和面试官聊的感觉还可以,就在他觉得好像差不多快结束的时候,面试官给他扔了个题:“我这刚好有纸和笔,你来写个冒泡排序吧。”
这位读者心里一慌,为什么慌,倒并不是因为不会写,因为作为一个程序员,冒泡排序基本上没有不会写的,而是事发突然,感觉不太妙。当时他是这么写的:
public void bubbleSort(int[] a) {
for(int i = a.length - 1; i > 0; i--) {
for(int j = 0; j < i; j++) {
if(a[j] > a[j+1])
//交换,具体实现略
swap(a, j, j+1);
}
}
}
果不其然,他写了之后,面试官就问他,这种写法有没有什么问题?能否继续优化?结果还真没答上来。(看到这里,读者们不妨也先思考下如何优化。)
今天就这个冒泡排序,我们再多聊几句,回归一下经典。也希望以后有朋友实习也好,校招也罢,不要再栽在同样的问题上了。
冒泡排序算法的时间复杂度高,如果不清楚算法复杂度如何计算,可以参考下这篇文章:但是冒泡排序简单,基本流程是:每一轮从头开始两两比较,将较大的项放在较小项的右边,这样每轮下来保证该轮最大的数在最右边。如何实现?就如上面这位朋友所写的那样,基本上大家都会写。
但是今天主要讨论的是如何优化,有人可能会说,这是再简单不过的算法了,还有什么好优化的?确实,上面这段代码没有毛病,但的确是有可优化之处的。
我们可以假设一种场景,比如 8 1 2 3 5 7,进行一次排序之后,结果就变成了 1 2 3 5 7 8,那我们还有必要再像上面代码里那样继续循环下去吗?肯定没有必要了,因为这已经是最终结果了。
那针对上面的代码,我们优化的点主要在于:假如某一趟排序之后已经有序,我们需要减少排序的趟数。否则就做了很多无用功。
针对这个问题,我们可以考虑在算法中加入一个布尔变量,来标识该轮有没有进行数据的交换,若在某一趟排序中未发现数据位置的交换,则说明待排序的无序区中所有的项均已满足排序后的结果。那么就没有必要再次排序下去了。可以如下改造:
public void bubbleSort(int[] a) {
boolean exchange;
for(int i = a.length - 1; i > 0; i--) {
exchange = false;
for(int j = 0; j < i; j++) {
if(a[j] > a[j+1]) {
swap(a, j, j+1);
exchange = true;
}
}
if(!exchange) return;
}
}
这样就优化完了,其实代码逻辑很简单,通过一个布尔变量即可监控一趟过程有没有进行数据交换。
冒泡排序最好的情况是初始状态是正序的,一次扫描即可完成排序,所以最好的时间复杂度为O(N);最坏的情况是反序的,此时最坏的时间复杂度为O(N^2)。平均情况,每轮N/2次循环,N轮时间复杂度为O(N^2)。所以它并不是个好的排序算法。这个问题的讨论就到此结束,如果有更好的优化算法也欢迎留言讨论。
冒泡排序并不好,但为什么面试官还会去问?针对这件事情,我们需要注意什么呢?
1. 经典的东西,可能已经不用了,但是从经典的东西身上,我们能学到的还有很多,否则也不会成为经典。特别是那些面试经常被问到的,总有它存在的合理性。
2. 教科书上的东西不代表实战,所以很多时候考虑到非理想情况下,就可能不那么适用了。面试官往往更加注重的是在不适用的情况下,面试者是如何应对的。面试官更加看重的是面试者的思路。
3. 应届生不能浮躁,特别是在准备面试的时候,一定要步步为营,切忌好高骛远,浅尝辄止,多学习学习经典的数据结构和算法(),多做做算法题还是很有必要的。
- The End -
「若你有原创文章想与大家分享,欢迎投稿。」
加编辑微信ID,备注#投稿#:
程序 丨 druidlost
点文末阅读全文,看『程序人生』其他精彩文章推荐。
推荐阅读:
print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!");
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!");
Response.Write("点个赞吧");
alert(’点个赞吧’)
以上是关于去美团实习了的主要内容,如果未能解决你的问题,请参考以下文章