做后端开发需要学什么?我看到了一条小白的发展之路

2023-05-24 0 180

在今年完结的春季招工中,前台合作开发或是伺服器合作开发的工作岗位市场需求曾一度火热,即使少于了演算法的工作岗位。许多老师在众神午夜从演算法岗主力部队退伍,转至了更偏重工程建设潜能的前台合作开发岗,引致前台合作开发岗市场竞争大爆发。

前台合作开发技师采用的非主流C词汇是C++、Java、PHP、Golang,目前渐渐大行其道。责任编辑将从C++的视角聊聊怎样自学和预备前台合作开发的工作岗位。

第三,词汇此基础。

不论是C++合作开发还是Java合作开发,对一个标识符贫困户来说,最重要的是熟识C词汇。反之亦然,不论专门从事怎样的工作岗位,具体而言要做的就是掌控词汇此基础。

C++是一种高深的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++常用库,造一些轮子或是做些有趣的小工具。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务