作者:AJ
文章目录
在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗。不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发。
后台开发工程师主流使用的编程语言有C++、Java、PHP以及目前慢慢流行的Golang等。本文就将以C++的角度,讲讲如何学习和准备后台开发的岗位。
一、语言基础
无论是C++开发还是Java开发,对于一个码农而言,最重要的就是对于编程语言的熟悉。同样,无论从事哪种类型的岗位,首当其冲的就是要掌握好语言基础。
C++是一门博大精深的编程语言,不仅拥有继承于C语言的过程化程序设计思想,还包含有面对对象(OOP)的设计理念。强大而又复杂。相对来说,C++的学习成本较高,语言里面的坑较多。语言基础的学习路线如下:
1 语法基础
重点掌握:(务必熟悉底层机制原理)
- 指针和引用的概念
- 指针与内存关系
- 程序编译过程
- static、const、#define的用法和区别
- C和C++区别
- 内存模型
- 内存中的栈和堆分配
2 面对对象基础
(务必熟悉底层机制原理)
- 面向对象理解
- 析构函数
- 构造函数
- 拷贝构造
- 多态
- 纯虚函数和虚函数
- 虚函数实现机制
- 虚函数表
- 访问限定符 public、private、protected
- 继承原理、虚继承、菱形继承
- 静态绑定和动态绑定
- new/delete和malloc/free
- 重载、重写和隐藏
3 语法进阶
(务必熟悉底层机制原理)
- 智能指针
- 左值、右值引用和move语义
- 类型转换方式
- 常用的设计模式
- 线程安全的单例模式
- 内存溢出和内存泄漏
- C++11新特性
- 静态链接库和动态链接库
4 STL标准模板库
(务必能进行源码剖析)
- 迭代器、空间配置器理解
- 常用容器特点、用法以及底层实现vector、list、deque、set、map、unorderedmap
5 推荐书籍
- C++Primer》可作为工具书,随手查阅
- 《EffectiveC++》深入了解C++的程序设计规范
- 《STL源码剖析》剖析STL的源码底层,非常具有学习价值
- 有精力还可以看《深度探索C++对象模型》《more EffecticeC++》