C/C++就业领域与学习方向 | 学习计划
话说,“学习编程,我到底应该如何选择学哪一门语言?”这应该是大多数初学者内心的烦人bug!
如果抱着“学一门语言好找工作”的心态,那可能你的眼界和学习思路都会受限变窄。“软件人员要把眼光放长远,尽量往中高级方向走,提升自己的核心竞争力,才不会被时代淘汰。”来自一位前辈的真诚建议。
所以,如果你希望把工作当成事业、深入了解软件编程的主心骨,那么C/C++这一类底层语言,是你必须要学习和掌握的。
尤其是C++,它作为C语言的延伸和强化,一直是大公司大厂钦点的开发语言。
如今自学成风,C++也不乏大佬自学……但是,在初期找不到感觉和项目练手写代码的话,学习效率非常低。这不,这里给大家找到了一份全面的、众多初学者认可的C/C++学习计划。
C/C++就业领域与学习方向计划
一、嵌入式
(一)嵌入式就业领域
1、就业领域:
物联网、智能家居、智能医疗、智能汽车电子、智能硬件产品开发等
2、具体职位:
嵌入式软件工程师、嵌入式硬件工程师、嵌入式系统工程师、嵌入式应用/驱动/内核/移植工程师等
(二)嵌入式知识架构体系
1、懂硬件
懂硬件的一些原理,至少能看懂原理图,会设计原理图加分;
PCB设计软件Altium Designer,PADS等;
会结构设计,会焊板,交付专业制板公司制板
2、C/C++语言和数据结构以及简单算法
基本C/C++语法、数据类型、数组、指针、结构体、链表、类、模板、文件操作、队列、栈等
3、Linux操作系统基础
Linux操作系统的概念、安装方法;
详细了解Linux下的目录结构、基本命令、编辑器VI、编译器GCC、调试器GDB和Make 项目管理工具;
Makefile Shell脚本编写等知识;
嵌入式开发环境的搭建;
SDK做二次开发
4、Linux网络编程
TCP/IP协议、socket编程、TCP/UDP网络编程、HTTP;
走物联网方向,更要了解一些与云存储相关的网络接口,比如亚马逊、阿里云等
5、外设协议与射频
简单通信接口:UART、I2C、SPI、CAN、USB、GPIO、WiFi、SDIO芯片;
网络通信接口:以太网;
其它输入接口:键盘、鼠标、AD器件、LCD、433、2.4G等无线通信模块;
走物联网方向,务必要熟悉MQTT协议
6、了解嵌入式平台系统原理
系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备;
Linux平台包括:内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader制作与原理分析、根文件系统制作,以及向内核中添加自己的模块,完整的移动软件
7、驱动开发
熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作;
熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识;
熟悉处理器各资源、掌握Linux设备驱动原理框架;
熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发;
在工作中能独立胜任底层驱动开发,做好配置
(三)嵌入式公司推荐
一线:华为海思、中兴通讯、C/C++
二线:米尔科技、周立功、联发科
(四)学习项目推荐(附源码)
某智能锁厂锁后板源码
二、桌面应用程序开发(MFC/QT)
(一)桌面应用就业方向
传统工业公司、工控、数字图像软件、图形渲染引擎、上位机、逆向、UI、视频会议等
(二)桌面应用知识架构体系
1、C/C++语言、常用数据结构以及常用设计模式
基本C/C++语法;
数据类型、数组、指针、结构体、链表、文件操作、队列、栈、二叉树、单例;
工厂模式、策略模式等设计模式
2、控件和组件应用
VC++控件,组件、MFC文档类;
Menu、Windows消息;
sendmsg函数、动态链接库;
Qt Core、Qt GUI、Qt Multimedia、Qt Multimedia Widgets、Qt Network、Qt QML、Qt Quick、Qt SQL、Qt Test、Qt Widgets等Qt基本模块(Qt Essentials);
应用QPainter绘图系统、QSS样式表,实现各种自绘窗口
3、操作系统原理和IDE
Windows核心编程、多线程、多进程、线程同步以及进程间的通信;
字符解析协议,如XML和Json;
熟悉VS和QT环境
4、网络编程
TCP/IP协议、socket编程、HTTP;
重点学习网络编程相关API;
了解HTTP协议及其实现方法;
熟悉UDP广播、多播的原理及编程方法;
掌握混合C/S架构网络通信系统设计;
QTCP、QHttp等实现网络编程;
异步非阻塞框架IOCP等
5、调试技术
IDA+windbg高级调试Windows;
产生dump文件进行代码调试;
使用DebugView工具调试
6、数据库设计
掌握SQL语言的实用技巧;
SQLite与Oracle、MySQL的使用方式及区别
7、良好的框架设计
(三)桌面应用公司推荐
道通科技、深信服、今日头条、迅雷、百度、360、酷狗
(四)学习项目推荐(附源码)
超级任务管理器:processhacker
三、图像处理与音视频开发
(一)图像处理与音视频就业方向
流媒体、大学里的研究所、今日头条(抖音)、优酷
(二)图像处理与音视频知识架构体系
1、C/C++语言和设计模式
基本C/C++语法、数据类型、数组、指针、类、模板等;
常用的设计模式
2、OpenCV/OpenGL知识体系和各种图像格式和视频格式
OpenCV的环境配置,数字图像处理相关知识;
图像滤波,图像识别,膨胀,腐蚀,直方分布图,二值化,灰度,目标识别、检测、定位等图像处理相关技术;
模式识别相关算法如二值化,SIFT特征,边缘轮廓检测等;
计算机图形学/计算机视觉/相机标定;
三维建模;
各种图像格式的基本概念;
rgb yuv jpg;FFmpeg常见编解码格式用法;
写MP4容器
3、操作系统原理和网络编程以及相关协议
Linux/windows操作系统核心原理、线程/进程;
tcp/udp协议 rtmp rtp RTSP
4、良好的算法能力
掌握深度学习算法原理和基本模型;
熟练使用深度学习开源框架(如TensorFlow,Keras,Caffe等);
人群、手势、人脸识别
5、良好的数学知识
熟悉matlab的使用、矩阵论;
具备阅读SCI论文等能力
6、开源代码
音视频:Live555;webrtc;
图像处理:OpenCV源码
(三)图像处理与音视频公司推荐
今日头条、优酷、三星、索尼、清华同方、腾讯研究院、部分外企
(四)学习项目推荐(附源码)
跨平台流媒体解决方案:live555项目
四、Linux后台服务开发
(一)Linux后台服务就业方向
企业级分布式服务器、智慧城市、智慧交通等场景AI后台系统;
游戏后台服务开发;
云计算、银行系统、企业web服务器等
(二)Linux后台服务知识架构体系
1、C/C++语言和设计模式
基本C/C++语法、数据类型、数组、指针、结构体、链表、文件操作、队列、栈等
2、操作系统基础
Linux操作系统的概念、安装方法,线程、进程;
详细了解Linux下的目录结构、基本命令、编辑器VI、编译器GCC、调试器GDB和Make项目管理工具;
Makefile Shell脚本编写等知识
3、Linux系统编程与linux操作系统
重点学习标准I/O库,Linux多任务编程中的多进程和多线程;
进程间通信(pipe、FIFO、消息队列、信号量、共享内存、信号)同步与互斥,对共享资源访问控制等重要知识;
提升对Linux应用开发的理解和代码调试的能力;
Linux文件系统
4、网络原理与网络编程
TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、HTTP;
重点学习网络编程相关API;
熟悉HTTP协议及其实现方法;
对比网络框架,做源码分析,如ACE/ICE/ZMQ/Libevent/Muduo等
5、数据库、中间件
Mysql、redis nginx mongdb等中间件
6、集群与分布式架构
7、高性能组件造轮子的能力高并发IO
(三)Linux后台服务公司推荐
腾讯、华为云、网易游戏、小米云平台、虎牙直播、快手后台等
(四)学习项目推荐(附源码)
分布式版本控制系统:Git源码
五、逆向与反外挂
(一)逆向与反外挂就业方向
防火墙、入侵检测/入侵防御、Web应用防火墙、上网行为管理、VPN、、抗DDoS、数据库安全、数据防泄漏、漏洞扫描
(二)逆向与反外挂知识架构体系
1、 C/C++语言的逆向表现与X86汇编语言
C语言/C++逆向语法表现,内存分布,X86汇编语言、数组和指针的逆向表现、函数的逆向表现;
学习逆向如果不掌握一些汇编,基本就是盲人摸象,能出成果就只能靠运气。
随着64位机器的普及,32位程序会越来越少,这块的学习难点在于64位CPU和32位CPU差异明显,甚至可以说是差异巨大,大家学习时要注意区分。
2、 操作系统与windowsPE
操作系统进程/线程概念,互斥量、信号量、事件等;
PE头,导入/导出表;
重定位/资源/延迟加载导入表
3、 游戏反外挂/HOOK/注入
基于注入的反外挂攻防;
基于HOOK的反外挂攻防;
基于CALL的反外挂攻防;
基于窗口的外挂检测;
游戏多开的逆向分析
4、 加密/编码算法
基础的,比如异或、url编码等;
base64(出镜率极高)crc校验算法md5;
学习tea和aes des
这里建议,可以先学习正向开发的部分算法。用不同的算法处理过的数据,会有一些特征;见得多了,很多时候可以在你研究逆向时给予很大帮助。
5、 工具类
OD、CE、Windbg等调试工具;
wireshark、x64dbg、frida、visual studio,其中有一些是开发工具,比如visual studio;
虽然这些工具是开发工具,但是其中包含很多小工具,比如spy++、depends等
6、 框架
逆向框架比较多,比如Cydia、xposed、substrate、ghidra等;
每个框架所适用平台和条件也略有差异,例如:
Cydia是在苹果下做逆向;
xposed是Android下逆向;
substrate是一种拦截方案;
ghidra是一个集成环境等
7、 其他
逆向与反外挂这一部分比较特别,它们的知识点没有尽头。
除了网络协议(Http、Https、ftp、ssh)、CPU架构(arm架构、x86架构、64位架构、机器码)、操作系统(Windows、Linux、android、iOS)、驱动开发中断原理、动态库的加载和卸载,还有文件格式也需要掌握。
文件格式这块的内容也较为庞杂,简单的包括wav、bmp、apk文件格式;有了一定的了解,就可以尝试去解析pe、elf文件格式;然后还可以了解png、jpeg、jar、dex文件格式。当然,有一些没有详细文档的文件格式,比如luac、ocx,也是值得去学习和探索的。
(三)逆向与反外挂公司推荐
奇安信集团、奇虎360、深信服、启明星辰、绿盟科技、金山
有兴趣或疑问的小伙伴,欢迎添加评论或私信我一起交流。
C/C++就业领域与学习方向 | 学习计划相关推荐
- python学习方向-学习Python的六大发展方向,你知道吗?
近年来,Python语言被广泛应用到互联网等各个领域.其简易性.易读性.可扩展性等优势被行业所认可.那么学习Python之后都可以朝哪些方向发展呢?下面就来看一下吧. 一.Python全栈工程师 全栈 ...
- python语言设计学习方向_学好Python开发就业方向有哪些?
原标题:学好Python开发就业方向有哪些? 近年来,Python市场火爆,从业人员薪资不断增加,选择学Python的人也在逐年增多.然而,很多人学Python只是盲目的跟随潮流,对于Python却不 ...
- 下一个AI领域的高薪方向:强化学习与智能决策研究班2023年春季招生启事
世界繁花盛开 我们不必在同一个地方反复死磕 强化学习是最近5年来人工智能最令人激动的研究领域.如下图Google的搜索指数可以看到,强化学习的搜索指数最近一些年明显呈现增长趋势,而NLP(自然语言 ...
- 【资源总结】“十大深度学习方向” 专栏
文章首发于微信公众号<与有三学AI> [资源总结]"十大深度学习方向" 专栏上线 今天给大家介绍一下我们拥有的知乎十大深度学习专栏,涵盖了深度学习的各个主流的方向 01 ...
- 【思维导图】零基础如何把握Python学习方向
最近几年随着互联网的发展,学习python的人越来越多,对于初学者来说,很迷茫,不知道怎么去学习,小编经过多方面汇总,总结出比较适合初学者的Python学习路线导图.相较于一个零基础的想学习pytho ...
- 谈谈软件学院、软件专业的学习方向
谈谈软件学院高年级同学的学习方向(by JacksonWan) <script src="http://blog.csdn.net/count.aspx?ID=529528&T ...
- PHP学习课程和培训方向学习路线分享
PHP学习课程和培训方向学习路线分享 php语言的优越性,集结了很多的开发爱好者,无论行业前景和个人发展来说,php正飞速的发展,php在不断兼容着类似closures和命名空间 等技术,同时兼顾性能 ...
- 2019年上半年收集到的人工智能深度学习方向干货文章
2019年上半年收集到的人工智能深度学习方向干货文章 随机森林VS神经网络:哪个更好? 深度学习--感知机讲解 深度学习NN.CNN.RNN.和DNN你了解吗? 手工计算深度学习模型中的参数数量 使用 ...
- python学习方向-Python学习者的发展方向
原标题:Python学习者的发展方向 报 名 2018年Python课程高校教师高级研修班 课程内容 1. 编程导论--以Python为舟 培养初学者编程能力与兴趣 学习基础Python 重视递归思维 ...
最新文章
- mysql 时区与时间函数
- 九、Node.js中文乱码问题
- Codeforces 1028C(面积并/思维)
- 放下偏见,原来嵌入式程序员如此“妖娆”!
- Python, Ruby 与 Groovy,谁与争锋
- linux下挂载ntfs分区错误解决方法
- 通过apache对页面进行压缩和页面缓存来提升性能
- UG NX 12 鼠标及快捷键的用法
- ubuntu下安装宋体simsun
- 模板函数与模板参数自动推导
- 2020届MEM/MBA考研提面准备以及常见问题分享
- 配色三部曲-你真懂这些色彩术语吗?
- 六度空间-c++实现
- Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
- 按颜色分类:青绿色系(Blue Green)
- 感恩节(11.28)
- 生物学中的云计算和大数据
- python由大到小排序_Python选择从小到大的排序,python
- Registration小结2
- 安居客二手房信息爬取(六安)