在去年结束的秋季招聘中,后台开发或者服务器开发的岗位需求一度火爆,甚至超过了算法的岗位。很多同学在诸神黄昏从算法岗战场退下来,转到了更偏向工程能力的后台开发岗,导致后台开发岗竞争大爆发。
后台开发工程师使用的主流编程语言是C++、Java、PHP、Golang,目前慢慢流行起来。本文将从C++的角度谈谈如何学习和准备后台开发的岗位。
第一,语言基础。
无论是C++开发还是Java开发,对于一个代码农民来说,最重要的是熟悉编程语言。同样,无论从事什么样的岗位,首先要做的就是掌握语言基础。
C++是一种深奥的编程语言,它既有继承自C语言的过程化编程思想,又包含了OOP的设计思想。强大而复杂。相对来说,学习C++的成本高,语言有很多漏洞。语言基础的学习路线如下:
1语法基础。
重点:(一定要熟悉底层机制原理)
指针和引用的概念。
指针与内存的关系。
程序编译过程。
static、const和#define的用法和区别。
C和C++的区别。
记忆模型。
内存中的堆栈和堆分配。
2面向对象基础。
(熟悉底层机制原理)
面向对象的理解。
析构函数。
构造函数。
复制构造。
多态性。
纯虚函数和虚函数。
虚拟函数的实现机制。
虚函数表。
访问限定符是公共的、私有的和受保护的。
传承原理,虚拟传承,钻石传承。
静态绑定和动态绑定。
新建/删除和malloc/免费。
重载、重写和隐藏。
高级语法。
(熟悉底层机制原理)
智能指针。
左值、右值引用和移动语义。
类型转换方法。
常见的设计模式。
线程安全的单一模式。
内存溢出和内存泄漏。
C++11新特性。
静态链接库和动态链接库。
4STL标准模板库。
(一定要分析源代码)
迭代器和空间配置器理解。
常见的容器特征,用法和底层实现的向量,列表,deque,set,map,unorderedmap。
5推荐书籍。

