![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试准备
文章平均质量分 89
饼干饼干圆又圆
这个作者很懒,什么都没留下…
展开
-
嵌入式面试总结
通过rand()可以得到[0,RAND_MAX]之间的伪随机数,但是每次运行的序列是相同的,通过srand()设置随机数种子。目录块中有多个目录项,每一个目录项都会对应到该目录下的某一个文件,目录项记录了该文件的文件名以及inode节点。在函数内部声明的静态变量会保持其值,直到程序结束,它们在内存中位置固定,不会随着函数的调用而销毁和重新创建。当函数被声明为静态时,它的作用域仅限于声明它的文件内部,不可见于其它文件中的代码。kill函数用于发送一个信号,在发送信号的时候需要指定接收信号的进程。原创 2024-07-24 19:06:17 · 560 阅读 · 0 评论 -
嵌入式面试总结
当进程对文件进行操作时,将进行权限检查,如果文件的set-user-ID位权限被设置,内核会将进程的有效ID设置为该文件的用户ID(文件所有者ID),意味着该进程直接获取了文件所有者的权限,以文件所有者的身份操作该文件。inode数据结构中记录了文件的硬链接数,当为文件每创建一个硬链接,inode节点上的链接数就会加1,每删除一个硬链接,inode节点上的链接数就会减1,直到为0,inode节点和对应的数据块才会被文件系统回收。原创 2024-07-22 09:10:32 · 1093 阅读 · 0 评论 -
嵌入式面试总结
对于或运算,如果第一个表达式为真,不需要执行第二个表达式。对于与运算,如果第一个表达式为假,不用执行后面语句。原创 2024-07-20 10:12:29 · 664 阅读 · 0 评论 -
嵌入式面试总结
在计算机系统中,通常存储空间分为两种:内部存储空间和外部存储空间。内部存储空间通常访问速度比较快,能按照变量地址随机访问。也就是我们所说的RAM(随机存储器)。外部存储空间保存的内容相对固定,即使掉电后数据也不会丢失。变量,中间数据一般存放在RAM中,只有实际使用时才将它们从RAM调入到CPU中进行运算。一些数据需要的内存大小在程序运行过程中根据实际情况确定,这就要求具备动态管理内存的能力。原创 2024-07-19 07:36:54 · 612 阅读 · 0 评论 -
嵌入式面试
嵌入式实时多线程操作系统,基本属性之一是支持多任务。一个处理器核心在某一时刻只能运行一个任务。在RTT中,任务通过线程实现。RTT主要采用C语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。相较于Linux操作系统,RTT体积小,成本低,功耗低,启动速度快,实时性高,占用资源小,非常适用于资源受限的场合。物联网操作系统是指以操作系统内核为基础,包括文件系统、图形库等较为完整的中间件组件,具备低功耗、安全的软件平台。原创 2024-07-16 18:14:51 · 798 阅读 · 0 评论 -
嵌入式面试总结
new 、delete是C++中的操作符,而malloc、free是标准库函数。new、delete是类型安全的,new知道要分配对象的类型并调用构造函数,malloc只知道字节大小,不调用构造函数。new调用构造函数,delete调用析构函数。malloc、free不调用析构函数。new返回指定类型的指针,malloc返回void*,需要强制类型转换。new可以初始化对象,malloc不会初始化分配的内存。new在分配失败时抛出异常,malloc在分配失败时返回NULL。原创 2024-07-15 14:08:39 · 727 阅读 · 0 评论 -
嵌入式面试准备
malloc()从堆里面获得空间,也就是说函数返回的指针是指向堆里面的一块内存,操作系统中有一个记录空闲内存地址的链表,当操作系统收到程序的申请时,就会遍历该链表,寻找第一个空间大于所申请空间的堆节点,然后将该节点从空闲节点链表中删除,并将该结点的空间分配给程序。依次从小到大取每个序列中的元素比较,较小的一个放进新序列,取完一个有序序列中的所有元素后,再把剩下一个序列中的元素放进新序列的后面的即可。最坏情况下,每次选择的基准总是数组中的最小或最大元素时,快速排序退化为链表,高度为n,每层需要进行n次比较。原创 2024-07-13 10:46:45 · 584 阅读 · 0 评论 -
操作系统——内存管理(面试准备)
我们来看这样一个例子。每个进程都有4GB的虚拟地址空间,而对于大多数程序来说,其使用到的空间远未达到4GB,因为会存在部分对应的页表项都是空的,根本没有分配,对于已分配的页表项,如果存在最近一定时间未访问的页表,在物理内存紧张情况下,操作系统会将页面换出到硬盘,也就是说不会占用物理内存。我们利用这一特性,把最常访问的几个页表项存储到访问速度更快的硬件,于是计算机科学家们,就在CPU芯片中,加入了一个专门存放程序最常访问的页表项的Cache,这个Cache就是TLB,通常称为页表缓存,转址旁路缓存、快表等。原创 2024-07-11 09:53:26 · 1176 阅读 · 0 评论 -
面试经典题
public:i--;i--;return res;使用分段存储管理方式,当进程在主存中没有找到需要访问的页面并且内存中没有空闲物理块,需要进行页面置换。产生缺页中断后,首先去内存寻找空闲物理块,若内存没有空闲物理块,使用相应的页面置换算法决定淘汰页面,然后调出淘汰页面,最后调入该进程需要访问的页面。volatile关键字并不能保证线程安全。HTTP协议的响应码由三个十进制数字组成,第一个数字为1~5表示5种状态。原创 2024-07-10 19:28:40 · 1302 阅读 · 0 评论 -
面试经典150题
当遇到两个点时,只要栈不为空,就切换到上一级(弹出栈顶目录),当遇到目录名时,就放入栈。因此,如果展开表达式中所有的括号,则得到的新表达式中,数字本身不会发生变化,只是每个数字前面的符号会变化。如果将所有大写字符转换为小写字符,并移除所有非字母数字后,正着读和反着读一样,就认为短语是一个回文串。每次贪心匹配,匹配成功则i和j同时右移,匹配s的下一个位置,匹配失败则j右移,i不变。设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。给定字符串s和t,判断s是否为t的子序列。原创 2024-07-09 11:23:29 · 1164 阅读 · 1 评论 -
面试经典150题
如果我们能计算出所有dp[i][j]的值,那么其中的最大值即为矩阵中只包含1的正方形的边长的最大值,其平方就是最大正方形的面积。此外,还需要考虑边界条件,如果i和j中至少有一个为0,则以此位置为右下角的最大正方形的边长只能是1,因此dp[i][j] = 1。如果要移除的元素在数组的开头,例如序列[1,2,3,4,5],当val为1时,我们需要把每一个元素都左移一位。对于一个节点u,如果它的所有相邻节点都已经搜索完成,那么回溯到u的时候,u本身也会变成一个已经搜索完成的节点。那么称该排列是图G的拓扑排序。原创 2024-07-08 21:35:17 · 795 阅读 · 0 评论 -
C++专业面试真题(1)学习
数组元素基本有序的情况下,快速排序是最慢的,因为会退化成冒泡排序,选择排序时间复杂度都是O(N2),堆排序都是O(nlogn),但是基本有序对插入排序是最好的,因为这样只需要比较大小,不需要移动,时间复杂度趋近于O(n)。例如,每个用户都有自己的目录,这样即使不同用户使用相同的文件名,也不会冲突。完全二叉树是一种特殊的二叉树,其中所有层都是完全填满的,除了最后一层,其节点都是从左到右排列的。快速排序是选中一个元素,将比其小的元素放在其左边,比其大的元素放在右边,然后递归处理。原创 2024-07-04 15:02:53 · 898 阅读 · 0 评论 -
C++专业面试真题(1)学习
面向过程思想完成一个需求的步骤:首先搞清楚做什么,然后分析怎么做,最后在通过代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,从而完成需求。在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。面向过程编程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能函数相互调用,完成需求。面向对象思想面向对象的思想是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界。原创 2024-07-03 21:14:21 · 781 阅读 · 0 评论 -
C++专业面试真题(1)学习
用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。I/O多路复用能够在单个线程中,通过监视多个I/O流的状态来同时管理多个I/O流,一旦检测到某个文件描述符上我们关心的事件发生,能够通知程序进行相应的读写操作。死锁是指在两个或多个进程之间,每个进程都在等待其它进程释放资源,从而导致这些进程都无法继续执行的现象。银行家算法:一种动态资源分配算法,在每次资源请求时,模拟资源分配情况,判断是否会进入不安全状态,只有在不会进入不安全状态时,才分配资源。原创 2024-07-01 17:52:51 · 1156 阅读 · 0 评论 -
C++专业面试真题(1)学习
孤儿进程孤儿进程是其父进程已经终止但它仍然在运行的进程。当父进程终止时,这些孤儿进程将被系统的systemd收养,由它们负责清理。系统会自动处理孤儿进程。init进程会接管这些孤儿进程,并调用wait系统调用清理它们的资源。僵尸进程僵尸进程是已经终止但其退出状态信息仍然保留在进程表中的进程。僵尸进程保留在进程表中,直到其父进程读取了它们的退出状态。僵尸进程不会消耗任何CPU或内存资源,但会占用进程表项。原创 2024-07-01 15:49:15 · 938 阅读 · 0 评论 -
面试准备算法
答案肯定是字符串的某个前缀,然后简单直观的想法是枚举所有前缀来判断,设前缀长度lenz,前缀串的长度必然要是两个字符串长度的约数才能满足条件。可以枚举长度,再去判断这个前缀串拼接若干次以后是否等于str1和str2。原创 2024-06-28 09:37:53 · 361 阅读 · 0 评论 -
嵌入式Linux应用层开发 I/O操作
每个进程都有一个文件描述符表:文件描述符表在底层通过数组来实现的。文件描述符实际上是这个数组的偏移量。执行代码int fd = open(“test.txt”, O_RDONLY);//描述符表会增加一项当我们执行open()等系统调用时,内核会创建一个新的struct file,这个数据结构记录了文件的元数据(文件类型、权限等)、文件路径、支持的操作等,然后分配文件描述符,将struct file维护在文件描述符中,最后将文件描述符返回给应用程序。原创 2024-06-20 07:42:32 · 776 阅读 · 0 评论 -
C++面试题
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。在多态中,通常父类中虚函数的实现都是毫无意义的,主要都是调用子类重写的内容。当子类重写父类的虚函数时,子类中的虚函数表内部会替换成子类的虚函数地址。多重继承:一个子类继承多个父类,这些父类可能继承同一个父类。在继承之前,加上关键字virtual,变为虚继承。解决方法:将父类中的析构函数改为虚析构或纯虚析构。当父类指针或引用指向子类对象的时候,发生多态。两个类有共同的父类,又有共同的子类。纯虚函数写法:将{}改为= 0;原创 2024-06-19 18:52:06 · 484 阅读 · 0 评论 -
C++面试准备
声明可以有多次,但是定义只能有一次。原创 2024-06-12 14:58:51 · 969 阅读 · 0 评论 -
Leetcode学习
对于给定的链表,首先对除了头节点head以外的节点进行删除操作,然后判断。递归的终止条件是head为空,此时直接返回head。当head不为空时,递归地进行删除操作,然后判断 head 的节点值是否等于 val并决定是否要删除 head。原创 2024-06-04 19:43:35 · 796 阅读 · 0 评论 -
物联网面试准备
串行通信接口:按位发送和接收的接口。如:RS-232/422/485等。RS-232接口(DB9)原创 2024-06-03 08:49:09 · 1057 阅读 · 0 评论 -
物理层和MAC层区别
物理层和MAC层是计算机网络OSI七层模型中的数据链路层的两个子层。物理层负责将比特流传输到物理介质上,而MAC层负责在物理介质上控制数据包的传输。原创 2024-01-03 09:30:22 · 829 阅读 · 0 评论