vlambda博客
学习文章列表

从985材料研究生,到54w的Java开发

陈同学注:

大佬们的经验贴 第二期 No.2  
走Java路线的同学看过来
这篇文章来自我的一个大佬朋友的秋招经历分享
从材料天坑 到 Java开发
从非科班 到 BAT
收割一众大厂 ,拿到54w的巨额高薪offer
一起看看这位大佬的成神之路!!!
绝对值得学弟学妹们学习!!!

转行之路

背景介绍

本人本硕985材料专业,学了六年材料,从我本科舍友转行,到我硕士师兄转行,到认识越来越多转行的人,终于,也带动了我这颗躁动的心,明白了什么叫及时止损,最后一年醒悟,自学计算机,怒转码农。我选择的是java开发入手学习,一是因为java的生态比较成熟,学习资料也比较多;二是因为java的市场需求特别大,更加容易上岸一点。

在很多同学的帮助下,学习了一年半,也算是成功上岸。从一个外包公司,到阿里实习,一步一个台阶最后秋招终于拿下数个大厂offer。

春招:

    阿里,腾讯,快手

秋招:

    腾讯,字节跳动,快手,百度,网易,猿辅导,华为

转行之路

在没开始面试前,我是从来不敢想自己能进入大厂的,一开始的目标只是进一个三线互联网或者硬件公司,只能说闷头只管努力,当你抬起头来的时候发现自己已经到了曾经不敢想的地方。

去年4月开始,认识到科研做不下去的时候,就准备开始转程序员。我选择了当下最热门的人工智能开始学习(再一次盲目跟风),瞎学了一个月python,深度学习,tensorflow,感觉就是闭门造车,东学一下,西学一下,完全找不到方向,而且毫无成就感,也不知道在做什么方向。直到认识了yq同学,yq告诉我,我这样学算法,明年找工作只能成为失业大军中的一员,给我讲了很多算法的现状,什么诸神黄昏,天地寂灭等。告诉我及时换方向,虽然有点不舍,但是这个时候我已经明白了及时止损的道理,于是放弃了一个月的算法学习,开始走java后端的路线(这个时候是5月15)。

JAVA学习过程

第一阶段:

Java基础,mysql基础,servlet,spring框架,mybatis框架,springmvc框架

