17届大牛学长的分享:如何拿到一份理想的offer

17届大牛学长的分享:如何拿到一份理想的offer
发信站: 北邮人论坛 (Thu Jan 12 10:32:12 2017), 站内

我是北邮信息与通信工程学院2017届硕士研究生断江(由于咨询的同学太多,所以用了阿里花名)。今年4月份拿到蚂蚁金服的C++研发工程师实习offer,6~8月在支付宝实习,8月底通过了转正面试,拿到了校招的offer,同时也拿到了腾讯的offer(最终选择阿里)。回想整个找实习和找工作的过程,我踩过很多的坑,因而也积攒了一些经验,这里记录下来跟学弟学妹们分享分享,希望能让大家少走一些弯路。
经验适用目标人群:工作目标是互联网公司,工作的方向偏技术方向。
在校生如何准备并找到一份理想的offer?我的经验也主要分为三个部分跟大家分享:树立目标,修炼内力,锻炼招式。
树立目标
那么树立目标要注意哪些方面呢?
(1)    时间尽量早
时间点呢,我觉得本科最好能在大一结束,研究生最好研一上半学期就要确定自己的目标。当然越早越好。
(2)    先选大方向
要先确定一个大的行业方向,公务员  国企事业单位 私企 外企 互联网等等。
(3)    再选小方向
首先,我们必须知道互联网的工作岗位大概有这些分类,这个可以去各个招聘网站看看。
大家在选择小方向的时候最好结合自身,首先要清楚自己适合做什么,擅长做什么。我当时选择的时候就是知道自己比较擅长技术,不太适合和人打交道,因此我选择的是技术岗,而且我实验室做的方向是网络流量相关的,最后我基本投的都是网络开发方向的。
大部分情况下,最后去的岗位都会是自己擅长的领域,所以清楚自己擅长什么领域是非常重要的。
(4)    难以确立目标
如果最后实在难以确定一个方向,那么,我建议最好各个方向都去涉略一遍,了解了解。多看看各个方向的书,条件允许的话可以出去实习,各个方向亲身经历一下,大概就知道了。
内力篇 (大一大二, 研一)
在确定了目标后,接下来就是针对性的修炼了。内力的修炼最适合的就是大一大二两年,还有研一一年,这时候暂时还没有找工作的压力,可以专心地提升自己。
这里我总结一下,各种岗位要求基本可以总结成两点,一个是基础能力,一个是工程项目能力。
基础能力
(1)    编程语言
那在刚开始如何来选择一门语言呢?我个人觉得首先根据自己的兴趣,和自己实验室的方向来选择。实验室平时用啥就学啥,这个比较直接。而本科生我觉得最好先学C语言,这个是基础,然后再学C++,最后再涉略一下Java。C语言比较底层,可以学到一些上层语言没有的东西。其实C和C++你学的好,那么你会发现世界上其它的语言都很好上手。
那如何来学一门语言?以我的经历来说。 
第一,去图书馆找一本尽量薄一点的入门书,花个两三天看完,这时候只有一些语法知识概念,前期这样够了。入门我不推荐一开始就看c++ primer这类的书,很容易让自己找不到重点。 
    第二,训练。可以去leetcode刷题,找一些简单,用自己学的语言做题,可以练习算法又可以提高语言熟练度。我一般都是直接找一个该语言相关的开源项目进行学习。看开源项目可以知道该语言的工程用法,知道实际中牛人是怎么用这种语言,这样提升比较快。这里推荐学C/C++的可以看看nginx、Leveldb、redis。
    第三,继续看书,这时候可以看一看比较经典的大部头了,比如c++ primer之类的,边用边查,从整体细节去理解这个语言。但是千万不要纠结一些语言的学术用法,比如什么 ++*a++,之类这种东西,完全没有意义,真正的工程中没人会这样写代码。
不只初学者,我相信在以后工作也是这三部不断地循环。还要强调一点,语言不要花太多时间,它很重要,但是它只是一个工具,用这个工具来做什么事情才是最重要的。

