Java百题大战

文章目录

  1. 下面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不允许键重复,键重复会进行覆盖

  1. 下面程序段运行结果是什么?()
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)跳出循环

  1. Linux系统中关于进程与线程的描述错误的是( )
    正确答案: C 你的答案: B (错误)
    进程是处于执行期的程序以及相关资源的总称
    内核调度的对象是线程,而不是进程
    当进程处于TASK_UNINTERRUPTIBLE状态时可以被杀死
    线程被视为一个与其他进程共享某些资源的进程

线程通过clone()复制其他进程(或线程)的task_struct实现,原进程(或线程)的资源不会为该线程重写分配,因此导致这个线程与其他进程(或线程)共享资源,从这个角度看,线程也只是一种没有自己的资源的进程

  1. 若变量已正确定义,要求程序段完成求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,所以没有根本没计算

  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开始的。
  2. 单向链表已经可以实现非连续存储,为什么还需要双向链表?()
    正确答案: B 你的答案: B (正确)
    A. 双向链表更稳定
    B. 双向链表中的任意一个结点都可以直接访问前驱结点和后继结点
    C. 双向链表删除节点更方便
    D. 双向链表复杂度更低
  3. 下面关于网络协议错误的是: ( )
    正确答案: D 你的答案: D (正确)
    传输控制协议(TCP),面向连接,提供可靠的数据传输。
    用户数据报协议(UDP),无连接,提供不可靠的数据传输。
    TCP和UDP协议都属于传输层协议。
    Socket通信只能使用TCP协议进行通信。

创建Socket连接时,可以指定使用的传输层协议,socket可以支持不同的传输层协议(TCP/UDP),当使用TCP协议进行连接时,该socket接连就是TCP链接.

  1. 在一棵二叉树上第10层的节点数最多是()
    正确答案: C 你的答案: C (正确)
    128
    256
    512
    1024

2^(10-1)= 512

  1. 关于进程内存空间描述错误的是?( )
    正确答案: D 你的答案: B (错误)
    函数参数,局部变量自动分配在栈上。
    栈的空间大小是有限制的,当函数调用层次过深时会出现栈溢出。
    在堆上分配的内存需要程序主动释放。
    程序结束时,在堆上分配的没有释放的内存会造成泄漏。

程序结束时(不管是正常结束还是异常结束),操作系统会释放该进程所有资源
程序结束时,你程序所分配的内存会被系统自动回收,不存在内存泄漏的问题;内存泄漏是在在程序运行中有内存没有被使用到
对于普通用户来说,泄不泄露影响不大,关机重启就清空了;对于服务器这类需要一直持续运转的硬件而言,内存总归是有限的、如果一直发生内存泄露就会导致最后没有空间可用。

  1. 下面哪个操作系统不使用Linux内核 ? ( )
    正确答案: B 你的答案: B (正确)
    A. Android
    B. MacOS
    C. Ubuntu
    D. RedHat

macos 使用 unix 内核不是 linux 内核

  1. 下面哪种情况不会触发进程调度?()
    正确答案: C 你的答案: B (错误)
    正在运行的进程所分配的时间片结束
    正在运行的进程访问一个临界区时,保护此临界区的互斥信号量已经被其他进程加锁
    当一个进程执行了一条转移指令后
    当一个进程创建了一个新进程时

就绪状态 >>> 运行状态 (这个过程会出现任务调度)
A. 当任务完成之后,就会从从运行状态转换为就绪状态。
B.当进程访问临界区时,其他进程加锁,那么他就处于就绪状态,当其他程序释放所之后,他就会进入运行状态
C.当一个进程执行了一条转移指令后,这里我们举例:中断就是一个转移指令,当我们产生中断时程序会从运行状态变为阻塞状态,并不会引起任务调度
D.当我们创建一个新的进程时,新的进程处于就绪状态

  1. 在下列汇编指令的表示中,正确的是( )
    正确答案: A C D 你的答案: B (错误)
    MOV AL, [BX+SI+20]
    DEC [BX]
    XCHG VAL1, AX
    SUB [BX],[BP][DI]
  2. 下面关于C程序的存储空间,描述正确的是?()
    正确答案: A B C D 你的答案: A B (错误)
    局部变量存放在栈上
    全局变量存放在数据段
    静态变量存放在数据段
    C++中new一个对象是从堆上分配内存的
  3. 希尔排序是1959年提出的一种排序算法,下列有关希尔排序描述正确的有哪些?()
    正确答案: A C 你的答案: A C (正确)
    希尔排序是插入排序的改进版本
    希尔排序是冒泡排序的改进版本
    增量的选择直接影响着排序的速度与效率
    希尔排序是一种十分稳定的算法
  4. 关于下列代码描述正确的有哪些?()
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).

  1. 下面关于文件系统,描述不正确的是?()
    正确答案: A C D 你的答案: A C (错误)
    进程终止后,这个进程所打开的文件也会被系统删除
    删除一个文件,同时会删除与此文件对应的文件控制块
    一个文件在磁盘上存放的磁盘块必须是相邻的
    符号连接所连接的文件被删除后,符号连接也会消失

A . 进程终止时,进程独有的内存空间会被释放,但是一些共享资源不会被释放。
B. 正确。
C. 一个文件在磁盘上不一定是连续的地址,但是在进程空间中,通过页表的地址映射可以使得数据是连续的。
D. 符号连接的文件被删除后,链接只是被认为是“死链接”,并没有被删除。

  1. 下面关于排序算法描述正确的是()
    正确答案: B D 你的答案: A B (错误)
    冒泡排序的最好情况和最坏情况时间复杂度一样
    归并排序的最好情况和最坏情况时间复杂度一样
    选择排序的最好情况和最坏情况时间复杂度不一样
    直接插入排序的最好情况和最坏情况时间复杂度不一样
  2. 关于操作系统分段机制描述正确的是( )
    正确答案: A B C D 你的答案: A B (错误)
    数据段存放程序中的静态变量和已初始化且不为零的全局变量
    代码段存放可执行文件的操作指令,代码段是只读的,不可进行写操作
    BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用前由运行时初始化为零
    分段是为了提高内存利用率,减少内存碎片
  3. 关于操作系统分段机制描述正确的是( )
    正确答案: A B C D 你的答案: A B (错误)
    数据段存放程序中的静态变量和已初始化且不为零的全局变量
    代码段存放可执行文件的操作指令,代码段是只读的,不可进行写操作
    BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用前由运行时初始化为零
    分段是为了提高内存利用率,减少内存碎片
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值