• 6.27 JAVA笔试题


    1.下列说法正确的是( )
    A.数组是一种对象
    B.数组属于一种原生类
    C.int number=[]={31,23,33,43,35,63}
    D.数组的大小可以任意改变

    A正确
    B 原生类指的是java中的基本数据类型(数据类型分为基本数据类型和引用数据类型)
    C 不能这样定义数组
    D 数组是引用类型,在堆上分配内存,数组是定长的,不能任意改变大小。

    //一维数组的定义方式
    int arr[] = new int[5];
    int[] arr = new int[5];
    int[] arr = {1,2,3,4,5};
    int[] arr = new int[]{1,2,3,4,5};
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.下面代码运行结果是()
    public static int getValue(int i) {
    int result = 0;
    switch (i) {
    case 1:
    result = result + i;
    case 2:
    result = result + i * 2;
    case 3:
    result = result + i * 3;
    }
    return result;
    }
    A. 0 B. 2 C. 4 D. 10

    没有加break,会导致3个case都执行,结果为10

    3.以下关于final关键字说法错误的是() (两项)
      A) final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
      B) final修饰的类肯定不能被继承
      C) final修饰的方法不能被重载
      D) final修饰的变量不允许被再次赋值
    答案是AC
    A final不能修饰抽象类
    C final修饰的类可以被继承和重载,但不能被重写
    BD final修饰的变量不允许被修改,final修饰的类不能被继承

    4.以下描述错误的有()
      A) abstract 可以修饰类、接口、方法
      B) abstract修饰的类主要用于被继承
      C) abstract 可以修饰变量
      D) abstract修饰的类,其子类也可以是abstract修饰的
    C abstract 不能用于修饰变量
    当使用abstract修饰类时, 表明这个类只能被继承;当使用 abstract修饰方法时, 表明这个方法必须由子类提供实现(即重 写)。

    5.根据下面的代码,会抛出NullPointerException异常的有()。

    String s = null;
      
      A) if( (s!=null) & (s.length()>0) )
      B) if( (s!=null) && (s.length()>0) )
      C) if( (s==null) | (s.length()0) )
      D) if( (s
    null) || (s.length()==0) )

    AC
    NullPointerException即空指针异常

    String s=null;没有给s开辟任何空间,当执行length()方法时候,
    因为没有具体指向的内存空间,所以报出NullPointerException没有指向的错误。
    A &是与,位运算,两个都得执行,执行到s.length()自然就报错了。
    B S!=null 结果为false 整体就为false ,&& 后面就不会执行。下面的同理。

    6.关于求和函数,以下说法正确的是()

    A sum返回表达式中所有数的总和,因此只能用于数字类型的列
    B Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列
    C Max和Min可以用于字符型的列
    D Count可以用于字符型的列

    A SUM() 函数只能用于数字类型的列,不能够汇总字符,日期等其他数据类型
    B 不可以用于日期型
    C 不可以
    D 不可以

    7.下面代码运行结果是()

      public class Demo {
      public int add(int a, int b) {
            try {
              return a + b;
            } catch (Exception e) {
              System.out.println("catch 语句块");
            } finally {
              System.out.println("finally 语句块");
            }
            return 0;
          }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    按照常理我们知道,finally才是最后执行的那个,所以实际上应该输出finally语句块
    然和人实际上的运行过程应该是,运行到return 方法之时,return方法会将返回的值,(在此题中是a+b)存储到一个临时栈中,然后程序不会立刻返回,而是执行finally{}中的程序,在执行完‘System.out.println(“finally 语句块”);后,再通知主程序请求返回了,这时候我们再将临时栈中的值返回

    于是当我们调用上述代码,便会实现先输出finally中的部分,再输出return 中的部分

    finally 语句块
    a + b

        public static void main(String[] args) {
            Demo demo = new Demo();
            System.out.println("和是:"+demo.add(9,34));
          }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    A) 编译异常
     B) finally语句块 和是:43
     C) 和是:43 finally语句块
     D) catch语句块 和是:43

    8.数据库做join操作时,至少要涉及到几张表? 

    A: 3 B:1; C: 2 D: 4

    B 自连接只需要设计一张表

    9.以下几种创建对象的⽅式中不会调用构造函数的有哪些() [两项]

    A) ⽤new语句创建对象,这是最常见的创建对象的⽅法。
    B) 运⽤反射⼿段,调⽤java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例⽅法。
    C) 调⽤对象的clone()⽅法
    D) 运⽤反序列化⼿段,调⽤java.io.ObjectInputStream对象的 readObject()⽅法。

    AB都明显调用了构造函数
    C是在内存上对已有的对象的影印,所以不会调用构造函数
    D是从文件中还原类的对象,也不会调用构造函数

    10.下面哪些不是Thread类的方法()

    A start() B run() C exit() D getPriority()

    exit() 属于system

    1.下面代码运行结果是()

    public static void main(String[] args) {
        Integer f1 = 100, f2 = 100;
        Integer f3 = 150;
        Integer f4 = 150;
    	System.out.println(f1 == f2);
        System.out.println(f3 == f4);
      }
    A:true,true   B: true, false   C: false,true    D: false,false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    基本类型通过==比较的是他们的值的大小,而引用类型比较的是他们的引用地址
    Integer 用 == 比较的时候往往非常容易出错

    当interger赋予的int数值在-128-127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的

    故选B

    12.SQL 语句中修改表结构的命令是() 
    A MODIFY TABLE
    B MODIFY STRUCTURE
    C ALTER TABLE
    D ALTER STRUCTURE

    答案为C
    modify是vfp的命令

    13.SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是()
    A HAVING在查询语句中必须依赖于GROUP BY
    B WHERE子句用来限制SELECT语句从表中指定选取的行
    C GROUP BY子句用来分组WHERE子句的输出结果集
    D HAVING子句用来从分组的结果中筛选列

    答案为D
    HAVING子句用来从分组的结果中筛选行

    14.有三个关系 R 、 S 和 T 如下: 则由关系 R 和 S 得到关系 T 的操作是()

    A 自然连接 B 交 C 除 D 并

    D

    15.语句 SELECT IF(-1,5,2) 的返回值是:

    A 2 B 6 C -1 D 5

    if(条件,表达式1,表达式2);
    这里,如果条件为真(非0),则返回表达式1,条件为假(0)返回表达式2.

    答案是5

    16.final, finally, finalize的区别。
    final是关键字,修饰符,finalize是方法,用于清理内存,finally通常用语try catch中来捕捉异常

    17.abstract class和interface有什么区别?

    不同
    抽象类:
    1.抽象类中可以定义构造器
    2.可以有抽象方法和具体方法
    3.接口中的成员全都是public的
    4.抽象类中可以定义成员变量
    5.有抽象方法的类必须声明为抽象类,而抽象类未必要有抽象方法
    6.抽象类中可以包含静态方法
    7.一个类只能继承一个抽象类

    接口:
    1.接口中不能定义构造器
    2.方法全都是抽象方法
    3.抽象类中的成员可以是private,默认,protected,public
    4.接口中定义的成员变量实际上是常量
    5.接口中不能有静态方法
    6.一个类可以实现多个接口

    18.什么是Java的多态?
    多态指不同的子类继承同一个父类后,可以有不同的行为

    19.请写代码实现下面问题
    1)有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子倡导第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?,假如兔子都不死,问第n个月的兔子对数为多少?
    思路:F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

    #include<stdio.h>
    int main()
    {
    int a[24]={1,1};
    int i,j,sum=0;
    for(i=0;i<24;i++)
    {
    if(i>=2)
    {
    a[i] = a[i-1]+a[i-2];
    }
    printf(“第%d个月%d对兔子\n”,i+1,a[i]);
    }
    return 0;
    }

    1. 给你一个整数 x ,如果 x 是一个回文整数,返回 true ; 否则,返回 false 。
      注意:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
      例如,121 是回文,而 123 不是。
      示例 1: 输入:x = 121 输出:true
      示例 2: 输入:x = -121 输出:false
      示例 3: 输入:x = 10 输出:false

    public static boolean isPalindrome(int x) {
    // 这里是上面分析的特殊不是回文的情况
    // 如上所述,当 x < 0 时,x 不是回文数。
    // 同样地,如果数字的最后一位是 0,并且这个数字不是0,则表示不是回文
    if (x < 0 || (x % 10 == 0 && x != 0)) {
    return false;
    }
    //这里设置一个数值用来拆分这个整数
    int rn = 0;
    //这里如果前半部分小于后半部分,肯定拆解过半了,不用再继续了
    while (x > rn) {
    //用来获取这个整数的最后一位,放到置换的数字中
    rn = rn * 10 + x % 10;
    //每次来获取最新要拆分的整数
    x /= 10;
    }

        // 当数字长度为奇数时,我们可以通过 rn/10 去除处于中位的数字。
        // 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,rn = 123,
        // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
        return x == rn || x == rn / 10;
    
    • 1
    • 2
    • 3
    • 4

    }

    public static boolean isPalindrome(int x) {

        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
    
        int rn = 0;
    
        while (x > rn) {
        
            rn = rn * 10 + x % 10;
       
            x /= 10;
        }
    
    
        return x == rn || x == rn / 10;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    }

  • 相关阅读:
    Git仓库(github/gialab)进行fork后如何与原仓库同步
    C++11产生随机数
    SpringCloud(二)Docker、Spring AMQP、ElasticSearch
    Leetcode 662. 二叉树最大宽度
    JavaSE-day20【网络编程】
    离线笔记软件
    ArcGIS Pro脚本工具(6)——修复CAD图层数据源
    flink-sql所有语法详解-1.15
    Linux内核知识点---线程与锁
    Java+Vue 实现消息通知示例
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/125490617