历经一年学弟从家里到了阿里,只要有梦想总会实现的!

Posted Java-桃子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了历经一年学弟从家里到了阿里,只要有梦想总会实现的!相关的知识,希望对你有一定的参考价值。

一年,从懵懂小白到 BAT 大佬,他都经历了什么?

今天给大家分享一位学弟小六的 超完整 学习和求职经验,不需要我太多的介绍,他的故事和干货都在文章里了,希望对大家有帮助。

写在前面:自我介绍一下,21 借 211 科班菜鸡,在校时学业荒废,技术基础薄弱,成绩一般,保研无望,遂准备工作。

求职战果:阿里、百度、滴滴、OPPO、招银等,BAT TMD 拿到了一半吧。

本文力求在回忆总结、播撒鸡汤的同时多上点对读者有益的干货,对故事没兴趣的同学可以直接翻到本文后半部分~

我最近也整理了很多Java学习笔记跟面试真题,为了帮助大家能够顺利拿到心仪offer,现在分享给阅读到本篇文章的Java程序员朋友们,需要资料的可【点击此处】获取!

求职故事

艰难起步

🕒 2020 年 4 月 ~ 2020 年 8 月

人没办法预知未来。

正如 2020 年 4 月 21 日的那个深夜,当我为字节跳动一周后的面试激动地彻夜难眠时,不会想到迎接我的将是毫无悬念的失败。

这一周里,我拼命背基础、写 LeetCode 题目,天亮就起,凌晨才睡,吃饭都在刷牛客找面经。只可惜,几年间落下的知识没办法用一朝来弥补,没有系统搭建的计算机知识体系,只靠着背几道面试题是经不起面试官的细问的,二面面试官问得我哑口无言的几个问题我至今都还记得。当时字节的流程经常是一下午连着三面,每次间隔十分钟,若是能过,三面结束就有结果,否则就此止步。二面结束后,我出门狂奔了几公里,心情沮丧,但隐约又觉得自己摸到了那扇通往大厂的大门。

五月份,学校开学了,我陆续又接到了几家公司的面试邀约,印象尤为深刻的是快手的面试。面试官戴着口罩,眼神凌厉,问得不仅有常规的八股,更涉及到计算机组成原理的一些专业知识,如磁盘 IO、内存读取之类的,基础不扎实的我只好支支吾吾东拉西扯,最不应该的是连手写单例模式也没有做到 bug free,一面之后再无下文。

期间也面了好未来之类的中厂,面试官问我是否会 Springboot、Redis,在得到否定的回答后他们微微摇头。

小厂的机会我也没有拒绝,可惜统统以失败告终。

好在最终还是拿到了美的集团的实习 offer,这也是我整个实习春招期间拿到的唯一 offer。它的面试真的很简单,只有一面,时长 20 分钟,简单介绍了一下项目,问了一下快速排序,就结束了。当天下午 hr 就打来电话告知通过,感谢美的的认可,这对当时的我来说的确是一个不小的鼓励。

以现在的眼光审视当时的自己,那时的知识储备实在是匮乏得可怜,简历上除了罗列了一些知识点外,只有一个大二参加比赛的客户端项目,我却拿着它面试后台开发的岗位,面试官拿着简历简直 “无从下手”,失败也就不足为奇。

意识到这一点后,我开始学习 Java 开发的相关框架,比如 SSM、SpringBoot 等。一边着手准备项目,同时继续坚持刷 LeetCode。这段时间里我找了个 Github 上的博客项目,把它的结构大概了解了一下后,就放上简历作为自己的项目。框架方面,看了 B 站上狂神说的视频,收获不能说很大,但对于 Spring 至少有了基本的认识,配合知乎、牛客上的相关面经,足以应付一些简单的问题了。

转眼时间已经来到了七月底,距我开始准备求职已过三个月,我又面试了涂鸦智能、奇安信等公司,依然没有通过。这时的我,开始面临一个选择,是否要去美的暑期实习呢?

再三权衡后,我登上了去佛山的 ✈️(美的总部位于佛山顺德)。

美的实习经历

在美的的导师是个操着浓重湖南口音普通话的中年人,沟通起来有点吃力,人挺好的(有饭局还带我蹭),但也许是因为工作繁忙,没时间给我太大帮助。另一个同事 J 哥教了我挺多,帮我拷代码装环境,还让我不要总唉声叹气哈哈,还教我买块固态备份文件后自己重装一下系统,虽然总是 diss 我的电脑文件夹凌乱。

