复习2个月拿下美团Android岗offer,还有点不容易啊!!

214 阅读15分钟

这是我19年的经历,觉得还挺励志的,希望能帮助到一些正在迷茫的同学。

前言

是去美团送外卖了?有配电瓶车吗?

答:亲,有配的哦,开起来贼顺滑。啊呸,说啥了,咱进的是正儿八经的技术部门。

正文

咸鱼的现状

时光回到2017年2月初,当时刚过完年回到上海,此时的我已经毕业一年半了,和大多数咸鱼一样,上班就是CRUD,下班就是看剧、玩游戏(英雄联盟、手游都玩)。

当时我的工资一个月到手就5k出头,但是因为在甲方驻场开发,加上差补餐补有接近8k,还包住。每到周末几个小伙伴一起打牌、一起搞情、一起洗脚,日子过得很是滋润,当时其实挺满足的。

咸鱼的自我救赎

让我萌生想跳槽的根本原因已经忘了,想了很久没想起来,可能是受其他小伙伴的影响吧,有了这种想法后就开始准备起来了。

刚开始只是每天下班后躺在床上看别人的博客学习一些东西,一般是22:30看一小时左右,当时最先看的是线程相关知识,就是类似于:创建线程的几种方式、Future 的使用、线程池的使用,等等这类比较基础的知识。

想跳槽的想法有了之后便一发不可收拾,如果说刚开始每天晚上看1小时只是在试探,那么半个月之后我便全力投入面试准备了。

当时工作上的事情不是很多,每天花个两三个小时基本就能应付了,所以其余的上班时间我都拿来准备面试了。准备面试的方式主要通过看别人的博客、看源码,内容主要是 Android 核心知识和 Android 面试题。

从二月初准备到了三月底,这期间我主要干了以下几件事。

1.看面试题

这期间我看了很多套Android 面试题,

很重要的一点,看题要带着理解、带着思考去看,将题目与实际开发的内容结合去理解,这样很容易就记下来了,死记硬背效果不好。还有看面试题不能只看一次,需要反复看,就像你高中准备考试那样。

对于背面试题,我只能说两个字。

2.源码初探

在看完上面的面试题后,已经能应付很多问题了,但是好像还缺了点什么?没错,就是能让你装逼的源码。当时我选择了常用集合的源码,当时我这菜比也只能选这个了:ArrayList、LinkedList、HashMap 等等,基本都是边看源码、边对着别人的博文跟着一行行的学。

3.项目准备

除了技术知识外,项目也是必不可少的一环,但是不需要准备很多,只需要挑2-3个你最牛逼的需求点准备就行了。

我很想传达的一点,项目中遇到难题时千万不要总想着退缩,这些解决难题的过程、解决的难题,都会让你快速成长和受用终身

咸鱼修炼出山

准备好了之后就是疯狂投递简历了,各种知名的招聘网站都要去投,也没有什么挑选的说法(唯一可能就是尽量选互联网公司,还有就是像阿里腾讯这种大公司,咱是不敢投的),只要是招2年 Android的投就完事了。只要能给个面试机会,咱就得谢天谢地了。

很多很多的投递都石沉大海,但庆幸的是在海投之下,还是拿到了不少面试机会,当然大多都是听都没听过的公司。

偶尔收到一些稍微有点名气的公司面试邀请时,心里真的乐开了花,可以对着这封邮件反复看好几遍。

面试之前给自己定了个目标——13k,每次hr问我时我也就讲13k-15k,高了不敢喊,心虚,觉得自己就是个垃圾,根本不值这个钱...

从3月底面试到了4月底,总共面了20来个公司。基本是每天2个面试,上午下午各一个。早上室友还没起床,我就已经出门了。早餐都是在三林东地铁站附近的巴比馒头解决的;午餐就在面试公司的附近找家麦当劳解决。那段时间每天在路上奔波的时间至少四五个小时,但是完全不觉得累,整个人对未来充满了希望。

也多亏了这一个月的面试时光,我走过了上海的很多地方:漕河泾、张江高科、唐镇、人民广场、陆家嘴、中山公园,之前在上海呆了2年去过的地方还没我面试期间去的多。

冥冥中注定

运气总是守恒的,有一些运气不好被秒杀的经历,必然也会有一些运气好拿到 offer 的。现在回想起来,当时能进美团真是冥冥中注定的,有无数次我都已经差点入职其他公司了,但是最终因为各种阴差阳错,最终都擦身而过。

