hls是干嘛的 hlsl是什么( 四 )


C/C++学到什么程度可以找工作?3大家可能听过“XXX是世界上最好的语言” , 实际上的情况是每个语言都有它最适合的领域 , Java适合Web , Python适合人工智能与数据分析 , C/C++适合开发底层程序 , 即使是汇编也会在某些对性能要求极其高的项目中用到 。当然了不是说某某某语言只能干什么 , 只是最适合 , 也可以用来干其他事 , 只不过很费劲 , 很麻烦而已 , 而且有很大可能达不到预期的效果 。
目前国内的嵌入式开发非常火 , 而C/C++主要用于底层的嵌入式开发、驱动开发等 , 也用于WINCE等嵌入式系统的应用软件开发 。
与Java和.NET比 , C/C++是一种应用范围更广、运作效率更高的编程语言 , 软件开发行业一直流传着一句话:
没有学过C++就不是真正的程序员 , 没有掌握C/C++编程技术就等于没有抓住通向国际一流企业的敲门砖 。
从目前就业市场上看 , 企业对C/C++人才有大量需求 , 但苦于招不到合适的人 。
很多应聘者因为C/C++工作能力的缺乏而被用人单位拒之门外 , C/C++人才职场正面临着“有人没活干有活没人干”的尴尬局面 。
本篇收集自各招聘要求 , 基本包括了C/C++不同的发展方向和所要具备的知识和技能点 , 供参考学习 。
一、嵌入式就业方向
岗位技能:
1、熟悉交叉编译的原理 , 熟练构造/使用交叉编译工具链
2、熟悉Linux (x86 , arm)的内核裁减 , 配置 , 编译和部署
3、熟悉Linux根文件系统的组成 , 并能够配置 , 编译 , 使用buzybox等工具按照实际要求裁减 , 构造根文件系统
4、熟练运用C/C++语言进行Linux下应用程序编程
5、熟悉Linux下的多进程/多线程编程 , 理解进程/线程间同步/通信的概念和方法
6、了解Linux下内核模块的编程的原理和方法 , 能够修改/添加内核中的驱动程序
7、了解Uboot / GRUB / LILO等bootloader的配置 , 编译和部署
8、了解Socket编程 ……
嵌入式知识架构体系:
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设备等驱动开发;
? 在工作中能独立胜任底层驱动开发 , 做好配置
二、桌面应用程序开发(MFC/QT)就业方向
岗位技能:
1、熟练掌握C、C++、ATL、COM等编程技术 。
2、熟练掌握Windows系统编程 , 熟悉窗口、网络和多线程技术 。