需要达到什么水平才能找到一份计算机实习?

作者:阿秀

原文链接:https://mp.weixin.qq.com/s/f7EGWjDVsaPC6HncTaZMLw (opens new window)

最近有不少学弟学妹私聊问我一个类似问题:我现在大二/大三/研一/研二,我需要达到什么样的计算机水平才能找到实习?如果能去大厂实习就更好了。

前段时间我们组一直在招实习生,趁着吃午饭的功夫跟技术leader聊了聊,感慨现在招人确实不容易,求职的也不容易。

今天也跟大家唠唠:你需要达到什么样的技术水平,才能找到一份至少是看起来不错的计算机实习

# 1、有几个样例

每天HR都能收到很多简历,这些简历不会第一时间就被人工去进行筛选,第一轮要经过的是算法筛选即有一个简历初筛系统,它会提取你简历上的内容,并从中提取一些关键性字样。

比如你的学校、你擅长的技术栈、你做的过的项目中用到的技术、你的英语水平、你的获奖证书等等,这些关键字被提取出来以后系统会用一个算法去进行打分,比如从你的简历中提取到了”熟悉常见数据结构及算法,比如栈、链表、二叉树,十大排序等“,就给你的简历加5分。

最后得到总分数,比如说60分及格,只有达到60分的简历才会被筛选下来,不到60分的全部筛掉,这也就是传说中的简历面

很多人都很奇怪为什么自己投递很多次都没有得到面试机会,就是这个原因,就是因为你的简历压根就没被人工看到,第一关简历都没过去。

投递次数越多,失败次数越多,后台记录次数越多,最后你投递过来直接GG。

并不是你们想象中的HR挨个替你们人工筛选,那性价比太低了,公司招人来干活也是有成本的,能让机器算法干的事就不会让人工去干。

所以特别是那些跟我一样是普通双非学校出生的人,简历真的很重要,至于怎么给自己简历加分后文再说,先给你几个选项,看看如果你是面试官你会让哪些人通过面试。

A:211出身,竞赛经历丰富,算法题OK,虽然不如A选手解题速度快,但是都能顺利解出来,计算机基本功扎实,进程线程三握四挥常规问题对答如流,索引优化侃侃而谈,手写SQL不在话下。

B:普通学校出身,ACM奖牌在身,面试过程中算法题几乎妙解,并且能给出最优解,但面试计算机基础不够扎实,经过提示也能顺利解出来

C:北邮出身,简历上很厉害,各种精通XX技术,面试考察算法题拉胯,冒泡排序也写不出来,计算机基础更是一塌糊涂。

如果你是面试官,你会让哪个同学通过面试?

如果我是面试官,我会让AB通过面试,刷掉C,并且在面评上给AB记录:算法ok,计算机基础扎实,建议通过面试

可能有的人认为虽然北邮和华科的牌子响当当,这两个学校在互联网是个金字招牌,可以横着走了,即使答得再差,也会面试通过。

但C真的会被刷掉,因为A、B已经证明了他们有很好的计算机功底,不管是良好的算法基础,还是扎实的计算机基础知识,这些都不是一两周能学会的,AB在面试中表现出来的足以说明他们具有良好的计算机基础了。

C则不然,除了学历比较好,其余都不如A、B,这样的人招来给自己和小组添堵

允许你基础差,只要你态度好,愿意踏实学,但不允许你态度有问题,对工作不上心。

上周隔壁组有个实习生在上班的时候看美剧,被直接辞退了,哪怕你是在B站看编程视频也说得过去,你这直接看美剧,学英语吗

这就属于态度有严重问题,直接被辞退了!

# 2、真让实习生上手写代码?

我想很多实习过的学弟学妹都有这个困扰,那就是自己好不容易去了一个BAT类的大厂实习,结果组长也不给分配活,自己也不知道干啥,每天除了拿快递就是摸鱼划水,很忧伤,代码也看不懂,自己也拉不下脸去问问题。

其实很简单,不是不愿意给你分配活,而是很多时候给你分配活还不如不分配。。。

因为带人很麻烦,特别是从0开始带,并且正式员工基本都是有自己的研发任务,都挺忙的。

以前我一直是充当”被带“的角色,自从一月之前开始充当”带人“的角色,真的是太TM麻烦了,真的是把实习生一把屎一把尿慢慢拉扯大,好在他也比较上进,至少态度上比较ok,愿意学。

所以更多时候,一些正式员工大多数时候都是直接丢文档或者代码给实习生,先让你自己看,看不懂再去问。

如果你不是个善于交谈的实习生,也不愿意开口问,那肯定就是越来越跟不上节奏,最后的结局就是转正失败!

所以大多数时候,并不是不让你们写代码,而是你们写了还不如不写,写的代码最终也很难通过代码评审,特别是那些实习一个月的同学,光上手你可能就需要三四周时间。

对于大多数实习生来说,如果真给你分配需求了,需求能不能cover住先不写,最基本的代码规范都是问题。

比如有的部门的前端小组约定了JS代码缩进2个空格、CSS缩进2个空格、Vue缩进两个空格,局部变量使用下划线开头,全局变量使用大写字母;

后端小组使用驼峰式命名,函数名大写开头,接口规范使用RestFul等等,这些基本都是细节,是这个小组所约定俗成的细节。

你要想融入甚至是切入这个小组,这种基本的细节肯定要注意到,如果你没注意到,代码review也不会通过,组长一般都会让你返回去fix,更不用说功能了。

说到这里,我想起来我去年在面试华为的时候,写算法题,面试官让我写了一个快排,花括号是紧跟在函数名后的,而不是另起一行;函数名用的是驼峰式,而不是test;局部变量是用的numA,而不是a。

