栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > 学术 > 学生必读 > 大学生

纯自学转行互联网四大厂技术路径

大学生 更新时间: 发布时间: 学术归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

纯自学转行互联网四大厂技术路径

听涛记

说说路子

对于转行互联网的同学来说,最缺的是环境。周围没有战友,所以很多信息需要自己去摸索,很容易走弯路。因此,我首先从整体的角度,按照时间轴说一说我的历程。

研一期间自学了部分算法,主要用C++做一些信息学竞赛的题目,靠这个,对后来的笔试,我基本可以拿到一个进面试的分数。

研二上我以最快速度發了小论文,从寒假开始系统地看书。由于我只会C++的基础语法,所以首先看了C++的继承派生、封装、多态、模板等内容。刚开始自学效率很低,很多知识看过就忘,因此后面开始做例题,记笔记。一本书看下来,做了20几页的笔记,大概花了3周时间。

转眼到研二下,算法方向注重数理基础,这对工科生来说是一个优势。周围的同学大多选择了算法,我因此也跟风看了一点机器学习相关的书籍,还在网络上找各种实战视频对照练习。3月末各个大厂开始招暑期实习生,我尝试投递了蚂蚁金服、字节跳动、百度等公司。由于准备并不充分,基本都是一面凉。原因在于我大大低估了暑期实习面试的难度,另一方面,暑期实习往往与转正挂钩,竞争非常激烈,而我对此毫无心理准备。暑期实习的失败让我一度想放弃转行。

4月到6月一方面忙着毕设,一方面实验室活也比较多,一直没能静下来看书,更没有机会如室友一样去找日常实习。6月初端午节回了趟家,好好地复了一下盘,觉得不能放弃。回校后,继续拿起书本。这时,我改变了之前读书记笔记的做法,开始跟着视频来走,速度和效率都提高了很多。

7月实验室搬到沙河,我也进入暑假模式。每天除了下楼买点吃的,就宅在宿舍学习。在7月下旬终于把邓俊辉的《数据结构与算法》学完,8月上开始刷《剑指offer》和Leetcode。虽然《剑指offer》只有66道题,但非常经典,其中一些题目在面试中都考烂了。

原本按部就班往下应该看算法书了,但是看了牛客上提前批的大佬履历,以及室友对今年算法岗的判断,我觉得在人人深度学习的今年,自己既没有专业背景,也没有实习项目加持,总不能指望靠看几本算法书就拿到offer。因此,我决定转向后端开发,既能发挥编程的优势,竞争又相对温和。

于是,我从8月初开始看操作系统和计算机网络。操作系统看“学堂在线”上向勇的公开课,计算机网络看韩立刚的教学视频。由于时间紧迫,这两个都没能好好地跟着做实验,只能理解一下原理。8月底快面试的时候,看面经发现对Linux和数据库等方面知识考查的比较多。因此,利用一周的时间入门了数据库,熟悉了Linux的基本操作。

9月开始面试。第一个面试是9月1号上午的网易游戏研发。那个时候我连OSI七层模型都说不全,但所幸C++相关的都回答出来了,过了一面。当天晚上腾讯视频面试,面试官基本按照C++,计算机网络,操作系统的顺序提问。当问到poll和epoll的区别时,我坦言不会,面试官直接脸就沉了。果然,面试结束后我的校招进度条就灰了。

9月2号上午面美团。经过昨天的两场,我面试心态平和了许多。美团一面问得很全,但也很基础。由于简历上没什么可以聊的,于是开始考算法题。一共问了五道,前四道都是《剑指offer》上的,第五道是一道类似于整数拆分的动态规划,顺利写完了代码。面试官看时间还有剩余,于是问了一道概率题。当天下午,美团HR通知我一面通过,约了9月5号的现场二面。

9月5号的美团二面在望京。二面主要还是考察算法基本功,如手写一个堆排序。不同的是,面试官问了项目:项目背景是什么;有哪些挑战;你在完成项目的过程中起了哪些作用,有哪些创新点;如果再给你一次机会,你会怎么做。这4个问题是关于项目的基本面试套路,因此简历里面有相关的项目一定要提前组织好语言。

9月中旬做了一些笔试,如滴滴、京东等,一直没有消息。接着投了几个外企,但外企招人很少,且竞争激烈,面试机会都没拿到。那段时间有点沮丧,因为投一个挂一个,甚至对自己产生了怀疑。

9月21号字节跳动给了面试机会,可以选择视频和现场面。我选择了现场面,而且特意选了9点的第一批。我觉得现场面的效果更好,而且面试官会对第一个面试者一般要仁慈一些。