做后端开发需要学什么?标梵看到了一条小白的发展之路
C++Primer可以作为参考书。
effecteC++对c++编程标准有很深的理解。
《STL源代码分析》分析STL源代码底层,很有学习价值。
有精力的话还可以看《C++对象模型深度探索》和《更有效》C++
第二,算法和数据结构。
对于普通人来说,学习算法最重要的是形成基本的算法思维,知道如何从编程的角度优化高度重复的操作。掌握基本的算法思想,了解常用的数据结构是必不可少的。这方面的学习倾向于多看,多思考,多实践。
1常见算法类型。
(一定要手撕代码)
排序算法(冒泡、插入、选择、快速队列、希尔、堆队列、合并、桶队列、基数、计数)、字符串运算、数组运算、递归、回溯、分治、动态编程等。
如何准备算法可见历史文章?
输入BAT和字节跳动最难的等级,手撕代码!
2常见的数据结构。
(一定要熟悉底层原理和实现)
链表、栈、队列、树(二叉树、平衡二叉树、红黑树、B树、B+树、霍夫曼树、字典树)、跳转表、图。
推荐书籍。
大话数据结构适合入门学习。
“剑指献”必刷66题。
试试看《算法导论》,能啃出来的就是大神。
第三,计算机网络。
网络相关的东西不多,关键在于对常见网络协议簇的了解和理解,以及对一些基本设计和日常操作实现的分析。例如:
当你进入www.baidu.com时会发生什么。
|微信扫描登录会怎样。
1重点掌握知识点。
OSI七层模型。
TCP/IP五层模型。
TCP/IP协议概述。
TCP和UDP的区别。
TCP三次握手,四波。
TCP状态转换。
TCP状态下的TIME_WAIT。
TCP连接建立为什么不需要两次握手。
TCP第一次三次握手失败会怎么样。
TCP长短链路及其优缺点。
TCP拥塞控制——慢启动、拥塞避免、快重传、快启动。
如何通过TCP保证可靠传输?
如何解决TCP粘拆包的问题?
TCP为什么可靠。
如何通过UDP实现TCP的可靠传输?
IP地址和子网掩码。
ARP解析过程。
DNS原理。
HTTP状态代码。
HTTP1.0、HTTP1.1和HTTP2.0的区别。
HTTP和HTTPS的区别。
HTTPS加密过程。
不对称加密和对称加密算法。
Nagle算法。
推荐书籍。
教材《计算机网络自上而下方法》可免费查阅。
《TCP/IP详解》重点介绍TCP、IP、UDP协议的实现。
4.数据库。
数据库的一般使用并不困难,但在不同数据库的特点、实现机制、应用场景、性能优化等方面都可以击败大量面试官。同样,数据库本身也是一个非常好的项目例子,从中可以学到很多编程思想和模式。所以要了解数据库怎么用,为什么要用,怎么用好。
1专注掌握。
数据库类别。
关系数据库和非关系数据库的区别。
MySQL:
常见的SQL语句。
MySQL内部链接,外部链接(左链接,右链接,全链接)
MySQL索引的类型和原理。
MySQL事务实现原理ACID。
MySQL数据存储引擎。
MySQL主从复制的原理、功能及实现。
MySQL日志系统redolog、binlog和undolog。
MVCC实施原则。
Sql优化的思考。
范式理论。
数据库高并发解决方案。
Redis:
Redis支持的数据类型。
Redis坚持。
Redis架构。
主从复制。
一致性哈希算法。
推荐书籍。
“高性能Mysql”可以加深对Mysql的理解和使用。
《Redis设计与实现》是一本综合性的书,可以多看。
V.操作系统。
操作系统问题会集中在进程和线程上,但这些问题往往以开放性问题的形式出现。主要侧重于对操作系统组件和运行过程的理解。例如:
|你启动登录系统的时候发生了什么?
|复制粘贴是如何工作的?
1专注掌握。
物理内存和虚拟内存。
缓存IO和直接IO。
作业调度算法。
线程和进程。
进程和线程的调度。
线程的创建和终止。
线程状态。
线程间通信和线程同步机制。
互斥锁和信号量。
线程池。
消费者和生产者。
僵局。
并发和并行。
推荐书籍。
《计算机系统深度理解》是一本综合性的书,这本就够了。
六、Linux系统
对Linux系统的熟练使用是后台开发/服务器开发的必备技能点。这年头,不会几个Linux指令都不好意思说自己是敲代码的。(客户端和前端的同学表示不服)不管怎样,对于Linux系统的掌握无论在哪个方向上,都会有用武之地的。
1 Linux系统操作和命令
top命令
ps命令
netstat命令
awk命令
find命令
grep命令
wc命令
sed命令
head和tail命令
正则表达式
如何查找出现频率最高的100个IP地址
linux如何统计文件中某个字符串出现的频率
linux启动的第一个进程
linux查看端口占用
linux查看CPU和内存使用
Linux查看系统负载命令
Linux调试程序
Linux硬链接和软连接
core dump
cmake和makefile
Shell脚本基本语法和使用
2 推荐书籍
《鸟哥私房菜》入门足够了,多敲多写才能更快掌握
七、Linux网络编程
后台开发是离不开网络编程的,甚至简单来说,后台开发就是用厉害点的电脑去处理大规模的网络请求。所以作为一名合格的后端开发人员,对Linux网络编程的熟悉是必不可少的。
1 重点掌握
孤儿进程、僵尸进程和守护进程
进程间通信方式signal、file、pipe、shm、sem、msg、socket
线程同步机制线程:互斥量、锁机制、条件变量、信号量、读写锁
fork返回值
五大IO模型:阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O、异步I/O
IO复用机制
epoll与select/poll
LT水平触发和ET边缘触发
Reactor和Proactor模式
反向代理、负载均衡
2 推荐书籍
《UNIX环境高级编程》APUE 比较难啃,可以挑着看
《Unix网络编程》UNP 同样比较难啃,可以挑着看
《Linux多线程服务器端编程》Muduo网络库,推荐看看源码实现
《深入理解Nginx》深入了解基于C的web服务器实现
八、项目准备
如果以上的东西你都已经准备好了,那么相信你已经了具备C++后台开发能力。但是要记得,一个大型线上项目的开发,从来都不纯粹是单一语言的设计和实现。
因此用C++或者用Java或者用Golang或者用Python的区别或许没那么大,它们都有擅长的地方,毕竟存在即真理。所以,如果你真的有精力的话,不妨还可以了解一下更深层次的技术:
海量日志处理和并行计算开发
分布式技术框架、中间件等 Dubbo、Spring Cloud 、Zookeeper 、Kfaka
流媒体分发技术CDN

当然,这些都不是非常必要的。但是绝对是亮点!此外,你可以准备一些基础向的相关项目:
网络库,可参考Muduo或者Nginx实现
web服务器/http服务器,可实现基本的http响应请求和处理
简易版STL库,展现C++的综合代码能力
局域网聊天室开发,涉及到网络编程实现在线群聊
分布式日志系统
简易版数据库设计
可参考一些C++常用库,造一些轮子或者做些有趣的小工具。

本文摘自:标梵互动(www.biaofun.com)