(2)    专业基础
这里专业基础我主要分为几个,数据结构,排序搜索算法,计算机网络,操作系统。
a)    数据结构
数据结构其实就是那几种基础的链表、队列啥的。这个随便找一本书看一看就行了。数据结构我个人觉得只要做到懂得各种数据结构的特点,能灵活地应用就行了,没必要达到实现的层次。而且一些细枝末节不要太深入,比如红黑树的各种特点没必要死记硬背,但是你一定要知道为什么要有红黑树,它的特点就是更平衡的查找树,同时也牺牲了一些效率,这样就够了。
数据结构看完书后,我觉得直接开始看开源项目吧,看人家怎么用的数据结构,像redis,leveldb基本不用红黑树,而是用跳表,从中我们也可以学到最新的工程上的数据结构用法。
b)    排序搜索算法
排序和搜索最好先看看书,但是不要太过深入了,只要基础的哪些算法就行。我当时基本就是随便找了一本书看了一下,没有太深入,平时用的时候知道怎么用就行,正常情况下这两种算法都是和数据结构的书放在一起的。
c)    计算机网络
计算机网络,我个人觉得很重要,特别是搞互联网的,网络要是不懂就说不过去了。这里入门直接看谢希仁的那本计算机网络,还有最经典的tcp/ip详解,有这两本入门就够了。
学习的时候,去下载个wireshark,一边抓包一边学习,如果能把数据包的交互过程都整明白了,那么找工作完全够用了。
这里抛给大家一个问题,计算机从启动到你打开百度这个网站,期间的数据交互有哪些,分别搞了哪些协议,整个流程你要是能说明白,你就够牛逼了。
d)    操作系统
操作系统的理解我个人觉得只要你能整明白一个程序从启动到消亡,操作系统做了那些事,给你哪些资源。程序的堆栈是啥,怎么调度的,我觉得就可以了。可以去看看 William Stallings那本操作系统。
工程能力
    我认为工程能力就是你解决实际问题的能力,即你碰见一个问题,你会如何来解决,你必须要有一个清晰的思路。
如果你是研究生,你实验室的项目很多,那么你可以专心地研究你的项目,从项目中锻炼自己。基本上做项目要做到什么程度呢,主要有几点:为什么要做这个项目,如何来设计和实现这个项目,自己解决了哪些难点,还有没有更好的方案。就是what why how 那一套。这个面试官基本都是按照这个思路去问你的实际项目的。所以你必须对自己的项目做到,别人挑战你,基本问不倒。 
如果你是本科生没有项目,或者实验室项目很水,那么怎么提高工程能力呢?我就说一下有几种方式。
(1)看书,看一些偏工程类的书。如果你是搞网络的,那么《unix网络编程》肯定得看,这本书能让你将tcp/ip和上层应用层socket结合起来。如果你是搞机器学习的那么入门可以看看《机器学习实战》这类的。总之就是你的垂直领域的比较牛逼的书。
由于我是偏c++研发,我这里推荐一下我看的一些好书,C专家编程,C陷阱缺陷,高质量c/c++编程,muduo服务端编程,tcp/ip详解,unix编程艺术,代码大全。。。。。。。。。。
其实看书只要你去搜一下,经典书籍,很容易就知道自己需要看什么。
(2)看技术博客,或者技术类的微信公众号。csdn,infoq,stackoverflow之类的上面很多牛人分享,自己找一些适合自己领域的看一看。还有最好能找到各种牛逼团队的博客。看一下牛人碰见过哪些问题是怎么解决的。
(3)看开源项目。开源项目真的是可以快速提升自己的能力的,github上面有无穷的财富,大家好好珍惜。
那么如何来看一个开源项目?这里以nginx为例。
    第一,你要带着问题去看源码。Nginx为什么这么牛逼?性能为什么这么好?它做了哪些设计让性能这么好?
    第二,然后上网搜索一下,根据相关的资料去看源码,去看实现,各个方向可能关注点不一样,最好一部分一部分来,先关注自己熟悉的。比如搞网络的,那么Nginx的IO模型是不是就得研究一下,擅长多线程进程编程的,是不是得研究一下它的进程架构模型。
第三,然后才是源码细节,包括一些小细节,多问问为什么人家代码为什么要这么写,如果让自己来写会怎么写,能不能写得更好。
总结一下就是,人家开源项目解决了什么问题,是怎么设计的,为什么要这么设计,实现上做了哪些优化等等。就比如,有了memcache了以后为啥还要redis,一个东西火起来必然有他的道理。
    (4)最后一个就是记笔记写博客,这个都是自己的沉淀,同时也能锻炼自己的文档能力,以后都用得着的。能把一个知识给别人讲明白了,并记录下来,会让自己的理解更加深刻。