字节跳动效率很高,一上午走完了三面。一面是广告推荐的后端,带着我写了几段Linux的指令,然后考了一道括号匹配,顺利通过。二面是互娱直播,上来问了死锁,然后考了一道链表排序。我先无脑用了哈希排序,面试官马上问能不能原地,我表示要想想,后来在提示下写完了代码。结束后,面试官说待会儿加你微信,我心里窃喜。

三面是财经部门,面试官看上去年纪较大,部门Leader的感觉。开始考设计题,分析红包的提现过程,如何在不加密的前提下保证安全,提现的瞬间服务器崩溃怎么处理等。由于没有经验,我只能硬着头皮往数据库相关的方向去靠;在说的过程中涉及一些知识点,面试官会顺着往下问,最后问了发展规划。有意思的是,当我表示想去一个技术强的部门时,面试官笑着说那你应该去蓝翔啊。

面完后,HR让我去吃了午饭,很丰盛。饭后,我当面问了HR结果,HR告诉我面试通过。这是我秋招第一个面试通过的公司,也是体验最好的一次面试。

9月22号下午面百度。由于过了字节,所以百度面得比较佛系。一面是基础知识和难度较低的算法。面试官非常友好,在我回答完之后立即给予反馈,因此我越答越放松,顺利过了一面。

二面面试官来自百度地图,这是整个秋招最有压力的一场面试。上来就问B+树,然后让我在纸上手写B+树,我直接懵了。他看我不动弹,说那写一下二叉树吧,包含增删改差。我写了半个小时,马马虎虎。写完给面试官看,他淡淡地说了一句怎么没有平衡啊?我心里想你之前也没讲啊。然后开始考设计,题目是不同的终端登录微信时,数据库怎么处理。比如PC端登录需要手机确定,不同的端登录会将其他端踢下线。这种题目我自然是陌生的,于是又是硬着头皮上。整个过程中面试官不给我任何确定的反馈,比如会给你看似二选一的问题,最后告诉你其实两种都选。因此面完十分心累,还好给过了。三面是部门主管,问了InnoDB和MyISAM的区别就结束了。

一周后,收到百度录用的短信和美团的意向书。9月28号在北京面了网易的二面,当天晚上发了offer邮件。9月29号现场集中发带薪offer,但是只给了初级游戏研发工程师,在我表示已经被百度和字节录取后仍不能调整职位,于是现场拒绝了offer。

至此,互联网秋招结束。说说干货

下面细致地讲讲怎么准备。从个人经验出发,可以分为语言、数据结构与算法、操作系统(包括Linux系统)、计算机网络、数据库(关系型和非关系型)这几块基础内容。后續可以继续看系统设计、工具等进阶内容,这个可以根据岗位的需要有针对性地看。前一部分的基础内容资料网络上都很成熟,而后一部分的进阶内容则比较分散,我主要看博客或者GitHub上的总结。

语言,我选择的是C++,原因有三,第一我本科学的C语言,C++的语法与C很像,学习成本低;第二我在做算法题的时候,官方语言是C++,所以一脉相承;第三个人觉得C++较为底层,对代码的细节要求较高,对代码基本功有好处。在刷Leetcode的时候,看到很多“高手”用Python一行代码AC来显示自己的水平,我觉得这样虽然走了捷径,却耽误了基本功的建设,这在面试的时候无疑是吃亏的。事实也正是如此,有的人Leetcode刷了不少题,但是面试的时候连快排都不会写,自然一面就挂了。

C++的学习,我建议跟着“学堂在线”上郑莉老师的课去学。郑老师的课清晰易懂,例子充分,能很好地将容易混淆的概念讲清楚。我不建议上来就抱着“C++Primer”啃。人都有畏难情绪,容易半途而废。“C++Primer”把各方各面讲得很全,但是过于厚重。我先跟着视频学完了一遍,然后重点看了“C++Primer”关于多继承和多态的内容。由于时间比较充足,所以做了笔记,在面试前,复习非常有效。

数据结构和算法其实是两块内容。我先学的算法,然后学数据结构。算法总结来看,包括分治、搜索、贪心、动态规划等几个大的方面。分治如二分、归并、快排等;搜索包括深度优先搜索、广度优先搜索,是算法题最基本的方法;贪心和动态规划的题目都有一定难度,一般很难直接想到思路,所以必须要有一定量的题目积累。做题除了牛客网和Leetcode,洛谷网站也可以试试。

数据结构方面我是跟着“学堂在线”上邓俊辉的课。邓的课非常精巧,获誉无数。数据结构总体来看,包括栈、队列、链表、向量、堆、树、图、集合(并查集)、哈希表等。其中链表、堆、树(重中之重)、哈希表是重点。图虽然经典,但是感觉考察的不多,知道最短路径基本就可以了。这部分题目可以看《剑指offer》。但相比题目,面试官更喜欢考察某种数据结构的实现,如用数组实现链表,写二叉树的接口,用数组实现堆,并查集等。比较有挑战性的是实现红黑树、B+树等,但属于极少数。

