2024年春招Java面试选择题及答案解析---快来看看你能做对多少?_下列java声明合法的是

官方解析:最多全部进入时,为-1,最多允许3个,为-1~3

5.给定以下代码,输出的内容是()

public class Test {
  public static void main(String[] args) {
    try {
      test();
      System.out.println("A");
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println("B");
      return;
    } catch (Exception e) {
      System.out.println("C");
    } finally {
      System.out.println("D");
    }
  }
 
  private static void test() {
    int[] a = {1, 2, 4};
    System.out.println(a[3]);
  }
}

A、ABD
B、BD
C、B
D、ACD

正确答案:B

官方解析:数组下标越界,肯定会输出B的,由于return执行之前会先去执行finally里面的语句,所以B选择正确。

6.下列java声明合法的是:

A、default final String s;
B、public static native int meo();
C、abstract void hello() {}
D、abstract final String say();

正确答案:B

7.Java语言中,有以下这些接口,如果我们把接口中没有定义任何方法的归纳到A集合,其他的归纳到B集合,那么以下哪个选项不能归纳到A集合中

A、java.util.RandomAccess
B、java.lang.Runnable
C、java.lang.Cloneable
D、java.io.Serializable

正确答案:B

官方解析:考察java语言中,有哪些接口是没有定义任何方法的,以上选项A、C、D都没有定义任何方法。

8.下面的输出语句会有编译错误的是()

public class NowCoder {
    public static void main(String[] args) {
        int a = 5, b = 5;
        System.out.println("a + b = " + a + b);
        System.out.println("a - b = " + a - b);
        System.out.println("a \* b = " + a \* b);
        System.out.println("a / i2 = " + a / b);
    }
}

A、System.out.println("a + b = " + a + b);
B、System.out.println("a - b = " + a - b);
C、System.out.println("a * b = " + a * b);
D、System.out.println("a / i2 = " + a / b);

正确答案:B

9.代码片段:

import java.util.\*;
public class TestSet {
  enum Num {ONE, THREE, TWO}
  public static void main(String[] args) {
    Collection coll = new LinkedList();
    coll.add(Num.THREE);
    coll.add(Num.ONE);
    coll.add(Num.THREE);
    coll.add(Num.TWO);
    coll.add(Num.TWO);
    Set set = new HashSet(coll);
    System.out.println(set);
  }
}

关于set变量的描述哪个选项是正确的?
A、set变量只包含了coll集合中的3个变量,并且顺序与coll里的相同。
B、set变量只包含了coll集合中的3个变量,但顺序无法确定。
C、set变量包含了coll集合中的5个变量,但顺序无法确定。
D、set变量包含了coll集合中的5个变量,并且顺序与coll里的相同。

正确答案:B

10.主机A与主机B已建立TCP连接,A的cwnd(拥塞窗口)大小初始值为1KB,ssthresh (阈值)为16KB,B的rwnd (接收缓存窗口)初始值为8KB,一个最大报文段为1KB,假设数据传输过程中未出现超时,经过3个RTT(3轮传输)后,且B尚未从缓存中取出任何数据时候,主机A的发送窗口大小为()

A、1 KB
B、2 KB
C、3 KB
D、4 KB

正确答案:A

官方解析:
A在发送数据的过程中,A的cwnd大小始终没有达到阈值(16KB),所以A每经过一轮传输,cwnd就翻倍,所以A一共发送了1KB+2KB+4KB=7KB的数据,但是题目中说明了B并未从接收缓存中取出数据,所以B的接收缓存为8KB-7KB=1KB。A的发送窗口同时受cwnd和rwnd限制,即A=min{cwnd,rwnd},所以A的发送窗口为1KB

11.借助队列采用非递归的方式对二叉树进行层次遍历,遍历方向为从左至右,在遍历过程中,队列中的元素最多为多少个()

二叉树的结构如图所示:
在这里插入图片描述

A、5个
B、6个
C、7个
D、8个

正确答案:A

官方解析:
要对二叉树进行层次遍历,需要借助一个队列,先将二叉树根节点入队,完成初始化。下面出队并访问该节点,若该节点有左子树,将左子树根节点入队,若该节点有右子树,将右子树根节点入队,如此反复直到队列为空。
具体遍历操作如下表所示:

在这里插入图片描述

