前言

悲催的经历:

先说一下自己的个人情况,计算机专业,17年本科毕业,一毕业就进入了“阿里”Java岗(进去才知道是接了个阿里外包项目,可是刚毕业谁知道什么外包不外包的)。

更悲催的是:刚入职因为家里出现一些变故,没有精力和金钱去承担待业的成本,也就意味着不能失业,只能默默的扛起担子,累点苦点也无所谓了,结果一待就待了差不多3年的时间。

其实在外包并没有想象中特别的差,最起码他可以时时刻刻的去刺激着我,我要努力我要翻身,我的脚步不可以停止,成长也是特别快的,这也正好是我需要的。

可惜的是(或许是庆幸)因为去年受到了疫情的影响,公司开始大裁员,存活已经岌岌可危了。在今年终于坚持不住了,而我早就知道待在外包不是长久之计,两年内无时无刻想跳槽;在20年11月份的时候就瞄准了年后的“金三银四”;

但是人算不如天算,我金三银四失手了,别笑我,面了几家我想去的公司,不是挂在二面就是三面,还有些挂在了电话面试,真的是羞愧啊,唉,其实说到底是我的技术太垃圾,是我太菜;

在这之后我成为了无业游民,但是我不能让自己这样子堕落下去,我觉得好好提升一下自己,再拼一把,这一次,我一定要竭尽全力!

反思:

这两年天天就是项目需要什么就做什么,天天CRUD,做一些重复搬砖的工作。做的只是这一家公司的一颗钉子而已,没有好好的扩展自己的技术栈;加上有一些原因招聘的门槛都提高了很多,当时好多电话面试第一关都没过。

可真是应了知乎上这句话:“毁掉一个年轻人最好的方式,就是让他忙忙忙”。

给各位同行一个建议:加班≠提升自己,提升自己是指系统的提升,专项知识点的提升,要有时间整理自身把技术由点连成线,再由线连成面,才可以适应潮流;一定要拥有属于自己的编程思维,可以不精通但是要熟悉整个体系,知道自己的不足,并通过自己的优势进行延伸技术栈,这才是不被行业淘汰的秘诀;

其实,塞翁失马,焉知非福。既然上天给了这次整理自身的机会一定要好好利用起来;

也该反击了

接下来做的是:

  • 梳理知识体系

  • 确立学习重点

  • 算法是否重要

  • 整理面试真题

  • 一份优秀的简历

1.梳理知识体系

上面也提到了,现在大部分的程序员的现状都特别奇怪,自己所掌握的知识是比较零散的,或者对某个知识点只知其表不知其里,其实这都是对自己掌握的技术内容没有进行一个系统的梳理,所以制定计划的第一步就是要梳理好自己的知识体系。关于梳理知识体系,要做到以下2点:

  • 你是否了解这个知识点的why、where、how

  • 你能否能将这些概念和知识能简单通俗易懂的讲给另一个完全不理解的人听懂


系统知识图


Docker思维图(xmid)


Java并发体系图(xmind)

2.确立学习重点

这是一位老师推荐的8大核心知识点,我觉得特别符合现在的我:

  • 多线程高并发

  • JVM虚拟机

  • 设计模式(看坦克大战一期项目)

  • redis

  • zookeeper

  • mysql调优课程

  • netty(网游后端项目)

  • spring源码分析

明确重心后就开始疯狂找资料充实自己:

Spring源码分析:

对于Spring源码起初也是在看一些书籍,结果就是看完就忘,理解不深刻,之后发现看视频并跟着实操是最快的理解方式;这套Spring源码100集真是香到不能再香了;


Netty:

着重推荐这一本跟着案例学Netty;本书共19个案例,用案例详细透解Netty在实操中的实际问题;是一本快速帮人出坑的好书;



设计模式:


多线程高并发、JVM、Redis、zookeeper、Mysql


3.准备算法

说实话我并不知道算法这个玩意到底有多么重要,最起码在我这几年工作中基本没有用到过,但是现在一线企业对算法都是重中之重(如果暂时不想冲击大厂的可以把这块放一放,所以这块单独说一下)

  • 该如何学习算法?

  • 程序员必须掌握的算法有哪些?

  • Leetcode刷题,到底稳吗?

关于算法部分,其实要准备的细节内容非常多,最推崇的就是左程云老师的这本算法书籍;

这是一本程序员面试宝典!书中对IT名企图面试的类别转化的最优解进行了总结,并提供了相关的代码实现。针对当前程序员面试缺乏权威的总结总结这一痛点,这本书选择“将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。”


