当前位置:网站首页>小米笔试真题一
小米笔试真题一
2022-07-05 06:36:00 【一只嵌入式爱好者】
第一题
下述算法的时间复杂度为()
A、O(log2n)
B、O(n)
C、O(nlog2n)
D、O(n^2)
intfact(int n) {
if (n <= 1) return 1;
return n * fact(n-1);
}
答案:B
解析:这个相当于就是遍历了一遍,从N到1的值。 然后每次去乘以上次得到的值。时间复杂度为线性阶,简单来讲就是利用递归实现求N的阶乘,代码执行n次
第二题
在现代Linux 系统和 Windows 系统中,如果希望可以在任意目录下直接通过输入文件名运行一个程序,需要把程序所在路径添加到哪个环境变量里面?( )
A、PWD
B、PATH
C、SHELL
D、EXEC
答案:B
解析:linux脚本文件在任何路径下输入文件名可直接运行,所以将该程序当成脚本处理即可。Linux的命令可以分为内部命令(内置命令)和外部命令:内置命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。而外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。输入并运行外部命令后,shell通过path环境变量找到命令的位置,即去这些目录下面找对应的应用程序,如果找到了,就创建一个进程,在这个进程里执行这条命令,没找到就报错
推荐阅读:Linux必备基础
第三题
小米有品的消费记录分别为900,512,613,700,810,若采用选择排序算法对其进行递增排序,则第三趟排序结果为 ( )
A、900 512 613 700 810
B、512 900 613 700 810
C、512 613 700 900 810
D、512 613 700 810 900
答案:C
解析:递增选择排序:第一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小元素,然后放到已排序的序列的末尾,以此比较直到最后一个数
第一轮: 512 900 613 700 810
第二轮: 512 613 900 700 810
第三轮: 512 613 700 900 810
第四题
关于inline函数的使用,以下哪些选项的描述是正确的()
A、在一个.c文件中定义的inline函数可以在另一个.c文件中使用,且如果小于10行,编译器会把inline 函数展开,发挥其性能优势。
B、inline函数应该简洁,如果语句较多,不适合定义为内联函数
C、inline函数中,一般不建议有循环、if或switch语句,否则,函数定义时即使有inline关键字,编译器也可能会把该函数作为非内联函数处理。
D、inline函数要在函数被调用之前声明。
答案:B C D
解析:C++内联函数概念
第五题
假设有一个栈,元素依次进栈的顺序是A,B,C,D,E。下列不可能的出栈顺序是( )
A、E,D,C,B,A
B、A,B,C,D,E
C、B,C,D,E,A
D、E,A,B,C,D
答案:D
解析:↓代表进栈,↑代表出栈。
A选项:A↓,B↓,C↓,D↓,E↓,E↑, D↑, C↑, B↑, A↑
B选项:A↓, A↑,B↓, B↑,C↓, C↑,D↓, D↑,E↓, E↑
C选项:A↓, B↓, B↑, C↓, C↑,D↓, D↑,E↓, E↑, A↑
D选项:无法实现
第六题
以下关于死锁,描述正确的有? ( )
A、有序分配锁资源可以预防死锁
B、银行家算法是用于检测死锁的
C、剥夺死锁进程的所有资源可以解除死锁
D、其他描述都不对
答案:A C
解析:银行家算法用于预防死锁
第七题
关于主键,描述正确的是()
A、一个表可以有多个主键
B、主键不可以为空
C、建立主键的同时也会建立一个唯一性索引
D、主键可以包含多个属性,如联合主键
答案:B C D
解析:一个表只能有一个主键,不能有多个主键。 主键不能为空,以确保表的数据是唯一的。 联合主键也是一个主键。
第八题
在对信号的进样采样过程中,当采样频率至少大于()时,才可能完整地保留原始信号中的信息。
A、最高频率
B、最高频率的2倍
C、最高频率的4倍
D、永远无法完整保留
答案:B
解析:在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率Fmax(指低通的,带通的或者高通的有其他的转换方式)的2倍时,即:fs.max>=2Fmax,则采样之后的数字信号完整地保留了原始信号中的信息,就是可以不失真的恢复出原始的模拟信号。一般实际应用中保证采样频率为信号最高频率的5~10倍;采样定理又称奈奎斯特抽样定理。
第九题
下面对于进程和线程的叙述错误的是()
A、地址空间:进程至少有一个线程,线程共享进程的地址空间,而进程有自己独立的地址空间
B、进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源
C、两者均可并发执行
D、进程是处理器调度的基本单位,但线程不是
答案:D
解析:
进程和线程的区别
地址空间:线程共享本进程的地址空间,而进程之间是独立的地址空间。
资源:线程共享本进程的资源如内存、I/O、cpu等,不利于资源的管理和保护,而进程之间的资源是独立的,能很好的进行资源管理和保护。
健壮性:多进程要比多线程健壮,一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。
执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,执行开销大。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,执行开销小。
可并发性:两者均可并发执行。
切换时的资源消耗:进程切换时,消耗的资源大。涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。
基本单位:线程是处理器调度的基本单位,进程是系统进行资源分配和调度的基本单位。
第十题
下面哪种方法可以避免编译器对结构体进行对齐优化?()
A、
struct
{
unsigned char head;
unsigned char sector;
unsigned char cylinder;
};
B、
struct
{
unsigned char head;
unsigned char sector;
unsigned char cylinder;
}__attribute__((pack));
C、
struct
{
unsigned char head;
unsigned char sector;
unsigned char cylinder;
}__attribute__((packed));
D、
struct
{
unsigned char head;
unsigned char sector;
unsigned char cylinder;
}__attribute__((aligned(0)));
答案:C D
解析:加上__attribute__((packed)),可以防止编译器对结构进行字节对齐优化。使用__attribute__((aligned(0)))(0为对齐字节数),强制编译器按照0字节对齐。
推荐阅读:结构体的对齐规则及举例
第十一题
下面关于构造函数和析构函数说法正确的是( )
A、delete 只会调用一次析构函数,而delete[]会调用每一个成员的析构函数
B、析构函数的调用次序:先派生类的析构后基类的析构
C、构造函数的调用次序:先基类的构造后派生类的构造
D、析构函数的调用次序:先基类的析构后派生类的析构
答案:A B C
解析:构造函数:先有基类构造,再有派生类构造。派生类可以对基类构造函数进行重载。 析构函数:从派生类先开始析构,再析构基类。因为派生类构造函数是重载的,所以要先析构。 二者的过程是相反的。
第十二题
C 语言中,static关键字说法正确的有:()
A、用static修饰的全局变量可以在运行时修改
B、用static修饰的函数,其内部变量可以传递给其他函数
C、在a.c 文件中,有一个 static 修饰的函数,任何情况下都不可能在 b.c 中被调用
D、其余说法均不对
答案:A B
解析:考察对static关键字理解,使用const关键字可以设置变量不允许修改。同文件内,函数可以通过返回变量值传给其他函数,加了static关键字不影响
推荐阅读:static、register、volatile、const、extern关键字
第十三题
ARM寄存器中$r13代表(1)指针,指向(2);$15代表(3)指针,指向(4)。
正确答案:
1 SP
2 栈顶
3 PC
4 程序接下来要执行的指令地址
解析:
PC:program counter 是通用寄存器,可以用来指向当前运行指令的下一条指令
SP:stack pointer 堆栈指针,也是由通用寄存器进行存取,用于入账和出栈的相关操作
ARM微处理器共有37个32位寄存器,通用寄存器包括R0~R15,可以分为3类:
(1)未分组寄存器R0~R7
(2)分组寄存器R8~R14
(3)程序计数器PC(R15)
R13在ARM指令中常用作堆栈指针SP
R14称为子程序链接寄存器LR(Link Register),当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份
总结
牛客网上的小米真题知识点比较杂,暂时没找到哪里可以分类
边栏推荐
- Financial risk control practice -- feature derivation based on time series
- 时间很快,请多做有意义的事情
- [MySQL 8.0 does not support capitalization of table names - corresponding scheme]
- Using handler in a new thread
- 微信小程序路由再次跳转不触发onload
- Design specification for mobile folding screen
- inux摄像头(mipi接口)简要说明
- 5. Oracle tablespace
- [tf] Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initial
- Technology blog learning website
猜你喜欢
Get class files and attributes by reflection
Spinningup drawing curve
GDB code debugging
Adg5412fbruz-rl7 applies dual power analog switch and multiplexer IC
Pycahrm reports an error: indentation error: unindent does not match any outer indentation
inux摄像头(mipi接口)简要说明
What is linting
MySQL (UDF authorization)
Chinese remainder theorem acwing 204 Strange way of expressing integers
Vant weave swipecell sets multiple buttons
随机推荐
2022-5-the fourth week daily
时间很快,请多做有意义的事情
Error: "mountvolume.setup failed for volume PVC fault handling
Chinese remainder theorem acwing 204 Strange way of expressing integers
Relevant information of National Natural Science Foundation of China
Record of problems in ollvm compilation
Financial risk control practice -- feature derivation based on time series
UIO driven framework
2.Oracle-数据文件的添加及管理
Vant Weapp SwipeCell設置多個按鈕
RecyclerView的应用
Adg5412fbruz-rl7 applies dual power analog switch and multiplexer IC
MPLS experiment
扫盲-以太网MII接口类型大全-MII、RMII、SMII、GMII、RGMII、SGMII、XGMII、XAUI、RXAUI
[MySQL 8.0 does not support capitalization of table names - corresponding scheme]
ROS2——node节点(七)
Install opencv -- CONDA to establish a virtual environment and add the kernel of this environment in jupyter
[nvidia] CUDA_ VISIBLE_ DEVICES
Orin installs CUDA environment
2022年中纪实 -- 一个普通人的经历