12.在一颗普通的树上,a 与 b 互为兄弟节点。将树转为二叉树后,下列哪种情形不可能发生()。

注:在将普通的树转换为二叉树过程中,节点在删除与自身子节点的连线时,只保留与最左侧子节点之间的连线。
A、a 是 b 的右孩子
B、a 是 b 的左孩子
C、a 是 b 的祖先节点
D、b 是 a 的祖先节点

正确答案:B

官方解析:
将普通的树转为二叉树的步骤如下:

  1. 加线。在所有兄弟节点之间加一条连线
    2.每个节点都删除与自身子节点的连线,只保留与最左侧子节点之间的连线(这一点题目中已经说明)。
    转换过程如下图所示
    在这里插入图片描述
    根据以上步骤可知,转换为二叉树后,b 可以为 a 的父节点,也可以为 a 的祖先节点。如果将 a 与 b 调换一下位置,不会破坏题目中的条件,即转换前 a 与 b 还是兄弟节点。此时 a 可以为 b 的父节点,也可以为 b 的祖先节点
    所以 选项A、C、D 均有可能。

根据转换规则,如果转换为 a 是 b 的左孩子,那么转换前 a 必须是 b 的最左侧的子节点。
转换过程如下图所示:
在这里插入图片描述
所以选项 B 不成立。

13.这里有一张中国高校院士数目信息表(院士姓名,高校所在省区)(只展示了部分数据,其余大量数据形式相同)

±----------±--------+
| name |province |
±----------±--------+
| ad | GD |
| ws | ZJ |
| ge | FJ |
| MO | SX |
| wi | ZJ |
±----------±--------+
查询出哪个省区,出生院士人数最多?
A、select province,count() as count from college group by province limit 1;
B、select province,count(
) as count from college group by province order by count desc limit 1;
C、select province,count() as count from college order by count desc limit 1;
D、select province,count(
) as count from college group by province order by count limit 1;

正确答案:B

14.二叉树的中序遍历为[5,4,1,2,3,6],后序遍历为[4,5,2,6,3,1],新建平衡二叉树,按二叉树的前序遍历顺序将元素插入到平衡二叉树中,对于得到的平衡二叉树说法不正确的是()

A、有3个叶子结点
B、度为1的结点只有结点5
C、前序遍历为[4,2,1,3,6,5]
D、后序遍历为[1,3,2,6,5,4]
正确答案:C

官方解析:
由中序遍历和后序遍历的得到二叉树如下图,其前序遍历为[1,5,4,3,2,6]
在这里插入图片描述
平衡二叉树构建如下图:其前序遍历为[4,2,1,3,5,6],所以选C
在这里插入图片描述

15.请你判断一下这段C++代码的实现的功能是什么样的?

 int func(int n) {
        n && (n += func(n-1));
        return n;
    }

A、没有递归出口,无法结束
B、实现了n+n-1+…2+1的功能
C、实现了n-(n-1)+(n-2)-…-2+1的功能
D、实现了求n的二进制里面1的个数的功能
E、实现了求n的二进制里面0的个数的功能

正确答案:B

官方解析:通常实现递归的时候我们都会利用条件判断语句来决定递归的出口,但由于题目的限制我们不能使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?答案就是逻辑运算符的短路性质。

以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为 False ,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回True ,那么 A || B 已经确定为 True ,此时不会去执行表达式 B。

利用这一特性,我们可以将判断是否为递归的出口看作 A && B 表达式中的 A 部分,递归的主体函数看作 B 部分。如果不是递归出口,则返回True,并继续执行表达式 B 的部分,否则递归结束。
其实这里就看后面的n+=func(n-1)的功能,很明显是递归实现1+2+…n-1+n的功能

16.以下主机可以和202.115.112.218/28直接通信的是( )。

A、202.115.112.205/28

B、202.115.112.225/28

C、202.115.112.195/28

D、202.115.112.212/28

正确答案:D

官方解析:
本题考察IP地址掩码的计算,掩码与IP地址做与运算可知,能和202.115.112.218/28直接通信(在同一个网段)的IP地址为202.115.112.208 ~ 202.115.112.223,因此只有D符合。

17.网络协议之间有规定的层次关系,下面选项中层次关系正确的是,上一层的网络的底层应该有下一层( )。

A
在这里插入图片描述

B
在这里插入图片描述

最后

好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。

做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。

学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值