4.收集整理面试题(点击此处获取文档完整版

除了算法部分以外,要想在实际面试中做到心中有数,大厂的常问的一些面试题或知识点也很有必要看一看。我特意搜集整理了近3年来一线互联网公司的面试题(技术部分),会发现这些面试题实际问的大同小异,但考察你的内容和技术都是有不同的目的性的,对这一部分的分析,我也有写在答案里(详细见文档)。



5、重中之重:简历

简历对于程序员来说是非常重要的一个环节,一份优秀的简历往往能够帮助我们敲开一线互联网大厂的大门,简历部分重要性我就不做过多的赘述。另外我可以提供18种优秀的简历模板。

下载好之后,根据模板来制定自己的简历,接下来就可以顺利投递啦!投递简历一定要参考好匹配值,建议最好找熟人内推。

不太会的朋友可以参考下面的这两份文档:



华为Java岗面试

在我失业4个月近5个月的时候,一切都好转了起来,自身技术得到提升,家里的风波也都平静了下来,意料之外的是居然获得了华为公司的面试邀请;

下面不想和大家过多的面试题了,关于面试题其实也都是那点问题。简单谈谈流程吧!

首先是华为hr审核简历,看一个简历和所需职位的匹配度,基本就是看毕业学校,看掌握技能是否与所需职位吻合,然后会有一个电话沟通,这里会问你工作经历,项目经验,然后再介绍下自己的职位,问你是否有意向投递,如果明确有意向就敲定技术面的面试时间,总之,这一关很easy。

接下来华为的hr会通知负责技术的面试官联系你,这里就很重要了,我们电话聊了将近40分钟,挂断电话的我一脸疲惫:

首先是自我介绍下,因为是技术面试嘛,所以介绍的主要偏项目经验这方面,所以我们先就项目的所用框架、所需技术等聊了一些,期间又问我多线程和高并发的相关知识,这个也是java绕不过去的门槛之一,然后问了我mybits和hibernate的不同点,还有spring和apache自己封装的一些方法问我用过哪些,最后问了我一个arrayList和linkendList的区别。。。

如果这一面双方聊的都比较好的话技术官会再给你打电话告诉你需要机试,发给你一个牛客网的答题链接在线答题,这个类似于华为校招的机试,只不过我这次社招只有一道题200分,超过100分就算过,这个机试需要注意几点,第一个是你只能命名类名为Main,不能是其他的,第二个需要注意的是可以在自己的IDE上调试,但是一定要把自己运行测试好的代码要全部copy到代码框内,包括导包的代码。

下面是我的一道oj题目:

骰子有6个面,现在用1,2,3,4,5,6分别代表一个骰子的左,右,前,后,上,下的初始位置,用R代表向右滚动一次,用L代表向左滚动一次,可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向右翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示逆时针旋转90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态。

如果OJ上机测试过了的话,hr会告诉你进行下面的面试,就是hr微信远程视频面试了,hr远程面试开始谈薪资,谈离职原因,谈职业发展,谈家庭构成,基本的定级和大概的薪酬,这些一般稍微高一点要,事先了解下华为薪酬机制哈,比如14,15,16等级的基本薪资和绩效的整体情况,月薪谈不妥可以谈年薪(ps:注意谈你之前单位薪资的时候最好真实,不要和说的差太多)。

同时要做个性格测试在线测试,一共104道题目,在25分钟左右做完,注意回答问题的一致性(题目中有些重复问题会测你的一致性),以及积极性,抗压能力等。

这时还有一个综合面试,一般不会卡你,基本就是定定薪资聊聊天谈谈职业发展,还会帮你做一些职业发展的规划,这时基本就大功告成,可以基本恭喜你去菊厂搬砖了(后面就是等待政审和体检了,要是这个没过,那····sorry,就爱莫能助了)。

总结

入职华为那一天我真的落泪了,一幅幅画面在我眼前飘过。写完经历再看这次能够入职华为,其实是那么的水到渠成,什么叫做苦尽甘来,现在的我可能就算是吧。

作为一名技术人,对大厂要有执念,要落实下来,相信自己付出是会有所回报的。在这,我也祝大家在接下来的金九银十里,面试顺利,过关斩将,拿下offer。

好运永远是留给有准备的人。

你是在每天学重复的知识还是不同的知识,有些知识是否最后发现学了无数次。