锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

cvte嵌入式(Linux方向)笔试总结-提前批+正式批

时间:2022-11-03 11:00:00 lp1484三极管

百度
紫光
大疆
爱奇艺
科大讯飞
cvte
蔚来
大华
乐鑫
联发科

提前批

选择20道
(1)字符设备驱动与块设备驱动的区别
可以在系统中随机访问固定大小的数据片(无需按顺序)(chunks)这些数据片被称为块设备。最常见的块设备是硬盘,除了软盘驱动器,CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。
另一种基本的设备类型是字符设备。字符设备按字符流有序访问,如串口和
键盘。如果硬件设备通过字符流访问,则应归类为字符设备;另一方面,如果设备随机(无序)访问,则属于块设备。
块设备通过系统缓存读取,而不是直接读取物理磁盘。没有系统缓存,字符设备可以直接读取物理磁盘(如键盘,直接中断)

(2)键盘属于什么设备? 字符型设备

(3)ARM哪种数据存储形式的处理器?
ARM大端和小端的处理器

(4)int a=6;int *p = &a;int **q1 = &p;int &q2 = *p;各自的数据是多少,合法与否

#include "stdafx.h" #include #include using namespace std; int main() { 
          int a = 6;  int *p = &a;  int **q1 = &p;  int &q2 = *p;  cout << "**q1 = " << **q1 << endl;  cout << "q2 = " << q2 << endl;  system("pause");  return 0; } 

都合法

(5)双向链表拼接的时间复杂性 暂定O(1)
需要注意:
双向链表特性
??1.每次插入或删除节点时, 引用四个节点, 而不是两个. 更难实现
??2.与单向链表相比, 内存空间必然更大.
??3.可以从头到尾遍历, 也可以从尾遍历到头
区别:时间复杂O(m n) 是 线性阶 O(n),例算法:例如 链表长度m和长度n 合并

(6)程序的正常工作模式是用户模式吗?
C语言程序通常在用户模式下运行。操作系统的汇编部分在管理模式和系统模式下运行运行统模式是为了解决操作系统在管理模式下无法访问用户模式下的部分存储而设置的。还有快速中断模式、快速中断模式、数据访问终止模式和指令终止模式。

(7)什么GPIO高电平输出模式加上上拉
泄漏输出:输出端相当于三极管的集电极。为了获得高电平能获得高电平状态。适用于电流驱动,其吸收电流的能力相对较强(一般为20mA以内)
阅读文章:https://blog.csdn.net/santa9527/article/details/78842832