至今还记得有个周五下午,J 哥给我讲了一两个小时的学习路线规划,告诉了我 极客时间 这个网站,给我举例自己是怎么运用上面的课程解决工作上的问题的,虽然后期由于时间紧张他也没多少时间搭理我了,还是很感谢他的帮助。另外需要重点吐槽的是美的给实习生发的电脑是我近年来见过的最辣鸡的电脑,六七年前的 thinkpad,卡得你一愣一愣的,办公还必须得用它。

在美的我只待了一个月的时间,说来惭愧,这段时间代码几乎是一行都没有写,直到入职两周的时候代码的环境还有问题。归结原因,一方面是由于美的美云智数的业务模式所致,它是类似项目外包的经营模式,也可以叫 SaaS,售卖企业信息化软件服务。项目当时正处于开发得七七八八的验收阶段,所有人都很忙碌,没人期待实习生有什么产出,自己太菜导致项目的 Bug 也无力解决,也没人给我系统讲解项目的结构。所以我常常是处于无所事事的状态,上班就坐在工位上刷面经、整理笔记,六点到就跑路回到公寓接着做题(美的提供免费单人宿舍,这点很不错)。总得来说,这是一段挺愉快的经历,遗憾的是没有时间好好体验大顺德的美食哈哈。

但求职的压力始终没有消散,不断面试不断失败,甚至电脑还进水了...... 那几天心态崩溃,我把自己的负面心情也记录在了牛客上,也有了很多牛友鼓励,甚至有人表示愿意先借我一台电脑,感动。

好在这段时间我也有所收获,花了一周时间搞了个RPC项目 ,靠着这个项目,我面上了 滴滴 的测开实习岗位。这是我此生离大厂最近的一次,我必须再次做出自己的选择:去,还是不去?

渐入佳境

🕒 2020 年 9 月 ~ 2021 年 3 月

最终,我做出了当初和去美的一样的选择,从广东一路向北,来到北京。

滴滴的工作氛围就相当 nice,团队年轻化,95、96 的年轻人居多,我在测试组,很多女生,工位左右都是姐姐。左手边坐着把我招进来的姐姐,生活方面有问题都问她,右手边年长些的是我的 mentor,负责在工作方面引导我。但时间长了就感觉到,自己对测试 / 测开的工作并不喜欢,对于需求的了解不够清晰,经常有问题都得找开发,编写测试 case 的过程也让我觉得头疼。后来就有了 转岗 的念头,可能真的是被幸运女神眷顾了吧,我成功调整到了开发小组。

一些公司是提供了转岗机制的,大厂转岗机会更多一些。如果大家拿到了好公司的 offer,却不是心仪的岗位,没其他更好选择的话,也可以先入职,再努力转岗。像这位同学一样主动提出,抓住机会。

新 mentor 是个工作激情十足的人,他做我 mentor 的日子里也是我实习收获最大的一段时间,虽然偶尔有点严厉,但真的是手把手在教我,让我从什么都不懂的纯小白成长为了能够胜任简单开发工作的菜鸟级开发选手。这段时间里虽然辛苦,但却足够充实。还要感谢我的Leader以及其他组员,对我足够包容,给了我很多试错的机会。

再战春招

🕒 2020 年 3 月 ~ 2021 年 5 月

等到我离职回校时,时间来到了三月底。我又有些不安分了,想着抓住毕业前的机会,利用实习半年的经历再试试春招,看看自己的上限在哪儿。最终把很多秋招时不敢投递的国内顶级 top 厂都面了一遍,也就不再有遗憾了。这几家公司的面试经历我也罗列一下。

  • 面试百度:纯属偶然,是一位百度的经理在脉脉上和我打招呼,晚上十一点约的第二天早上现场面试,感觉难度适中,拿到了 offer。
  • 字节:投递的是抖音直播,一面面试官问得很有水准,很多没答上来,二面面试官的问题简单,但细节扣得较深,遗憾止步。
  • 快手:不知为何,多次投递简历筛选都不通过,也许是去年面试评价太差了。
  • 腾讯:被捞了一次,还没面的时候发现自己就灰了,草草二十分钟了事再无后续,估计是 kpi。
  • 阿里:最终拿到 offer。

分享一个投递心得:我拿到 offer 的几个大厂都不是在官网直接投递的,滴滴和阿里都是在 Boss 上的内推人帮我 组内直推走流程,能够实时跟踪反馈结果!百度也是直属 Leader 在脉脉上联系的,供朋友们参考下。

如今,求职内推(内部员工推荐)已经非常普遍了,大家在找内推的时候,如果有意向部门或小组,最好直接找该组内的员工,机会更大一些。小心猎头!小心猎头!小心猎头!

