2014校招后台开发(服务端开发)经验总结 | Charles的技术博客 

JerryXia 发表于 , 阅读 (0)

1. 引言

本文介绍了博主2014年校招期间应聘服务端开发岗位的准备工作和部分经验。希望通过本文能为即将找工作的童鞋们提供一点点参考,如果在阅读本文后,能对您有那么一点点帮助,那么博主就非常开心啦!

1.1 关于我

博主是华中科技大学计算机学院小硕一枚,读研期间抱着师兄大腿中过两篇论文(学生二作),由于平时比较爱折腾,所以会自娱自乐地造一些轮子,另外,博主对工业界的使用的一些技术比较好奇,所以挣扎着看过几个小开源项目的源码。

在2014年校招期间,博主拿到的offer情况如下:

  • 亚马逊中国 SDE
  • 网易游戏 游戏研发工程师
  • 摩根士丹利IT 研发
  • 百度 系统工程师
  • 腾讯 后台开发工程师
  • 阿里 研发工程师
  • 美团 基础架构研发工程师

1.2 本文大纲

经过博主的梳理,认为在准备找技术工作的时候,以下几个方面比较重要,本文也将从这几个方向依次展开:

  • 选择技术方向
  • 准备所选技术方向的技能
  • 基础知识
  • 项目
  • 语言
  • 算法和数据结构

2. 选择技术方向

计算机是个很大的学科,里面涉及的技术方向很多,对于咱这种普通人肯定不可能同时深入多个方向,所以,博主认为在准备找工作之前,选择一个技术方向是非常有必要的。那么问题来了,如何选择技术方向呢?博主认为可能的途径有:

  • 跟着实验室研究的技术方向走
  • 如果对实验室方向不感兴趣,可以看看大公司校招JD页面所列的岗位,找找是否有感兴趣的
  • 如果实在是没找到自己感兴趣的方向,那就选一个自己不讨厌的方向,而不是什么都不做

2.1 跟着实验室技术方向走

对于硕士生来讲,实验室一般会分配科研或者项目任务,其中做系统的时候会涉及到一些技术,如果您对这些技术感兴趣的话,那应该是再好不过的啦!这样无论是在读研时的工作时间或者业余时间,都可以深入地学习自己感兴趣的技术,这对于在该方向上个人的提升应该是非常有帮助的。

然而,人生一般都不会那么完美!很多硕士生在进入实验室后所研究的方向通常是导师指定的,可能自己并不是十分感兴趣,这时候在做好实验室研究工作的同时,就得自己寻找适合自己的技术方向了。

2.2 适合自己的技术方向

在找适合自己的技术方向的时候,我们首先得知道现在公司里一般是怎么对技术方向进行分类的,以腾讯的校招职位(传送门)为例,可以看出腾讯把技术方向分为软件开发,基础研究,技术运营,软件测试和安全技术共5个大方向。其中每个大方向又有几个小方向,以软件开发为例,包括:移动客户端开发,后台开发,PC客户端开发,应用开发,web前端开发,测试开发和运营开发。对于每个小方向,都会有详细的岗位要求描述,例如,后台开发(传送门)的要求如下:

  • 2016年毕业,计算机软件相关专业本科及以上学历;
  • 追求完美,对于创新及解决具有挑战性的问题充满激情;
  • 具有良好的算法基础及系统分析能力;
  • 善于与他人和团队合作,富有集体荣誉感;
  • 具备良好的责任心与服务意识;
  • 熟悉LINUX/UNIX操作和开发环境,熟悉TCP/IP协议相关知识,有C/C++开发和网络编程经验。

里面具体和技术相关就两项:具有良好的算法基础及系统分析能力和熟悉LINUX/UNIX操作和开发环境,熟悉TCP/IP协议相关知识,有C/C++开发和网络编程经验。这个时候我们就得问自己啦,根据平时对这些技术的接触,对这些技术有没有兴趣呢?如果有的话,那么恭喜你,可以试着选择这个方向继续学习下去。

但是,也有可能有童鞋看完这些所有方向的要求之后发现还是没有那么特别喜欢的方向,那么这个时候该怎么办呢?

2.3 选个不讨厌的方向

既然那些方向里面自己没有特别喜欢的,那么就我们可以试着从另一个角度来考虑,选一个自己不讨厌的方向。要选择不讨厌的方向,那么首先就得把自己讨厌的方向排除了,相信从这个角度入手会简单许多,在平时上课的时候,有的童鞋可能不喜欢算法,有的可能不喜欢网络编程等等,把自己讨厌的排除,在剩下的里面选一个就好了,总之是让自己有事可做,而不是停着什么都不做!

3. 准备所选技术方向的技能

确定了自己的技术方向之后,就需要调研改技术方向所需要的技术栈,然后各个击破。

3.1 调研技能栈

公司里面校招的页面的岗位要求一般是比较大概的要求,对岗位的技能栈一般不会详细而全面的列出来,这时候就得靠自己调研来确定了。这里推荐自己一般用的几种途径:

  • 找认识的人了解
  • 搜索引擎
  • 去v2ex,知乎等提问

3.1.1 找认识的人了解

可以找该技术方向比较有经验的师兄等了解,不过从这种渠道了解的通常一般不够全面,毕竟个体的经验都是有局限性的。

3.1.2 善用搜索引擎

试着在搜索引擎中搜索该方向所需要的技能栈,然后前几页相关的文章全部看完并整理出来。

3.1.3 问答社区提问

在v2ex,知乎等问答社区有很多的大牛,可以试着提问等待或邀请大牛们回答,然后对他们的回答做一个整理。当然,也可以在这些搜索相关的提问,说不定就已经有很多不错的参考答案了呢。

下面是调研服务端开发(一般公司也叫服务端开发)时参考的部分知乎提问:

  • Linux C++ 服务器端这条线怎么走?传送门
  • 新人学习网络编程 apue unp等书看完后如何继续学习 例如怎样了解实际开发中的工作?传送门
  • linux网络编程可以做些什么项目提高,还有网络编程可以继续往那方面工作发展?传送门
  • 有什么适合提高 C/C++ 网络编程能力的开源项目推荐?传送门
  • 要想进入互联网企业工作该学些什么呢,想做后台开发方面?传送门
  • 如何根据招聘启示知道 Linux 后台开发岗位的具体要求?传送门

3.2 学习技能栈中的技能

我在调研了服务端开发方向所需要的技能栈之后,得出了下面的技能列表(可能不完整,欢迎大家补充):

  • 了解Unix系统
  • 熟悉一门脚本语言
  • makefile或自动构建工具CMake等
  • vim
  • gdb
  • valgrind
  • git
  • Unix系统下的编程
  • Unix网络编程
  • 工业界使用的一些技术

下面将简要的介绍一下我学习上面的技术用到的参考资料

3.2.1 了解Unix系统

3.2.2 熟悉一门脚本语言

这里我学的是python,看过的书有

3.2.3 Makefile或自动构建工具CMake

3.2.4 Vim