做后端开发需要学什么?标梵看到了一条小白的发展之路相关推荐

  1. 后端要学MySQL_做后端开发需要学什么

    展开全部 对于初学Java并且有志于后端开发的同学来说,需要重点关注以下几个部分:32313133353236313431303231363533e4b893e5b19e31333433656631 ...

  2. python转行it好学吗-转行IT做后端开发,学python还是java?

    这个问题,仁者见仁智者见智,只能看你自己的情况,看你更喜欢哪一个吧.其他人只能提供一些参考意见. Python现在是比较热门的语言,而且上手简单.但是,说实话,真正用这个开发企业应用的不多,除非是用在 ...

  3. python适合做后端开发吗-转行IT做后端开发,学python还是java?

    你还在纠结Java还是Python的这件事,毫无疑问,这个时候,你仍然还是一个菜鸟,甚至连门都没入. 我为什么这么说呢,先别怼我,压制你心里的怒火,继续往下 我先问大家一个问题,为什么中国人用刀又是很 ...

  4. python适合做后端开发吗-python适合后端开发么

    python适合后端开发,因为Python是一种计算机程序设计语言,既可用于前端也可用于后端开发,在Python中编写后端可以简化为编写各个模块,其间的连接随后由前端部分中的用户操作确定和控制. Py ...

  5. python做个后端系统_Python做后端开发的优势

    ​ Python做后端开发的优势 1. Python开发人员的背景丰富多彩,阵营规模很大,这直接导致了Python的各种lib比Ruby多很多很多很多 2. 和Ruby相反,Python的哲学是&qu ...

  6. python适合做后端开发吗-想从事Python 后端开发?

    先说思路,再说操作. 不管你用什么语言,PHP.Python 还是 Java,后端都会涉及到这些东西 1.计算机基础:操作系统.网络系统(协议).数据库系统.数据结构与算法 2.中间件:Nginx.M ...

  7. 后端开发需要学什么_都2020年了,还在纠结学什么语言?| 后端篇

    几个礼拜前,一个学弟问我: "Ray,我打算之后要找工作了,不过现在自己没有特别深入的语言,最近想找一门好好学一下,你觉得学什么语言好呀?" 我表示:"这个要看你求职方向 ...

  8. python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?

    从目前的就业形势看,是从事pythonWeb后端开发好呢?还是从事网络爬虫比较好呢? 目前互联网+的趋势依旧火热,越来越多的行业已经开始向互联网的方向靠拢了.在互联网+的影响下,各行各业都会有无限的可 ...

  9. python适合做后端开发吗-用Python开发app后端有优势吗

    app后端开发学Python. Python的优点: 1.简单易学 Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语 ...

  10. PHP做后端开发的朋友很稀少嘛?

    PHP做前端的蛮多,做后端的朋友似乎很少~ 有做PHP后端开发的朋友吗,如果做过推荐系统就更好了,深圳南山这边熊厂有坑,定级6,7及以上~可以戳我交流

最新文章

  1. CVPR2020:基于层次折叠的跳跃式注意网络点云完成
  2. 系统管理工具top、glances、dstat比较
  3. 如何初始化类的static成员变量?
  4. c++ 调用python
  5. Why Did the Cow Cross the Road III(树状数组)
  6. 逻辑运算符''取某值
  7. 正则表达式全部符号解释
  8. date oracle 显示毫秒_oracle数据库to_date日期格式化到毫秒 | 学步园
  9. 多边形填充算法-有序边表法(扫描线算法) 计算机图形学
  10. 《数据库原理与应用》(第三版)第 1 章 数据库概述 习题参考答案
  11. 按钮 交互_SwiftUI中的微交互—菜单按钮动画
  12. Android系统(138)--- Android编译系统
  13. 小时候有哪些丑事,让你终身难忘?
  14. react 调用webIm
  15. 练习 用C语言编写一个程序,解释高等数学中的映射、单射和一一映射,并表示为函数。
  16. java的正确学习姿势
  17. 要闻 | 人大金仓重磅亮相2022南京软博会
  18. 340页11万字智慧政务大数据资源平台大数据底座数据治理建设方案
  19. 横扫13项中文NLP记录,中文字型深度学习模型Glyce问世!
  20. html5手机上签名,h5实现电子签名

热门文章

  1. DAMS | 突破运维瓶颈,监控告警、混合CMDB、DevOps转型一网打尽!
  2. 适合所有手环的app_Redmi Watch体验:手环终结者?
  3. 使用wxpy实现在微信定时发送文件和消息
  4. node.js基于vue的化妆品销售管理系统的设计与实现毕业设计源码151314
  5. html文件怎么可以查错,CSS_CSS 网页布局中易犯的10个小错误小结,1. 检查HTML元素是否有拼写错误 - phpStudy...
  6. android10及以上通话录音
  7. 第四篇:UE4视角切换节点,Possess和Set View Target With Blend的区别
  8. 俩年的这五十篇技术博客,送给不忘初心的你。
  9. 翡翠玉石微观世界,太美了!
  10. 360路由器外网映射