我的秋招----双非本科人力专业转行程序员

这篇文章主要是记录我近一年来从人力资源管理专业转行做程序员的一些经历以及学习过程。包括日常学习以及秋招情况。我的文笔不太好想到哪写到哪,就当听故事了。

分享目的

以我这个反面教材为例子,为正在学习想要进入计算机行业的同学分享一点学习经验吧,点亮一点前进道路上的灯,避免踩坑。

正文

基本情况
双非本科 非科班,人力资源管理专业 技术栈为cpp,学习时间2020.12--2021.8,无实习经历,简称四非人员。 秋招6家互联网offer,平平无奇,没有什么bat tmd等大厂offer。

由于自己的专业连工科边都不沾,因此在面试中是大打折扣,我也在尽力去解释去圆这个问题,不过最后还是没能打动某些面试官。搞得都有点自卑了。

为什么要转行计算机行业

由于我是人力资源管理专业的,所以刚开始对于编程还不是很了解,在我大二第二学期的时候是从我的一个高中同学那里了解的。当时暑假我就在他那里了解了c语言,他带我学习了很多编程知识以及一些工具的使用。然后到了大三也就是2020年9月份的时候,当时刚开学后身边的很多同学已经开始着手准备考研的事情了。我当时也在思考到底是要考研还是直接去找工作,也考虑了很久。后来就和我之前的那个同学聊天,于是就有了跨行做计算机行业的想法了。于是我就去我们学校外面报了个编程班,编程学习机构这里就不提了,免得说在打广告。

 

编程学习经历

我的技术栈是Linux c++方向,然后学习过程是 C语言-》数据结构与算法-》C++语言-》Linux操作系统编程-》Linux网络编程-》数据库。这样的一个学习过程,几乎每天都没有空闲时间。因为我一方面要白天上课,没有课就要敲代码,看各种编程书籍,然后晚上还要去上编程课,周末更是忙的没时间。这一段时间是真的累,不过都差不多,考研 考公也是这样,向努力拼搏的同学们致敬。


当时报班的时候,c语言已经上了五六节课了吧。还好之前暑假在同学那学过一点不至于啥都不会。然后就赶紧补往期的录屏。课堂代码一遍一遍的过,因为我知道光靠上课时间这些学的肯定是不够用的,一定要在课下下功夫,我市场告诉自己不要有那种报班==上岸的心态。
毕竟是跨行,所以学起来也比较吃力。课件内容我会在每节课学习之前会先看看,所有的代码我都会敲一遍。然后也下载了CSDN写博客,不过博客确实没有坚持去写,在这里也给正在学习的同学们强调博客一定一定要认真坚持去写,因为这是你以后复习的资料,我就是个反面例子。对于编程的学习一定要是一个T字模型,你要有学习的深度与广度。你可以在某一方面研究的特别深入,也要涉猎各种知识,要学会去拥抱知识。

大家常说的C语言--从入门到指针,是的指针的学习是重中之重。推荐几本学习C语言时配着读的书籍, 《C专家编程》、《C和指针》 、《C陷阱与缺陷》、《程序员的自我修养》。 《程序员的自我修养》重点读第七章动态链接与第十章内存,并且一定一定要把第十章第一章节的Linux内存地址空间(p285)那个图能画出来,刻在心里面,不要问为什么。

对于C++的学习,可以说是改变了我刚开始堆编程的认知。面向对象编程确实刚开始不理解。后来慢慢习惯了,也都懂了。C++学习也就那么几大块 类与对象、STL、智能指针、C++11、异常、继承与多态等等。面试最常问的就是解释多态,vector与list区别 map与set区别等等。

深入学习C++的话建议阅读这本书《STL源码剖析》,这个是学习STL,理解大师们的思想,学习大师们的编程技巧的经典书籍,尤其是一级空间配置器还有就是SGI二级空间配置器这块非常的经典,建议自己下来可以敲一遍这块的代码,非常有用。这本书能够帮助你理解STL六大组件之间的各个关系,能够使得你有一个清晰的框架。对于各种容器你需要静下心来从0开始将这些容器代码能够敲一遍,这样对于你的泛型编程能力也有很大的提升。

学习智能指针这一块建议下载一个boost库,结合boost库上的各种智能指针源码去看,有助于你理解为什么shared_ptr weak_ptr scoped_ptr auto_ptr unique_ptr等为什么会是这样子的。还有就是shared_ptr的交叉引用问题以及多线程安全问题等等.对于boost库上的很多东西都是值得学习的,C++中的很多东西都是从boost库中引入的。

对于C++11相关方面的学习的话我这里是通过学习muduo网络库来实践的。muduo库是陈硕大佬的作品,它是基于boost库来实现的。里面的很多源码都应用了C++11语法的特性。并且通过学习这个网络库也可以对于网络编程,多线程编程能力有很大的提升。

这里推荐书籍是《Linux多线程服务端编程》陈硕著

