1、c语言
1、C程序结构、C数据类型和基本语法
2、数组、字符串、指针、函数
3、结构体、宏定义、枚举
4、C输入和输出
《C和指针》
2、c++
1、熟悉面向对象的语言概述(封装、继承、多态)
2、熟练掌握C++语言的基本知识和类与对象及其高级应用
3、作用域运算符、内联函数、强制类型转换
4、new、delete内存管理
5、对象成员、成员函数
6、构造函数、析构函数、拷贝构造函数、函数重载
7、对象数组、this指针、枚举、
8、静态成员、静态成员函数
9、对象成员
10、友元
11、虚函数、纯虚函数、抽象类、虚析构函数等
3、数据结构
1、字符串、数组、链表、堆、栈、队列、树、哈希、图
2、算法:查找、排序
《大话数据结构》
4、操作系统
面试三大要点之一(操作系统、计网、数据库)。
死锁、虚拟内存、堆栈、进程线程、内存管理、磁盘调度等都是重点。
如果能够在面试过程中讲出来一些具体的操作系统知识,而不是泛泛而谈,肯定是很加分的,比如常见知识点进程线程区别,在提到线程切换比进程更快时,你如果能够很清楚明白的说出来进程切换做了哪些、线程切换做了哪些以及线程为什么比进程快,毫无疑问很加分的。
视频:
B站哈工大操作系统:https://www.bilibili.com/video/BV1d4411v7u7
B站清华大学操作系统:https://www.bilibili.com/video/BV1js411b7vg
B站美国麻省理工MIT 6.828操作系统神级课程:https://www.bilibili.com/video/BV1px411E7ST
现代操作系统(也是讲操作系统的一本好书,讲的很细)
深入理解计算机系统(大名鼎鼎的CSAPP,被誉为“和金子一样重要的计算机基础书籍” , 很厚的一本黑皮书,需要慢慢看)
5、Linux系统编程
需要掌握Linux开发环境的搭建、基本的Linux命令、文件IO和标准IO操作、进程控制、进程间通信、多线程编程、网络编程。
Linux的入门可以阅读正点原子的嵌入式驱动开发指南的前两章内容,并做相关实操;
学习IO、进程、多线程编程同样需要多点实操,能够加深你对应用编程的理解,可以阅读正点原子的I.MX6U嵌入式Linux C应用编程指南,跑下上面的代码。
以上所提正点原子的文档资料可以在gitee下载,链接:https://gitee.com/GuangzhouXingyi/projects
视频:黑马程序员-Linux系统编程_哔哩哔哩_bilibili
6、Linux网络编程
需要有一定的计算机网络基础,没有基础的同学可以在B站看看千锋教育的计算机网络深入浅出课程:地址:https://www.bilibili.com/video/BV1XV411C7Bo
视频:
推荐资料:
《鸟哥的Linux》
《TCP/IP网络编程》(韩国人写的,书中例子很多,适合作为入门,另外github上有很多笔记,可以边看别人的笔记边看书,加深个人理解)
《Linux高性能服务端编程》
7、QT界面开发
如果你有一定的C++基础,建议学下Qt这个框架。因为这个框架并不难,有C++基础的话上手很快,可以增加你的就业面,因为很多嵌入式项目和军工、医疗设备项目都有提到Qt框架。
QT学习中,需要重点掌握信号和槽、事件循环机制、对象树等。
视频:最新QT从入门到实战完整版|传智教育_哔哩哔哩_bilibili
8、补充资料
1、Goolg Test
在学习C++过程中,还可以接触一些C++单元测试框架,比如Google Test。
Google Test是由Google开源的C++单元测试框架,简称gtest。Google Test开源仓库地址:https://github.com/google/googletest
2、FreeRTOS
FreeRTOS,全称Free Real Time Operating System,即免费的实时操作系统。
相比于常见的Windows,MacOS,Linux等操作系统,实时操作系统(RTOS)是一种轻量级的操作系统,适用于嵌入式硬件中,用于解决单片机类裸机轮询方式在处理多个任务时的实时性不高的问题。
如果你有一定单片机开发基础,建议掌握它,可以提高你的竞争力。
关于FreeRTOS的文档资料,我推荐韦东山的freeRTOS教程:http://rtos.100ask.org/freeRTOS教程/index.html。