????
校招形势
在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗。不少同学从诸神*昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发。
后台开发工程师主流使用的编程语言有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新特性
静态链接库和动态链接库
4STL标准模板库
(务必能进行源码剖析)
迭代器、空间配置器理解
常用容器特点、用法以及底层实现vector、list、deque、set、map、unorderedmap
5推荐书籍
《C++Primer》可作为工具书,随手查阅
《EffectiveC++》深入了解C++的程序设计规范
《STL源码剖析》剖析STL的源码底层,非常具有学习价值
有精力还可以看《深度探索C++对象模型》《moreEffecticeC++》
二、算法与数据结构
对于普通人而言,算法的学习最重要的是能够形成基本的算法思维,懂得从程序设计的角度对高重复性的操作做优化。这其中基本算法思想的掌握和常用数据结构的理解是必不可少。这方面的学习更倾向于多看多想多练。
1常见算法类型
(务必能够手撕代码)
排序算法(冒泡、插入、选择、快排、希尔、堆排、归并、桶排、基数、计数)、字符串操作、数组操作、递归、回溯、分治、动态规划等
如何准备算法可见历史文章
进入BAT和字节跳动最难的一关,手撕代码!
2常用数据结构
(务必熟悉底层原理和实现)
链表、栈、队列、树(二叉树、平衡二叉树、红黑树、B树、B+树、哈夫曼树、字典树)、跳表、图
3推荐书籍
《大话数据结构》适合入门学习
《剑指offer》必刷66题
《算法导论》尽量看,能啃完就是大神
三、计算机网络
网络相关的东西不是很多,关键在于对常见网络协议簇的认识和理解,以及一些常规操作底层设计实现的剖析。比如:
输入