对于继承与多态的学习重点要理解多态的原理还有虚函数原理这些。在我学习过程中有一个非常nice的问题 在一个类中有多个虚函数,将这些虚函数地址输出。只要这个问题能够解决那么就能够证明你理解虚函数原理了。学习理解继承与多态后对于我去学习设计模式更得心应手了。设计模式有23种,不过我只重点学习了下面7中设计模式,这里推荐的书籍是《大话设计模式》《设计模式》这两本书。

f367977e07fc0115b60ddbc9fc98a193.png


学习数据结构与算法的时候,对于各种数据结构我都会去画他们的模型图,没事的时候写写各种数据结构或者排序算法。在上一些“水课”的时候,我都会去在纸上写排序算法或者链表栈队列。我把这个叫做死去活来法,对于数据结构与排序算法一定要有自己的思想以及模型图。我刚开始学习这些的时候理解了,但是代码写出来一直有一些小问题。所以我就死记硬背试的先将代码能够写的可以跑过,然后后面再通过自己的思想以及模型图灵活的写。这就是我当时学数据结构和排序算法的过程。以至于后来复习备战秋招期间每天早上先过一遍八大排序算法。对于动态规划 贪心算法 回溯算法等等一些算法的学习建议直接去LeetCode或者牛客网上去刷题,通过大量的练习去理解这些算法。也有一本书《计算机算法设计与分析》王晓东著可以看看,不过我是没有看进去我是放弃了。然后我看了另一本书《剑指offer》,里面67道题过了2遍,有些经典的重复过了很多遍。说实话你没有刷过《剑指offer》就相当于你没有秋招一样,我自己的刷题也就不到400道题,这里推荐的就是在LeetCode上刷《剑指offer》LeetCode Hot 100、LeetCode Top面试题,尤其是剑指offer,得需要刷2-3遍。然后在分类别的去刷一些题。给各位看一下,可以以链表 二叉树 字符串等进行分类去刷题。多刷那些mid题型就可以了,hard没必要多刷。还有就是在秋招准备的时候一定要在牛客网上刷一下历年各大互联网公司的笔试真题。笔试题和面试的题真的是天差地别。所以我建议各位一定要投每年7月底8月初开始的提前批,一定一定要投,因为提前批基本没有笔试直接面试。有实习转正机会一定要把握住,秋招真的太卷了太心累了。

9e7ea603cd3e81b453f9cbbf6740289f.png

推荐书籍
《数据结构》严蔚敏著,这基本是各个高校数据结构课程的教材
《大话数据结构》
《算法设计与分析》王晓东著
《剑指offer》
《程序员面试经典》
LeetCode或者牛客网上的题


学习Linux的时候我是感觉比较有意思的。我先说一下我平时的一个编程环境吧。不管是上C语言还是C++或者是Linux课程,我都是用的vscode直接ssh到我的Linux虚拟机上,后来买了云服务器后我就直接上云了。我也有下载vs2019,不过这个有点重,我电脑配置有点低,刚开始用会有卡顿,用vscode比较轻量点。不过这个都是个人喜好吧。我这里建议编程环境最好是在Linux下去敲代码,对以后是有好处的。下图是我的一个基本的编程环境。

我的秋招----双非本科人力专业转行程序员_第1张图片

 


学习Linux是真的真的要自己动手,然后要在网上查很多的资料。我记得之前为了配置一个环境我把我的虚拟机搞崩了好几回又重装了好几回,弄得我自己的电脑都蓝屏了多次,当时心态真的崩了。不过话说回来,这样也提高我对Linux更多的认识以及更好的操作能力。

学习Linux操作系统编程需要配合操作系统相关的书籍去学习,不管是进程与线程 进程间通信 多线程编程 各种锁机制等等这些都要去看相关书籍,而且要配合着自己在下面敲代码各种实践。对于Linux网络编程学习来说我当时对于那些api接口真的是死记硬背,没事就写写C/S代码,学习select poll epoll这三个时候前两个还好说,后面的epoll真的是折磨了我很长时间,这个真的需要自己去理解实践才行。计算机网络的学习重点就是掌握TCP UDP HTTP IP协议,了解7层网络模型以及OSI网络模型。这里是计算机网络是面试考察的重点尤其是TCP这块。三次握手四次挥手以及C/S端的状态图形,我平时画了不下50遍。这个是必考题,20在这摆着爱要不要。这里一定要结合《TCP/IP详解卷一》这本书去看,深入理解协议栈内部的实现机制。

《鸟哥的Linux私房菜》主要了解Linux命令
《Linux程序设计》, Linux系统编程的必读书籍
《Linux内核设计原理与实现》
《深入理解Linux内核》重点关注文件管理、内存管理和进程管理三大模块。
《操作系统设计原理与精髓》这本书是Windows和Linux都进行讲解的,可以重点阅读进程管理、内存管理、文件系统等知识。
《UNIX环境高级编程》 系统编程的必读书籍
《深入理解计算机系统》 可以重点阅读一下关于编译链接章节,毕竟是C/C++程序员,面试时让你描述编译链接过程
《Linux高性能服务器编程》可以详细学习基于TCP、HTTP协议的网络编程
《计算机网络》谢希仁著 一般也是网络课程教材
《TCP/IP详解卷一》深入理解TCP/IP协议栈内部的机制实现
《UNIX网络编程》网络编程的圣经
《图解HTTP》
《图解TCP/IP》