分享下求职路上让我印象最深刻的几个瞬间:

  1. 第一天到佛山的时候,去得太早物业还没开门,太阳太晒,跑到小区旁边的 网吧 开了台机子刷 LeetCode!
  2. 在美的面试顺丰、网易等,怕被同事发现,跑到楼梯口、楼下的草坪旁坐着面试。
  3. 第一天到北京看房时约了 OPPO 的面试,看到一半跑去面试。

没想到真的有程序员在网吧刷 LeetCode!这里我真的是感同身受,自己当时也是为了面试,跑到公司楼下,到处找地方,甚至有一次是在肯德基,别人吃鸡翅,而我在机试。。。

现在回想起来,倒也不能说是辛苦,做一件事情是否困难很大程度取决于你对成功的渴求有多强烈,走到今天这步,应该算是六分努力四分运气吧,有了不错的起点,未来的路还漫长。

这一年从南昌到佛山再到北京,经历了美的和滴滴,接下来的几年可能要在杭州度过了,期待。

故事讲完了,上干货!

需要Java学习资料、面试真题的可【点击此处】获取!

干货分享

资源

求职必备 App / 小程序 / 网站

以下资源全都是我自己用过的,强力推荐!

  • 牛客网必须排第一,收集信息,查找面经必备,也能在上面报团取暖,没事吹水缓解压力哈哈。
  • Boss 直聘,很多是直接为自己团队招人的,一般更缺人,比起官网投递成功率 upup、其他的智联、拉钩、实习僧之类个人感觉用处不大,基本没回音。
  • 脉脉,搜集公司、部门信息首选,也能在上面找到公司 hr 帮忙内推,闲来无事吃吃瓜也是极好的。
  • 小程序 offershow,应届薪资哪家强,中国山东…… 啊呸,还不快查 offershow!
  • 网站 Leetcode、Codetop,面试字节,算法方面有它就够了。
  • 简历推荐网站 超级简历 ,模板美观大方,还免费!
  • 技术学习网站推荐两个:掘金,上面有很多小册子,其实就是电子书,质量高的不少;极客时间,很多课程,比较系统,就是有点偏贵,不过为了进大厂这点投资还是划算得对不对~ 这两个网站的风格很清爽舒适,让我很是喜欢,学习也要颜控对不对~
  • B站,课程很多。

补充一个,编程导航(www.code-nav.cn),可以在上面找到很多优质编程学习资源~

学习书籍

其实看书这玩意大家都知道,买书如山倒,看书如抽丝,我自己本身只爱看小说 / 名人传记之类的杂书,对于专业书籍一向是耐不住性子去啃的,这里只推荐我自己看过的一些比较通俗易读的书。

  • 《从根儿上理解mysql
  • 《深入理解 JAVA 虚拟机》javaguide上的jvm知识用于搭建体系,这本书深入细节
  • 《码农翻身》对于初学者来说很有帮助,以拟人化的视角了解多线程等知识,趣味性很强,读来不吃力
  • 《图解计算机网络》
  • 《剑指offer》、《啊哈算法》简单易懂,适合入门

学习方式

我主要推崇通过两种方式学习,但归根结底是一种思想。

先提一个观点,表达和写代码一样,是程序员的核心素养

表达能力不行,首先你面试通不过,就算技术能力过硬,那也是茶壶倒饺子,人家不能发现。其次就算你成功入职了,怎么和测试、产品对方案,你的思想别人没办法正确领会和接受。向老板工作汇报,怎么体现你的战功和武功?述职晋升的时候,怎么在短短半小时里打动评委?

所以,表达能力作为程序员软技能里的 Top one,它 hin 重要!!!

你是不是有点困惑,哎这部分不是讲学习方法的嘛,怎么又扯到表达上了?

哎别急,我要说的学习方法,就是 通过表达来进行学习 ,在学习的同时,又锻炼了自己的表达能力,一举两得,岂不妙哉~

求职技巧

项目

我最初的项目是一个单体博客项目,但一个 简单的单体博客项目 是绝对满足不了面试官的期望的,尤其是在后端开发岗竞争尤为激烈的情况下,分布式、微服务 几乎是必备的技能,如果项目上没有体现出来,那么面试官必定会对这方面的知识点加以盘问。所以面一家挂一家。而 RPC 项目作为一个代码量本身不大的项目,更适合求职。

以下几点说明:

  • 使用到了网络编程框架、协调服务 Zookeeper、序列化框架 fastJson 等。
  • 在基础知识上,运用到了动态代理、反射、这些高阶一点的 Java 特性。
  • 可以聊聊性能相关的 qps,通过负载均衡的方式减轻单机压力等等,这方面可以聊得就多了,消息队列、nginx 等,不过项目本身没有用到。

