赞
踩
计算机专业的学生要达到什么水平才能进入BAT等大厂工作?越早知道越好.
各大公司笔试、面试基本都考这个,别的不说,《剑指Offer》所有题目背下来,Leetcode高频题目刷个一两百遍,搞过ACM也可以,反正刷个四五百题是必须的。
不说要彻底给面试官手推各种数据结构的均摊复杂度,也不要求你手写红黑树,至少AVL、哈希表、堆这些简单的数据结构得自己实现过,链表、线性表必须熟悉到不能再熟悉,比如vector为什么要用加倍扩容,而不是每次增加一个固定的扩容容量?BBST各种都能扯一下,达到这个程度就差不多了。
至少深入理解计算机系统得过一遍吧,配套实验也给做一下吧。
这个最简单了,随便找本书把应用层、传输层看完就行,我看的《计算机网络:自顶向下方法》,关键在于搞懂TCP协议为什么要这么设计,为什么是三次握手,四次挥手,书中的其他RDT模型为什么不实用?我面快手的时候还问了wireshark抓包遇到三次快速重传会怎么样?读过这本书的配套实验也有抓包内容,老老实实跟着做就是。
这个部分我还在学习,采用的是跟着MIT6.828做的方法,知乎上陈述有一个关于学习操作系统非常好的回答,大意是要抓住重要部分,不要沉迷于技术细节,我觉得很对,具体的内存分配、调度、多线程这几个点都得深入理解一下,如果不想具体去研究操作系统的实现,那么怎么用操作系统提供的接口,这个是必须了解一下的。
SQL的会写吧,几个算式有没有正式运用过?在做项目的时候,数据应该如何组织才能够使得每次查询的开销最小?如果想深入数据库的实现,也是很好的一个方向。
深入研究编译器,去钻研LLVM当然很难,但是作为一个普通开发人员,编译器的不同选项,不同的优化级别,具体优化了哪些?这些总得了解一些。最关键的动态链接、静态链接、头文件,gcc的include选项、link选项、define选项 (-I,-L,-D)怎么样,makefile/cmake怎么写,clang icc gcc到底真的用起来有什么区别?这些坑作为一个开发人员迟早会遇到,越早遇到,以后碰到坑的时候就能越轻松一些。
总得擅长一门语言吧,C++的话,那几本书(Effective三部曲对象模型)看完了吗?Java的话,JVM虚拟机理解的怎么样了?大厂就喜欢问这些,不好好准备那就挂咯。
别的岗位不了解,后端开发还需要熟悉网络编程,UNP得好好看看。
说句实话,学校里接触的项目能有多高大上,如果只是用几个框架的那种,我建议不要写到简历上,不如去跟Github上参与开源项目,GSOC了解一下。当然如果你的实验室很厉害,跟老师做的项目很牛逼就另说。还有一条路,就是上面的5、6、7,任何一个花上半年时间去实现一个简陋的模型,比如实现一个简单的内核,都是非常好的简历加分项。事实上国外名校这些课的最后的project都是让你实现一个原型。
这个面试一般不会涉及到,除非是英文面试,但是我仍然认为英语是很重要的能力,具体的来说就是遇到一个撒笔问题,不去打扰同事,自己谷歌或者bing从Stackover flow找到回答并且独立解决,或者老板让我去接触一个没搞过的东西,我硬着头皮点开文档看了两天两夜,终于能解决问题的能力。
对于学校不太好(非C9)的同学,这个能力其实是最关键的,对优秀的同龄人在学习些什么,我想去的公司想招聘什么样的人才?面知会问什么?春招、秋招到底是什么?如何投递?实习真的很重要吗?这些问题你去百度、去知乎搜索,去牛客网搜索,其实都有回答。为什么说这个能力重要?举个例子,BAT热门岗位留给秋招的坑寥寥无几,因为坑都被实习转正的同学占了。如果你之前不知道春招,没有去实习,能去BAT热门岗位的机会自然就很渺茫了。又比如春招,各家公司笔试难度都明显高于面试难度,原因一方面是筛人,另一方面是笔试作弊现象很严重。如果你知道春招,秋招提前批是不用笔试的,是不是觉得你的机会又多了几分?
几个关键字:头条白金码、祖内指推、自己去牛客搜索吧,当然,我上面说的这些要求,对于绝大多数同学来说都非常遥不可及。但是如果你在一个很普通的高校,不拿最高的标准要求自己,那你的结局就是和你的那些学长学姐一样,去个普普通通的公司过普普通通的一生。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。