外链论坛

 找回密码
 立即注册
搜索
查看: 54|回复: 4

C++ 后台研发知识点及学习路线

[复制链接]

3074

主题

148

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99118896
发表于 2024-8-4 11:14:46 | 显示全部楼层 |阅读模式

校招形势

在去年结束的秋季招聘中,后台研发或服务器研发的岗位需求一度火热,乃至超过了算法岗。不少朋友从诸神傍晚的算法岗战场上退下,转向更偏向工程能力的后台研发岗,从而导致后台研发岗位竞争的大爆发。

后台研发工程师主流运用的编程语言有C++、Java、PHP以及日前慢慢流行的Golang等。本文就将以C++的方向,讲讲怎样学习和准备后台研发的岗位。

1、语言基本

无论是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++》

2、算法与数据结构

针对普通人而言,算法的学习最重要的是能够形成基本的算法思维,懂得从程序设计的方向对高重复性的操作做优化。这其中基本算法思想的把握和常用数据结构的理解是必不可少。这方面的学习更倾向于多看多想多练。

1 平常算法类型

(务必能够手撕代码)

排序算法(冒泡、插进选取、快排、希尔、堆排、归并、桶排、基数、计数)、字符串操作、数组操作、递归、回溯、分治、动态规划等

怎样准备算法可见历史文案

进入BAT和字节跳动最难的一关,手撕代码!

2 常用数据结构

(务必熟练底层原理和实现)

链表、栈、队列、树(二叉树、平衡二叉树、红黑树、B树、B+树、哈夫曼树、字典树)、跳表、图

3 举荐书籍

《大话数据结构》适合入门学习

《剑指offer》必刷66题

《算法导论》尽可能看,能啃完便是大神

3、计算机网络

网络关联的东西不是非常多,关键在于对平常网络协议簇的认识和理解,以及有些常规操作底层设计实现的剖析。例如

        | 输入www.baidu.com会出现什么

        | 微X扫描登录会出现什么

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算法

2 举荐书籍

《计算机网络自顶向下办法教材书,可放手边查阅

《TCP/IP详解》重点认识TCP、IP、UDP协议实现

4、数据库

数据库的通常运用并不难,然则针对区别数据库的特性、实现机制、应用场景和性能优化方面却能够难倒一大批面试者。一样数据库本身是非常好的项目实例,常常能够从中学习到许多程序设计的思想和模式。因此呢,对数据库要明白怎么用、为何用、怎么用得好这几个方面的问题。

1 重点把握

数据库类别

关系型数据库和非关系型数据库区别

        MySQL:

SQL平常语句

MySQL内链接,外链接(左链接、右链接、全链接)

MySQL索引类型和原理

MySQL事务实现原理ACID

MySQL数据存储引擎

MySQL主从复制原理、功效和实现

MySQL日记系统redo log、binlog、undo log

MVCC实现原理

Sql优化思路

范式理论

数据库高并发处理办法

        Redis:    

Redis支持的数据类型

Redis持久化

Redis 架构模式

主从复制

一致性哈希算法

2 举荐书籍

《高性能 Mysql》能够加深对Mysql的理解和运用

《Redis设计与实现》比较全面的书,能够瞧瞧

5、操作系统

操作系统的问题会集中在进程和线程,然则这一类的问题常常会以开放题的形式显现重点考察的是对操作系统组件以及运行过程的理解。例如

    | 开机登录系统出现了什么?

    | 复制粘贴是怎么样操作的?

1 重点把握

理学内存和虚拟内存

缓存IO和直接IO

作业调度算法

线程和进程

进程和线程的调度

线程的创建和结束

线程状态

线程间通信与线程同步机制

互斥锁和信号量

线程池

消费者和生产者

死锁

并发和并行

2 举荐书籍

《深入理解计算机系统》很全面的书,这一本就够用了

6、Linux系统