谷米实业:1轮笔试,2轮技术面试。技术负责人比较看重逻辑思维能力,让手写代码,还问一些智力题。给的税后11k,由于五险一金的问题没去。

飞牛网:背靠大润发,当时觉得很高大上,给的税前13k,我当时都在看房子了,最后由于一些原因没去成,具体啥原因我自己也忘了...年纪大了,记忆力差的很。

幸运女神的眷顾

之后的选择已经不多了,就剩2个未面试的:平安医疗和美团,并且上海自己能投的基本都投完了,当时决定如果最后这2个没满意的就到深圳去(都跟父母和深圳的同学打好招呼了)。我不是一个相信运气的人,但是这次幸运女神确实眷顾了我,让我抓住了最后一根稻草。

进美团并不是一帆风顺的,拿到面试资格都费了好大劲,当时自己的简历太普通了,大概率入不了美团hr的法眼,但是我还是厚着脸皮投了很多部门,有些部门还投了很多次。终于,在我的死缠烂打下,有一位善良的hr给了我一次机会,这是我进美团的第一位贵人。

可能有同学有疑问,为什么要重复投一家公司,甚至是同一个部门?

答:每个公司都有很多部门,每个部门的hc数和招人标准都不一样,即便是同个部门,如果hr不同,标准肯定也不一样。重复投相当于是在碰运气,努力让更多的hr看到我们,努力让hr在不同的日子里看到我们,兴许hr今天心情好就给我们个面试机会了。

3月底开始面试的,到面试美团的时候已经4月底了,这面试的时间里,我们不能荒废了学习,还是要持续不断的复习和学习。当时我就在这1个月的时间里学了:性能调优,开源框架思想设计高级教程,而且在面试美团就用上了...,你敢信。

美团1面的小哥是我的第二个贵人,这个老哥贼实在,就对着我简历写的专业技能一个个的问,真的把我写的每一个点都问了...

咱这么老实的人,写在简历上的都是比较有把握的,因此这个小哥的问题我基本全答上了。不仅过了1面,而且可以确认小哥给我的评价很高(因为后面入职发现我比其他同学的定级高一级)。

美团2面就是主要问项目了,我又把我那蹩脚的项目拿出来讲了一遍,面试官问的很细,把整个项目从头到尾细聊了一遍,如果没准备好可能会扛不住,最后还给出了一些他的建议(其实就是装一波逼)。

Hr 面就比较简单了,一般是介绍当前的业务,问我对业务是否感兴趣啊,平时有没有在学习等等。对于这些问题,舔就完事了,把握好舔的尺度,不要舔的过于浮****夸一般都莫得问题。

不过也会有一些送命题,例如:能接受的底线薪资,如果低于该薪资会放弃本公司的机会。

我当时是这么回答的:“底线薪资:无,由于对贵公司的前景比较看好及相信贵公司会给出一个合理的薪资,本人将考虑贵公司给出的任何薪资”。现在回头来看这个回答,舔的还算凑合,有一些细节在里面

就这样,我不可思议的拿到了美团的offer,薪水也超过了我的预期。

进大厂的诀窍

经过这几年的摸爬滚打,我发现进大厂确实有一些诀窍,对于和我一样背景一般的同学,只要你抓住了诀窍,进大厂不是梦。

1)一定要提前准备,至少准备个一个月,网上的面试题多看看,对于那些高频题目,带着理解去学习,实在不能理解的就背下来,大家高考的时候不都是背过来的。

2)大厂通常有很多部门,每个部门的hc数和招人标准都不一样,即便是同个部门,如果hr不同,标准肯定也不一样,重复投简历可以增大我们拿到面试机会的概率。同理,重复面试不同的部门,也可以增大我们进大厂的概率。

3)大厂经常会布局新业务,新业务需要快速启动入场,hc通常会有很多,因此招人的标准会稍微降低,这个时候是个绝佳的机会。我当时进的就是个新的业务部门。

写在最后

可能有人会觉得我进入美团太幸运了,是小概率事件,不值得参考。

答:进入美团确实有运气成分,我自己也是这么觉得的。但是在大厂混了几年后,我发现这真不是小概率事件,很多人都是这么过来的,好多同学都是面了N次才进的大厂。

