一个非科班普通211硕士如何拿到腾讯、百度等offer
背景介绍
楼主是北交大的一名通信专业的硕士研究生,实验室做的方向是信息网络,找工作的方向是C++工程师。整个找工作的收获是这样的:春招拿到了腾讯和百度的实习offer,秋招拿到了腾讯、百度、美团、小米、京东、搜狗、爱奇艺的offer,其中腾讯是白菜、百度是SP+、其他都是SSP。我是从去年10月份开始准备秋招的,整个过程比较漫长,期间也看了许多牛客大佬的分享,收益良多,所以希望能够在这里回馈一波,从个人经历以及如何备战秋招两个方面来探讨怎样才能找到一个好的工作。
个人经历
楼主本科是哈工程的一名通信专业学生,综合成绩在全学院是前5%的水平。本科期间对于计算机软件可以说是一个彻彻底底的小白,只是自学了一点c++、java语言。后来保研到北交大以后,基本抛弃学业,开始积累实战经验,由于自己爱好广泛,硕士期间自学了很多东西包括Android、大数据、机器学习、linux服务器等等。参加的比赛包括两个机器学习的算法比赛以及研究生数学建模。可以说在备战秋招之前,除了完成实验室安排的任务以外其他时间都是在丰富个人经历以及填充知识空白。总体上感觉个人经历这一块在找工作的过程中确实是有加分的,所以建议非科班的学生,实验室没有相关项目,就靠参加比赛来丰富经历吧。如何备战秋招
其实对于后台方向的工程师,秋招备战真的十分简单,把时间规划好,一步一步来就可以。下面先罗列一下相关书籍:语言:
《c++ primer》《stl源码剖析》《深度探索C++对象模型》,面试考点集中在虚函数、虚继承、vector等容器的底层实现以及一些c++新特性上。对于面试来说除了以上三本其他书都没必要读,因为楼主读过《effective c++》等其他书,在面试的过程中几乎没遇到过相关考题。
网络:
谢希仁的《计算机网络》,这本书足够应对所有面试了,主要考点在TCP和UDP区别,TCP三次握手、四次挥手。
操作系统:
《现代操作系统》,我的经验是有时间就看书,没时间就看网上博客,因为操作系统的书一般都讲的比较晦涩难懂,不如一些好的博客讲的更容易让人理解。面试题主要集中在文件系统、进程线程、进程间通信、线程同步、程序内存空间这几个方面。数据结构与算法:
《大话数据结构》以及牛客网《剑指offer》和《leetcode经典编程题》,一句话:看书+刷题。就个人经验来说,面试中二叉树和排序相关算法考的最多,其次是深度优先遍历、回溯和动态规划。排序算法比较常考的是快排、堆排、归并排,还有基于快排和堆排思想的topK算法(这些都要会手写)。二叉树主要是树的前、中、后序遍历(递归和非递归,最好能手写),层次遍历,树上两个节点最远距离、树和有序链表互相转化,两节点最近公共父节点,其他还有许多,暂时想不起来了。深度优先遍历(dfs)、回溯、动态规划主要是笔试题用的多,不过最好能够手写一些经典算法,比如01背包、最长公共子序列以及其推导公式。如果感兴趣的话可以了解一下dfs、回溯、贪心以及动态规划之前的联系和区别。
Linux服务器:
《linux多线程服务器编程》,这本书主要是可以多了解一些概念,包括socket编程、各种同步锁。除此之外可以看看博客学习一下io多路复用、负载均衡、一致性哈希、线程池、对象池、任务队列等等数据库:
《redis设计与实现》《高性能mysql》,c++面试对于数据库的要求没有java高,我遇到的面试题主要是,redis的5种数据类型、redis的单线程实现、redis集群高可用;mysql引擎、索引、事务特性、隔离级别、脏读、幻读等。大数据和机器学习:
这两点只是面试中的加分项,时间充裕的话可以了解一下,在面试中如果有相关经历,面试官会觉得你是一个很全面的人,适合以后培养。
对于以上内容可以这样安排自己的学习计划:
一个月学习语言,两个月学习数据结构以及刷题,再剩下三个月学习其他知识顺带刷博客和面经,半年时间差不多就可以找个比较不错的工作了。根据个人实际情况,可以调整自己的学习计划,我在这里只是一个很初步的建议。对于想要拿到BAT级别以及更好的offer的同学可以在在自己感兴趣的方向深挖一下,面试的时候主动引导面试官往自己擅长的方向提问。
总结
想和科班出身的同学同场竞技,真的需要更多的努力,花出比别人更多的时间。这个过程中孤独感,恐慌感,挫败感都会有,无聊感也会有,不过坚持下来收获还是很明显的。哈哈,最后再说一下面试技巧,1.逻辑清晰;2.突出自身亮点;3.学会引导面试官;4.有耐心、谦逊、懂礼貌。
PS:这里把我的经验拿出来给大家作为一个参考,观点可能并不完全正确,只是希望可以帮助到和我差不多背景的同学。最后的最后,祝大家都有满意的offer~
#腾讯##百度##美团##京东##小米##面经##C++工程师#