对Linux系统的熟悉运用是后台研发/服务器研发必须技能点。这年头,不会几个Linux指令都欠好意思说自己是敲代码的。(客户端和前端的朋友暗示不服)不管怎么样针对Linux系统的把握无论在哪个方向上,都会有用武之地的。

Linux系统操作和命令

top命令

ps命令

netstat命令

awk命令

find命令

grep命令

wc命令

sed命令

head和tail命令

正则表达式

怎样查询显现频率最高的100个IP位置

linux怎样统计文件中某个字符串显现的频率

linux起步第1个进程

linux查看端口占用

linux查看CPU和内存运用

Linux查看系统负载命令

Linux调试程序

Linux硬链接和软连接

core dump

cmake和makefile

Shell脚本基本语法和运用

2 举荐书籍

《鸟哥私房菜》入门足够了,多敲多写才可更快把握

7、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服务器实现

8、项目准备

倘若以上的东西你都已然准备好了,那样相信你已然了具备C++后台研发能力。然则要记得,一个大型线项目的研发,从来都不纯粹是单一语言的设计和实现。

因此呢用C++用Java用Golang用Python的区别或许没那样大,它们都有善于地区,毕竟存在即真理。因此倘若你真的有精力的话,不妨还能够认识一下更深层次的技术:

海量日志处理和并行计算研发

分布式技术框架、中间件等 Dubbo、Spring Cloud 、Zookeeper 、Kfaka

媒介分发技术CDN

...

当然,这些都不是非常必要的。然则绝对是亮点!另外,你能够准备有些基本向的关联项目:

网络库,可参考MuduoNginx实现

web服务器/http服务器,可实现基本的http响应请求和处理

简易版STL库,展现C++的综合代码能力

局域网聊天室研发触及到网络编程实此刻线群聊

分布式日志系统

简易版数据库设计

可参考有些C++常用库,造有些轮子做些有趣的小工具。

...

总结

在校园招聘中,对后台研发的面试大多还是针对候选人的计算机基本。大都数学生在校内接触不到太多高并发高可用的服务场景,乃至能上线的项目都很少,因此呢很难需求校招生能够真正具备后台研发的能力。

因此针对C++后台研发岗而言,对C++/Linux的充分熟练以及扎实的计算机基本和有关联的学习经历,就已然能够满足各大机构需求了。当然倘若有在基本架构分布式研发等方面的经验,就更加是各大厂抢手的香饽饽。

本文所介绍的整体学习路线可覆盖绝大都数大厂的面试题目和考察范围,如今学习资料太多,选取路线清晰的适合自己的才最重要。资料不必多,能理解把握才是最关键的。

- EOF -

举荐阅读  点击标题可

1、12.9k Star!这个 ZSH 的加强工具让你爱上命令行!

2、“我花了 5 年时间编写自己的操作系统!”

3、52 图初探 Linux 通用知识

看完本文有收获?请分享给更加多

举荐关注「Linux 兴趣者」,提高Linux技能

点赞和在看便是最大的支持❤️





上一篇:怎么样用BI工具对数据进行预处理?数据分析的这项技巧你必要把握!
下一篇:《陶罐与铁罐》文本教育诠释与学习活动设计(附PPT和相关链接)
回复

使用道具 举报

2946

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979424
发表于 2024-9-30 00:56:04 | 显示全部楼层
顶楼主,说得太好了!
回复

使用道具 举报

3049

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065844
发表于 2024-10-5 00:42:43 | 显示全部楼层
外贸网站建设方法 http://www.fok120.com/
回复

使用道具 举报

2999

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109184
发表于 2024-10-12 23:50:53 | 显示全部楼层
论坛外链网  http://www.fok120.com/
回复

使用道具 举报

3093

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098754
发表于 2024-10-28 19:30:25 | 显示全部楼层
感谢楼主分享,祝愿外链论坛越办越好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 15:37 , Processed in 0.116014 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.