zoukankan      html  css  js  c++  java
  • Java工程师修炼之路(从小白到BAT的两年学习历程)

    在这里插入图片描述

    作者:陆小凤
    文章首发于:微信公众号【程序员江湖】

    前言

    在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。

    一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,并且,我对校园招聘也做了一些研究和相应的准备。

    在今年的秋季招聘结束以后,我也决定把这些东西全部都写成文字,做成专题,以便分享给更多未来将要参加校招的同学。

    更多内容后续都发布于微信公众号:程序员江湖

    大学时期的迷茫与坚定

    我的本科专业是电子信息工程,基本没有接触过计算机专业的课程,只学过c语言,然后在大三的时候接触过java,Android,以及前端开发。

    那时候我还不知道软件开发的水有多深,抱着试一试的态度去应聘了很多公司。结果可想而知。

    当年我对游戏开发很有兴趣,特别是对网易游戏情有独钟,但是当我看到网易游戏研发工程师的招聘要求时,我只能望而却步,因为它要求学历至少是985的硕士。

    也因为这个契机,我在大三的暑假开始准备考研,花了一个月的时间深思熟虑之后,选择了我大华科。

    毕竟是跨专业,在复习过程还是有点吃力的,但是就靠着一股毅力和执着,半年之后,顺利地考上了,成绩还意外地非常好。

    研究生时期的探索和规划

    对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。

    我当时本着想要找实习的想法选择了我现在的导师,事实证明我的选择还是很正确的。

    而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。

    我在读研之前想做游戏开发和Android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄,并且基于我之前的学习经历,java开发可能更加适合我。最终在学校的实训项目中我选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。

    我的Java入门之路

    之前说过,在研一期间看了很多计算机专业的书籍,比如计算机网络,操作系统,数据库等等,虽然吸收得都不太好,但也算是看过了。

    于是我开始踏上学习Java的道路。最开始我找了一些Java的书单,然后买了一些比较基础的书籍,先啃为敬。那时候我看过《Java从入门到精通》这种烂大街的书,也看过《Java编程思想》这种很难懂的书。

    一段时间后我感觉吸收效果不好,于是开始把目光转向视频课程了。那时候听舍友力神的建议,到极客学院上看一些视频课程,我当时就觉得这个讲的比书上要好懂一些。后来我又接触到了慕课网,中国MOOC等网站,逐渐地把相关的技术课程都看完了。

    那时候正好我们的项目实训还在进行,于是我就把趁热打铁把这些东西用在了项目当中,并且第一次用博客记录下我的实践经验。

    现在回头想想,此时的我也只不过是刚刚入门了Java以及web开发。然而那时候不知道天高地厚的我,就开始xjb投各大公司的Java实习岗位了。结果可想而知,那叫一个惨啊。

    我的Java进阶之路

    上文说到我刚刚开始投递实习岗位,是在研一的下学期。当时整天躲在实验室,一边看书一边看视频,接到面试时赶紧刷面经,忙的不亦乐乎。那段时间感觉自己的复习状态和考研差不多。

    然而,由于水平确实不咋地,当时我被各大公司的面试官吊打。比如我第一家面的就是百度,三个很简单的问题一个都不会,人家面试官都不好意思打击我了。后来我又面了一些大大小小的互联网公司,虽然情况有所好转,但是总的来说,我要学习的东西还很多。

    在准备面试的过程中,我看了很多面经,也看了很多技术博客,发现自己的基础很薄弱,需要系统性的学习。并且这些东西是视频和入门书籍给不了我的。于是我又踏上了找书的道路。

    那时候Java书单泛滥,有的书单质量低下,买来的书看两眼就看不下去了。直到我看到了“江南白衣的后端书架”这一文章,才发现Java后端书架原来应该是这样的。于是我照葫芦画瓢把相关书籍都买了,这个阶段,也算是刚刚踏上Java进阶之路吧。

    这里面不得不提几本书,对学习Java的同学非常重要,一本是《深入理解JVM虚拟机》,一本是《深入分析Java技术内幕》,以及《Java并发编程艺术》。

    再后来,凭着一股不到黄河心不死的精神,终于拿到了网易游戏的实习offer。于是,第一次在大厂实习的机会终于来了,我怀着即期待又忧虑的心情来到了杭州。

    我的Java实习之路

    在猪场实习的时间并不长,也就持续了三个月不到,当时我们部门在做数据仓库,于是我这边主要负责Java Web应用的开发,其实也就是写一些简单的后台接口。

    在熟悉了工作流程以后,我很快就适应了工作的节奏,毕竟做的东西也不难,导师也会经常指导,就这样我完成了一个又一个需求,直到后来家里有事,我才临时选择辞职回家。

    由于在网易实习的时间比较短,我也留下了一些遗憾,比如对整个项目的架构不够熟悉,并且很多相关技术栈也来不及学习。后来我去熊厂实习的时候,尽量避免了这些问题。

    熊厂实习的时间长达半年,部门当时做的是私有云,emmm完全是全新的技术栈啊,于是我基本上又是从零开始学习云计算,但是由于之前的操作系统和网络基础不扎实,在学习相关技术时,基本是两眼一抹黑,学啥啥不会。

    这也导致我在上班期间看了很多计算机基础方面的书籍,包括《计算机网络:自顶向下》,《深入理解计算机系统》等等。当然,这也是因为我的工作内容很简单。CRUD你懂的。

    于是花时间自学成为了我那时候的主旋律,看书,看内网资源,参加技术分享,倒也非常充实。当然,有空我也会看看项目代码,了解一下技术架构,以便让自己对整个项目有一个更好的理解。

    再后来,2018年来了。

    抉择时刻:实习转正还是秋招

    我是2018年1月份离开北京的。当时面临几个问题,是否续租房子,是否继续实习。还有一个小插曲就是当时养的一只猫也得带回去。再三思考后我决定回学校准备秋招。

    过年后我就回到学校了,当时我本不打算参加春招,想要潜心修炼准备秋招,但是架不住春招宣传力度大,并且几个大厂都标榜着“转正容易,hc多多”等口号。于是我没忍住,上牛客投了几次简历,打算面几家大厂,心想万一过了就去吧。

    简历都投出去了,那也只好复习了啊,当时我们宿舍跟打了鸡血一样,一整天都在刷题,从早到晚泡着刷LeetCode,一个月后终于刷到100多题,也算是能应付一下笔试了吧。

    春招我投的公司不多,也就at,网易游戏和京东。最后阿里和京东都给了offer。但是当时阿里的流程走得特别慢,直到内推截止前一天才给我发offer,并且自己也感觉之前面试表现一般,心想我要是去了也是B+,很有可能成为拥抱变化的牺牲品,于是我咬咬牙放弃了,大不了秋招再来。

    塞翁失马,焉知非福,春招的颗粒无收反而让我可以安心准备秋招,于是我有大把的时间做我想做的事,制定自己的学习计划,安排自己的生活,不需要去考虑转正这种麻烦事了。

    至此,四月终了,春招告一段落。

    Java修仙之路

    平时经常逛牛客,我也经常发些面经啥的,于是很多牛油喜欢调侃说“看神仙”。这时候我只能尴尬又不失礼貌的微笑了0。0

    在下不才,成不了神仙,最多就是打游戏的时候能修修仙罢了。

    不过你还真别说,网上还真有“Java成神之路”这样的文章,真的打扰了哈哈。

    科普一下修仙梗: 修仙梗的意思是喜欢熬夜的人不睡觉不猝死反而要修仙,然后就被广大的网友们互相调侃玩坏了,现在熬夜都不叫熬夜了,新潮的说法就是修仙,熬夜不会猝死啊,会增强法力。

    不逗你们了,咱们还是进入正题吧。我在五月份的时候做了一个计划,打算在七月底之前完成复习工作,原因是七月底有阿里的提前批招聘,是我最最重视的一个招聘。这个计划简称三个月计划,我主要做了三个方面的学习规划。

    一:首先,便是对Java后端技术栈的复习,这也是最重要的一部分,因为面试永远都是考基础考得最多。

    这部分内容又可以细分为多个方面:

    1 Java知识体系:包括了Java基础,集合类,设计模式,Java并发技术,Java网络编程,JVM,JavaWeb,Spring框架等等。

    2 计算机基础:包括了操作系统,计算机网络,数据结构,数据库,缓存等内容。

    3 后端进阶:包括了分布式理论,以及常见分布式技术比如负载均衡,zookeeper,消息队列,分布式缓存等等。当然,这里面也包括系统架构方面的知识,以及RPC,微服务等内容。

    4 额外内容:这部分内容因人而异,我主要是因为实习的时候项目涉及了hadoop以及私有云技术栈,所以自己看了很多这方面的东西,譬如Hadoop生态,OpenStack生态,以及docker生态。

    我在复习这部分内容的时候,一般先看优质博客,然后自己整理总结对应写一些博客,最后把能够实现的东西实现一下,这样一来一个知识点就搞定了。剩下的事情就是重复这个步骤。

    下面放上我的博客:https://blog.csdn.net/a724888

    二:其次,便是对算法的学习了。我也把算法的学习分为了几个部分。

    1 基础数据结构与算法:主要是复习之前学过的数据结构和算法,额外再看一些算法书籍,譬如《图解算法》,以了解常见算法。

    2 剑指offer:剑指offer基本上是面试必考的,所以把它刷个两三遍是很有必要的。

    3 LeetCode:搞定前面两项之后,刷LeetCode也会有些底气了,我当时就刷了150题左右,主要也是刷经典的题目。

    4 笔试真题:这个就不用多说了,真题是一定要刷的。毕竟各个公司出题的路子都花里胡哨。

    刷题多了,就会遇到很多原题和类似题目,所以,尽早开刷,做好准备吧。

    三、最后一部分,则是做项目。大概说下我做项目的几个要点吧

    1 为什么这时候我还要做项目呢:一来是我觉得实习过程自己接触的东西太细碎,没有对全局做把控,二来是因为想给GitHub加点东西,顺便学点新的技术。于是我选择了当时牛客网上的两个项目来自己做做看。

    2 关于项目选择:叶神这两个项目还是讲的非常棒棒的,用的东西也很新,代码也有提供,避免了自己要写前端的尴尬,另外,这两个项目模仿了知乎和头条,更加接地气。

    3 把项目做到GitHub上:之前对git也比较熟了,所以想把这个项目按照正常开发的流程走一遍,于是我每天都会做一个模块,然后发布几个版本,记录一下版本更新的细节,写这些东西的时候,自己其实就已经做了思考和总结,感觉还是不错的。

    下面放上我的GitHub:https://github.com/h2pl

    就这么过了三个月,提前批拉开序幕。

    秋招回忆录

    从七月初第一次投递简历,到九月初,整整两个月的时间,大大小小投了几十家公司,其中很多都是提前批,内推,也经历了许多的笔试,面试。

    期间也拿了几个offer,包括百度,腾讯,蚂蚁金服,头条,华为,网易(网易云音乐没给offer,调到了其他部门)。有几家直接收到拒信的,包括拼多多,深信服。还有几家在等待结果。包括快手,斗鱼等。

    当然也有一些还没面试完的公司以及待安排面试的公司,这里就不展开说了。

    八月底基本上提前批就已经结束了,所以一般这段时间正式校招也开始了,各种大规模的笔试也很多,所以大家即使没有拿到offer也不要灰心,毕竟校招是一场持久战,基本上要到九月十月才能下结论。我之前分享了很多公司的面经,其实大部分都是提前批的,很多都是直接免笔试的,因为我对算法并不是很在行,所以感觉还是比较幸运的。

    从七月底第一次面试到9月基本佛系,中间经历了大大小小的面试,这里只进行简单的记录哈,要看面经的话请到我的公众号:程序员江湖。

    具体的面经都比较长,这里大概介绍一下面试的情况,然后我会放上面经的链接供大家查阅。

    1 阿里面经

    阿里中间件研发面经

    蚂蚁金服研发面经

    岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。

    我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。

    然后我也参加了蚂蚁金服中间件部门的面试,经历了三次面试,但是没有走流程,所以面试中止了。

    最后我走的是蚂蚁金服财富事业群的流程,经历了四次面试,包括一次交叉面,最终拿到了蚂蚁金服的意向书,评级为A。

    阿里的面试体验还是比较好的,至少不要求手写算法,但是非常注重Java基础,中间件部门还会特别安排Java基础笔试。

    2 腾讯面经

    腾讯研发面经

    岗位是后台开发工程师,我没有选择意向事业群。

    SNG的部门捞了我的简历,开始了面试,他们的技术栈主要是Java,所以比较有的聊。

    一共经历了四次技术面试和一次HR面试,目前正在等待结果。

    腾讯的面试一如既往地注重考查网络和操作系统,并且喜欢问Linux底层的一些知识,在这方面我还是有很多不足的。

    3 百度面经

    百度研发面经

    百度研发面经整合版

    岗位是研发工程师岗位,部门包括百度智能云的三个分部门以及大搜索部门。

    百度的提前批面试不走流程,所以可以同时面试好多个部门,所以我参加百度面试的次数大概有12次左右,最终应该是拿了两个部门的offer。

    百度的面试风格非常统一,每次面试基本都要到电脑上写算法,所以那段时间写算法写的头皮发麻。

    4 网易面经

    网易研发面经

    面试部门是网易云音乐,岗位是Java开发工程师。

    网易是唯一一家我去外地面试的公司,也是我最早去实习的老东家。

    一共三轮面试,耗时一个下午。

    网易的面试比我想象中的要难,面试官会问的问题都比较深,并且会让你写一些结合实践的代码。

    5 头条面经

    今日头条研发面经

    岗位是后台研发工程师,地点选择了上海。

    我参加的是字节跳动的内推面试,当时找了一个牛友要到了白金码,再次感谢这位头条大佬。

    然后就开始了一下午的视频面试,一共三轮技术面试,每一轮都要写代码,问问题的风格有点像腾讯,也喜欢问一些底层知识,让我有点懵逼。

    如果想看更多公司的面经,也请移步微信公众号:程序员江湖。


    另外,我上周还面试了一次亚马逊,因为很多知名外企到十月才开始招人,所以闲了很久之后我又重操旧业了,可能在面完大摩和微软之后,秋招才能正式结束吧

    结束也是开始

    中秋节刚过,国庆节又要到来了。正如每一年的秋招一样,年复一年,在时间面前我们也是渺小的尘埃。

    秋招结束不代表着结局,而是新的旅程开始,马上,毕业论文,offer选择,入职准备,毕业旅行等事项也要提上日程了。

    不知道明年我们看待学弟学妹的秋招时,会是怎样的一种心境呢。

    ▼更多精彩内容

    笔试经验小分享

    有关秋招面试的一些小技巧

    我的秋招经验分享(内附校招交流群)

    微信公众号【程序员江湖】

    一个专注于程序员修炼和成长的平台,这里有技术指南、求职攻略,也有职场经验、生活感悟,更有自我提升的方法、对成长的思考等内容。作者是一枚阿里程序员,每天和你一起聊聊,程序员练级之路上的那些事。

    【程序员江湖】里有什么?

    1、每天分享一篇程序员干货文章,包括但不限于技术干货、求职攻略、学习方法、成长经验、生活感悟等方面的内容。

    2、公众号后台回复“加群”即可加入我们的程序员专属微信群(目前有程序员江湖大群、Java等方向的技术交流群、春招实习交流群等)

    3、公众号后台回复“资料”即可获得3T海量学习资料,资料涵盖各个技术方向,包括Java、C++、前端、大数据、移动开发等方向。每个方向都包含了基础、进阶、求职等部分内容。

  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/xll1025/p/10512192.html
Copyright © 2011-2022 走看看