面试
文章平均质量分 57
面试题
嵌入式_笔记
!
展开
-
C++设计模式 - 生成器模式
生成器模式是一种创建型,它允许你分步骤创建复杂对象。与其他创建型模式不同的是,生成器模式允许你在一个过程中创建一个对象,而无需等待所有部分都准备好。这种模式特别适用于需要构造不同表示或状态的复杂对象时。原创 2024-11-03 23:08:27 · 267 阅读 · 0 评论 -
嵌入式面试题 ARM常见面试题
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。大端模式:低字节写在高地址上,高字节写在低地址上。小端模式:高字节写在高地址上,低字节写在低地址上。ARM的Cache和MMU是处理器架构中的两个重要组件,它们在系统中扮演着关键的角色。以下是对它们的详细解释及其在系统中的作用:Cache,即高速缓存,是ARM处理器中一块可高速访问的内存块。原创 2024-10-22 23:57:17 · 537 阅读 · 0 评论 -
简历制作面试篇
模板:推荐使用简洁一点的模板,不要太花哨,能够让HR和面试官清楚,快速知道信息就可以,太花哨容易分散别人的注意力。格式:一般选用PDF,不要用WORD。照片:技术岗一般不用贴照片,推进写上自己的联系方式或者微信。专业技能:描述专业技能,如果只是看过几篇文章而已,就写了解。接着是写熟悉,掌握,最后是写精通了。我建议是谨慎写精通,除非真的研究到很深入,否则不建议写。专业名词:专业名词一定要写对,这样方便HR在搜索匹配度的时候容易找到。原创 2024-10-03 22:07:44 · 344 阅读 · 0 评论 -
HR面试篇
HR感兴趣的不是你的职业规划,感兴趣的是你的职业规划和他们公司有没有关系。或者说他们公司能不能去帮助你去实现你的职业规划。切忌不要讲不合实际的,比如要在公司赚多少钱等等。要根据公司的特点,找到切入点,只要讲得积极向上就可以。原创 2024-10-02 21:56:01 · 1943 阅读 · 0 评论 -
数据结构 - 双链表的向前遍历和向后遍历,删除节点,
1.双链表的内部构造2.向前遍历双链表// 前向遍历一个双遍历,参数pTail要指向链表末尾void qianxiang_bianli(struct node *pTail){ struct node *p = pTail; while (NULL != p->pPrev) { printf("data = %d.\n", p->data); p = p->pPrev; }}3.向后遍历双链表// 后向遍历一个双链表.原创 2021-07-20 18:53:01 · 1104 阅读 · 0 评论 -
C/C++ 数据结构 队列
q.empty() 如果队列为空返回true,否则返回false。q.back() 返回队列尾元素的值,但不删除该元素。q.front() 返回队首元素的值,但不删除该元素。q.pop() 删除队列首元素但不返回其值。q.size() 返回队列中元素的个数。q.push() 在队尾压入新元素。原创 2022-09-06 00:06:41 · 208 阅读 · 0 评论 -
C/C++ 数据结构栈
s.empty();//如果栈为空则返回true, 否则返回false;定义:stack< int > s;//返回栈顶元素, 但不删除该元素。//弹出栈顶元素, 但不返回其值。//返回栈中元素的个数。原创 2022-09-05 23:26:43 · 38 阅读 · 0 评论 -
面试算法 - 二分查找
1.二分搜索 — 思路如果是有序数组,可以使用二分搜索,最坏时间复杂度为O(logn)假设在[begin,end)范围内搜索某个元素v,mid== (begin+end)/ 2 ①、如果v<m,去[begin,mid)范围内二分搜索 ②、如果v>m,去[mid+ 1,end)范围内二分搜索 ③、如果v== m ,直接返回midend指的是数组长度。2.二分搜索 — 实例3.二分搜索 — 实现#include&...原创 2022-05-26 23:14:38 · 65 阅读 · 0 评论 -
数据结构 - 二叉树(先序 中序 后序)
1.二叉树名词解释二叉树的定义:二叉树是一种每个结点至多只有两个子树(即二叉树的每个结点的度不大于2),并且二叉树的子树有左右之分,其次序不能任意颠倒。树是使用了递归定义的数据结构,树的子树还是树,其结构如下图所示:度:结点拥有的子树数目,例如上图结点A的度为3,结点E的度为0 叶子或终端结点:度为0的结点(没有子树的结点) 树的度:各个结点中度的最大值 孩子:结点的子树的根,称为根的孩子 层次:根的层次为0,根的孩子为1,以此类推 深度:树中结点的最大层次,称为树的深原创 2022-05-18 00:00:08 · 1070 阅读 · 0 评论 -
数据结构 - 二叉树,二叉查找树,平衡二叉树,红黑树
一 二叉树树的概念:树是一种 非线性 的数据结构,它是由 n ( n>=0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。二叉树(binary tree)是指树中结点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树 。两种特殊的二叉树:一棵深度为k,且有2^k原创 2022-05-14 17:51:22 · 409 阅读 · 0 评论 -
数据结构 - 链式队列
1.链式队列链式队列 : 用链表形式实现的队列。链表结点为队列数据存储区,链表结点包括两部分数据存储区和指针存储区。数据存储区 :存放真实有效数据的区域。指针存储区 :存放下一个链表结点的地址。2.创建链式队列为链式队列申请内存,即为队首指针和队尾指针申请内存。为链式队列头结点申请内存,头结点不存放有效数据,方便队列的操作。将队首指针和队尾指针指向头结点,即队首指针和队尾指针相等。链式队列头结点指针域为空,即为NULL;头结点数据域可不管,亦可为零,作为链式队列有效的原创 2021-12-26 23:26:43 · 3308 阅读 · 0 评论 -
数据结构 - 顺序环形队列
1.队列队列是一种特殊的线性表,线性表两端都可以进行插入删除,而队列只能在队头删除,队尾插入。插入元素称为入队,删除元素称为出队。2.队列的特点:(1)只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 (2)进行插入操作的一端称为队尾(入队列) (3)进行删除操作的一端称为队头(出队列) (4)队列具有先进先出(FIFO)的特性3.队列的分类:顺序队列环形队列环形队列的入队4.代码实现seqqueue.h...原创 2021-12-26 23:06:49 · 850 阅读 · 0 评论 -
C++设计模式 - 工厂模式
工厂模式一般分为三种:简单工厂模式,工厂方法模式,抽象工厂模式。1.简单工厂模式:举个例子:现在有宝马车和奔驰车两种车需要生产,但是只有一个工厂,且只能在同一时间生产一种车,这时就有工厂决定生产那种车了。例子虽然不是十分恰当,但是会其意即可。UML类图:代码示例:简单工厂模式#include <iostream>using namespace std;enum CarType{BENZ, BMW};class Car//车类{public: vir原创 2021-08-18 22:15:24 · 438 阅读 · 0 评论 -
C++设计模式 - 单例模式
1.单例模式的概念在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在,如何定义一个类,使得这个类最多只能创建一个对象?单例模式是一种常见的软件设计模式。它的核心结构只包含一个被称为单例的特殊类。它的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。2.懒汉式:第一次用到类的实例的时候才回去实例化。构造函数声明为private或者protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作.原创 2021-08-17 22:49:24 · 243 阅读 · 0 评论 -
数据结构 - 思维构图链式栈
1.链式栈的节点2.链式栈的描述typedef int datatype;typedef struct node{ datatype data; struct node* next;}listnode,*linklist;3.创建空栈linklist linkstack_create()//创建空栈{ linklist * s; if((s = (linklist *)malloc(sizeof(linklist))) == NULL) { printf(.原创 2021-07-25 12:08:33 · 165 阅读 · 0 评论 -
数据结构 - 顺序栈
1.什么是栈栈是限制在一端进行插入操作和删除的线性表,允许进行操作的一端称之为栈顶,另一端固定为栈底,当栈中没有元素时称为空栈。栈的特点:后进先出(LIFO)。原创 2021-07-20 21:32:45 · 423 阅读 · 1 评论 -
数据结构 - 双链表的头插法和后插法
1.单链表的局限性-> 单链表是对数组的一个扩展,解决了数组的大小比较死板不容易扩展的问题。使用堆内存来存储数据,将数据分散到各个节点之间,其各个节点在内存中可以不相连,节点之间通过指针进行单向链接。链表中的各个节点内存不相连,有利于利用碎片化的内存。-> 单链表各个节点之间只由一个指针单向链接,这样实现有一些局限性。局限性主要体现在单链表只能经由指针单向移动(一旦指针移动过某个节点就无法再回来,如果要再次操作这个节点除非从头指针开始再次遍历一次),因此单链表的某些操作就比较麻烦(算法比原创 2021-07-20 00:07:50 · 3177 阅读 · 0 评论 -
数据结构 - 遍历单链表,删除节点,单链表逆序
1.遍历单链表// 遍历单链表,pH为指向单链表的头指针,遍历的节点数据打印出来void bianli(struct node*pH){ //pH->data // 头节点数据,不是链表的常规数据,不要算进去了 //struct node *p = pH; // 错误,因为头指针后面是头节点 struct node *p = pH->pNext; // p直接走到第一个节点 printf("-----------开始遍历-----------\n"); while (原创 2021-07-20 00:02:04 · 1490 阅读 · 1 评论 -
数据结构 - 单链表的头插法和尾插法
1.单链表的结构:-> 链表是由节点组成的,节点中包含:有效数据和指针。-> 定义的struct node只是一个结构体,本身并没有变量生成,也不占用内存。结构体定义相当于为链表节点定义了一个模板,但是还没有一个节点,将来在实际创建链表时需要一个节点时用这个模板来复制一个即可。-> 链表的内存要求比较灵活,不能用栈,也不能用data数据段,只能用堆内存。-> 头指针并不是节点,而是一个普通指针,只占4字节。头指针的类型是struct node *类型的,所以它才能指向原创 2021-07-19 22:48:46 · 1341 阅读 · 1 评论 -
嵌入式面试题 经典面试编程题
1.求斐波那契数列的第 n 项的值斐波那契数列的定义如下:斐波那契数列的前十个数如下:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...思路:第一,二个数是0,1。第三个数是第一,二个数的相加。第n个数是第n-1,n-2个数的相加。代码示例:#include<stdio.h> int fibonacci(int n){ int f0 = 0, f1 = 1, f, i; if(0 == n) return 0; if(1 ==原创 2021-09-04 19:53:55 · 578 阅读 · 1 评论 -
嵌入式面试题 C/C++ 经典面试算法题总结
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。原创 2023-10-04 01:09:49 · 419 阅读 · 0 评论 -
嵌入式面试题 C/C++ 动态规划面试题总结
比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。原创 2023-10-04 00:46:29 · 1185 阅读 · 0 评论 -
嵌入式面试题 C/C++ DFS深度优先搜索面试题总结
一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维。原创 2023-10-04 00:11:47 · 269 阅读 · 0 评论 -
嵌入式面试题 C/C++ 链表面试题总结
创建2个链表,对两个链表对应位进行相加。原创 2023-10-03 21:56:55 · 582 阅读 · 0 评论 -
嵌入式面试题 C/C++ 队列面试题总结
【代码】C/C++ 数据结构 - 队列。原创 2023-10-03 21:50:24 · 433 阅读 · 0 评论 -
嵌入式面试题 C/C++ 数组面试题总结
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。每行的第一个整数大于前一行的最后一个整数。每行中的整数从左到右按升序排列。输入一个数为数组里面两个数之和。原创 2023-10-03 21:40:16 · 364 阅读 · 0 评论 -
嵌入式面试题 C/C++ 栈面试题总结
【代码】C/C++ 数据结构 - 栈。原创 2023-10-04 01:38:32 · 399 阅读 · 0 评论 -
嵌入式面试题 C/C++ 字符串面试题总结
解析:整数转化为字符串,可以采用加‘0’,再的办法 整数加‘0’就会隐性转化成char类型的数。可以采用减‘0’再乘10累加的办法,字符串减‘0’就会隐性转化成int类型的数。例如:第一个字符串是"ABACDEFGH" 第二个字符串是"BCD" 则第三个字符串是"AAEFGH"原创 2023-10-03 17:15:45 · 412 阅读 · 0 评论 -
嵌入式面试题 C/C++ 排序算法面试题总结
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。原创 2023-10-04 01:26:02 · 1036 阅读 · 0 评论 -
嵌入式面试题 C/C++ 二分查找面试题总结
使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从 0 开始计数)。给你旋转后的数组 a 和一个整数 x,如果 nums 中存在这个目标值 x ,则返回它的下标,否则返回 -1。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。原创 2023-10-03 21:21:10 · 337 阅读 · 0 评论 -
嵌入式面试题 linux操作系统常见面试题
该注册函数是早期的注册函数,major是设备的主设备号,name是驱动程序的名称,而fops是默认的file_operations结构(这 是只限于file_operations结构)。而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进。通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于。原创 2023-10-03 15:09:36 · 706 阅读 · 1 评论 -
嵌入式面试题 linux驱动常见面试题
1.Linux设备驱动的分类-> 字符设备 -> 块设备 -> 网络设备字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。块设备可以用任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和块设备并没有明显的界限,如对于Flash设备,符合块设备的特点,但是我们仍然可以把它作为一个字符设备来访问。网络设备在Linux里做专门的处理。Linux的网络系统...原创 2021-08-26 23:38:22 · 3831 阅读 · 0 评论 -
嵌入式面试题 linux应用编程常见面试题
1.什么是进程,什么是线程?进程是系统中正在运行的一个程序,程序一旦运行就是进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。线程是CPU独立运行和独立调度的基本单位。一个进程可以拥有多个线程,线程是进程的一个实体,是进程的一条执行路径。2.进程和线程之间的区别是什么:第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数原创 2021-09-01 21:33:52 · 1928 阅读 · 1 评论 -
嵌入式面试题 C/C++常见面试题整理_6
deque双端数组,可以在头尾两端分别做元素的插入和删除操作,除非必要,应尽可能的选择使用vector而非deque,因为 deque的迭代器比vector的迭代器要复杂的多。执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。首先计算k,由于k的初值为0,k++是后坐,因此k++在参与比较的时候是0(假),比较以后k值增1(变为1),这时,系统不会再计算&&后面的表达式了(即。原创 2023-10-03 15:02:07 · 1113 阅读 · 1 评论 -
嵌入式面试题 C语言常见面试题整理_5
1.标识符标识符是C程序的最基本组成部分,例如:变量名称、函数名称、数据类型等等,都是一个标识符。标识符的要求是:必须由字母(区分大小写)、数字、下划线组成。而且,标识符的第一个字符不可以是数字。例如:abc --- 合法_abc123 --- 合法abc555 --- 合法123abc --- 非法abc$!! --- 非法下列字符串可以用作C++标识...原创 2021-09-05 20:07:57 · 7314 阅读 · 1 评论 -
嵌入式面试题 C语言常见面试题整理_4
1.什么时候数组和指针是相同的-> 表达式中的数组名就是就是指针int a[10], *p, i = 2;p = a;p[i];-> C语言把数组下标作为指针的变异量int a[10],p = a;for(i =0; i < 10; i++) *(p + i) = 0;-> 在函数参数的声明中,数组名被编译器当作指向该数组第一元素的指针my_function(int turnip[]){}2.为什么C语言把数组形参当作指针原创 2021-08-26 22:56:15 · 183 阅读 · 1 评论 -
嵌入式面试题 C语言常见面试题整理_3
1.输出数据对齐问题Printf(“%-6x”,x); 输出的数据是左对齐,没有加 - 是右对齐。左对齐:printf(“%d\n”,101010); 默认的方式是左对齐。printf(“%-10d\n”,101010); 在打印数字宽度前面加一个“-”也是左对齐,10表示数字宽度为10,如果打印的位数小于10,则后面补足空格,如果打印的位数大于10,则打印所有的数字,不会截断。printf(“%10d”,101010); 在%和d之间加上数字宽度,就可以右对齐了,10表示数字宽度.原创 2021-08-25 23:41:26 · 1314 阅读 · 1 评论 -
嵌入式面试题 C语言常见面试题整理_2
1.一个32位的机器,该机器的指针是多少位?指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。2.局部变量能否和全局变量重名?能,局部会屏蔽全局。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。3.判断x=x+1,.原创 2021-08-25 22:40:03 · 329 阅读 · 1 评论 -
嵌入式面试题 C语言常见面试题整理_1
1.new与malloc的区别-> 申请的内存所在位置不同new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。-> 是否需要指定内存大小使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算,而malloc则需要显式地指出所需内存的尺寸。->对数组的处理C++提供了new[]与delet.原创 2021-08-25 21:24:56 · 1638 阅读 · 1 评论