(8)C 重载和重写,Base *b = &d;当基类和衍生类有相同的函数名时,如何执行?
(9)派生类和基类的重名函数virtual当基类没有标记时,是否对基类有重写作用? 没有
(10)char *pl[] = {“CVTEGOOD”};puts(dp[1]打印什么? 2020
puts函数功能是将字符串输出到屏幕。输出时只有遇到 ‘\0’ 也就是说,只有在字符串结束时,标志才会停止。
测试代码

#include "stdafx.h" #include #include
#include
using namespace std;
int main()
{ 
        
	char *lp[] = { 
         "CVTE","2020","WELCOME" };
	puts(lp[1]);
	system("pause");
	return 0;
}

(11)改变内核打印优先级用什么命令(例echo 1 4 1 7 > /usr/sys/kernel/printk)
#echo 1 4 1 7 > /proc/sys/kernel/printk

(12)std的筛选排序等函数应用:partial_sort,set_difference,parational
STL set中有set_union(取两集合并集)、set_intersection(取两集合交集)、set_difference(取两集合差集)。

1、这几个函数的参数一样。
2、set_union(x1.begin(), x1.end(), x2.begin(), x2.end(), inserter(x, x.end())),前两个参数是集合x1的头尾,再依次是集合x2的头尾,最后一个参数就是将集合x1和集合x2取合集后存入集合x中。

(13)ps -u命令意思 查看指定用户所有进程
命令格式
ps命令基本格式为:
ps [options]
常用参数
-A 显示所有进程(同-e)
-a 显示当前终端的所有进程
-u 显示进程的用户信息
-o 以用户自定义形式显示进程信息
-f 显示程序间的关系
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。

• USER:该进程属于那个使用者账号的?
• PID :该进程的进程ID号。
• %CPU:该进程使用掉的 CPU 资源百分比;
• %MEM:该进程所占用的物理内存百分比;
• VSZ :该进程使用掉的虚拟内存量 (Kbytes)
• RSS :该进程占用的固定的内存量 (Kbytes)
• TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
• STAT:该程序目前的状态,主要的状态有:
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
• START:该进程被触发启动的时间;
• TIME :该进程实际使用 CPU 运作的时间。
• COMMAND:该程序的实际指令为什么?

(14)局部函数使用数组作为参数
功能测试代码

#include "stdafx.h"
#include
#include
using namespace std;

//1.局部函数在使用数组作为参数时,会将i数组的首地址(即数组名)传入作为参数,访问元素则用下标访问
//2.既然传入的是地址,所以我们不仅可以调用元素,还可以修改元素参数
//3.char i[20]的20形同虚设,等效于char i[]
int fun(char i[20])
{ 
        
	printf("局部函数i数组首地址 = %ld\n", i);
	i[1] = '0';
	cout << "Base fun act" << endl;
	return sizeof(i);
}



int main()
{ 
        
	char i[10] = { 
        '1','9','8','0'};
	cout << "src sizeof(i[10])" << sizeof(i) << endl;
	printf("局部函数修改i[1]前的元素大小为:%c\n", i[1]);

	int res = fun(i);
	printf("局部函数修改i[1]后的元素大小为:%c\n", i[1]);

	//可以越界访问,但是数据后果不确定
	//cout << "src i[11]" << (int)i[11] << endl;
	
	//输出i数组的数组首地址不能使用cout直接输出,因为cout<<会重载使i会按顺序输出内容而不是首地址
	printf("main函数i数组首地址 = %ld\n", i);

	//可以知道其实传入局部参数的是数组的首元素地址
	cout << "fun->sizeof(i)=" << res << endl;
	
	system("pause");
	return 0;
}

编程2道(放在中间)
1.盒子里面n个球,每次可以拿1个或者2个,一共有多少种拿法
2.分解质因数
参考代码

#include "stdafx.h"
#include
#include
using namespace std;
int main()
{ 
        
	int num = 0;
	cin >> num;
	cout << num << "=";
	for (int i = 2; i < num; i++)
		while (!(num % i))//注意这里的!优先级比%大
		{ 
        
			cout << i << "*";
			num = num / i;
		}
	cout << num << endl;
	system("pause");
	return 0;
}

正式批

(1)linux的内核子系统包括哪些

Linux内核主要由5个子系统组成:进程调度(SCHED),内存管理(MM),虚拟文件系统(VFS),网络接口(NET),进程间通信(IPC)。

(2)i2c的设备地址范围 0~127 7位地址位 一位读写位

(3)下列哪个不需要线程同步 x=1?x=y?

(4)将cvte1复制为cvte2可以用下列哪些命令?

(5)抽象类的继承类不需要实现所有的纯虚函数?
纯虚函数要求在派生类中必须被重新定义,否则派生类依然是抽象类,无法创建对象。这样的要求带有一定的强制性,让程序员针对不同的派生类实现不同的函数,这是有必要的,可以防止遗漏和错误;

(6)64位操作系统下,char maxhub[]=”maxhub\0\0\x11\”; 11,6,8 (暂定)
测试代码

cout<<sizeof(maxhub)<<,<<strlen(maxhub)<<,<<sizeof(maxhub+1);
#include "stdafx.h"
#include 
#include
#include
#include
using namespace std;

int main()
{ 
        
	char maxhub[] = "maxhub\0\0\x11\\";
	cout << sizeof(maxhub) << "," << strlen(maxhub) << ","<<sizeof(maxhub + 1) << endl;
	system("pause");
	return 0;
}
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章