下图是我学习Linux过程中记录的笔记也当是后面秋招复习资料了,这也算是自己积攒的财富了

6b2f2399bcab72d86f905f7a7aa0bc7d.png

平时学习一定要认真记录笔记,课后要去多看看,总结,然后写写博客。这里我建议一定要坚持去写博客,因为写博客的过程也是你及时总结复盘知识的过程,并且输出型学习更有利于自身的成长。这是我学习过程中做的笔记,可以像我这样将自己的笔记这样分目录整理出来,这样也比较清晰,后面复习也比较方便

a389c0fe4c8b81f54e04f3b01ace516e.png

对于数据库的学习,我是在CSDN上找了那种数据库50题这种相关题去练习sql语句。对于数据库底层原理建议阅读《MySQL技术内幕InnoDB存储引擎》,这本书讲的主要是MySQL技术实现的原理和相关的理论知识,当然主要是Innodb存储引擎的,有关索引、事务、锁机制、MVCC等机制的底层实现讲解的非常清楚。

说说校招吧


一定要参加提前批!!!校招期间一定要多投简历!!!提前批是没有笔试的,直接进行面试。先说一下校招的笔试题和面试的题是完全天上地下的差别。笔试题要比面试题难很多,所以一定要参加提前批。我投了100多家公司吧,这个确实是很少的了。提前批我拿到了小米的offer之后,后面就按照小米的级别去投的简历。这里建议同学们不要和我一样,一定要多投简历,坚持平均每天投15家左右。

面试前要多准备准备面经问题,可以在牛客网上看看。面试的时候最好能够录音,完了之后一定要写面经,然后讲自己没有回答出来的问题圈出来去重点复习。不要害怕面试,面试也是你一个查漏补缺的一个方式,及时复盘,这样面试面的多了也就不害怕,知识也牢固了。

校招期间多思考多交流,保持良好的心态,及时去复盘,对一些问题重点复习,查漏补缺。

面试考察的就是知识的深度与广度。对于平时学过的知识要多复习,同时也要有自己的亮点。考察的主要内容也就那几个模块:C/C++语言基础,数据结构与算法,操作系统原理,Linux操作系统,数据库,设计模式,计算机网络等等。

在校招期间一定要把时间安排好,有可能一天会有多家面试多家笔试,这时候就要舍弃一些笔试的公司了,多和hr沟通来安排自己的面试时间。校招期间千万别让自己停下来,哪怕一天没有笔试或者面试也需要复习知识投简历刷题。校招期间也要坚持每天都有刷题来保持手感,这样不至于面试时候,看到题目卡住。

秋招说实话真的是实力、意志力的双重考验,还有需要看很大的运气成分。尤其是没有offer或者没有满意offer的时候,这个时候是最艰难的,当有第一个offer后,心里就会有极大的释放。在面试过程中不仅比拼的是硬实力,还有软实力方面也就是情商了。对于面试过程一定要高度专注,并且要表现出好学的姿态,保持自信。临场反应能力一定要强,一定要让面试官跟着自己的节奏走。尤其是hr面试一定要展示出自己的意向,拉近自己与面试官的距离这样才能更有助于自己拿到offer。

多啰嗦一点吧

不要和我一样在这一阶段的学习中没有一个学习伙伴。可能是我本身比较内向的原因吧,也可能是本身学的是人力资源这块的吧,周围没有同学朋友了解编程。对于我来说,在这一段学习中,在课后是枯燥无趣 孤独寂寞的,我放弃了很多娱乐活动,我已经很久没有打篮球了,也很久没有玩游戏了,因为我必须花很多时间去弥补这些以前没有接触过的东西。我想说的是亲爱的同学,不管是你现在在准备考研,考公或者是什么,当你选择了一条道路的时候,需要自己不懈努力的时候,一定要坚持住,这段过程确实很孤独确实容易让我们懈怠,一定要坚持住,当你成功上岸的时候,那种感觉是真的真的很美好的。不过这也不算什么,毕竟我们经历过高考,经历过那样的煎熬,现在我们承受的根本就不及那时候的一半。这里借用科比的一句话鼓励一下吧

those times when you get up early and you work hard,
(那些你很早爬起来努力的时光)
those times when you stay up late and work hard,
(那些你熬夜刻苦训练的日子)
those times when you don't feel like working,you're too tired and you don't want to push yourself but you do it anyway
(那些你觉得太累了不想继续努力,并且强迫自己,但仍然咬牙坚持的时光,)
That is actually the dream,That's the dream!
(那才是追寻梦想的力量,那才是梦想的力量!)

所以要以我为警示,在学习中一定要有学习伙伴,这样互相监督,互相促进,互相学习,也不会觉得枯燥寂寞。选择了这条道路,也就意味着你要放弃你的很多娱乐活动,也可能不只是娱乐。加油吧,各位大佬。

 

 

 

Chamfion 2021.11.5

 

 

你可能感兴趣的:(秋招,面经)