总览
本指南包含内容大致如目录所示,具体细节详见每章内容。部分教程书籍包含C++内容,从事纯C的同学C++部分可以略过。
资料汇总
- C++校招面试题库:牛客网,
纯C只看涉及C语言的部分,计算机网络、操作系统、数据结构部分可以重点参考
- 小林coding:Github主页,同名公众号
文字及图片理解计算机网络及操作系统 - 爱编程的大丙:B站主页,博客主页
视频重点学习网络编程,多线程编程,Linux环境下部分工具的使用
学习方式
- 推荐记笔记,学习一下markdown语法,然后通过CSND博客或者是语雀记笔记,方便面试前复习。
- 在语言学习阶段一定多动手编程,解决bug的过程就是成长的过程,遇到报错可以在百度或者csdn上寻找解决方案。
- 项目如果来不及,可以暂时先不自己实现一遍,但是针对整个项目要清楚怎么实现,用到了什么技术,面试中可能会对那部分展开问提前做好准备。
- 想要面试过关最好是把知识系统地学习一遍,理解其中的原理,然后再利用面试题库等八股文形成自己系统的语言描述。只背八股文可以应付小公司。
编程环境推荐
- 在只是准备c语言的阶段,可以先在Windows系统下安装DEV-C++,做简单的练习使用。教程如下:
Dev-C++安装及使用教程
推荐这篇:Dev C++ 安装及使用方法教程-超详细 - 在涉及到C语言的相关项目实现,Linux环境的学习过程中,建议在Windows下安装Linux虚拟机,环境选择CentOS或者Ubuntu都可以,教程如下:
虚拟机安装linux
推荐这两篇:
Ubuntu: 虚拟机Linux 教程之Ubuntu安装教程【超多图】
CentOS:VMware16的安装及VMware配置Linux虚拟机(详解版) - 在虚拟机上的命令行做项目可能不太方便,推荐一个ssh连接虚拟机的ssh工具,能够满足基本需求,简约实用,官方网站如下:
FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本3.9.8,更新时间2023.1.30
使用教程:
Linux远程连接工具:finalshell - 功能更多的一个选择是使用VScode远程连接服务器,但是步骤较多,Finalshell已经够用,VScode自行决定是否使用。
vscode链接虚拟机
C语言基础
选择一个观看并在Dev-C++ 里练习即可,练习时建议背着尝试写代码,敲完运行然后尝试解决BUG,最后检查和教程里有何出入。
推荐一个讲指针的课程:
C多线程
基于C实现线程池项目
爱编程的大丙:线程池工作原理和实现 - 【C语言版 】C/C++
C网络编程
完成此部分可以收获一个网络编程的小型项目
爱编程的大丙:并发网络通信-套接字通信(C/C++ 多线程)
爱编程的大丙:IO多路复用-[多线程网络并发通信 select/poll]
爱编程的大丙:IO多路复用-[多线程网络并发通信 epoll]
数据结构与算法
小甲鱼:【C语言描述】《数据结构和算法》
不同规模的公司对数据结构与算法的要求程度不一样,因为作者实力有限且本文章重点在于速成,所以重点是小公司或者是难度较低的面试,大致如下:
- 小公司,仅仅是口头询问几个关于数据结构与算法的知识,要求能够描述清楚相关的知识,哪怕是有笔试环节的算法编程题目,编程题目没有写出来,但是前面的选择题简答题答得还不错都有可能进入面试环节。简单高效的应对方式:
- 使用相关教程时不必每一个数据结构都去默写实现,仅做到相关知识的理解,能说出大概的应用场景,算法与数据结构的优缺点,复杂度。
- 重点关注:时间复杂度,线性表,栈和队列,二叉树,几个简单的排序算法
- 不必关注:图论,森林,字符串相关算法,或怎么学都不明白的直接放弃
- 中等公司,在上面的基础上能做到手写重点关注的算法与数据结构
- 大公司,直接去刷力扣牛客网吧,能看到的题都是你应该争取学会的。推荐一个不错的刷题指南: 代码随想录
计算机网络
有时间建议123全看,1的视频PPT做的很棒,理解起来很轻松。时间不多建议23,实在没时间就想搞突击就是背3,4也是相当不错的一个课程,适合想啃黑皮书的同学。重点关注网络层运输层的章节。
- 计算机网络微课堂(有字幕无背景音乐版)
- 小林coding:图解网络
- C++校招面试题库的计算机网络部分
- 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
操作系统
单纯的嵌入式岗位对操作系统貌似并不重点考察,时间紧急可以只看计算机网络部分。有时间建议123全看,时间不多建议23,实在没时间但还想突击一点操作系统知识就是背3
- B站视频课程自寻
- 图解系统
- C++校招面试题库的操作系统部分
额外内容
本部分只是作为加分项,可选项,推荐一些本人觉得不错的教程
Linux操作系统及工具
爱编程的大丙:Linux基础入门教程-linux命令-vim-gcc/g++ -动态库/静态库 -makefile-gdb调试
如果你是零基础,为了能在linux下实现上面两个项目推荐前置学习内容:
- 介绍LInux:1-20集
- vim编辑器使用:44-54集
- GCC:59-64集
另外的内容也是相当重要,但是对项目的实现暂时还用不到,作为加分项可以学习
C++
小甲鱼:【C++语法】《C++快速入门》
30小时快速精通C++和外挂实战-大神MJ精选
Github项目
这个里面可以找到很多不同语言的项目
HelloGitHub 是一个分享有趣、 入门级开源项目的平台。 希望大家能够在这里找到编程的快乐、 轻松搞定问题的技术方案、 大呼过瘾的开源神器, 顺其自然地开启开源之旅。