> 文档中心 > 机械转码学习路线及经验分享

机械转码学习路线及经验分享

机械转码学习路线及经验分享

  • 一、前言
    • 1.1 自我介绍
    • 1.2 转码原因
  • 二、学习路线
    • 2.1 转码历程(踩坑历程)
      • 2.1.1 未入学阶段
      • 2.1.2 研一阶段
      • 2.1.3 研二阶段
      • 2.1.4 研三阶段
    • 2.2 学习路线
      • 2.2.1 Java部分
      • 2.2.2 书籍推荐
      • 2.2.3 算法
      • 2.2.4 面经
      • 2.2.5 项目
      • 2.2.6 简历
  • 三、总结

一、前言

1.1 自我介绍

大家好,我是Candy,985机械硕士转码( 后端开发 ),22届校招拿到快手、度小满、新浪、东方财富、用友的offer,喜欢Java、Python、算法,前端JS、VUE也能玩,转码一路不易,总是被身边的琐事烦扰,曾受尽冷眼和嘲讽,也曾被面试和算法折磨到头痛欲裂,历经磨难两载,终于涅槃上岸,经常有机械的师弟向我请教学习路线,因此在这里分享一下自己的学习心得、面试经验、学习笔记,希望能帮助到有缘人吧。

1.2 转码原因

转码的原因大概有两点:

1 机械行业的薪资水平不高,而且研究所以及一些好的单位比较看重第一学历,专业对口的公司都是些重工类企业,加班不比互联网少多少,互联网加班996经常上微博头条,熟不知很多传统行业加班也是996,猝死的也是不少只是没爆出来罢了,当前中国这种环境就是这样,没办法。所以与机械相比,我更喜欢 早上10走进市中心公司大楼,端一杯咖啡,打开电脑写自己的代码这种都市生活。

2 对机械行业不感兴趣,不是我没好好学本专业,在本专业我也拿过国家励志奖学金,本科阶段也曾是年级头部,但是学的越好也会发现该专业所学的东西并不是我所喜欢的,我想象中的机械专业应该是造智能机器人、飞机、火箭等,大家毕了业应该能设计一些智能小车、智能机器人之类,但是当我学到大四我才发现,这个专业都是在搞一些制造相关的东西(也可能我是传统方向),大家都研究零件怎么加工,机床怎么设计,以及某个结构怎么设计,都是一些静态的,距离我想象中的“智能”还差的很远,并且做出来的东西比较虚,就比如我们课设做的减速器只能停留在我的电脑上以及图纸上,无法变成一个实际存在的东西(加工起来也是需要花费很多钱的),并且这些东西做出来也离我的生活很远,反观计算机这边就不一样了,大家搞人工智能、人脸识别、路径规划、NLP以及推荐算法,甚至可以自己写游戏,工具以及网站,这些都是实实在在能用到的并且能影响我们的生活的,实践和学习成本比较低,一台电脑足以,这是我转码的第二个原因。

于是基于以上两个原因,在我研究生未入学阶段就下定决心要转码了,转码的心酸历程请接着往下看。

二、学习路线

2.1 转码历程(踩坑历程)

2.1.1 未入学阶段

还没入学的时候,我对IT行业还没有个大致的认识,只知道是写代码的,听说学C以后学其他语言比较容易,于是买来了一本谭浩强的C语言,准备在家的时候开始学习,结果我高估了自己,哈哈哈,暑假摆烂,结果就是这本书就看了前几章。

2.1.2 研一阶段

当时我们导师这边没有人转码,并且我也不认识转码成功的师兄,身边也没有认识的能帮上我的同学,所以转码对我来说是雾蒙蒙的一片,全部都要自己摸索,可能会走错路,后面确实走了很多弯路。
研究生入学第一件事就是选课,(当时我还试图想通过蹭计算机的课来达到转行的目的,现在看来真是年轻),我们学院有很多课是跟计算机相关的,可以冲学分,所以当时我选了四门 人工智能、分布式数据库系统、数字图像处理、计算机图形学,希望学习这几门掌握一些技能或者认识一些别的专业的学生,请教一下他们怎么学习。结果就是:

1 人工智能老师讲了五节课就不讲了,啥也没学到一头雾水,最后交了个图像去雾算法的大作业,这门算过了
2 分布式数据库系统这门课 老师默认我们已经学过数据系统概论这本书了,所以讲课速度很快,一些名词我都没听说过,什么DDMS,科班同学听的有劲,我仿佛听天书,课下我自己自学了数据库这门课,写了点简单的SQL语句,才听懂这门课讲啥,最后背了背题,最后期末考试过了。
3 数字图像处理老师全程英文授课,没几个人能听懂的,最后和其他小伙伴交了一个目标检测的大作业算过了
4 计算机图像学,这门课是疫情在家上的,是机械学院的老师给上的,都是一些简单的算法,学起来还算可以,最后交一个论文过了。
总结下来就是没学到什么东西,课程难度比较大,还拉低了学分,一度让我放弃了奖学金这个念头

研一干的第二件事就是学Java,之前也是在Java、C++、python中犹豫了很久,最后因为我导师这边她会Java,所以选择学习Java。刚开始不知道怎么学习,就买了一本《Java从入门到精通》开始看不得不说这本书真是“好”,很多业界不用的东西他上面还有(就是AWT,这个东西我学了好久,最后发现没用),而且很多东西讲的太粗糙,只是教API怎么用,就不适合深入学习,我居然还抱着啃了一学期。
接着就放寒假在家了,然后疫情,研一下半学期也耽误了。这大概就是我的研一吧。

总结:学习资料选错了,选课也选错了,学习方法也不对,疫情也耽误了我半年,失去了奖学金竞争资格,也浪费了很多宝贵的时间。

2.1.3 研二阶段

等到能再次返校就到了研一暑假,刚开学见了老师,问我数据挖掘学到咋样了(寒假回家前老师让我学大数据相关、数据挖掘),吓我一跳,于是马上网上买了两本书《Python编程从入门到实践》、《从零开始学Python 数据分析与挖掘》,数据挖掘里面的所有机器学习算法我都手推过一遍,所以这两本书我学到很慢,大概花了两个月时间,结果就是当我学好python和数据挖掘后我问老师我该怎么搞科研,我导也没给我说个很明白,我也是一头雾水,就是感觉这两个月时间浪费了,后面在科研上面我开始摆烂。

研一暑假期间我也是意识到了研一学到那本书不行,于是我买了一本《疯狂Java讲义 第4版》,这本书一千多页,硬是啃完,每天看个五六十页,发现看完之后我的水平好像没有提升,主要原因我光看不动手,学编程和应对期末考试还是不一样的,对付期末考试背背概念和重点,一些练习题多写几遍就能拿个八九十分,但是学编程必须勤动手。真是心态炸裂,感觉时间都浪费了,当时我们学校传出有同学上吊自杀的,我当时也是一度差点抑郁。

后来一个偶然的机会,我和以前电信学院的同学说上话了(我们当时在一个英语小组),刚好聊到我在学Java,正好她也在学Java,然后我就知道了一些培训班的学习路线,一看真吓一跳,要学这么多东西呢。然后就是陷入焦虑紧张的赶进度状态,要学的东西太多了,我以为学一个Java就能就业了,实际上学一个Java离能就业的程度不到 1/10。

然后就开始根据路线学习,我又学了一遍Java,那个路线 Java基础–>Java高级–>MySQL基础–>JDBC–>HTML–>CSS–>JavaScript–>Spring5–>MyBatis–>MySQL高级–>SpringBoot–>Java并发编程–>Redis–>JVM虚拟机–>Java设计模式–>Linux–>Zookeeper–>Rocket MQ–>SpringCloud–>Git–>maven(大致是这个 ,具体顺序可能有出入),我又按照他这个路线都学了一遍(学习时间早上8点到晚上10点,火力全开),期间老师的编程demo我也会敲一遍。然后做了两个练习项目《学生选课系统》《调查问卷系统》,自信满满以为能去找实习了,结果被腾讯打脸,他们都喜欢问原理的问题,一些底层的东西,这是这些辅导班视频没有的,辅导班只是教这个东西怎么用,一些源码需要自己去看。而且我当时没有学计算机网络、操作系统和算法。于是自己根据面经的问题,自己点开源码去看底层实现,看不懂就上网上找找其他人怎么分析这个源码。期间还做了几个别的项目 自己实现的简单秒杀、博客网站。

