《嵌入式软件开发笔试与面试手册》: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 ps和df  B ls和df  C ps和top  D df和top     6.耦合是影响软件复杂程度的一个非常重要的因素。进行软件程序设计时,耦合有一些基本原则需要遵循,遵循这些原则能够有助于设计出更加优秀的软件系统,下列选项中,关于这些原则描述错误的是()  A耦合是无法彻底避免的,在实际使用中,应该尽量使用数据耦合  B在实际使用中,要尽量多使用内容耦合,原因是内容耦合是较低程度的耦合  C尽量少使用控制合和特征耦合  D要尽量限制公共环境耦合的范围     C++基础2分  1.STL中的unordered_map和priority_queue使用的底层数据结构分别是什么()  A rbtree,heap  B rbtree,queue  C hashtable,heap  D hashtable,queue     2.C++11中有一个非常大的变化就是引入了三种智能指针,下列选项中,属于这三种智能指针正确组合的是()  A std::shared ptr、std:weak_ptr和std:unique ptr  B std:shared_ptr、std:stick_ptr和std::unique ptr  C std:shared_ptr、std:weak_ptr和std::future ptr  D std:set_ptr、std:weak_ptr和std::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.求一个数x的n次方最朴素的方式是在1的基础上乘n次x,如果用递归,显然会执行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 的容量,这
点赞 7
评论 0
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-29 11:57
投递浪潮等公司10个岗位
点赞 评论 收藏
分享
allin秋招的单身...:我投过这家 上来就发个设计图给我,让我做好发到他邮箱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务