第一阶段就冲的很快,完全不理解原理,只知道照写代码,甚至觉得短短一两个月学这么多感觉计算机也不是那么难(太年轻==)。学了点java,html,sql语法就急于找一个实习证明自己,于是去学校旁边的一家外包公司面试,面试啥都不会。问我JAVA的三大特性我都不知道,当时就感觉自己忽略了很多细节,在外包公司干了几天,啥都不会,代码也看不懂。于是就辞职了,当时有个小哥告诉我,去学一下spring。(这个时候应该是6月底

于是就一头扎进了ssm的学习,用了how2j的学习教程照着学一遍,似懂非懂,又照着w3school学一遍还是似懂非懂,后来在b站看的黑马视频课程,总算是大概明白了ssm怎么操作和基本原理。当时趁着,暑假出去玩了一趟,这个时候已经8月中旬了,在boss直聘上收到来自一个公司的一条消息,问我愿不愿意去实习,随后就去参加了面试,这个时候已经能答出来一点基础东西了,包括synchronized的用法,事务的ACID这些,答得一般般,可能看到我学校不错,还是让我过了面试。

第二阶段:

springboot,springcloud, redis(中间穿插着阅读了JVM和并发编程的艺术)

真正入职实习得时候,已经是9月初了,这个时候已经能开发点基本的网页了,期间做的也就是这个事情,做了一些基本的CRUD。这个时间段是比较辛苦的一个时间段,因为距离学校比较远,早出晚归。不过辛苦总会有回报,这个时间段,我认识了一个重要的同学lzy,,在这之后,我终于不再是闭门造车,有人给我讲就业行情,有人给我讲大厂招聘消息,有人帮我改简历。lzy给我提供了很多有用的资料,还教我如何去描述项目,并且让我少走了很多弯路,也是在他的建议下,我在实习期间自己实现了一个不错的功能,算是实习项目中为数不多的点之一了 == 。

springcloud,zookeeper,rabbitMQ

11月底十二月初,快三个月了,我就实习离职,学了点中间件,准备自己做一个项目(当时不知道做什么,后面发现同学没做的都是rpc等),我从网上找了一个十次方的项目,是一个微服务项目,用的技术栈是,springboot,springcloud,rabbitmq,redis等,之后我再自己加入了一个秒杀微服务(后来才知道秒杀项目烂大街),这也成为了我春招能吹的一些微服务,分布式的一些东西。不过后面事实证明,这种项目漏洞还是很多,幸运的是面试官都没有深究。

第三阶段:

基础阶段,也是java的同学的面试重点

基础课:操作系统,网络,数据结构

元旦过后(1月1日),就开始背背书,搞搞学校的事情,一月底就回家了,刚好疫情爆发。就在家背背书(后面才觉得我这个学习方法是错误的,基础应该放在前面学习),主要内容是这些:

Java基础:缓冲池,String,hashcode和equals,抽象类和接口,static,final,多态;

集合:ArrayList, LinkedList,HashMap,HashSet,ConcurrentHashMap,CopyOnWriteArrayList,Queue,PrriorityQueue

JVM:JVM内存区域,垃圾收集算法,垃圾收集器,类加载机制,JVM调优

多线程:Synchronized,volatile, CAS,ReentrantLock,Countdownlatch, Semaphore

Mysql:B+树索引,存储引擎的区别,覆盖索引,联合索引,最左匹配原则,三大范式,四大隔离级别,MVCC,锁

Redis:优点,单线程,事件模型,持久化,主从复制,redis集群,缓存一致性,键删除策略,淘汰策略,分布式锁,缓存击穿,缓存雪崩,缓存无底洞

Zookeeper:zab协议(加分),结构模型,功能和优点,分布式锁

分布式相关:CAP,BASE,Paxos,分布式事务解决方案,ZAB,分布式锁,消息队列

当然,还没完全复习完的时候,春招就开始了

第四阶段:源码阶段 + 面经阶段:

因为一开始就没想着去大厂实习(导师不可能同意),听说阿里可以直通车,2月底,投了阿里巴巴试试,也没打算过,就想着练习练习,结果很顺利的面的两个部门通过了,当时想多试试,又投了腾讯和快手,结果也够过了,后续秋招开启就没什么太多惊喜的了,因为无非就是重复春招的流程,很幸运的时候,面过的公司都拿到了offer。那么在这半年面试期间,其实也是穿插有一个学习和复习的过程的,主要是针对源码和面经主要如下:

需要了解的源码:
  集合:ArrayList, LinkedList,HashMap,HashSet,ConcurrentHashMap,CopyOnWriteArrayList,Queue,PrriorityQueue
  AQS:AQS的原理,ReentrantLock,Countdownlatch, Semaphore
  线程池的源码
  Spring源码:初始化流程,循环依赖

上面只是一些常问的源码,
一些更细节的就不提出来了。
包括春秋招期间
跟同学们讨论的很多面经细节知识。
当然算法的话,应该是整个学习过程中都要刷的,
一般leecode 前200+剑指就够用,
但是运气不好也有几率碰到难点的算法题,
比如手撕跳表,比如手撕前缀树等。

总之~,感谢这一年的自己,可能比不上很多速成的大佬,不过还是很满意了,尤其是在毫无计算机基础还要跟导师斗智斗勇的基础上…,也希望大家都能够得偿所愿,不负坚持

- END -
陈同学在搬砖 发起了一个读者讨论 大家有什么观后感吗 精选讨论内容
L

哈哈我也觉得只要下决心去做,总能有收获。今年五月份才开始学的,也拿到了腾讯offer,比不上陈大佬但也心满意足了

Author

666 牛批了

聪明杨

选择大于努力

奥你这愚蠢的土拨鼠

在这评论的,明天早上到老板办公室检讨😏

余下8条讨论内容