同时开始刷题以及学习计算机网络和操作系统,当时不知道刷什么题,有个Labladong的公众号,当时把那上面的题刷了一遍,剑指Offer刷了一遍(第一次刷题真是酸爽,一度几近崩溃,算法题真是实现代科举,痛不欲生 !)。计算机网络买了本本科生的教材《计算机网络》,配上B站上方老师的课学了一遍(不建议这么学,比较浪费时间,这里我走了很多弯路),操作系统也是买了本科生教材,《计算机操作系统 第4版》,把书啃了一遍(不建议硬啃,需要挑重点来看)。

买过的和看过的其他的书还有《深入理解Java虚拟机 JVM高级特性与最佳实践》、《图解TCP/IP》、《图解HTTP》、《深入理解计算机操作系统》、《大型网站技术架构–核心原理与案例分析》、《数据结构高分笔记》王道考研、《计算机网络高分笔记》王道考研、《Linux鸟哥私房菜》、《算法 导论 第4版》、西瓜书《机器学习 》周志华著、花书《Deep Learning》伊恩 古德费洛著、《SQL从入门到精通(微课视频版)》、《统计学习方法 第二版 》李航著、《数据库系统概论 第五版 》王珊著、《算法与数据结构(Java语言描述)》陈媛著、《PyQT5 快速开发与实战》(当时听室友说他们师兄用这个 我也买来学了学),这些书有的我全本看完,有的也是拿过来当作字典用,需要相关的知识就翻出来仔细看看,不得不说有的书写的真好,读个十几遍都不嫌多。

这时候老师让写一本书(3月-8月),因为这个耽误了我好长时间,错过了提前批,什么都没准备好秋招就结束了,当时真是心态炸裂。秋招我准备好的时候就快结束了,加上我的项目太简单,刷算法时间不够,面经也没准备好(不知道去哪里背面经),所以秋招下来只拿到了四个offer,新浪、度小满、东方财富、用友。

总结:
1 找后端工作没必要把时间浪费在前端上,做项目时,我所有前端的js都是我自己一个个手敲上去的,一些DOM操作我还做了笔记。
2 算法刷题没刷到重点,我后来才知道大家都刷LeetCode 高频题,前100或者200,我只刷了一遍Labuldong,剑指刷了一遍。感觉还是不太够。
3 面经没找到重点,我的面经都是自己总结的,很多答案都是自己上网上找,所以很多答案都是错误的或者不全或者不深入,导致面试的时候我自认为答对了,其实答错了,这是最致命的,想想自己辛辛苦苦背的八股文都是错的就心酸,晚上神经紧绷无法入睡,秋招那几天曾一度只能靠褪黑素入眠。
4 项目太简单,我看别人的项目都是抄一个分布式的项目,我自己的项目还是那种老掉牙的管理系统,并且技术也不行
5 错过了提前批,提前批开启时我在中期答辩以及写老师的书。
因此因为 准备时间不充分,时间花在了前端上,准备的项目太简单,准备的八股都是错误的,刷的算法题没刷到高频题,所以秋招完败!如果当时有个前辈能指我一条明路就好了,真不是我不努力,我只是方法不对,没有途径。

2.1.4 研三阶段

秋招结束,我也进入到了研三,这时感觉天都塌了,自己规划了这么久,这个结果真是很难受,我曾无数次梦见我进大厂,醒来却发现是梦。加上这时候导师催我搞毕业的东西,写的那本书还要修改,真的是腹背受敌,那段时光真是人生至暗时光。

