注:这个回答是我一位朋友在知乎上的万赞匿名回答,取得了他的同意,特此在这里转发,并写下一点自己的感想。
(但是,想了下,由于这个回答是匿名的,似乎也很难证明这个回答就是我朋友的。。。但是我让他在回答下帮我置顶了一条的评论,应该勉强算一个证明了哈哈哈)
问题:计算机应届生月薪大多是多少?月薪4k,6k,8k,10k的各占百分之多少呢,想了解一下知乎上大家的就业情况。好对自己有个定位,亲身经历或者朋友同学什么的都可以说说哈。我的朋友回答:
能做到以下几点,绝对可以在北上杭深拿到15K(小北注:这是18年的回答了)以上:
撒比算法题,各大公司笔试面试基本都考这个,别的不说,《剑指左边offer右边》所有题目背下来,leetcode刷个四五百题起码的吧。搞过ACM也可以,反正刷个四五百题是必须的。我也觉得考这些撒比算法题很撒比,但是大家都这么考,你不准备,那不挂你挂谁?
数据结构,不说要彻底给面试官手推各种数据结构的均摊复杂度,也不要求你手写红黑树,至少AVL哈希表堆这些简单的数据结构得自己实现过;链表、线性表必须熟悉到不能再熟悉,比如vector为什么要用加倍扩容而不是每次增加一个固定的扩容容量;BBST各种都能扯一下,达到这个程度就差不多了。
计算机组成原理,至少《深入理解计算机系统》得过一遍吧?配套实验也得做一下吧?
计算机网络,这个最简单了,随便找本书,把应用层、传输层看完就行,我看的《计算机网络自顶向下方法》。关键在于搞懂TCP协议为什么要这么设计,为什么是三次握手,四次挥手?书中的其他rdt模型为什么不实用?我面快手的时候还问了wireshark抓包遇到三次快速重传会怎么样,不过这本书的配套实验也有抓包内容,老老实实跟着做就是。
操作系统,这个部分我还在学习,采用的是跟着MIT6.828做的方法。知乎上陈硕有一个关于学习操作系统非常好的回答,大意是要抓住重要部分,不要沉迷于技术细节,我觉得很对。具体的,内存分配、调度、多线程这几个点,都得深入理解一下吧。如果不想具体去研究操作系统的实现,那么怎么用操作系统提供的接口这个是必须的吧,APUE了解一下?
数据库:sql得会写吧,几个范式有没有正式运用过?在做项目的时候,数据应该如何组织,才能够使得每次查询的开销最小?如果想深入,数据库的实现也是很好的一个方向。
编译原理:深入研究编译器,去钻研llvm当然很难,但是作为一个普通开发人员,编译器的各种选项,不同的优化级别具体优化了哪些,这些总得了解一些。最关键的,动态链接,静态链接,头文件,gcc的include选项、link选项、define选项(-I,-L,-D)怎么用,makefile/cmake怎么写,clangiccgcc到底真的用起来有什么区别,这些坑作为一个开发人员迟早会遇到,越早遇到,以后碰到坑的时候就能越轻松一些。
编程语言:总得擅长一门语言吧?C++的话,那几本书(Effective三部曲,对象模型)看完了吗?Java的话,JVM虚拟机理解的怎么样了?大厂就喜欢问这些,不好好准备那就挂喽。
具体岗位需求:别的岗位不了解,后端开发还需要熟悉网络编程,UNP得好好看。
项目:说句实话,学校里接触的项目能有多高大上?如果只是用几个框架的那种,我建议不要写到简历上,不如去github上参与开源项目,GSOC了解一下?当然如果你的实验室很厉害,跟导师做的项目很牛逼另说。还有一条路就是上面的5,6,7,任何一个花上半年时间去实现一个简陋的原型(比如实现一个简单的内核),都是非常好的简历左边加分右边项。事实上,国外名校这些课的最后的project都是让你实现一个原型。
英语:这个面试一般不会涉及到(除非是英文面试),但是我仍然认为英语是很重要的能力。具体的来说,就是“遇到一个撒比问题不去打扰同事自己谷歌或者bing从stackoverflow找到回答并且独立解决”或者“老板让我去接触一个没搞过的东西我硬着头皮点开文档看了两天两页终于能解决问题”的能力。
信息采集能力:对于学校不太好(非C9)的同学,这个能力其实是最关键的。最优秀的同龄人在学习些什么?我想去的公司想招聘什么样的人才?面试会问什么?春招秋招到底是什么,如何投递?实习真的很重要吗?这些问题,你去百度,去知乎搜索,去牛客网搜索,其实都有回答。为什么说这个能力重要?举个例子,BAT热门岗位留给秋招的坑寥寥无几,因为坑都被实习转正的同学占了,如果你之前不知道春招,没有去实习,能去BAT热门岗位的机会自然就很渺茫了。又比如,秋招各家公司笔试难度都明显高于面试难度,原因一方面是筛人,另一方面是笔试作弊现象很严重。如果你知道春招、秋招提前批是不用笔试的,是不是你的机会又多了几分?
社交能力:几个关键字:头条白金码、组内直推自己去牛客搜索吧。
以上是对本科研发岗的要求。算法岗和研究生的要求我不太清楚,想必只会更高。
当然,我上面说的这些要求,对于绝大多数同学来说都非常遥不可及。
但是,如果你在一个很普通的高校,不拿最高的标准要求自己,那你的结局就是和你的那些学长学姐一样,去个普普通通的公司,过普普通通的一生。
取法乎上,得乎其中,取法乎中,得乎其下。
小北BB:
这个朋友大学是打ACM的,两年前本科毕业就拿到了外企四五十万的左边offer右边,当时我刚大三吧,只觉得是神人。
仔细看他说的这些,其实是我一直推崇的CS科班学生的典型学习路线,基本上基础课跟着国外CS名校课程来,准没错。
能够做到50%,应该国内BAT这种公司的左边offer右边就比较好拿了,但是问题在于,我们刚上大学的时候其实很难从一开始就有如此清晰而明确的规划。
不少同学往往是到了大三下,发现身边有同学都拿到头条、腾讯的实习左边offer右边了,突然意识到,好像快要找工作了。
然后才匆匆开始认真捡起来学习,而平时都是把老师布置的作业完成就好了。
所以对于还在校的CS专业学弟学妹,有几点建议:
提高信息搜索、采集能力
做左边公众号右边这段时间,很多同学问我要xxLab的资料,csapp的lab资料,其实我想说这些东西我去找和你去找都是一样的,打开Google,输入对我发的那些关键字,你就能找到。
而且你找到的将会是一手资料,而我发给你以及诸如网盘上下载的,其实都是N手了。
多看信息密度大、质量高的资料
比如那些经典的书籍、课程,不要整天在CSDN、掘金这些博客平台逛,当然,我不是说这些博客都不好。
而是,你学习的资料,大概决定了你所能学到知识的上限,这些博客大多也是作者看完了其它书、专栏之后自己写的总结。
快速了解可以看博客,但是想要学得深入,不该省的时间终究是省不了的。
自己看书,虽然更费时间,但是知识会更加的系统和全面。
要有危机意识
现在计算机很火,各种转码、跨考计算机的同学很多,竞争也很大,每年看牛客上的经验贴,都会发现,cppprimer虽然很厚,但总会有人过了两三遍,而你也许一遍还没过完,也总有人leetcode刷了七八百道,而你也许直到面试前,剑指左边offer右边还没看完呢。
想要拿到满意的左边offer右边,就早点开始认真学习、好好准备、刷题,面向就业学习蛮好的。
每个人都能学好计算机,你需要的是持续不断的努力
我们会在各种论坛上看到一些前辈侃侃而谈他们的经验,也许有很多技巧、有天赋。
但最本质的一定是他们持续不断的付出,一万小时定律我一直坚信。
换到CS专业,可以类比出”10W行代码”定律,在本科四年,或者研究生三年,不说10w行,几万行代码总的有吧。
写代码很多情况下,就是无他,唯手熟尔。
自己粗略的统计了下,加上写的各种lab,大学写的代码应该是接近10w行的。
最后,请允许我(指回答者)在这里引用《上海交通大学学生生存手册》中的一段话:
相比宝贵的青春,我们在上学期间所需要的学费和生活开销几乎可以忽略不计。我们真正投下的有价值的筹码,是时间。面对着足以改变你人生轨迹的黄金时间,你是否感到了它的沉重?你又是否想过要如何计划这笔巨额投资?如果你是一名乖孩子,每天从早晨开始好好上课,好好做作业,好好预习、复习,直到熄灯时间好好睡觉,过着这种积极健康,平稳中庸的生活,但是缺乏有效自我支配的生活(如果按照学校的规划,你会发现你可以自由支配的业余时间少得可怜)。那么,你这样退守下去,无异于把自己的青春放在保险箱里让他随着时间而凋谢。我们必须牢记这样的黄金规则:平庸的生活方式是麻醉药。他只会束缚你,让你没有作为,甚至没有出息地度过大学的四年。END
2020年就要过去了,北京东路的日子主唱也迎来了十年重聚,很多同学都在朋友圈怀念自己逝去的青春。
这首歌也伴随了我们整个高中,高中班上还改编了一个我们学校的版本《九宗书院路的日子》在学校演唱。
昨天和一个朋友聊到,为什么工作后容易怀念学生时代呢?
大概是因为学生时代很单纯没什么烦恼,是啊,学生能有什么烦恼呢?
他/她喜不喜欢我?返校了作业还没做?考前了还没复习好?自习课讲话被班主任发现了?
收,不说了,这篇还是主要给大家分享一下CS学习经验的。
对啦,最近更新频率要降低了,因为嘛,有个需求比较急,还有年底述职答辩这些事情一堆。
反正每件事情看起来都不大,但是堆在一起就挺让人烦躁哈哈哈。
还有~昨天发的抽奖链接记得帮我参与噢,帮我点一下~