项目指路:github.com/he2121/MyRP…

项目一定要自己 一行一行手打 出来,不要偷懒,有不会的地方就去学习了解对应的内容。大概两周时间就够了,接下来要做的,就是整理一套自己对于项目理解的话术,并且不断通过面试官的反馈去调整自己的表达方式。一般面试开始的时候,自我介绍结束之后就是介绍项目环节,这段时间要着重展示自己的技术栈和亮点,为之后面试官的提问做好铺垫。项目的最大意义,是让面试官找到提问你的点,也就是所谓的 抓手

自我介绍

建议分点,模板可以是 “总分总” 的形式,把自己的个人介绍分成校园生活、实习经历、个人技术栈等板块,分点介绍,这样不容易把面试官绕晕,能够很清晰地 get 到你的点。而每个大板块里又可以分几个小点,比如在实习期间做了哪些需求,在校期间的比赛、奖项等。一定要 条理分明 ,否则你这边吹得天花乱坠,面试官听得云里雾里,效果不会好的。

对于很多同学来说,包括我自己之前也是,没有实习,在校经历又乏善可陈,就容易感到困惑,我到底该介绍点什么好?

我觉得可以着重介绍自己最近在看的技术书籍、分享自己的收获,也不失为一种不错的方式,这样做的目的:

  1. 填充自我介绍时间,不会太过短暂
  2. 引导面试官之后的提问,很可能就着重围绕你擅长的这方面
  3. 个人印象分 up,容易给面试官一种善于自我驱动的感觉

你看,就像这样,分点陈述,是不是 so easy,妈妈再也不用担心我的自我介绍了~

至于你到底看了什么书,就看个人兴趣了,我自己是在极客时间上买了一本《从根儿上理解 MySQL》。这本书个人认为是极好的,虽然到现在也没有全部看完,但是数据库的实现原理方面已经足够面试吹水用了,通过它我对于一些面经的理解更加深刻了,比如说,mysql怎么实现的 MVCC(多版本并发控制)、为什么被删掉的数据依然存储在硬盘中,怎么个存法、事务是怎么实现的等等,这些书中都有答案。而且一些细节问题我相信很多面试官也是不了解的,毕竟工作中用得不多,那么这就是你展示你的技术深度的时刻了,比起只会硬背面经的竞争者,是不是立马亮眼了起来?

自我介绍几乎是每轮面试开头都有的环节,至关重要,建议事先准备好一段话,多口述练习几遍。

面试技巧

这一整年下来,从最初面试字节时说话都有些颤抖,到后来睡梦中迷迷糊糊接起电话就能聊(吹)个十分钟不带喘气的,我大概经历了技术面试 四十多场 ,分享一些小技巧。

其实面试的时候,碰到不了解的问题很正常,每个人都有自己的知识边界,面试官也未必全知全能。

对面试官来说,问问题的目的不仅仅是询问你对单个知识点的理解,更是对你整个知识体系的全面考察,如果你这里不了解,但其他地方有深度,可以把面试官往那边引导。比如说面试官问到 IOC,你说 IOC 不是很了解,但可以讲讲 Spring 的另一块基石 AOP 巴拉巴拉(当然 IOC 不知道你已经没了,太过基础,这里只是简单举个例子)。

总之,尽量避免长时间的停顿,会让气氛变得比较尴尬,进而影响接下来的发挥。

其他方面就不多介绍了,对前期的求职者来说,每次面试机会都弥足珍贵,最好录音一下,面试完以后去 复盘 ,从各个角度给自己挑刺,包括回答的语气是否有点尖刻、知识点是否回答完善等等。没把握的时候多找小厂练手,能力提升后再去面大厂,避免留下糟糕的面评。我今年投递快手无法通过简历筛选也许就是因为去年状态太差留下了糟糕的面评导致。

有一些面试百分百会问到的问题必须准备:

  • 介绍下项目 / 实习中的亮点或者难点
  • 项目 / 实习中收获最大的是什么
  • 项目 / 实习中结合了哪些知识点
  • 反问环节:我一般必问的问题是面试官对自己的评价或者是建议。面试不是自娱自乐,你的表演效果如何,需要得到观众的评价。

面试的过程也是不断打磨自己面试技巧的手段,务必珍惜每个面试机会。比如我自己在今年春招的时候,由于有了实习经历,每次面试面试必问的一个问题就是让我介绍一下实习过程的项目。其实坦白说实习过程做的事情也没有多大难度,最开始我选择了一个业务场景相对复杂的需求,为了把这个需求讲透彻,自己整理了一大段关于背景的描述,一开始现场面试的时候感觉还好,配合当面纸笔画图描述,往往花费一定时间还能让面试官大致理解到我的点。后来视频面试甚至电话面试就发现,讲这个需求的 ROI(收益比)实在太低了,花费了大量时间,从面试官那里没有得到很强的正向反馈。所以后来我换了一件工作去介绍,效果就好了一些。