在面试携程的时候,我记得一面面试官曾经提醒过我,建议我去慕课网上找一个大几千的课,好好学一学,别去B站,B站上的课质量很低,所以11月份我再次打起精神,为春招冲刺做最后的准备,这里非常感谢携程那个面试官(面试前特地问了我家是不是新乡的,我说是,可能他和我是老乡,他想拉我一把,最后他还是让我过了,并且过了十几天才携程2面,应该是给我留缓冲时间,可惜我当时没把这句话放心里面去,携程2面 项目上把我挂了),有的时候就是别人的一句话就能少走很多弯路。

于是我打开慕课网,选了一个秒杀课,详细的做了做。从前台到后台、到数据库,买服务器,压测,nginx 、tomcat 、令牌桶、泄洪、消息队列等一系列走下来,确实感觉自己学到了很多有用的东西。做完之后感觉还差点分布式,于是找了一个基于Spring Cloud的广告项目做了一下,这时感觉项目没问题了。

接下来就是准备毕业的东西了,期间也是看了大量的论文,最主要也是最难的是要明确自己论文 是为了解决什么难题,我这里比较幸运,老师给我提出的问题是补全数据,并且开发一个LCA计算平台,这刚好是我当前技术栈以及当前所学习的算法完全能cover的,之后老师说我的难度不够我又加了一个NLP相关的问答机器人上去(去慕课网上看了很多NLP实战的课程以及看了很多NLP的论文,用Java代码实现了一下)。所以整个计算平台的开发 我一共只花了15天,后续功能改进也花了几天,整个毕业的东西(平台开发(前台 后台 数据库 发布上线)、算法调研、加上写大小论文)差不多一个半月搞定(写论文是寒假在家,每天的作息依旧是9点-22点,最晚的时候9点-凌晨2点)。之前学的JS、BootStrap都没白学,写前台的时候用上了,这个网站用了很多智能算法都是Java实现的,比如手写神经网络等。最终统计代码量46000行。同时该项目也可以作为我春招找工作的砝码。至此项目没问题了(选课系统、调查问卷系统、秒杀系统、博客网站、广告系统、LCA计算平台)。

接着就到寒假了,寒假期间知道了应该刷哪些算法了,于是刷了牛客TOP101的题,寒假刷了两遍(你体会过大年三十刷算法到晚上12点的滋味吗?),开学刷了一遍,面试前刷了两遍,剑指offer之前刷过三遍,所以春招之时我的算法情况是 TOP101 刷了5遍,剑指offer 刷了3遍。算法这块OK了。

之前知道JavaGuild,只是没注意,寒假静下心来看JavaGuild写的东西,确实写的挺好的,于是寒假在家我把JavaGuild背了一遍,到面试之前,每面一次我就背一遍。所以春招下来JavaGuild我至少背了3遍,面经这块没问题了。

2月28号我正式开始投递简历,所有能投的都投了一遍(字节、阿里、美团、快手、贝壳、携程、蔚来、虾皮、B站、米哈游、滴滴、腾讯、京东、小米、oppo、腾讯云),结果只有字节、美团、快手有消息,不得不说今年春招是真的惨(要么锁HC、要么没有春招、要么卡双9学历 ),字节没看清题结果笔试就没过,剩下只有美团、快手约面,面试全程几乎没有不会的,算法题直接秒杀,项目问题回答行云流水,快手顺利拿下offer,美团卡在了主管面,到了主管面我才知道我的简历都没改过来,一面、二面拿到的简历都是我秋招投递的老简历,我面试过程中讲的项目那个简历上都没有,但是还是让我过了,可能到主管了比较多疑,同时我也对美团打车不了解,有个致命问题回答错了,主管问我用过美团打车没,我说没有(场面一度很尴尬),后面他给我出了两个计算机图形学的算法,(对! 就不是普通算法,就open cv中写好的那种函数库,他让我说这个算法思路 ),但是我还是凭借我强大的数学能力以及逻辑思维能力给出了思路(题目是:1. 求10000个点的最大外接矩形 ,2. 10000个点的最大外接圆),尽管如此最后主管还是把我挂了,所以我感觉美团能过,只是我简历没投过去并且不了解这个部门(一面说的地图部门,谁知道地图就是打车?我还以为是外卖员送外卖的那个地图)。因此我的春招就结束了,快手和美团都是一周走完流程。至此转码之路走至终点,我如愿以偿进入了自己满意的公司。