如果你面试官,下面两个函数,你看哪个比较顺眼呢?

int quickSort() {
  int numA,numB;
  .....
}
1
2
3
4
int test { int a, b;}
1

毋庸置疑,肯定前者比较ok,后者比较不ok

其实这些都是最基本的细节问题,面试一个人并不是要全看他的硬实力,这些软实力也是需要注意的,因为往往于无声处才见惊雷

# 3、能力比水平更重要

这里说的的能力包括你的学习能力以及理解能力、沟通能力,这些东西比你在求职时自身已有的技术水平要更重要。

因为技术水平是可能通过后续的学习慢慢提上来的,但是学习能力、理解能力是你自打幼儿园开始就慢慢养成的,到你大学毕业的时候至少已经过去十三四年了,如果你十三四年都没养成一个习惯,怎么可能指望你踏入工作后养成呢?

沟通能力更不用说了,现在正常的互联网IT工作不是单打独斗,基本都是要与人协作、甚至是跨部门协作,跟人工协同工作的前提就是你”听懂“别人说的话,理解别人想要表达的意思,让别人”听懂“你说的话,让别人理解你想表达的意思。

至于你的学习能力怎么考察,可能会看你的基本功是否扎实,一些具体的技术细节是不是清楚,比如计算机网络三握四挥,那我两次握手行不行?三次挥手行不行?为什么不行?;

看你的逻辑思维是不是严谨,思考问题是不是全面,比如一些算法题中边界条件是不是很好的考虑到,有没有做相应的处理;

看你快速上手的能力是怎么样的,面试中经常会问你一个问题:我们部门目前采用的技术栈是XXX,跟你现在已有的技术栈不太匹配,是否接受转语言等。

计算机技术层出不穷,语言火了一个又一个,框架流行完一个又一个。

现在Python、Golang这么火,谁还记得2014、15年如日中天的PHP呢?

2014-15年如日中天的兄弟连和PHP

或许你们都听过一句调侃的话:PHP是世界上最好的语言,原因之一就是因为14、15年的时候PHP确实火上天了,当时有个主打PHP的培训结构叫做兄弟连,它比现在的黑马+尚硅谷加起来还要火。

现在唯一还在用PHP的大厂应该只有百度了,谁又能说现在的Python、Golang不会步七八年前的PHP后尘呢?

少看这些应用层面的技术&框架,多去看看计算机原本的基础原理,这才是一名合格的计算机从业人员应该具有的基本素养和正确认知。

这些才是你需要重点学习去掌握的,而不是XX语言、XX框架、XX新技术,在面试的时候跟面试官谈论程序编译过程、计算机多级流水线远比XX框架酷多了,面试官给你的评语也会是:计算机基本功相当扎实,建议录取,而不是:该生熟练掌握XX框架,建议录取

那么回到标题本身,如何才能武装自己、加强自己,找到一份不错的实习甚至是一份不错的工作呢

# 4、求职

说的明白一点,透彻一点,你找工作的过程其实就是展现你学习能力、沟通能力、理解能力的过程。

你理解了上面的内容其实就能理解:为什么一些公司,特别是中大厂、BAT这种该公司更爱招收985/211的学生

原因很简单,因为高考已经帮助这些公司检验过他们的学习能力了,在一个相对公平的全国性考试中你都没干过人家,凭什么让这些公司放弃211以上的学生去招收你呢?

这没什么不公平的,换我当老板,我也会去这么干。

但这也不代表一考定终生了,你在出身学校不如别人的情况下,就像我一样,只是个普通学校毕业的,你该如何证明自身能力呢?。

还是有很多方法的,比如:

  1. 参加一些比较知名的计算机方向的科学竞赛,比如ACM或者蓝桥杯,当然ACM含金量远比蓝桥杯大得多。

    也会有人说自己学校没有ACM参赛资格,也没有蓝桥杯参加资格,那LeetCode周赛你总能去参加吧,这是网络上的公开赛,注册个账号就可以参加,你拿不到力扣周赛前100名正常,因为前100名基本都是打ACM出身的,那300,500,800不可以吗?

  2. 多去研究一些看起来比较枯燥的东西,尝试去做一些能够体现你能力的项目,比如自己去尝试写一个编译器,做个mini操作系统等。

  3. 多在开源社区活跃,有一个上千甚至上万star的github开源项目或者跟人一起去维护一个知名项目;

  4. 多写写博客,做做笔记,将自己的学习过程以文字的形式记录下来,甚至做成网站去把自己的学习笔记开源出来。就好像我的求职笔记一样,现在也已经有超过 340,000 人次的访问了,这在我日后换工作求职的时候也是一个加分点。

    我的求职笔记

  5. ....

上面的这些内容但你拥有凡有一个,都不至于让你的简历过不了简历关。

# 总结

最后给那些跟我一样的普通学校出身的同学一个建议:对于我们来说,简历关很重要,远远比你们想象中的重要。

一个合格的简历能在无形中帮你增加很多面试机会,你可能会很疑惑为什么自己投递简历后得不到面试机会,你去找个已经工作的人,让他看看你的简历,你也许就知道原因了。

在计算机如日中天的今天,转行来CS的多不胜数,有太多比你们背景好的学生了,这些公司的可选项太多了,我们组每天就能收到很多简历,可最终通过面试的寥若星辰

如果你还在学校,趁着大学四年或者研究生两三年,多干点能写在简历上的事吧。

就好像一些学生出国留学,用海外留学经历来给自己镶金一样,你们也可以给自己镶金,点亮自身的技能点,形成自己的优势。

试着让自己”“一点,多去看看一些比较”无趣“的东西,少看一些应用层面上的项目。

少一点急功近利,多一点稳扎稳打