操作系统我看了多个版本,最后还是觉得“学堂在线”的向勇讲得好。课程包含讲解和实验,由于时间有限,我只学了讲解的部分。操作系统的主要内容有:进程与线程、死锁和内存管理。进程是重点,包括进程与线程的概念与区别,进程控制,进程同步,进程通信等问题;死锁面试基本都会问,但是内容不多,主要围绕是什么,为什么,怎么办三个方面;内存管理主要是段页式存储、虚拟内存、页面置换等方面,这个找一篇总结性的博客看懂就基本可以了。

操作系统另一个方面是Linux系统,是面试的一个重点。这方面我仅仅入门,所以面试的时候非常吃亏。Linux系统相关的实战课网上很多,如果能够学完,且有一些作品,即使是造轮子,面试也会非常加分。

计算机网路我看的是韩立刚老师的课。课程虽然久远,但是非常经典,B站和六纬上都有资源。韩擅长用画图的方式来讲网络关系。内容基本按照TCP/IP五层模型展开,即物理层、数据链路层、网络层、传输层、应用层。前两层了解即可,网络层必须要掌握IP协议,传输层包括TCP和UDP,几乎面试必问,考得也比较细致,比如TCP的可靠传输、流量控制、拥塞避免等。因此必须理解工作原理。应用层主要是HTTP,问得较多的是get与post的区别。

韩的课由于比较老,没有讲Socket和I/O模型,这部分可以看B站上的黑马程序员。I/O模型主要考阻塞/非阻塞、同步/异步五种I/O模型,尤其是I/O多路复用中poll、select和epoll的区别。

数据库看得较匆忙,主要分为关系型数据库(MySQL)和非关系型数据库(Redis),个人觉得MySQL是重点。关系型数据库的基本内容包括:ACID属性,数据库的基本概念(如范式)和基本操作指令(虽然一般不会直接考察写指令)、隔离级别、锁和并发一致性问题、存储引擎InnoDB和MyISAM、索引(重点)、切分、主从复制和读写分离等。总的来看,数据库需要花充分的时间去学习。这部分我为了快,直接看的Github上的总结。非关系数据库看的较少,重点看了持久化(RDB持久化和AOF持久化),同样也是基于Github。在此,我建議还是跟着视频课程走,多做点题,这样学比较扎实。

最后,我看了一点缓存、集群、分布式方面的总结,便匆匆忙忙投入秋招了。看到这里大家会发现,上面的几块其实就是计算机考研的课程。大家学完了这些基础知识,根据面试经验实时调整和补充一些知识点,基本就可以去面试了。如果想要拿到SP,需要再做更多的积累。

2019届秋招接近尾声时,我在互联网方向拿到的offer有百度、字节跳动、美团和网易,岗位均为后端开发方向。我给今年正在求职的同学,讲讲我的互联网转行之路。

先介绍一下自己的背景,北航本硕,保研,专业方向是航空宇航科学与技术,学习成绩中上,有两个学科竞赛奖项,一篇SCI。

秋招就像一场考试。招聘企业有上市公司,有独角兽,也有初创企业和国企外企;时间跨度长,从7月提前批就开始;变数多,企业和个人都是双向选择。因此,经历过秋招的人都会脱一层皮。未来方向的迷茫,被拒绝的沮丧,等待结果的焦虑,拿到offer的喜悦和选择的纠结,未来发展的担忧,这些大部分人都或多或少会经历。也正因为如此,我才决定详细地写下我的历程,为后来者,特别是那些迷茫的转行者,提供一个真实的案例。

计算机方面,没有实习,只有一个略微相关的项目能写到简历里面。专业知识全靠自学,所以过程也异常痛苦。准备时间从2018年寒假开始,到2019年8月底结束,前后跨度不到两年。

秋招期间,包括互联网和航天院所,总共投递20多份简历,笔试8次,面试9次,5家单位给出明确录用意向,最终的结果比自己的预期理想。

秋招就像一场考试。招聘企业有上市公司,有独角兽,也有初创企业和国企外企;时间跨度长,从7月提前批就开始;变数多,企业和个人都是双向选择。因此,经历过秋招的人都会脱一层皮。未来方向的迷茫,被拒绝的沮丧,等待结果的焦虑,拿到offer的喜悦和选择的纠结,未来发展的担忧,这些大部分人都或多或少会经历。也正因为如此,我才决定详细地写下我的历程,为后来者,特别是那些迷茫的转行者,提供一个真实的案例。

责任编辑:王新伟

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/xueshu/335516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号