3月25号接到快手offer那一刻我感觉有一束光照在了我身上。经历过如此种种,如果一开始就有人带我,告诉我怎么学,学什么,我应该不会这么狼狈吧,也不会走那么多弯路,感谢没有被困难打倒的自己坚持了过来,我相信天道酬勤,我相信世上无难事,只怕有心人。

2.2 学习路线

作为过来人,如果你是非科班想要转码的话,这是我列出来的学习路线,希望能帮到有需要的人。

2.2.1 Java部分

学了以下部分你只是刚入门,一些原理性的东西视频讲的不深,还需要补充

1 Java :宋红康老师Java700集 https://www.bilibili.com/video/BV1Qb411g7cz?spm_id_from=333.337.search-card.all.click
2 MySQL基础+高级:尚硅谷350集 https://www.bilibili.com/video/BV12b411K7Zu?spm_id_from=333.337.search-card.all.click
3 Java web:325 集https://www.bilibili.com/video/BV1Y7411K7zz
4 Spring5:62集 https://www.bilibili.com/video/BV1Vf4y127N5
5 MyBatis:66集 https://www.bilibili.com/video/BV1VP4y1c7j7
6 Spring Boot:87集 https://www.bilibili.com/video/BV19K4y1L7MT
7 maven:173集 https://www.bilibili.com/video/BV12q4y147e4
8 Git: 狂神的14集 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.337.search-card.all.click
9 JVM:宋红康 381集 https://www.bilibili.com/video/BV1PJ411n7xZ
10 Java并发编程:尚硅谷 JUC43集 https://www.bilibili.com/video/BV1Kw411Z7dF
11 Redis:狂神36集 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.337.search-card.all.click
12 Spring Cloud :阳哥150集 https://www.bilibili.com/video/BV18E411x7eT
13 数据结构与算法: 尚硅谷194集 https://www.bilibili.com/video/BV1E4411H73v?spm_id_from=333.337.search-card.all.click

2.2.2 书籍推荐

1 计算机网络《图解TCP/IP》 《图解HTTP》,结合这面经来看
2 操作系统《深入理解现代操作系统》 ,同样结合着面经来看
3 数据结构与算法 《算法导论》 第4版,配合着视频来看,有不懂的来这本书上找
4 JVM 《深入理解Java虚拟机 JVM高级特性与最佳实践》,结合着JVM的视频补充着来看
5 Java并发编程 《Java并发编程的艺术》结合这视频相互补充来看
6 Java 设计模式 《大话设计模式》 ,关注常用的那几种就行,单例、代理、观察者、模板方法、适配器、工厂
7 MySQL数据库 《Inndb 技术内幕》,和面经补充这来看
8 Redis 《Redis设计与实现》

2.2.3 算法

算法题建议直接刷 牛客TOP101,如果有时间可以刷LeetCode 前100,200,300,400,看个人时间,剑指Offer建议刷一遍。
最后算法题不再于刷的多少,在于是否掌握并举一反三,最少刷个两遍吧,做到刷过的题10分钟内内准确无误的写出来。

2.2.4 面经

1 背诵JavaGuild:https://javaguide.cn/java/basis/java-basic-questions-01.html#%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B8%B8%E8%AF%86
2 注意牛客网上别人的面经分享,那个面经是最新的,也要自己总结下答案

2.2.5 项目

建议去慕课网上找一个中等难度的项目,然后吃透一个就行了,里面如果涉及到其他技术的话就去学习并弄懂,所有细节不要放过。推荐 秒杀和广告,这两个有难度并且也比较热门。
最好自己确确实实写了一个项目,自己给自己提需求,改进一个功能等。

2.2.6 简历

简历的话简洁一些就好,我当时的简历如下,可以参考我的简历来写
在这里插入图片描述

三、总结

确实非科班转码有很多困难,所以需要你付出比科班同学更多的努力,所以 加油吧!