背景
一个广州非985/211普通本科生,计算机科学与技术专业。以前老是梦想能考一个厉害一点的学府,学习物理专业(因为初中和高中对物理比较有兴趣),无奈高考考得不尽人意。来到了计算机专业,才知道有C语言这玩意。
大二的时候跟着工作室开始做项目。前后差不多完成了5个Android方向的项目,主做的有3个。这一年,边学习Java边学习Android开发
大二到大三那段时间投了很多家公司,让我记忆最深刻的就是阿里的求职之路了,一共面试了六次!
有时候选择真的是非常重要了。
应届生坎坷的阿里求职路
阿里内推实习招聘(第一次)
由于过年在家那段时间,工作室的师兄帮我们内推了阿里巴巴春招岗位。自己对部分不熟悉就写了淘宝和UC,后来内推名额满了,一个研究生师兄帮我内推到yunOS事业部。现在看来,我更推荐学Android的朋友选择支付宝和淘宝。
阿里一面:
第一次打电话给我的时候我正在等CVTE的第二面,所以和面试官说等会再面试。第二次打电话给我的时候已经很晚,那时候在地铁上清不清楚面试官说话,说等会我出地铁再面试。出地铁的那一刻好紧张,CVTE的面试瞬间给我抛到九霄之外。具体的面试内容我大致只记得谈谈负责的项目;为什么会喜欢做安卓;安卓的系统启动机制;安卓应用的优化还有socket的应用。后来问提问环节问了面试官的工作地点和我面试岗位的工作后,发现是在杭州,请求面试官能不能帮我转到广州后,他说可以。
阿里二面:
大概在一面过了一个星期后打过来,主要面了Java基础;线程同步;集合机制;安卓项目中用到的技术;还有一些不太记得了,最后谈谈规划后发现这个岗位还是在杭州。所以又请求面试官能不能转到广州岗位,他说可以后结束面试。二面过后,官网发现自己的状态变成拒绝后重新多了一个简历评估的状态。
阿里三面:
大概距二面过了15天,我本来以为阿里已经拒了我了。三面面试官打来的时候是我正要去看校辩论赛开场表演赛。刚出门就接到面试官电话,谈了一下Java技术和Android技术后觉得我OK,说了是yunOS事业部的,问我有没有兴趣还有以后的职业规划后。提问环节问了还有没有面试,面试官说没有了。官网状态瞬间变成3面通过。
阿里四面:
在看比赛过程中,接到总监电话,表明了是yunOS事业部是否想参与实习,表明我通过事业部面试,问我家庭情况,个人性格及其在校活动,职业规划等,并和我说了入职时间和会有人后续联系实习事宜。
结果:阿里内推通过,选择阿里巴巴yunOS事业部实习
阿里实习面试(第二次)
因为知道事业部今年实习生基本都没有转正机会,身边很多实习的研究生师兄自己在阿里平台上联系其他事业群。无奈我还天真的以为事业部会安排我们面试其他事业部,然而并没有〒_〒,让我感觉到巨坑。后来自己在阿里平台上搜了做Andoird工作的很多工程师后,有一个主管愿意接纳我。面试了一些内容后,在后续面试过程中由于岗位需要在北京工作,而且可能需要转前端,不符合自己的发展意愿,所以就明确说了,也很感谢这位大哥给我机会。
阿里(第三次)
实际上从HRG在杭州告知我回来后会有一个终面部门交叉面,结果在腾讯失利的第二天。直接电话说“对不起......”我直接说理解后挂了电话。
在面试汇丰过后,一段时间,差不多到了11月末,面试了阿里健康。得知从集团简历池中选了我之后安排面试,谈了转正待遇后安排面试,两面都视频面试。
一面:
安卓基础;项目技术;性能优化;学习目标;Java基础及其内存回收等
二面:
项目技术;安卓Framework知识点;性能优化;开源框架知识;提问环节问了所做业务等
结果:过了,资薪待遇谈了也清楚了。因为实习时间及所在地点时间与自身情况冲突,也不是自己最想要去的部门就拒绝了。
被迫考虑机会
在面试阿里以及腾讯三四次的过程中,虽然有收获到其他 offer ,但并不是我大学时期心仪的 offer。所以到最后,还想去网易搏一搏。结果这一搏,就一直待到了将近一年。
真的,很多时候未来发生什么你都不知道!(预言家 =。=)。 我也不会预想到我工作快一年的部门因为公司架构调整而需要被迫考虑重新找工作。
后来是之前的同事朋友帮忙搞得内推,和公司请了假,本来担心状态不好,不过一想到自己以后要做的事,立马就飞了!不要怂,就是干!
阿里(第四次)社招一面
我还以为要笔试,结果直接进入正题面试,有点措手不及,不过先自我介绍,所以我调整了一下情绪和思路。面试官很帅气啊,是一个很年轻但是应该有蛮长经验的面试官。问得问题主要有:
推送sdk底层实现socket相关实现mvc mvp mvvm区别与项目使用情况网络层相关设计,volley底层实现,缓存相关自定义view相关下载模块涉及,成功率相关弹幕与播放器相关跨进程通讯手段与注意点,webview相关EventBus相关性能优化经验及手段为什么想要换工作兴趣爱好,工作室情况,如何协调工作室与辩论队平时学习习惯和安排
上述的点可能有一些遗漏或者记得不太清楚,不过整体面试官给人的感觉真的很好,大厂的环境也赞!除了前面聊技术外,也聊兴趣爱好,平时一些习惯等,整体来说氛围很轻松。
阿里(第四次)社招二面
二面是一个脸色红润,很和蔼的一个面试官负责。想了一下,除了和大学廖老师沟通有这种感觉之外,这位面试官给我一种导师的感觉哈。面试的问题主要有:
网络请求涉及,如何设计缓存性能优化手段,场景dp的设计熟悉的底层源码,广播底层实现,这一点自己确实还了解不够,不过自己讲了哦从wsm->activity->view的事件传递过程聊之前阿里的实习为什么想要换工作职业规划短视频行业,Bolo相关及一些竞品,因为平时也会留意自己开发的软件及竞拍,行业情况,所以有一些自己的见解聊兴趣爱好聊王者荣耀产品相关
整个过程面试官给人印象很深,除了互相交流得开外,他的问题也很有深度,不过如果真的答不上就请教下就好。最后面试官问了是否有哪些问题提问咨询:
从刚才所述的职业规划,希望面试官给出意见和建议如果有后续面试,会在什么时候安排
还是到之前的面试办公室,10楼的环境给人的感觉很清新,自由。
阿里(第四次)社招 leader 面
面试官很年轻,让人感觉很有干劲。其实今天一整天都昏昏沉沉的,人状态很差。但是和面试官聊天,能说到的都是内心的一些想法,所以聊起来很舒服,他的一些建议也很值得我思考反省。
自我介绍岗位要求实习内容工作负责内容换工作原因优缺点学校经验家庭情况个人现状
面试的问题可能记不太清楚,但是有两个点我很深刻。 第一个是自己现阶段要稳下心沉得住气。几位面试官都和我说到了这一点。确实是这样,我很看重职业生涯前几年的学习积累与心态沉淀,也明白了当前自己最需要做的事是什么。 沉得住气,我自己的理解是:
心态不要浮躁,相信自己的规划和按照自己的规划走学习新知识,要学会从宏观上懂得一个知识牵扯出的知识网,更要耐得住心去一句一句代码debug每个细节清楚地看清自己的技术现状,虚心地取长补短
那天结束之后,用新的心态去学习retrofit源码,记得大学的时候看imageloader,volley的时候,会没有太多的耐心去深挖,虽然知道流程和某些细节,但是对底层原理其实没有足够的掌握。很奇怪,今天越挖,发现自己对Android越无知,我第一次感到自己无知时,确实开心的。当我向我之前同事说某个源码细节的逻辑和我们项目所用到的逻辑有偏差时,他去调式之后发现“是项目用错了!”。感觉心里还是美滋滋的。
第二个是自己表述不够精简,有时会用辩论的方式来解释一大堆东西,会让听众感觉很罗嗦。这也是我的问题,改!应该尝试先下结论后再根据情况做分析。
面试完走出办公室,还看到面试官拿着笔记本,打了个招呼,感觉心暖,感谢这次机会。
阿里(第四次)社招HR 面
hr面应该是我最紧张的一面。可能是最后一面,也很看重这次的面试,担心自己说得不好。过程中自己也因为喉咙的原因喝了多次水,思维中断了好多。不过,面试官是一位比较有亲和力的姐姐,无论的问问题的方式还是追问一些细节,都让人挺舒服的,不会感受到太大的压力。
入职半年多,为什么选择换工作现在事业部状况负责的项目工作最困难的事是什么职业规划坚持最久的事最有成就感的事薪水相关
总的来说,今天面试的表现,自己给自己的评价是一般。最后沟通的时候因为薪资问题最后黄了。
不甘落败尝试蚂蚁金服
蚂蚁金服的面试机会是那时候在看机会的时候,在脉脉认识的一位蚂蚁金服的面试官那里争取的。在沟通过后,对其部门的意愿挺大的,所以就尝试下把简历给了面试官。过了几天,没想到收到了其部门HR的面试邀约。刚好那时候公司部门架构调整到了尾部,我们可能被合并到一个新的部门中开展新的工作。可能大学实习给我留下非常好的印象,很喜欢阿里的技术部门,加上 之前UC 的面试没有如意,所以就毅然进行面试。
阿里(第五次)社招一面
介绍自己介绍简历上的项目高性能列表实现,重点围绕 recyclerview 展开,如何复用,如何缓存性能难点如何攻克性能优化方面项目中做了哪些工作热修复原理,类冷启动修复原理,类热修复原理,classLoader双亲机制换肤原理设计一个图片框架,我考虑的是如何加载,如何编解码,如何缓存,api的易用性,大部分参考 glide 思路在很多数中找出前n个最小自己的方向是什么? 想做业务,还是想做专点的技术,如何理解项目架构。反提问:“自己技术性回答得怎样,有哪些改进。”面试官给的建议是:技术还不错,但是介绍部门业务和自己的切合度时需要“表述要简洁,逻辑要清晰”。
阿里(第六次)社招 leader 面
介绍自己情况,学android,实习经验介绍网易经验,哪个项目最大,项目规模,项目人员分布擅长哪一方面,这个问题非常致命,一定要选你足够理解的,我那时候讲的是性能优化,但是感觉讲的不好android 虚拟机区别,编译区别,dex区别热修复流程,原理是什么,业界有哪些方案,对比如何打包流程是怎样的应用启动相关流程,从孵化进程到MainActivity#onResume绘制整个流程新版本android特性手势滑动事件分发view绘制流程gradle执行流程apk安装底层细节最后留了一道算法题,我做了两天之后发给面试官阿里(第六次)社招 交叉面
介绍自己项目经验,团队情况对网络是否熟悉,一次http请求,https整体实现以后想做什么,如何规划自己技术开源贡献,博客记录相关的开放性问题反问:后面是否还有技术面试,得到的答案是基本不会有了,等 HR 面试就好阿里(第六次)社招 HR面
介绍自己项目经验,团队情况,学习情况,薪资待遇未来技术规划,是否考虑杭州,未来家庭规划反问:大概多久会有答复,得到的答案是当周周五前。“选择” > "努力"
当周周四收到了人生中第一个阿里的正式 offer,还是我最心仪的蚂蚁金服的技术部门的 offer。技术方向和薪资待遇都大大超过我的预期。HR 让我考虑一周之后给答复。
过了一周,我决定放弃这个 offer,并开始自己新的技术规划,在新的部门好好干。一干,就干到了现在。
如果到现在问我,“当时放弃蚂蚁金服的 offer 后悔吗?”
我会说 “说真的有点遗憾,但我无法比较孰好孰坏,我现在就挺好的。”
如果你刚开始出来面试,那么就要用心去准备,去模拟,把每个机会都抓住。
如果你已经面试了几家但是都还不理想,哪怕是疫情背景下,你不要将就。我一直都觉得做技术的不要将就,可能是我的性格。
那么继续尝试,把你每一次的面试的经历都记录下来,面试题是什么,你是怎么回答的,甚至你可以在面试的时候把自己的回答录音下来,回去好好听好好修正。一次会比一次好。
如果你有几个offer在选择上出现了分歧,建议要开始规划从职业规划来考虑offer。如果你打算未来深耕音视频,那么短视频技术offer则大于非短视频技术offer。如果你打算考虑往技术经理/技术团队管理,那么能带团队的offer > 不能带团队的offer,参与技术选型,技术架构搭建的offer > 负责某一块业务的开发 offer 等等。
这几年下来,我发现 “选择” 和 “努力” 在不同时期有不同的侧重。
毕业时期,“选择” > "努力",好的平台能带给你更多的机会,更好的薪资待遇,让你的视野更广;毕业前5年,“努力” > “选择",当你有一个好的平台之后,你要懂得利用平台资源去学习,比如各种内网,公司技术福利等,并借着平台项目的实践机会去野蛮生长;后几年,“选择” > "努力",这是因为前几年为了积累的专业优势或更高的视野让你看清你以后要干什么,如果说选择的是平台,那么这个选择就是未来要尝试突破的方向。
当然,这些想法受限于我的经历,难免难以苟同。
面试前充分准备
有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!
Android学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
模块化学习资源
接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
《Android汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
《Android汇总复习资料—算法》
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
②读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
③面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
④大厂面试高频知识点
图片网络和安全机制数据库插件化、模块化、组件化、热修复、增量更新、Gradle架构设计和设计模式性能优化Android FrameworkAndroid优秀三方库源码
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
【坎坷求职路】:选择大于努力!一名六次反复经历失败的应届生 最后一刻跻身阿里如愿以偿