有时候,选择比努力更加重要,机遇比奋斗更加重要。但是,机会只留给有准备的人。我们只有时刻准备着,才能在机会到来的时候,去抓住它。

我很幸运的是,当我准备好的时候,机会来了。从此以后,我变成了一个相信运气的人。

我相信,越努力,越幸运

####Android架构学习路线与面试题分享:

1.架构师筑基必备技能: Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我们要学习java语言。另外,虽说kotlin语言得到了Android官方的热推,但是kotlin也是编译成了java语言再运行的。对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。而且Androidapk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。

那么Java中哪些东西是我们Android程序员需要学习的呢?由于Android程序员习惯了CV代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像泛型,多线程,反射,JVM,高效 IO,注解,序列化等,都是被CV的对象,而程序员是不懂原理的,具体内容如图所示。

2.Android框架体系架构——Andlroid高级UI与FrameWork源码 说到FrameWork别的不说,你只要去 Github上看一下腾讯Matrix的源码,就知道Framework 的知识有多重要了。像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……

3. 360°全方面性能调优 Android性能调优方面包括了很多知识点,其中关键的就有设计思想与代码质量优化, 程序性能优化,开发效率优化, 我们开发者将这些统称为Android360°全方面性能调优。 其实在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是:

测评:对系统进行大量有针对性的测试,以得到合适的测试数据。 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。 性能优化:对hotspot相关的代码进行优化。

4.解读开源框架设计思想 在Android开发中开源框架设计思想中的知识点也是较为重要的,相信大家都可以看到在每个公司招聘当中,对Android开源框架要求都是比较严谨的。而想要完全搞懂还得学会整理和规划:我们常见的Android热修复框架、 插件化框架、 组件化框架、 图片加载框架、 网络访问框架、 RxJava响应式编程框架IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,这些都是属于Android开源框架设计思想的。如下图所示: 5.NDK模块开发 Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。在最近比较吃香的音视频开发技术也是属于NDK模块开发。关于音视频进阶方面可看这篇文章:关于音视频进阶方面可点击这篇文章:作为一个Android程序员,精通音视频开发,寒冬再冷也冻不到你

6.架构师练成实战 在学好以上知识后就应该运用到实战当中了,在常见的实战当中:架构设计,网上商城项目实战,新闻客户端项目实战,多格式播放器项目实战,Gradle自动化项目 都是属于重中之重的。 当然还有小程序项目实战也是Android开发者必须搞懂的: 7.微信小程序 阿里架构师对小程序的看法:

第一点,不管小程序能不能在未来的时间里在移动端大放异彩,学习它,掌握它,都是没有任何坏处的。 第二点,就目前的版本而言,还是太过封闭。开发小程序就感觉像是在微信给我们划定的一个小圈子里兜兜转转,在圈里也许我们能得到很良好的开发体验,但是一步都出去不得。 第三点,在性能与便捷之间,最终往往会是便捷取胜。 第三点,能用 js 开发的,最终都会用 js 开发。 8.Hybrid开发与Flutter 想要成为一名优秀的架构师,需要掌握的知识是有点篇多,出来新的技术也不能落下学习,正像Flutter 在flutter中,一切皆控件!一切皆控件!一切皆控件!牢牢记住这个概念。Text是控件,Image是控件,Icon是控件,布局脚手架也Scaffold也是控件,甚至整个APP也是控件。

针对学习路线大纲配套整理了相关方面的资料,都已整理成PDF文档,也是借此机会免费分享给大家的:

1.架构师筑基必备技能: 2.Andlroid高级UI与FrameWork源码: 3.360°全方面性能调优: 4.解读开源框架设计思想:

5.NDK模块开发: 6.架构师练成实战 7.微信小程序: 8.Hybrid开发与Flutter: **后述:**如果你正在走往架构师的道路上迷茫了,感觉自己的所知知识已经膨胀了,那么可能你学的多而不精,缺少一份完整的学习思路大纲,我想此篇文章正好能够帮助到你。小公司的可能没有架构师这个概念,大公司的架构师职位又不是那么容易拿下。但不管怎样,不断去学习新的技术,提升自己的层次是很有必要的,无论你在哪一家公司,过硬的技术水平才能吃得开。 文中所述资料和完整架构师学习大纲可以直接点此处免费获取。 也可私信留言666 获得。
更多Android架构相关资料可以点此处免费获取