面试过程中的每一分钟都要把握住,尽量少说重复的、不能体现自己亮点的话;在回答面试官问题时,也要想清楚再说,不要自己乱说一通,到头来发现是错的。

算法

其实现在我觉得算法只是一道门槛,对智力正常的 IT 从业者来说,只要花时间去练习,是肯定能达到要求的,一般公司即使是大厂也不会在这方面太过刁难。如果一上来就出一道 Hard(不常见的那种,超高频的接雨水、LRU、K 个链表等不在此列),只能说明这个面试官不讲武德,你和这个岗位还少点缘分,那挂掉倒也无妨,毕竟大厂还有很多。我自己是大概刷了 300 题不到,到达这个题量之后可能会发现,之前的题目基本上又忘光了,很好,可以来 第二遍 了。第二遍就会轻松很多,简单回忆一下,重点题一定要多练。

最开始写算法的时候我发现自己快排怎么都记不下来,学了忘忘了学。后来有一周我给自己规定每天早上醒来就写一遍,一周后写着它已经不过脑子了,拿着键盘就是敲,形成了肌肉记忆。通过刻意练习,巩固所学,在理解的基础上去记忆。 还记得 OPPO 二面的时候我当场表演了手撕堆排、在滴滴表演手撕 LRU,这种比较长的算法写出来是很加分的。

资源方面首推 LeetCode 的评论区,各路大神都会分享自己的题解。还有很多网红,什么甜姨啦,liweiwei,labuladong 等等,都各有特点。看到有人喷他们,感觉倒也大可不必,每个人的思路不同,不适合你的也许其他人能从中获益。我看题解一般就是,这篇看不懂,马上就换,不去死扣,多看几篇总有适合自己思路的解答,不懂就留言提问,一般都会积极回复的。

课程方面只看过左神(左程云)的算法课,表达和编程的高手,配合上极富煽动力的语言和对题目轻蔑的语气,很容易给你一种自己能和他一样牛的错觉。在初学阶段入个门是极好的,19 年的时候基础版看过一遍。前阵子发现左神新课里顶着的新发型有点丑。。。我曾经可是他的颜粉啊,爷青结。。。。

面经

网上的各类面经已经堆积如山了,不想在这里贴太多基础面经,就分享一下最近让我印象比较深刻的 抖音一面 的问题吧。

  1. ReentrantLock 如何实现(AQS 实现)
  2. go 中的线程安全,全局变量、channel 是否安全、GPM 模型、channel 的 buffer
  3. nginx 如何实现限流,令牌桶和漏桶的区别
  4. CAS 中的 AAB 问题怎么解决
  5. redis 跳表的数据结构
  6. 扩容对 nginx 负载均衡策略的 ip 哈希产生的影响(往一致性哈希去答)
  7. 缓存击穿问题,除了设置热点数据不过期以外的解决方案
  8. redis 扩容的具体实现方式

这一轮面试的问题都是比较经典的手段 难题 ,像锁、线程安全、限流、CAS、缓存没多做些准备感觉还是挺难答出来的。

阿里则偏爱 JVM 调优一类的问题。

面抖音的时候又是时隔半年后春招第一次面试,不知怎么我总拿字节练手。。。其实也做了相对充足的准备,像去年一样闭关了一周,非常焦虑想要拿到 offer。一面的时候面试官提出了很多没有意料到的问题,算法还来了个 KMP,勉勉强强通过了,二面其实问题反而简单,没有意外,但是一些基础问题的细节没答好,还是没有通过。字节也算是心中的白月光吧,可惜越渴望好像就越得不到,阿里 oc 后字节 hr 又来约面试,拒绝了,以后社招有机会再面吧。

总结

求职路漫漫,有个好心态非常重要,永远相信美好的事情即将发生!

抓住能让自己成长的每个机会,努力去做自己认为对的事情。

成为一个乐观,皮实,自省的人,你我共勉。需要Java学习资料、面试真题的可【点击此处】获取!

以上是关于历经一年学弟从家里到了阿里,只要有梦想总会实现的!的主要内容,如果未能解决你的问题,请参考以下文章

从家里到阿里,学弟求职的一年

学弟进阿里了

我,离实现梦想还有多远

如何提升意志力让梦想变成现实

如何提升意志力让梦想变成现实

工作一年,想回校读博了