浅谈对计算机感兴趣的同学应该如何⾛进互联⽹⼤⼚

5,633 阅读19分钟

前言

受学院老师的邀请,决定写一篇这样的文章,希望能给想进入互联网大厂工作的学弟学妹们一些帮助。

这篇文章的受众范围是所有对计算机感兴趣,且打算进入互联网大厂工作的同学,无论你是考研还是就业,这篇文章讲的都是一个必经的过程,能够帮助大家以最高效的方式拿到自己满意的 offer,在自己喜欢的公司做自己喜欢的工作。

干货非常多,仔细阅读需要大约 30 分钟,希望大家能够认真看完,也欢迎收藏。文章的最后,还安排了一个 Q&A(问答)的环节,为大家答疑解惑。

背景

互联网行业的大背景相信大家应该都有一定的了解,现在的互联网行业是一个巨头割据的行业,阿里、腾讯、美团等巨头分别占领了电商、社交、本地生活等几大板块。如今的互联网行业,是高薪的聚集地,很多同学选择计算机专业的原因肯定也是被互联网行业的高薪所吸引。不仅仅是高薪,同时这个行业的福利也是其他行业无法比拟的:舒适的办公环境、各种零食下午茶、各种团建聚餐、全额的五险一金、每年一次的全家体检以及免息购房贷款等。

同时互联网行业也是成长最快的行业,相比其他行业的迭代速度,每几年会产生一次大的变革,这对于能够紧跟时代适应发展的同学来说,成长速度非常快。当然,这也对我们提出了更高的要求,一旦你没能跟上发展的脚步,就意味着被淘汰。

入门

大一刚进入大学的同学,无论你是初中高中就对计算机很感兴趣,还是被互联网行业的高薪吸引,最重要的还是先入门。很多同学在进入大学之前基本没有系统地接触过计算机,对于计算机比较深入的内容知之甚少,导致一上来就 hard 难度,心生畏惧。

相信这样的情况每个同学都遇到过,尤其是一些经济较为落后的地区,高中生活基本上都被文化课占满,信息技术课基本只存在于课表上。

很多同学怀揣着对大学的憧憬进入了大学,结果第一节课上 C 语言就听不懂了。实验课要求安装一个 C 语言的开发环境也不知道该如何操作。

遇到过这种情况的同学,一定要有耐心,要敢于折腾,大不了重装系统嘛~(有些同学说不会重装系统,这个网上教程很多了呀,多动手试一试,不会弄坏电脑的)

只有你和你的电脑打交道的时间越来越长,你才能对你的电脑有更加深入的了解。

想真正学好计算机的技能,最基本的一个能力就是自主解决问题的能力,遇到问题第一件事应该是上网搜索一下。其实上网搜索也有一些很实用的技巧,你甚至可以无限套娃——在搜索引擎里搜索如何使用搜索引擎。学习到了这些技巧之后,你基本上可以解决在学习中遇到的 80% 的问题了。

还有一点非常重要的素质就是,不要排斥任何一门语言,比如说一些标记语言,我这篇文章就是用 Markdown 写的,这就是一款非常好用的标记语言,用来做笔记、写博客,非常方便。除此之外还有 HTML,也是一门大名鼎鼎的标记语言,你们每一次的网上冲浪都离不开它,非常简单,纯粹靠记忆。

除此之外,科学上网也非常重要。受限于网络大环境,大家想要获取一些知识可能需要科学上网,这一点也属于入门计算机的范畴。想要获取到一些比较优质的学习资源,我们有时候需要使用一些国内暂时无法使用的工具,比如 Google,这个时候就需要科学上网,让我们能够更高效地使用互联网资源(网上冲浪)。搜索引擎上,推荐使用 Google/必应,有能力科学上网的同学建议使用 Google,没有能力科学上网的同学可以使用必应,就不建议使用百度了。

对于进入大学之前几乎没有接触过计算机的同学来说,入门计算机的标准就是能够独立安装操作系统以及编程需要的开发环境,学会使用搜索引擎解决问题。

深入

这些年来的计算机学习历程,让我发现大多数同学一上来就接触 C 语言,学习曲线不够平滑,很容易直接劝退一大批热情满满的同学。但是呢,C 语言又是最适合用于入门计算机的语言,因为他非常贴近计算机的底层。我的建议是先靠一门比较简单的语言入门编程(比如 JavaScript、Python),然后再通过类比学习 C 语言,这样的学习方式效率会非常高,同时也会让你对两种语言当中的不同表现形式有更加深刻的理解。

