【BAT后台入门】写在前面的话

“BAT后台入门”这个系列课程,主要是为了帮助对互联网后台开发有兴趣的你,了解一线互联网公司的后台开发岗位。希望通过你自身的努力,并结合课程的引导,获得有胜任BAT普通后台开发工程师的能力。

给我这个灵感的是来Offer九章算法,他们都是优秀的中国工程师在硅谷创立的IT培训机构,帮助中国留学生在北美就业。我也希望能尽我所能,与你共同进步。

为什么你可以

很多人觉得自己是学机械的或学化工的,虽然很羡慕IT工程师的高薪,但是因为入错行,只好认命。

我自己是学自动化的,在一线互联网公司就职的师兄弟们也都来自不同的专业,比如光电、电信、电气、生物、数学、物理、能源等。虽然我们来自各个非计算机或软件专业,但是幸运的是我们有个好的导师和团队,加上自身的努力,最后也能够在一线互联网公司找到不错的工作。

所以只要你有学习能力并且肯付出,就有机会成功。

课程讲什么

先来看看腾讯公司后台开发的岗位要求:

编程基本功扎实,掌握C/C++/JAVA等开发语言、常用算法和数据结构;
熟悉TCP/UDP网络协议及相关编程、进程间通讯编程;
了解Python、Shell、Perl等脚本语言;
了解MYSQL及SQL语言、编程,了解NoSQL, key-value存储原理;
全面、扎实的软件知识结构,掌握操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等专业知识;
了解分布式系统设计与开发、负载均衡技术,系统容灾设计,高可用系统等知识。

1, C/C++/JAVA

首先我会选择Go作为授课语言。作为多年的C/C++/JAVA工程师,转到Go已经一年了。相对C/C++/JAVA而言,在后台开发领域,Go是更容易入门和掌握并且开发效率更高的语言。具体可参考我的之前的分享:为什么Go这么火?

其次语言只是工具,重要的是思想。问题分析透彻后,你会知道什么编程语言最适合。如何分析与解决问题是本门课程的重点。

最后扎实的编程基本功,只能靠自己勤学苦练。我只会在这里简单的介绍Go入门,也许以后会出专门的课程讲Go的开发技巧。

2, 常用算法和数据结构

不少人觉得算法没有用,工作中很少用到。但是我个人经验是,数据结构经常会用到,你可能不用去实现某个算法,但是算法的思想对你分析解决问题是很有帮助的。

我会在课程中简要的介绍:

  1. 数组和排序
  2. 链表,队列,栈
  3. 递归和二分查找
  4. 二叉树,二叉搜索树和B-Tree等
  5. 图算法:BFS和DFS等
  6. 字符串处理,动态规划,位运算和动态规划等

3, 网络编程和并发编程

首先从理论上,会简要的讲解TCP/UDP、HTTP/HTTPS等网络协议,还有Unix环境下的多进程、多线程、锁和进程间通讯等知识。更透彻的理解,主要靠自己扩展阅读,推荐Advanced Programming in the UNIX® Environment, Third Edition

然后会基于Go和gRPC实战讲解。根据我自己的学习经验,理论学习很枯燥但写程序很爽,所以我推荐在实战中去领悟理论知识。理论知识对你写出高效优雅的代码也是至关重要的。

4, 项目实战

我会选取一个小课题,和大家一起从头到尾体验整个项目周期,包括项目管理、需求分析、架构设计、编码实现、测试、部署、运维监控等。其中会覆盖岗位要求中的知识点:

  1. 关系型数据库MySQL。
  2. NoSQL数据库,key-value存储Redis。
  3. 典型的三层架构模型:接入层,数据层和缓存层。

5, 项目扩展

在小课题成功完成之后,我会和大家在此基础上做一些扩展,来普及后台开发中非常重要的几点方法论:

  1. 分布式系统设计与开发
  2. 高可用系统
  3. 负载均衡
  4. 容错设计,过载保护等
  5. 微服务架构

6, 其他

课程中并不会包含脚本语言,操作系统,数据库理论,网络安全,软件工程或设计模式等知识。因为一方面课程不可能面面俱到,另一方面如果你坚持到课程结束,应该会自己很感兴趣的去探索这些未知的知识。

在整个课程的最后,可能会加上一些开源软件的分析,比如Hadoop2、Kafka或Spark等。学习优秀的架构和代码,是进步最快的方式。

整个系列课程看起来是个很庞大的工程,可能会持续4~6个月。欢迎大家给公众号留言反馈,后续根据实际情况再选择更好的交流方式。

    原文作者:西七楼
    原文地址: https://www.jianshu.com/p/6cf23016c115
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