“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, 常用算法和数据结构
不少人觉得算法没有用,工作中很少用到。但是我个人经验是,数据结构经常会用到,你可能不用去实现某个算法,但是算法的思想对你分析解决问题是很有帮助的。
我会在课程中简要的介绍:
- 数组和排序
- 链表,队列,栈
- 递归和二分查找
- 二叉树,二叉搜索树和B-Tree等
- 图算法:BFS和DFS等
- 字符串处理,动态规划,位运算和动态规划等
3, 网络编程和并发编程
首先从理论上,会简要的讲解TCP/UDP、HTTP/HTTPS等网络协议,还有Unix环境下的多进程、多线程、锁和进程间通讯等知识。更透彻的理解,主要靠自己扩展阅读,推荐Advanced Programming in the UNIX® Environment, Third Edition。
然后会基于Go和gRPC实战讲解。根据我自己的学习经验,理论学习很枯燥但写程序很爽,所以我推荐在实战中去领悟理论知识。理论知识对你写出高效优雅的代码也是至关重要的。
4, 项目实战
我会选取一个小课题,和大家一起从头到尾体验整个项目周期,包括项目管理、需求分析、架构设计、编码实现、测试、部署、运维监控等。其中会覆盖岗位要求中的知识点:
- 关系型数据库MySQL。
- NoSQL数据库,key-value存储Redis。
- 典型的三层架构模型:接入层,数据层和缓存层。
5, 项目扩展
在小课题成功完成之后,我会和大家在此基础上做一些扩展,来普及后台开发中非常重要的几点方法论:
- 分布式系统设计与开发
- 高可用系统
- 负载均衡
- 容错设计,过载保护等
- 微服务架构
6, 其他
课程中并不会包含脚本语言,操作系统,数据库理论,网络安全,软件工程或设计模式等知识。因为一方面课程不可能面面俱到,另一方面如果你坚持到课程结束,应该会自己很感兴趣的去探索这些未知的知识。
在整个课程的最后,可能会加上一些开源软件的分析,比如Hadoop2、Kafka或Spark等。学习优秀的架构和代码,是进步最快的方式。
整个系列课程看起来是个很庞大的工程,可能会持续4~6个月。欢迎大家给公众号留言反馈,后续根据实际情况再选择更好的交流方式。