- 博客(1173)
- 收藏
- 关注

原创 Linux系统软件工程师/嵌入式Linux应用开发工程师 知识体系构建 500篇(持续更新)
今年受疫情影响,企业经营必不可免地受到冲击,企业在选人用人方面比以往都更加谨慎,招聘也更加苛刻。hr都试图用最低的成本去招最优秀的人才。本人从事嵌入式软件开发多年,结合自己的经验,推出了《嵌入式软件工程师技术面专题》,预计会有40篇,分成硬件协议、多进程多线程编程、网络编程、linux基础、C/C++等几大模块,每一篇在末尾都总结了相关提问,其中有些知识,即使是工作了两三年的同学也未必都懂,所以社招的同学也可以看,对于找工作绝对有帮助。**不打无准备之战,提前做好准备,方可立于不败之地**。欢迎大家订阅,只
2020-09-13 11:12:01
50983
73

原创 Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(3) 守护进程
守护进程(daemon),是一种运行在后台 的特殊进程,它独立于控制终端 ,并周期性地执行某项任务或等待处理某些发生的事件。守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行过程中的信息也不在任何终端上显示。由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能突破这种限制
2020-08-17 09:21:18
3803
4

原创 Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(4) 进程同步和通信的方式有哪些?
🥇 作者简介: 热衷于知识探索和分享的技术博主。💂 csdn主页::【✍️ 微信公众号:【🎉精彩专栏:🎓 【 🧡 【 📚【 🌎【✍️ 【 …💂关于作者: 曾就职于国内知名安防上市公司,现就职于国内知名AMR机器人公司,担任高级系统软件工程师。2020年至今保持优快云博客专家,优快云 C/C++领域优质创作者头衔。全网5万+粉丝。十载寒冰,难凉热血;多年过去,历经变迁,物是人非。然而,对于技术的探索和追求从未停歇。💪坚持创作,热衷分享,初心未改,继往开来!
2020-08-16 16:27:48
11301
3

原创 Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(15) 内核空间、用户空间、内核态、用户态
为了保证用户进程不能直接操作内核,保证内核安全,操作系统将虚拟空间划分为两部分,一部分是内核空间,一部分是用户空间。针对Linux操作系统,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供内核使用,称为内核空间,而较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。对于校招而言,该问题提问几率较大,因为是基础性问题,考察对内核空间和用户空间的理解,进程的内核态和用户态等概念。),进程切换时,用户空间切换,内核空间不变。
2020-08-16 16:18:39
15289
2

原创 Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(13) 请你描述下进程虚拟内存空间布局
对于这个问题,面试官可能拿出一张白纸,让你尝试画出linux下进程的虚拟内存空间布局,然后=再让你简述下每个分区的作用,可能会挑几个重点分区,例如堆区、栈区来进行深入展开,考察你对堆栈的理解等等。文章目录1 内核空间2 栈(stack)3 内存映射段(mmap)4 堆(heap)5 BSS段6 数据段(Data)7 代码段(text)8 保留区问题提问在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4
2020-08-16 16:00:34
2242
2

原创 Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(1) 进程和线程的基本概念与区别
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程(thread)是操作系统能够进行调度的最小单位。它被包含在进程之中,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
2020-08-15 12:59:17
3479
2