招式篇 (大三 研二)
互联网的招聘一般会分为实习招聘和秋季应届招聘。大三和研二的下学期开学,也就年后3月份左右。具体的各种时间可以去牛客网看看。
应聘就像考试,只要是考试,那么就要有针对性去训练。那什么时候开始比较合适?我觉得大三和研二上学期就要开始了。
我把找工作的过程分为几个点,投简历,笔试,面试。
关于如何写一份简历,这个我就不多说了,这个网上教程很多,我这里只强调一点,你一定要保证你写进简历上的东西,一定一定必须必须必须很熟练。
技术的笔试基本分为基础知识,编程题。这个基础知识基本靠运气,因为它是后台的题海随机选出来的题,如何通过笔试,这个可以咨询你们的师兄师姐。编程题一般2~3道,基本有一道动态规划或者背包问题,然后一题基础题。
技术的面试基本就是两到三面,第一面应该是基础面,问的东西偏基础,然后问问项目,这一面还是很重要的,决定了你的起点,你的评级。如果评价很高,那么后面会比较顺,很多都跪在了一面。第二面就是深度面试了,问的东西会很深入,基本上围绕项目,会抓住某个点不断延伸,所以要对自己简历上的东西有一个深度的思考才行。过了这两面基本就ok,剩下的hr面一般不会刷人,但是你也不要太耿直了。
如何来准备这些笔试面试?
(1)算法编程题  《剑指 offer》+ 动态规划背包问题
面试算法编程题:这里推荐《剑指 offer》地位基本就是it界的五年高考三年模拟。基本要能做到看到题目就能熟练在白纸写出。里面有各种训练,多写写多练练,面试够了,如果觉得还是意犹未尽,那就去刷leetcode吧,选择简单和中等的就好。其实跟高考一样,题贵精不贵多。把剑指 offer搞个几轮,基本面试的时候够用了。
    笔试算法编程题:笔试的编程题,大家要额外去看一下动态规划和背包问题,一般笔试的动态规划和背包问题还是比较简单的,都是动归的那一套三板斧,大家自己去查资料,背一下模版,能熟练弄出状态转移方程就行了。

(2)基础知识    《考研参考书系列》数据结构 计算机网络 操作系统
    基础知识大家肯定平时都看过,就是没有总结。这也是为什么我推荐看考研系列的这种书,这种应试的书总结得太好了,非常有条理,看这几本基本面试够用了。我当时就是图书馆借的,《天勤考研系列》那几本书。
    这里强调一下,如果你的目标是国内知名互联网企业,那么你一定要去看一下阿里招聘团队今年官方出的一本书《技术之瞳》,今年声势非常浩大,我看了一下,内容还是非常全面的,囊括了从前端到后台,到数据分析各个方面。里面的题都是牛逼的人,至少是资深专家出的,看作者列表里,就有阮一峰、winter(看知乎的肯定知道)、朴灵这样的阿里大神级人物。由于是阿里主推的,你还是乖乖的去研究一下吧。不用想都知道,里面肯定会包含接下来面试笔试的点。当然,如果你能搞定阿里的笔试,国内互联网公司基本都没问题。官方的书远比那些野路子来的更准确些,至少让你少走弯路。
(3)工程项目
这个我觉得为了应付面试,增加自己简历的内容。你最好在这半年内提前精心准备3~4个项目,而且一定要把项目的前前后后都理清楚,知道从背景,到调研,到实现方案,到后期优化等等都要烂熟于心。因为每个人都不一样,所以项目我就不多说了。如果你是在一点项目都没有,那么你最后去研究一个开源项目,然后面试可以说自己研究过什么项目之类。。。
(4) 专业方向知识
这里还要根据你简历里的项目,准备一下你自己所属领域的专业知识,基本上就是你项目的延伸。面试一般会根据你的项目,然后拓展出各种知识。
我简历里的项目都是偏C++网络的,面试就主要考察C++,tcp/ip各种知识,网络的IO模型,linux的各种命令等等。所以你要认真地过一遍你的简历,把可能会问到的知识点都复习一遍。    
好了,总的经验就这些了,自己最好还是要有自己的独立思考,多想想,多问问师兄师姐。这里再次强调,互联网企业17届实习生招聘,基本会在开学初的3月份开始,也就是春节过后,大家寒假得赶紧准备哈,重视起来(建议刷《技术之瞳》)。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值