华为百度腾讯这些大公司,校招需要达到哪种水平才有机会进去?

华为百度腾讯这些大公司,校招需要达到哪种水平才有机会进去?

刚毕业拿到BAT大厂offer,现在在网易做总监的学长来回答下这个问题。

因为我是程序员,所以重点说下技术岗位如何才能进大厂。

能做到以下四点,应届毕业加入大厂,非常有机会:

1.学校内的课程,计算机基础知识,如C语言,数据结构,计算机组成原理,计算机网络,计算机操作系统等这些基础专业知识一定要理解掌握,在校招中,这些内容必考。

2.提升自己写代码的能力。不会配置环境,不会框架,就去找资料自学,B站,慕课很多免费视频课程。

3.做项目。这里不是指学校做的项目,而是真正可以部署上线的项目。你可以去GitHub上找,也可以从学长学姐或者老师看是否有合适的项目,或者找一些大厂实习岗位。

4.疯狂刷算法题。leetcode上的题目很多都可能在校招中被拿来当面试题,《剑指Offer》也挺不错,leetcode最起码刷个200,300道,然后把《剑指Offer》背一遍,基本没大问题了。

5.多看计算机经典书籍,读计算机经典书籍不光能让你快速提升知识和能力,更会让你在大厂面试之际如虎添翼。

我把大学和工作中用的经典电子书库(包含数据结构、操作系统、C++/C、网络经典、前端编程经典、Java相关、程序员认知、职场发展)、面试找工作的资料汇总都打包放在这了,点击下方链接可以直接获取:

我已经把这些书打包好了,点击直接获取:

这套资源可不是一般那种网上找的资源,是伴随我从学生一路成长为腾讯高级开发工程师,360技术经理、360技术总监、中小公司CTO的打包全套!非常宝贵!

接下来,说下四点重要加分项:

1.尽全力成为有分量的专业竞赛中(如ACM)的获奖者。

2.努力争取拥有国家级/省级/市级大型研究项目开发经验。

3.努力争取知名互联网相关企业的实习经验。

4.如果是研究生,比较强的研究成果、论文、专利或参与过学术会议,都是很大优势。

以上四点,有一项就非常棒了!

再说说我应届毕业加入腾讯的学习路线吧:

先说说C语言,这个没什么,C primer反复看,然后一行行在电脑上敲出来。

当时对计算机缺乏系统认识,最难理解的就是指针,书上说它是个变量地址,那么问题来了,什么是地址?一不小心,指针就让程序Crash了。

直到读研的时候,看了大学教材:《计算机组成原理》这本书,我才明白指针背后的含义。

攻克完C语言之后,听师兄师姐说数据结构也是自学编程需要攻克的重难点。从数组到链表再到堆栈、二叉树、平衡二叉树、红黑树、B+/B-树,简直就像看天书。还记得二叉树的先序,中序,后序遍历就把我弄晕乎了。更别提后面的AVL树的删除以及B-树。

我应付看不懂的方式也很粗暴:做笔记,勾选出没看懂的部分,反复看。一遍不行看两遍三遍四遍,直到所有内容看懂为止,看懂后就上机,上到天昏地暗上到头晕脑胀。数据结构这本书,记得来来回回看了10多遍,上机100小时以上。

这之后开始系统的学习网络、C++、VC,还记得有一本非常厚的书:《C++ Primer》,可以说上面的每一个例子,都上机造过轮子。

随后开始啃《Effective C++》、《More Effective C++》、《C++程序设计原理》、《深度探索C++对象模型》、《STL源码剖析》、《计算机网络系统方法》、《TCP/IP详解》。

曾经看过的一部分书籍:

掌握了C++之后,我还用它做了不少有趣的东西,比如:万年历、五子棋、俄罗斯方块等等,俗话说兴趣是最好的老师,建议大家在学习编码的过程中也不妨挖掘出一些有趣的东西:

我写的五子棋程序:

俄罗斯方块:

虽然简陋,但这种训练给我的编码能力带来了极大提升,还训练了程序思维。

除了疯狂自学,毕业的压力也很重,但掌握的东西越多,你对未来就越笃定。