原创 Linux C/C++ or 嵌入式面试之《网络编程系列》(4) tcp四次断开若干问题
首先A向B发送一个FIN报文段,报文段首部FIN=1,序列号seq=u(u为最后传送的数据的序列号加1,因为tcp规定,fin包消耗一个序列号,虽然没有发送数据),然后A进入FIN-WAIT-1(终止等待1)状态。(2)B收到释放连接的报文段后即发出确认报文段,报文首部ACK=1,ack=u+1,seq=v(v等于B前面传送过的数据的序列号加1),然后B进入CLOSE-WAIT(关闭等待)状态。(3)当A收到B的确认报文后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
2020-08-15 12:52:33
14945
2
原创 C语言入门教程100讲(0)从了解C语言的发展史开始
C语言从诞生至今已经有了超过五十年的历史,它不仅影响了编程语言的发展,还对操作系统、计算机架构以及软件工程产生了深远的影响。无论是对于程序员还是计算机科学研究者,C语言都是一门必须掌握的语言,它的简洁、灵活和高效使其在许多领域中依然保持着强大的生命力。
2025-03-29 19:33:52
69
原创 C语言入门教程100讲(40)文件定位
文件定位是指在文件中移动文件指针的位置,以便从指定位置开始读写文件。C 语言提供了fseekftell和rewind等函数来实现文件定位。
2025-03-24 23:24:31
170
原创 C语言入门教程100讲(39)文件读写
函数可以从文件中读取一行字符串。函数可以向文件中写入一行字符串。函数可以从文件中格式化读取数据。函数可以向文件中格式化写入数据。函数可以从文件中读取二进制数据。函数可以向文件中写入二进制数据。函数可以从文件中读取一个字符。函数可以向文件中写入一个字符。
2025-03-23 22:40:47
72
原创 C语言入门教程100讲(38)文件打开与关闭
文件操作是指通过程序对文件进行读写、创建、删除等操作。C 语言提供了标准库函数来处理文件操作,主要包括文件的打开、关闭、读写等。
2025-03-23 16:05:33
152
原创 C语言入门教程100讲(37) typedef
typedef是 C 语言中的关键字,用于为已有的数据类型定义一个新的名称(别名)。通过typedef,可以简化复杂数据类型的声明,提高代码的可读性。可以在定义结构体时直接使用typedefint age;} Student;// 定义 Student 为匿名结构体的别名可以。例如:typedef int IntArray[10];// 定义 IntArray 为 int[10] 的别名// 使用 IntArray 声明数组。
2025-03-23 16:03:45
75
原创 C语言入门教程100讲(36)结构体与函数
结构体可以作为函数参数传递,以便在函数内部访问或修改结构体的成员。结构体参数可以按值传递,也可以按引用传递(通过指针)。按引用传递结构体(通过指针)可以避免复制整个结构体,并允许函数内部修改结构体的成员。按值传递结构体会复制整个结构体,函数内部对结构体的修改不会影响实参。函数可以返回结构体指针,但需要确保返回的指针指向有效的内存地址。函数可以返回结构体,以便将计算结果封装在结构体中返回。
2025-03-23 16:02:01
146
原创 C语言入门教程100讲(34)结构体初始化
结构体初始化是指在声明结构体变量时为其成员赋初值的过程。C 语言提供了多种初始化结构体的方式,包括直接初始化、指定成员初始化和动态初始化。
2025-03-23 15:59:49
21
原创 C语言入门教程100讲(33)结构体定义
结构体是 C 语言中用于组合多个不同类型数据的一种复合数据类型。通过结构体,可以将相关的数据项组织在一起,便于管理和操作。struct 结构体名 {数据类型 成员1;数据类型 成员2;...int age;
2025-03-23 15:58:05
25
原创 C语言入门教程100讲(32)多级指针
多级指针是指指向指针的指针。int *ptr,指向int类型的变量。int **ptr,指向int *类型的指针。int ***ptr,指向int **类型的指针。
2025-03-23 15:56:19
221
原创 C语言入门教程100讲(31)指针与函数
指针可以作为函数参数传递,以便在函数内部修改实参的值。通过指针传递参数,可以实现对实参的直接操作。函数可以返回指针,但需要确保返回的指针指向有效的内存地址。数组作为函数参数时,实际上传递的是数组的首地址。函数指针是指向函数的指针,可以用于动态调用函数。
2025-03-23 15:54:37
21
原创 C语言入门教程100讲(30)指针与数组
在 C 语言中,数组名是一个指向数组首元素的常量指针。因此,指针和数组可以互换使用,通过指针可以访问和操作数组的元素。数组作为函数参数时,实际上传递的是数组的首地址。因此,函数内部可以通过指针访问数组元素。指针算术是指对指针进行加减操作,以访问数组中的其他元素。数组名表示数组的首地址,可以赋值给指针变量。数组名和指针在大多数情况下可以互换使用。指针数组是一个数组,其元素是指针。数组指针是一个指针,指向一个数组。可以通过指针访问数组元素。可以使用指针遍历数组。
2025-03-23 15:53:48
17
原创 C语言入门教程100讲(27)数组与指针
在 C 语言中,数组名表示数组的首地址,因此数组与指针有密切的关系。通过指针可以访问数组的元素,甚至可以遍历数组。数组作为函数参数时,实际上传递的是数组的首地址。因此,函数内部可以通过指针访问数组元素。指针算术是指对指针进行加减操作,以访问数组中的其他元素。数组名和指针在大多数情况下可以互换使用。数组名是一个指向数组首元素的常量指针。指针数组是一个数组,其元素是指针。数组指针是一个指针,指向一个数组。可以通过指针访问数组元素。可以使用指针遍历数组。
2025-03-23 15:51:25
23
原创 C语言入门教程100讲(24)递归
递归是指函数直接或间接调用自身的过程。递归通常用于解决可以分解为相同问题的子问题的情况,例如计算阶乘、斐波那契数列等。
2025-03-23 15:48:52
25
原创 C语言入门教程100讲(23)参数传递
参数传递是指将实参的值传递给函数的形参的过程。按值传递:将实参的值复制给形参。按引用传递:通过指针将实参的地址传递给形参。
2025-03-23 15:47:51
20
原创 C语言入门教程100讲(22)函数调用
函数调用是程序执行过程中,通过函数名和参数列表来执行函数体的过程。函数调用会将控制权转移到被调用的函数,并在函数执行完毕后返回调用点。
2025-03-23 15:46:52
22
原创 C语言入门教程100讲(21)函数声明
函数声明(也称为函数原型)是告诉编译器函数的名称、返回类型和参数列表,但不包含函数体。函数声明通常放在文件的开头或头文件中,以便在函数定义之前调用函数。特性函数声明函数定义语法返回类型 函数名(参数列表);返回类型 函数名(参数列表) { 函数体 }函数体无包含具体实现代码作用告知编译器函数的存在实现函数的具体功能必须一致。函数声明和函数定义的参数列表(包括参数类型和顺序)必须完全一致。
2025-03-23 15:46:03
26
原创 C语言入门教程100讲(19)do-while 循环
do-while循环是 C 语言中的一种循环控制语句,与while循环类似,但do-while循环会先执行循环体,然后再检查条件。do-whiledo {// 循环体} while (条件);循环体:至少执行一次,即使条件一开始就为假。条件:每次循环结束后检查的条件,如果为真则继续循环。
2025-03-23 15:44:40
35
原创 C语言入门教程100讲(20)函数定义
函数是 C 语言中用于封装代码的基本单元。通过函数,可以将一段代码逻辑独立出来,便于复用和维护。函数名:函数的唯一标识符。参数列表:函数接收的输入。返回类型:函数返回的结果类型。函数体:函数的具体实现代码。返回类型 函数名(参数列表) {// 函数体return 返回值;// 如果返回类型不是 void不可以。C 语言不支持在函数内部定义另一个函数。
2025-03-23 14:22:36
227
原创 C语言入门教程100讲(18)break 与 continue
break和continuebreak:用于立即退出当前循环。continue:用于跳过当前循环的剩余代码,直接进入下一次循环。
2025-03-23 14:20:47
442
原创 C语言入门教程100讲(17) while 循环
while循环是 C 语言中的一种循环控制语句,用于在条件为真时重复执行一段代码。whilewhile (条件) {// 循环体条件:每次循环开始前检查的条件,如果为真则执行循环体。
2025-03-23 14:17:44
381
原创 C语言入门教程100讲(16)for 循环语句
for循环是 C 语言中的一种循环控制语句,用于重复执行一段代码,直到满足指定的条件。forfor (初始化;条件;更新) {// 循环体初始化:在循环开始前执行一次,通常用于初始化循环变量。条件:每次循环开始前检查的条件,如果为真则执行循环体。更新:每次循环结束后执行,通常用于更新循环变量。
2025-03-23 14:16:41
313
原创 C语言入门教程100讲(15)位运算符switch 语句
switch语句是 C 语言中的一种多分支条件控制语句,用于根据变量的值执行不同的代码块。switchswitch (表达式) {case 常量1:// 表达式等于常量1时执行的代码break;case 常量2:// 表达式等于常量2时执行的代码break;default:// 表达式不等于任何常量时执行的代码。
2025-03-23 14:15:50
356
原创 C语言入门教程100讲(14)if 语句
if语句是 C 语言中的一种条件控制语句,用于根据条件的真假执行不同的代码块。ifif (条件) {// 条件为真时执行的代码。
2025-03-23 14:15:11
327
原创 C语言入门教程100讲(13)其他运算符
除了常见的算术、关系、逻辑和位运算符外,C 语言还提供了一些特殊的运算符,用于实现特定的功能。条件运算符(三元运算符)逗号运算符sizeof 运算符地址运算符(指针运算符(
2025-03-23 14:14:23
330
原创 C语言入门教程100讲(11)位运算符
位运算符是用于对整数的二进制位进行操作的运算符。按位与(按位或(按位异或(按位取反(左移(<<右移(>>按位取反操作会将所有二进制位取反,包括符号位。在补码表示中,这会导致结果变为负数。
2025-03-23 14:00:42
364
原创 C语言入门教程100讲(9)关系运算符
关系运算符用于比较两个值的大小或相等性,返回一个布尔值(1表示真,0表示假)。等于(==不等于(!大于(小于(大于等于(>=小于等于(<=
2025-03-23 13:59:07
368
有初学C++ C linux 嵌入式的吗,这里集合,有大量系统学习的博客教程
2021-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人