秋招个人经验总结及转行学习建议

1. 个人情况
本人本硕985,专业均为机电。主要项目都是机器人控制系统编程,包括底层电机传感器驱动和数据接收分析,上层控制算法设计和实现。所用语言C/C++。秋招转后台开发和C++工程师,从6月中旬开始面试,到9月初全部结束,基本都是提前批拿的offer。总共拿到BTTD(A还在pending中),SMARTX,猿辅导,PDD,新浪等offer。算是比较圆满的结束了秋招 。

2. Key tips
(1) 永远相信自己的实力。我感觉,大多数应届生小白,在秋招时都感觉自己的实力垫底。知乎,牛客上大牛关于后台开发五大经典部分:计算机网络,数据库,操作系统,算法和语音,设计模式。每一方面的经典典籍,我没有完整的看完一本,同时本人没有实习,相信这是不少人的常态。但是能够做到上面这些的,已经是求职中的大佬了。所以秋招,最重要的是一直保持信心 ,根据初期面试结果,迅速调整后续面试方向(是继续投一线大厂还是向中小型企业倾斜)。
(2) 个人秋招感觉,企业最看重应届生三方面的素质:顶尖的学历(TOP2本或985硕),且至少有跟编程相关的经历;头部企业实习经历;扎实的基础知识和算法功底。第三个+前面两个2选一,已经是比较优秀的经历了。三者同时具备,拿SP的概率会大大增加。
(3) 提前准备,提前准备,提前准备(重要的事情说三遍)。身边所有拿到大厂offer的同学,基本都是从秋招一开始就投入了战斗,或者春招实习就开始面试找实习,提前批早早拿了offer上岸。今年疫情原因,秋招提前批从6月初就开始了。所以至少要在5月初准备好简历,开始系统的刷面经,同时加强每日leetcode刷题数量和质量。5月前,就应该对五大部分的基础知识,有一定的学习和了解。

3. 学习经验
关于后台开发,还是五大经典部分:计算机网络,数据库,操作系统,算法和语言基础,设计模式 。但是各个大牛的帖子,上来就是系统的学习路线,每一部分的书籍,都有好几本,每本都是七八百页,让人望而却步。这也是我觉得自己很菜的原因,因为我没有完整的学完一本书。一是没有那么多时间,二是每本书,都有很多难以理解的部分。基本读几十页,就发现前面的没理解多少,又忘了。但是不可否认,这些学习路线,是十分正确的。此处本人仅仅讲一下个人的学习历程。