因为我的目标是毕业后做游戏开发,所以,主攻的三大方向很明确:Window C++开发、算法、网络编程,这些都是游戏编程所需要掌握的硬核技能。

除了这些,大学期间我还开始疯狂刷题,当时我是在PKU ACM网站上刷的:

《算法导论》这本巨作也被我反复翻看,反复实践:

曾经的算法小抄笔记:

还记得当年为了更快的进步,跑去蹭研究生的课程,听到NP难问题不由感叹:算法世界太奇妙了。

顺便送学弟学妹一本阿里P8撰写的算法刷题笔记,计算机专业要想进大厂先从刷算法做起真的是个好方法,算法厉害的人进大厂非常容易:

成长的过程,润物细无声,极难察觉。但那段枯燥痛苦的学习和刷题岁月让我未来的道路受益匪浅。毕业后,我也如愿拿到腾讯游戏年薪近15万(多年前)的Offer,开启了职场生涯。在我那个时代,线上资源并不丰富甚至是匮乏!今天各种论坛、公开课、学习资料非常丰富。最近指导师弟师妹应对秋招,我找了一些资料,这里也顺便给学弟学妹们推荐下:

核心就是计算机底层 + 通过反复造轮子的方法学习计算机基础课,主要要攻克三个方向(攻克了会让你如虎添翼):

一、操作系统

美国有很多优秀的操作系统公开课,比如mit6.828、哈弗OS/161。这类课程都会给你提供一个mini os壳程序,相当于一个核心组件,剩下的你可以自由发挥。比如你可以设计线程管理、文件系统等等。

相比只是看操作系统的书籍,这种学习方法的效率简直高100倍!

下面是课程官网:

国内也有一些顶尖高校也是采取类似的方式,比如清华ucore基于 Linux 0.11魔改版本

二、数据库国内说数据库就是mysql,这点要相信我!

首先概览下mysql的知识体系:基础:

调优:

核心原理:

架构与运维:

对于零基础的童鞋:

首先,学习基本的SQL语法。完成这个后,你就可以编写SQL语句了。

这一步推荐:W3Schools的 SQL 教程。

其次,学习数据库的主要功能和使用方法,比如用户相关或者权限相关等等。

推荐两本书:1.《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。

2.《数据库系统概念》这本书是dba必看的。

看完这些并且实践+思考之后,可以算入门了。

接下来对于希望深入学习的童鞋:

我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。

十分推荐阅读Planet MySQL上汇总的博客,特别是Percona's MySQL & InnoDB performance and scalability blog.三、计算机网络

网络知识工作后非常非常重要!

我分三个阶段来介绍:

1. 入门

第一本书 建议看谢希仁的《计算机网络基础》

2.进阶

然后第二本要看 《TCP/IP详解1:协议》,这个阶段需要多思考和动手网络在LINUX系统上发挥的最淋漓尽致,所以在学习的时候最好学习LINUX配合使用,学习LINUX,推荐《鸟哥的LINUX私房菜:基础篇》。

学习网络过程中,要不断抓包分析等,自己能写些简单的应用来发包更是完美。抓包工具推荐:LINUX环境下用TCPDUMP,windows环境下用 wireshark。这个阶段写习完后,已经是个小高手了。。

主要技能应该是 : 对TCP,IP,DNS,icmp等协议应该都蛮熟了得了,dhcp/tftp/ftp等协议也应该都懂些,重点是要学会如何分析一个协议及LINUX系统的基本操作也差不多了。

3.高手阶段

这个阶段需要有一点的编程能力,指C/C++编程。主要学习的方向是协议的实现和协议的架构原理协议的实现方面, 主要学习底层协议(指传输层及以下)的实现, 这些协议都是在操作系统层面实现的,最好的教材是《TCP/IP详解:实现》。至于网络架构这块,可以学习《计算机网络》这本书。

另外,计算机专业多刷算法题好处多多,算法厉害的人进大厂非常容易,这里推荐一本BAT大佬的算法笔记:

祝大家前程似锦,在编码的道路上一马平川。

要是觉得不错的话,那就帮我

@findyi

点个赞,一键三连呗,硬核码字不易。