编程语言其实就像人说的汉语、英语、法语、德语等等自然语言,只不过自然语言是人与人之间的交流,而编程语言则是人与计算机之间的交流。

就像我们平时说话一样,一个语句的结构通常包括主谓宾,而编程语言通常包括声明、条件、循环,掌握一门编程语言,通常掌握它的基本语法就可以了。

当你已经掌握一两门编程语言的时候,你对计算机的理解就上了一个台阶,这个时候我们就可以开始更加深入地去理解整个计算机的系统了。

推荐一本书——《深入理解计算机系统》,切记一定要在已经掌握一两门编程语言之后再阅读这本书。

如果你觉得看书比较枯燥,容易犯困,那么你可以到 B 站找一些斯坦福之类的国外名校的 CS:APP(Computer Systems:A Programmer's Perspective) 视频来看,除了学习计算机相关的知识之外,你还能学英语。

还记得上面说的不要排斥任何一门语言吗?想要学好计算机,英语必须要过关。这里说的过关并不是四六级多少分,而是说计算机领域的英语原文阅读无障碍,至少能够不借助翻译软件理解文章的大致意思。计算机领域的相关名词非常少,达到过关的这个要求远比考过四六级要简单。

在深入学习计算机的过程中,你一定会遇到非常非常多搞不懂或者不理解的专业名词,这个时候最好的办法不是死磕,而是将这个不懂的名词记录下来,在你深入学习一段时间之后,你会茅塞顿开,对这个名词有一个自己的见解,印象会更加深刻。

在对计算机有了比较深入的了解了之后,就可以开始做一些项目了,通过实战来巩固自己的知识。

对计算机的了解足够深入的标准是能够理解编程语言是如何在计算机上运行的,能够理解计算机网络当中的一些基本概念。

实战

在对计算机有了较为深入的了解之后,就可以进入实战环节了。根据自己喜欢的方向,选择一门自己喜欢的语言,从网上找一个视频,会有一些不错的实战项目,跟着一步做,去记录自己在跟着做的过程中的一些疑问并自己动手解决,巩固自己的知识体系。

开始实战之前,我们一定要搞清楚我们如果想要进入互联网行业,到底有哪些方向可以选择:

非技术岗

非技术岗

技术岗

技术岗 1 技术岗 2

总结下来,互联网行业的岗位大致分为两类:

技术岗非技术岗
设计师运营
前端工程师产品经理
后端工程师
测试工程师
运维工程师

那么这些同学的协作流程是这样的:

需求协作流程

这就是一个完整的互联网公司开发产品的协作流程了。

举个例子,比如说我要开发一个手机淘宝,首先我需要确定这个 APP 要有哪些功能,这些功能的操作流程应该是怎么样的,这些就是由产品经理和运营同学共同确定的。确定了这个 APP 要有哪些功能之后,需要确定一下这个 APP 长什么样,图标界面什么的视觉效果应该是怎么样的,一些功能的操作流程中每一步给用户的视觉效果应该是怎么样的,这些就是由设计师来负责。设计师完成的设计之后,就需要交由开发,来具体实现这个产品了。开发分为前端和后端,前端负责将设计师出具的设计稿还原,做成软件,也就是每天用的软件里直接能够接触到的部分,后端负责保证这个软件运行的稳定性、安全性,为前端同学提供数据显示在界面上。最后开发完成之后,交由测试对整个产品进行检测,检测通过就可以由运维发布上线了,这个时候你就可以在应用商店里下载到手机淘宝了。

前面说了这么多的内容,最终的目的就是让大家能够选择一个自己喜欢的方向。我相信大多数同学都是比较想从事技术岗的工作的。

在这里一定要给大家打一针预防针:每个方向都有自己的专业领域,而且任何一个方向的专业领域都水深到难以想象,所有没有什么高低贵贱之分。总是有人说做非技术岗不如做技术岗,或者技术岗里 后端 > 前端 > 测试&运维,尤其是在一些社区,比如知乎、牛客等等地方,他们甚至还能编出一套像模像样的理由告诉你为什么区分高低贵贱。这里体现了一个心理学里非常著名的效应叫做达克效应(即越无知的人越膨胀)。

选择好了自己喜欢的方向,就可以开始深入学习相应方向上的知识并进行实战了。

怎么去获取一些方向上需要具备哪些素质呢?给大家一个方法,又快又直接地获取这个方向上对人才的基本素质要求。

打开腾讯校园招聘官网(或者其他互联网公司的校园招聘官网),点击投递简历,就能看到岗位的分类了。举个例子,假如我是一个前端方向上的同学(事实上我确实是前端方向的同学),我想做前端开发的工作,那么我应该选中技术岗,然后选择软件开发分类,选中前端开发方向,这个时候下面就会出现岗位描述和岗位要求,这个岗位要求,就是我们需要具备的基本素质。

岗位信息

岗位描述就是你进入到公司之后,会参与的工作。这里我选择的是前端开发,那么我主要的工作是开发网页、小程序、APP 等直接跟用户打交道的内容(比如你每天都在用的 QQ,再比如你网上冲浪使用的浏览器里看到的网页,又或是你在麦当劳点餐的用的小程序等等)。

岗位要求就是你能够胜任这个岗位的基本要求,想要拿下这个岗位的 offer,这些基本素质必须满足 80% 以上,这样才能在茫茫人海中脱颖而出。

根据岗位要求去完成相应技能的学习,进行相应的实战,巩固自己的专业技能,能够非常高效地达到岗位要求。

实习

有了一定的实战经验之后,就可以尝试投递一些公司,参加实习了,这一点非常重要,是你走进互联网大厂的必经之路(尤其是对于我们学校的同学,如果你是 985/211 名校的同学那就另当别论)。

对于我们学校这样的普通本科,如果你没有实习背景加持,你几乎无法找到满意的互联网公司,除非你能力出众,在社区小有名气,或者运气非常好(比如我)。

一般各大互联网公司在大三下学期的时候就会开始春季实习生招聘,通常是每年的 3 月份,这个时候的实习生招聘我们成为春季实习生招聘,主要是为秋季校园招聘储备人才。当你已经有了一定的实战经验,能够满足上面提到的岗位要求的 60% 的时候,你就可以尝试投递一些公司的春季实习生岗位了。

一方面,通过面试我们能够迅速找到自己和岗位要求之间的差距,及时查漏补缺;另一方面,我们可以在真正的企业环境里锻炼自己。

其实这里有一个比较矛盾的点在于:我投递了春季实习生岗位,顺利通过了实习生的面试,但是学校不允许在校期间参加实习。

这也是我和一些跟我沟通比较多的学弟学妹遇到过的问题,如何去协调学业和实习之间的关系,找到这其中的平衡点,也需要自己去探索。

一般情况下春季实习生岗位都允许暑假再入职参加实习,但是暑假的时间不长,要想适应企业工作,一个暑假的时间显然不够,这个问题暂时没有更好的解决办法。

在找实习的过程中,你也会慢慢建立自己的人脉,认识一批同届的优秀的同学,大家成为好友,一起为了自己的梦想冲刺,相互帮助相互支持,这点是非常美好的。

同时你也会掌握一些制作简历的技巧,怎么样在用最短的篇幅、最清晰的结构在简历上体现出自己的优势。除此之外还有一些面试时的沟通技巧,怎么做自我介绍能够在短时间内让面试官了解你的基本情况,怎么引导面试官往你擅长的领域提问,怎么在最短的时间里用最清晰的结构将自己的项目介绍给面试官。这些都是非常值得学习的内容,通常这些比较细节的地方,能够影响你最终面试的结果以及你的薪资。

秋招

秋招就是我上面说到的秋季校园招聘,如果按照我上面的路线一路走过来的同学,应该会在这个阶段拿到不少 offer,这个时候 offer 的选择也非常重要,如何选择一个让自己满意,同时又有充足的发展空间的公司也非常重要。

如何选择一个 offer,是拿到 offer 之后的事情。最近跟一些同学聊的时候,经常有一些同学简历都没投就在问这个公司这个团队好不好,那个公司那个团队好不好之类的问题。我寻思这不是还没中彩票就开始规划奖金怎么花了嘛?先通过了面试,把 offer 攥在手里了再考虑如何选择,脚踏实地一步一步来。

关于选择 offer 这个问题,因素挺多的(比如男女朋友啊、家庭住址啊、家庭情况啊之类的因素),看自己关注什么吧。选择自己关注的点,最重要了。这也是我在秋招选择 offer 的时候纠结了很长时间,跟阿里淘系的师兄聊天的时候,师兄给我的解答。

总结

到这里了我们总结一下:

要想毕业进入互联网大厂工作,以下几个步骤必不可少:

  1. 在大二上学期之前入门计算机
  2. 在大二下学期之前掌握 1~2 门编程语言
  3. 在大三下学期之前参与 1~2 个实战项目
  4. 在大四上学期之前找到一份中大型公司实习

完整走完这个步骤,在大四上学期的秋季校园招聘中,你就能够脱颖而出。

Q&A

1. 互联网公司都是 996 吗?工作这么辛苦为什么还要选择互联网行业?

首先第一点,互联网公司并不是都是 996,少数公司比如拼多多快手字节跳动这样发展较快的创业公司工作强度比较大,其他公司最基本的双休是有的,平时上班时间也还算合理,相比非互联网行业的其他行业(比如销售、物流等),工作时间将对较短。

当然我也是打工人,我也不喜欢 996,所以选 offer 的时候也要慎重,不能被工作占领了生活中的绝大部分时间。工作时间相对比较弹性,比如你早上身体不舒服要去看医生,跟老板说一声就行,不用请假,少数几天工时比较短没什么关系。

至于第二点,说点心里话。当代大学生的压力其实不小,家庭条件好的同学可能体会不深。互联网行业虽然比老师、公务员之类的工作稍微辛苦一点,但是薪资高,能够快速地完成原始的资本积累,至少能够让你在平时的生活里不用算着钱生活。同时行业的红利还在,相关的福利也更好。

2. 听说做程序员这一行,到了 35 岁就会被辞退了,是真的吗?

其实这个问题在我成为程序员之前也经常听说,这个问题还是需要辩证地看待。

为什么出现 35 岁被辞退的情况呢?

首先第一点,你的技术已经没办法跟上互联网时代发展的速度了,专业技能上已经落后多年;第二点,35 岁这个年纪,通常有了自己的家庭,在工作上花的心思更少了;第三点,也是最重要的一点,没有为公司带来价值,没有体现自己的不可替代性。

所以,35 岁被辞退的程序员相对来讲,属于同年龄段员工的最底层,最底层的员工不管怎么样都是会被优化的,即使没到 35 岁。如果你觉得自己到了 35 岁会成为同龄人当中的最底层,那确实应该担心一下这个问题。

通常到了 30 岁左右,程序员就不再写代码了,会逐渐往管理方向上走,成为一个团队的老大,带领团队进行开发。当你带了一个团队之后,你的不可替代性就体现出来了,这个团队换一个老大可能就没办法很好地运转,又或是这个团队换一个老大团队的成员会跟着老大一起走。

保证自己 35 岁不被辞退只需要做到一点:保持学习

招人

目前团队正在面向 21 届和 22 届的同学进行招聘,有想法的同学可以加我微信 wangjiaqi0112 了解更多。

团队介绍

负责淘系前端基础架构,通过打造极致的技术产品为终端用户提供优秀的使用体验,为开发者提供强大的研发能力,核心技术方向:

  • 前端框架:基于 React & Rax 打造强大的跨端研发框架,基础框架(React/Rax/小程序)、工程构建、跨端能力、微前端都是我们核心探索的技术方向,在服务阿里前端的基础上,我们也面向社区开源了飞冰(ice.js)、RaxIceworks 这些技术产品
  • Node.js:TODO
  • 客户端方向:TODO
  • 图形渲染:TODO

基本要求

  • 前端基础扎实,熟练掌握 JavaScript,CSS,HTML
  • 熟悉了解 Web 标准,对可用性、可访问性等相关知识有实际的了解
  • 对前端框架、工程构建、Nodejs、客户端开发、图形渲染至少一个方向有一定的了解和项目实践
  • 关注新事物、新技术,有较强的学习能力,喜欢挑战,并且个性乐观开朗,逻辑性强,善于合作

加分项

  • 积极参与开源社区,为开源项目提过 PR 或者有自己的开源作品,不妨在简历中提供你的 GitHub 账号
  • 乐于分享,经常在社区输出自己的技术实践和思考,欢迎提供你的社区博客地址
  • 有较为成熟专业的项目实践