(1) 计算机网络:入门必看《TCP/IP网络编程》。这本书,只有300多页,系统的讲解了TCP/UDP编程的具体函数调用和实现过程,跟着书中每章的代码敲一遍,基本掌握了网络编程的具体实现。同时这本书讲解了一些计算机网络的基本概念,看完对于零基础来说,有了一些抽象的认识。然后再看《图解HTTP》,对HTTP基本有了系统认识。本人接着学习了慕课网上哈工大的《计算机网络》,这门课程从OSI七层模型入手,详细的讲解了每一层的工作原理和相关协议,墙裂推荐(链接:https://www.icourse163.org/learn/HIT-154005?tid=1206679208#/learn/content?type=detail&id=1211458162&cid=1214120243)。完成了以上部分,基础知识+编程实现都有了一定基础,能够应付大部分面试了。接下来是补充学习部分,可以选看:
《TCP/IP详解》卷一
《TCP-IP高效编程-改变网络程序的44个技巧》
对于一线大厂,对正确理解ping,ICMP,路由寻路,ARP,NAT等协议的具体工作过程要求较高。总结成一个问题,就是一个主机怎么发送消息到另一个主机,中间经历的过程和各个协议的工作过程。

(2) 数据库:此部分分为三大部分:基础SQL语句,数据库相关原理,数据库优化。基础SQL语句只需要看完《MYSQL必知必会》,然后每天来几个牛客或者leetcode上的数据库题目,保持记忆即刻。数据库相关原理,主要是事物ACID特性,数据库三大范式,数据库隔离级别及解决的具体问题,索引,B/B+/红黑树,MVCC,InnoDb和MyISAM引擎等,这部分本人没有看书,而是针对每一部分,直接去看相关博客讲解,然后不懂或者需要深入理解的地方再去查阅相关书籍资料,比较好的书籍有《高性能MySQL》。以上部分都是可以准备的。至于数据库优化,这部分更多是实际操作经验,很难弥补,建议看一些博客,有一定了解即可。同时,另一大数据库分支,就是非关系型数据库,如流行的Redis,MongoDB。此部分,本人以Redis为基础,看了Redis的一些基本命令和《Redis设计与实现》,同时没事的时候就看看Redis相关博客,对于非关系型数据库有了一个基本的了解。

(3) 操作系统:由于本人专业原因,上过好几门嵌入式系统和汇编X86架构。所以对于一些基础的,如中断,流水线,寻址,计算机结构等基础和相关术语有一定了解。没有这个基础的话,本人觉得一门好的慕课非常重要。然后是重点突破部分,如虚拟寻址机制(涉及到brk指针,mmap,malloc等函数),进程线程及其通信机制,本人重点阅读了以下书籍的部分:
《深入理解计算机系统》第6、7、9章(关于虚拟寻址机制介绍,很详细)
《UNIX环境高级编程》第7~13章及15章,神书,基本全是干货。(进程,线程以及对应的通信机制,最好相关代码实现一下)。
但是仅仅上面这些部分,会漏掉很多重要部分,如协程,Linux文件系统,守护进程,Linux相关命令。这些部分建议针对性突破,结合面经来补充。

(4) 算法和语言基础:先说语言,本人主要用C++,相关语法基本熟悉。但是像STL底层还有一些高级特性,基本没了解过,建议结合《STL源码剖析》和《C++ primer》把不经常用的重点部分进行学习。此外,多态实现机制(虚函数表),内存对齐等问题也经常问,建议结合面经进行补充。算法,首先是一门系统的算法课程学习,学过的可以重点回顾二叉树(二叉搜索树,最大最小堆)图(主要是Dijkstra,Floyd,prim算法和拓扑排序),没学过的建议选一门算法慕课。算法课程主要是讲数据结构,但是算法思想,如五大经典算法(最重要的是动态规划,回溯),基本很少涉及,此部分建议各个击破,每个算法先看概念,然后Leetcode针对性训练20个题。此处墙裂安利github 50k+ star的算法教程fuking algorithm(链接:https://github.com/labuladong/***ing-algorithm)。当然上面的都是纸上谈兵,算法一定要练习,所以Leetcode非常重要。本人从研一开始刷Leetcode,但是前期基础太差,每一道题基本就是一个下午。到研二上,才刷100来道题。但是虽然效率低,这部分是必经之路。刷到100来道,我才开始有算法思维,遇到一个题,才能从算法的角度去思考。本人的快速进展在集中准备秋招的3-6月份,从100来道直接刷到了300来道。当然这只是很微不足道的,遇到少部分面试手撕代码和大部分笔试,仍然是被虐,所以刷题肯定是多多益善,但是前提是对于算法思想和原理理解的基础上,开始刷题。划重点:Leetcode

(5) 设计模式:此部分更多的是锦上添花。学习以单例,工厂,生成器,装饰器等常考设计模式为基础。此处推荐一本电子书《设计模式》(链接:https://refactoringguru.cn/design-patterns)。本人设计模式的相关基础基本都来自这本电子书。

(6) 以上只是基础。目前的后台,不了解一点分布式和高并发,也很容易被pass,但是这部分,对于应届生,更多的是相关设计思想,所以建议没事的时候多看看博客和知乎上相关知识的基础介绍,有一些简单的了解。重点在于分布式锁,负载均衡算法,高并发系统设计框架,如秒杀系统还有缓存相关。

4. 其它
先说一下本人大概的学习时间节点。五大基础的学习,到秋招前5月底基本完成(2-5月属于密集学习期),同时5月初基本完成简历,找大佬师兄帮忙修改了一下。6月开始集中投简历,主要方式是先校招薪水看招聘信息,然后牛客搜内推投简历(内推非常重要,特别是大厂)。6月一整个月,集中刷面经和Leetcode常考题型。6月下旬到7月底为集中面试期,最忙的时候是一天4场面试+2场笔试。在面试集中期经常睡不着,吃不下饭,头发掉了一大把,也不能算得上轻松。然后6月中旬收到第一个offer,8月中旬开始集中收获offer。
投递简历时,不建议海投,最好根据公司JD描述,稍微修改简历。同时,简历项目建议三个(不够的最好提前自己找一些项目来学习,练手)。本人的投递汇报率还算高,总的秋招可能只投递了20家左右公司,然后收到offer率超过50%。

5. 最后,秋招就像相亲,很看眼缘,千万不能因为一个公司的否定怀疑自己。在拿到满意的offer前,一定不能放弃。祝大家前程似锦,一切顺利。

#秋招#
全部评论
想问一下楼主的项目做的是什么呀
1 回复 分享
发布于 2020-10-06 16:02
大家快来看,大佬要做选择了
1 回复 分享
发布于 2020-10-07 12:05
“总共拿到BTTD(A还在pending中),SMARTX,猿辅导,PDD,新浪等offer”。等这个字就很灵性。大于10个吗?
点赞 回复 分享
发布于 2020-10-06 20:01
点赞 回复 分享
发布于 2020-10-06 21:50

相关推荐

36 204 评论
分享
牛客网
牛客企业服务