百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

nanshan 2024-12-16 15:03 9 浏览 0 评论

在去年结束的秋季招聘中,后台开发或者服务器开发的岗位需求一度火爆,甚至超过了算法的岗位。很多同学在诸神黄昏从算法岗战场退下来,转到了更偏向工程能力的后台开发岗,导致后台开发岗竞争大爆发。

后台开发工程师使用的主流编程语言是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++常用库,造一些轮子或者做些有趣的小工具。

相关推荐

人人视频崩了怎么回事 人人视频下架了吗为什么刷不出来了

[海峡网]人人视频挂了吗下架了吗人人视频崩了怎么回事刷不出来了?人人视频发生了什么?怎么都看不成了,暂时还是永久?本来还以为是手机的问题,原来是客户端崩了难怪一直显示服务器异常!追着的美剧突然都下架...

502 bad gateway怎么解决?(502 bad gatewaynginxundefined)

相信许多小伙伴都遇到打开的网页提示502badgateway,502badgateway是提示用户该网址的网关错误,Web服务器作为网关或代理服务器时收到无效的响应,不管怎么刷新怎么重新输入地...

2岁男童眼睛被滴入强酸药水,医生亲身“试”药吓坏了……

平日里,小孩子爱玩爱闹是常事儿,但是大人的注意力如果时不时的掉线可就麻烦了。这一天,杭师大附院眼科陈舒主任医师像往常一样在接诊病人,然而一个孩子的哭闹声引起了她的注意,一群人神情焦灼,簇拥着一个孩子急...

3岁男童误将502胶当滴眼液,幸好妈妈及时处理,医生也为她点赞

小孩子由于心智还不够成熟,因此往往会做出一些危险的事情,甚至对自己造成伤害,这就需要家长的监督和保护。巧也不巧,日常生活中能够对孩子造成威胁的东西实在是太多了,堪称数不胜数,水笔、筷子、桌角,甚至刚拖...

5岁娃把502胶当眼药水滴眼中,爸爸的做法很机智,医生都称赞

文|哑铃妈妈家里有小孩子的一定要注意,在我们的家里存在很多的安全隐患,有的时候连家长都想不到的东西,竟然对孩子带来了伤害。5岁娃把502胶当眼药水滴眼中,爸爸的做法很机智,医生都点赞女孩乐乐长得可爱,...

宝宝误食502胶水,连忙送医救治,医生却夸宝妈做得好

有了孩子之后,妈妈都会变得神经敏感,生怕自己没有把孩子照顾好,但是毕竟一个人的经历是有限的,再加上孩子要是会走路,会说话之后对宝妈来说更是一种挑战,危及可能无时无刻不存在,这不,因为宝妈一转身的功夫,...

记一次Netty「直接内存溢出」导致线上网关项目宕机排查过程

作为一名Java开发者,我们都知道Java进程是运行在Java虚拟机上的,而Java进程要想正常运行则需要向计算机申请内存,其中主要为Java对象实例所占用的堆(heap)内存(当然还有其他的也会占用...

刚刚,突然崩了!网易云音乐紧急回应

今天下午#网易云音乐崩了#登上微博热搜第一在社交平台上,不少网友反馈,网易云音乐疑似崩溃。网友晒出网页端出现“502BadGateway”的服务器错误,同时网易云音乐的移动应用程序也无法正常使用。...

常见状态码(常见的状态码)

一二三四五原则:(即一:消息系列;二:成功系列;三:重定向系列;四:请求错误系列;五:服务器端错误系列。301状态码是永久移动302是临时移动304如果请求头中带有If-None-Match...

8岁男孩眼睛溅入502胶水,妈妈一番操作结果粘得更紧了

家有小孩的爸妈们肯定会多留个心眼照看虽然生活中已经时刻留意可能造成伤害的物品但有时一不留神幼小的孩子就会做出让人担心的事↓↓↓家住深圳的辰辰(化名)今年8岁了3月31日他在家里做手工时想要用未开封的5...

3岁娃滴502胶水在眼睛疼的尖叫,宝妈急中生智,保住孩子眼睛

但还好宝妈急中生智,连忙将孩子带到水龙头处,用水给孩子冲洗了一下眼睛,还用大量的生理盐水来给孩子清洗眼球,之后又立马将孩子送往医院,最后孩子的眼睛也没有什么大碍,拿了点药就能顺利出院了。而502胶水这...

网易云音乐回应App崩了:故障已陆续修复,补偿7天会员

2024年8月19日下午,多名网友反馈称,网易云音乐服务器疑似出现故障,登录网易云音乐APP后发现,个性化推荐和搜索功能均无法使用,并收到“获取数据失败”的提示。此外,网易云音乐的网页端也显示502错...

又崩了!不少人直接傻眼:太离谱!(台湾人到大陆后傻眼)

造车新势力哪吒汽车再被推向舆论风口。5月4日,话题#曝哪吒汽车APP断网#冲上微博热搜App断网无法使用从5月2日开始,陆续有多位网友反映哪吒汽车App断网,App控车无法使用。哪吒汽车App目前出现...

男子误把502胶水当眼药水!千万别犯这种低级错误!

你敢相信吗?有人竟然误把五零二胶水当成了眼药水滴进眼睛里。这可不是什么玩笑话,而是近日发生在武汉的一起真实事件。一名男子因此导致眼角膜严重受损,不得不紧急就医。据武汉大学附属爱尔眼科医院报道,这名男子...

502入眼危机!这份急救指南请牢记(502进入眼中怎么办)

502入眼,真实案例触目惊心生活中,502胶水是常用的黏合剂,以其强力黏合性备受青睐。但它一旦进入眼睛,后果不堪设想,下面这些真实案例,足以让我们警醒。曾有这样一则新闻,一位4岁女童在家玩耍时...

取消回复欢迎 发表评论: