立芯研发工程师(R&D)笔试 9-20

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《嵌入式软件笔试-2023年真题汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

综合知识单选题(2)

1.下面文于“单例模式”错误的是()

A对于一些需要频繁创建和销的对象,单例模式可以提高系统的性能。

B它可以保证某个类在程序运行过程中最多只有一个实例,也就是对象实例只占用一份内存资源。

C使用单例,可以确保其它类只获取类的一份数据。

D由于单例模式中没有抽象层,因此单例很难进行类的扩展。

 

2. Linux,使用什么命令来创建一个新的压缩归档文件()

A compress -tf

B gzip-t

C tar -cfz

D bzip2 -tbz

 

3.在支持多线程的系统中,隶属于同一个进程的多个线程不能共享的是()

A进程所打开的文件

B进程的代码段

C进程的全局变量

D保存函数参数、返回地址等信息的堆栈

 

4.进程从运行状态进入就绪状态的原因可能是()

A等待的事件已发生

B被选中占有处理机

C等待某一事件

D时间片用完

 

5.Linux系统中,以下哪两个命令可以显示系统中运行的进程状态()

A psdf

B lsdf

C pstop

D dftop

 

6.耦合是影响软件复杂程度的一个非常重要的因素。进行软件程序设计时,耦合有一些基本原则需要遵循,遵循这些原则能够有助于设计出更加优秀的软件系统,下列选项中,关于这些原则描述错误的是()

A耦合是无法彻底避免的,在实际使用中,应该尽量使用数据耦合

B在实际使用中,要尽量多使用内容耦合,原因是内容耦合是较低程度的耦合

C尽量少使用控制合和特征耦合

D要尽量限制公共环境耦合的范围

 

C++基础2

1.STL中的unordered_mappriority_queue使用的底层数据结构分别是什么()

A rbtree,heap

B rbtree,queue

C hashtable,heap

D hashtable,queue

 

2.C++11中有一个非常大的变化就是引入了三种智能指针,下列选项中,属于这三种智能指针正确组合的是()

A std::shared ptrstd:weak_ptrstd:unique ptr

B std:shared_ptr、std:stick_ptrstd::unique ptr

C std:shared_ptr、std:weak_ptrstd::future ptr

D std:set_ptr、std:weak_ptrstd::unique_ptr

 

3.下列哪个查找最快()

A二分查找

B 哈希表法(散列表)

C 顺序查找

D二叉排序树查找

 

4.下面C++程序的运行结果为()

#include <iostream>
using namespace std;

int solve(int x) {
    if (x == 0 || x == 1) {
        return x;
    }
    if (x % 2 == 0) {
        return 1 + solve(x / 2);
    } else {
        return 1 + solve((x + 1) / 2);
    }
}

int main() {
    int n = 100;
    int ans = solve(n);
    cout << ans << endl;
    return 0;
}

A 8

B 6

C 7

D 9

 

5.归并排序相对于快速排序的优点不包括()

A空间复杂度低

B是稳定的

C最坏的情况更高效

D不会退化

 

6.栈的特点是先进后出。栈底至栈顶依次存放元素ABCD,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()

A DBCEA

B DCBEA

C DEBCA

D DCAEB

 

7.在具有2n个结点的完全二叉树中,叶子结点个数为()

A n-1

B n

C n+1

D n/2

 

8.抽象基类是指()

A含有纯虚函数

B嵌套类

C派生类

D多继承类

 

9.有关广度优先搜索 (Breadth-first Search)和深度优先搜索 (Depth-first Search),以下说法中正确的是:()

A 在解决最短路径问顾时,Dikstra算法 (Dikstra's algorithm)本质上是一种考虑了边(Edge)的权重的深度优先搜索。

B广度优先搜索和深度优先搜索都可以用于遍历一棵树。

C在解决迷宫问题时,深度优先搜索总会比广度优先搜索更快地找到迷宫出口。

D广度优先搜索需要在搜索的每一层保存该层的所有结点,这一操作只能用队列这种数据结构来完成。

 

10.求一个数xn次方最朴素的方式是在1的基础上乘nx,如果用递归,显然会执行n次递归函数,时间复杂度为O(N)。不过可以通过对n的奇偶性判断来加大递归步长,每次可将范围减半,即如果n是偶数,那么x^n =x^(n/2)*x^(n/2),下面的函数是实现了这个过程的完整代码,它的时间复杂度为()

int pow(int x, unsigned int n)
{
	if (n == e)
		return 1;
	if (n & 1)
		return pow(x, n/2)* pow(x,n / 2)*x;
	else
		return pow(x, n/ 2)* pow(x, n / 2);
}

A O(N*log(N))

B O(logN)

C O(N)

D O(N^2)

 

11.N有向图G=(VE).V={a,b,e,d,e,r,g}

E={<a,b>,<a,c>,<a,d>,<b,e>,<c,e>,<c,f>,<d,f>,<e,g>,<f,g>}则图G的拓扑序列是()

A a,c,d,e,b,f,g

B a,c,d,t,b,e,g

C a,c,b,6,d,e,g

D a,b,e,c,d,f,g

 

12.C++static类型的变量,默认的初始化值是()

A 1

B 0

C空格符

D随机变量

 

13.数组与链表的区别是()

A两者长度均固定

B前者长度固定,后者长度可变

C后者长度固定,前者长度可变

D两者长度均可变

 

14.

char a; int b; float c; double d;

则表达式a*b+d-c值的类型为()

A char

B float

C int

D double

 

简答10

1.vevtor push_back的时间复杂度是多少?在已知 vector容量前提下,如何避免额外的开销,提升 vector push_back 性能?

通常情况下,push_back 的操作是常数时间复杂度(O(1))。这是因为 std::vector 通常预留一定的空间来存储额外的元素,所以大多数 push_back 操作只涉及将新元素放置在这个预留空间中。

当 vector 的容量已满时,进行 push_back 操作需要扩容,这涉及到分配新的更大的内存空间,并将所有现有元素复制(或移动)到新的内存地址。这个操作的时间复杂度是线性的(O(n)),因为它依赖于 vector 当前的元素数量。

使用 std::vector::reserve() 方法。这个方法允许你指定 vector 的容量,这

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

2024-12-02 12:13
蚌埠坦克学院 C++
陆地鲨鱼_:我也是二面后等两周,明天下午终面cpp,接佬好运,请问佬base在哪儿啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2024-12-26 20:52
已编辑
经纬恒润 嵌入式软件工程师 17k×12+7.6w 硕士211
点赞 评论 收藏
分享
2024-12-25 02:23
厦门大学 算法工程师
美团 数据科学 n*15.5+2.6n签字费+6.6n股票
点赞 评论 收藏
分享
评论
7
29
分享

创作者周榜

更多
牛客网
牛客企业服务