文章目录
- 下面java代码的执行结果是?()
class A {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("a", "1");
map.put("a", "2");
map.put("b", "3");
map.put("c", "3");
map.put("d", null);
map.put(null, "4");
System.out.println("HashMap " + map.size());
}
}
正确答案: B 你的答案: D (错误)
A. 4
B. 5
C. 6
D. 运行时异常
HashMap中key和value都可以为null,但最多只有一个key为null,可以有多个值为null
map不允许键重复,键重复会进行覆盖
- 下面程序段运行结果是什么?()
int i=0;
int a[]={3,6,4,8,5,6};
do{
a[i]-=3;
}while(a[i++]<4);
for(i=0;i<6;i++){
printf("%d",a[i]);
}
正确答案: A 你的答案: A (正确)
031556
064856
031523
0364856
语法: do{循环体;}while(表达式) 2、循环过程: (1)先执行循环体,执行完毕跳转到2 (2)判断表达式的结果是否为真,如果为真,跳转到1,否则跳转到3 (3)跳出循环
- Linux系统中关于进程与线程的描述错误的是( )
正确答案: C 你的答案: B (错误)
进程是处于执行期的程序以及相关资源的总称
内核调度的对象是线程,而不是进程
当进程处于TASK_UNINTERRUPTIBLE状态时可以被杀死
线程被视为一个与其他进程共享某些资源的进程
线程通过clone()复制其他进程(或线程)的task_struct实现,原进程(或线程)的资源不会为该线程重写分配,因此导致这个线程与其他进程(或线程)共享资源,从这个角度看,线程也只是一种没有自己的资源的进程
- 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( )
正确答案: B 你的答案: A (错误)
for(i=1,p=1;i<=5;i++) p*=i;
for(i=1;i<=5;i++){ p=1; p*=i;}
i=1;p=1;while(i<=5){p*=i; i++;}
i=1;p=1;do{p*=i; i++; }while(i<=5);
因为每次for的时候p都会被重新设成1,所以没有根本没计算
- 初始化一个C程序二维数组代码如:
int a[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
请问 a[1][4] 的值为多少?()
正确答案: C 你的答案: B (错误)
A. 4
B. 9
C. 10
D. 11
a被定义为3行5列的二维数组,也可以理解为矩阵,将花括号内的值按顺序约束为矩阵后,找第2行第5列的值即可。数组索引是从0开始的。 - 单向链表已经可以实现非连续存储,为什么还需要双向链表?()
正确答案: B 你的答案: B (正确)
A. 双向链表更稳定
B. 双向链表中的任意一个结点都可以直接访问前驱结点和后继结点
C. 双向链表删除节点更方便
D. 双向链表复杂度更低 - 下面关于网络协议错误的是: ( )
正确答案: D 你的答案: D (正确)
传输控制协议(TCP),面向连接,提供可靠的数据传输。
用户数据报协议(UDP),无连接,提供不可靠的数据传输。
TCP和UDP协议都属于传输层协议。
Socket通信只能使用TCP协议进行通信。
创建Socket连接时,可以指定使用的传输层协议,socket可以支持不同的传输层协议(TCP/UDP),当使用TCP协议进行连接时,该socket接连就是TCP链接.
- 在一棵二叉树上第10层的节点数最多是()
正确答案: C 你的答案: C (正确)
128
256
512
1024
2^(10-1)= 512
- 关于进程内存空间描述错误的是?( )
正确答案: D 你的答案: B (错误)
函数参数,局部变量自动分配在栈上。
栈的空间大小是有限制的,当函数调用层次过深时会出现栈溢出。
在堆上分配的内存需要程序主动释放。
程序结束时,在堆上分配的没有释放的内存会造成泄漏。
程序结束时(不管是正常结束还是异常结束),操作系统会释放该进程所有资源
程序结束时,你程序所分配的内存会被系统自动回收,不存在内存泄漏的问题;内存泄漏是在在程序运行中有内存没有被使用到
对于普通用户来说,泄不泄露影响不大,关机重启就清空了;对于服务器这类需要一直持续运转的硬件而言,内存总归是有限的、如果一直发生内存泄露就会导致最后没有空间可用。
- 下面哪个操作系统不使用Linux内核 ? ( )
正确答案: B 你的答案: B (正确)
A. Android
B. MacOS
C. Ubuntu
D. RedHat
macos 使用 unix 内核不是 linux 内核
- 下面哪种情况不会触发进程调度?()
正确答案: C 你的答案: B (错误)
正在运行的进程所分配的时间片结束
正在运行的进程访问一个临界区时,保护此临界区的互斥信号量已经被其他进程加锁
当一个进程执行了一条转移指令后
当一个进程创建了一个新进程时
就绪状态 >>> 运行状态 (这个过程会出现任务调度)
A. 当任务完成之后,就会从从运行状态转换为就绪状态。
B.当进程访问临界区时,其他进程加锁,那么他就处于就绪状态,当其他程序释放所之后,他就会进入运行状态
C.当一个进程执行了一条转移指令后,这里我们举例:中断就是一个转移指令,当我们产生中断时程序会从运行状态变为阻塞状态,并不会引起任务调度
D.当我们创建一个新的进程时,新的进程处于就绪状态
- 在下列汇编指令的表示中,正确的是( )
正确答案: A C D 你的答案: B (错误)
MOV AL, [BX+SI+20]
DEC [BX]
XCHG VAL1, AX
SUB [BX],[BP][DI] - 下面关于C程序的存储空间,描述正确的是?()
正确答案: A B C D 你的答案: A B (错误)
局部变量存放在栈上
全局变量存放在数据段
静态变量存放在数据段
C++中new一个对象是从堆上分配内存的 - 希尔排序是1959年提出的一种排序算法,下列有关希尔排序描述正确的有哪些?()
正确答案: A C 你的答案: A C (正确)
希尔排序是插入排序的改进版本
希尔排序是冒泡排序的改进版本
增量的选择直接影响着排序的速度与效率
希尔排序是一种十分稳定的算法 - 关于下列代码描述正确的有哪些?()
void sort(vector<int>& nums){
for(int i=0;i<nums.size();i++){
for(int j=i;j<nums.size();j++){
if(nums[j]<nums[i]){
int temp=nums[i];
nums[i]=nums[j];nums[j]=temp;
}
}
}
}
正确答案: B C D 你的答案: B C (错误)
这是插入排序
这是冒泡排序
空间复杂度为O(1)
时间复杂度为O(n^2)
选定一个值与剩余的值进行比较,逐位排序,这是冒泡。时间复杂度是指程序的执行次数,有两个for循环的嵌套所以是O(N^2)。空间复杂度是变量的个数,自始至终只有一个中间变量tmp所以是O(1).
- 下面关于文件系统,描述不正确的是?()
正确答案: A C D 你的答案: A C (错误)
进程终止后,这个进程所打开的文件也会被系统删除
删除一个文件,同时会删除与此文件对应的文件控制块
一个文件在磁盘上存放的磁盘块必须是相邻的
符号连接所连接的文件被删除后,符号连接也会消失
A . 进程终止时,进程独有的内存空间会被释放,但是一些共享资源不会被释放。
B. 正确。
C. 一个文件在磁盘上不一定是连续的地址,但是在进程空间中,通过页表的地址映射可以使得数据是连续的。
D. 符号连接的文件被删除后,链接只是被认为是“死链接”,并没有被删除。
- 下面关于排序算法描述正确的是()
正确答案: B D 你的答案: A B (错误)
冒泡排序的最好情况和最坏情况时间复杂度一样
归并排序的最好情况和最坏情况时间复杂度一样
选择排序的最好情况和最坏情况时间复杂度不一样
直接插入排序的最好情况和最坏情况时间复杂度不一样 - 关于操作系统分段机制描述正确的是( )
正确答案: A B C D 你的答案: A B (错误)
数据段存放程序中的静态变量和已初始化且不为零的全局变量
代码段存放可执行文件的操作指令,代码段是只读的,不可进行写操作
BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用前由运行时初始化为零
分段是为了提高内存利用率,减少内存碎片 - 关于操作系统分段机制描述正确的是( )
正确答案: A B C D 你的答案: A B (错误)
数据段存放程序中的静态变量和已初始化且不为零的全局变量
代码段存放可执行文件的操作指令,代码段是只读的,不可进行写操作
BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用前由运行时初始化为零
分段是为了提高内存利用率,减少内存碎片