牛客(9.7)-数组专项练习

9.6日

选择题:

1、关于容器下面说法正确的是? (D)

A、列表(List)和集合(Set)存放的元素都是可重复的。

B、列表(List)和集合(Set)存放的元素都是不可重复的。

C、映射(Map)<key,value>中key是可以重复的。

D、映射(Map)<key,value>中value是可以重复的。

答案解析:List中的元素特点是,可重复、无须,Set集合中的元素特点是不可重复、无序(内部按照hash表进行排序),(Map)<key,value>中支持一个key对应多个value,按时一个Map中的key不能重复出现。

2、以下类定义中的错误是什么?(C)

1

2

3

4

abstract class xy

{

    abstract sum (int x, int y) { }

}

A、没有错误

B、类标题未正确定义

C、方法没有正确定义

D、没有定义构造函数

答案解析:抽象方法是没有方法体的。

3、在 Applet 中,方法执行的顺序是 ?( A)

A、init(), start(), paint(),stop(),destroy().

B、init(),paint(),start(),stop(),destroy().

C、paint(),start(),stop(),destroy().

D、init(), start(),stop(),destroy(),paint().

答案解析:init 初始化,start启动运行,paint 窗口最小化等时候需要暂停,stop 停止,destory 销毁,在Applet   中,方法执行的顺序是: init()-> start()-> paint()-> stop()-> destroy()。

4、由4个“1”和4个“0”组成的8位二进制补码,能表示的最小整数是(A)

A、-125   B、-32    C、-121   D、-3

答案解析:最小的数为负数,符号位为1,则补码形式为10000111,补码的求法是反码加1,则反码为10000110,原码为11111001,转化为十进制为-121。

5、下列选项中符合Java命名规则的标识符是(D)

A、2japro    B、&Class   C、const    D、_123

答案解析:1、首字母:英文字母、$和下划线。变量名:由$、字母、数字和下划线组成。  2、变量的命名遵循见名知义的原则。  3、用驼峰命名法命名多个单词组成的变量名。 4、变量名[方法名]首字母建议不用大写字母。

6、下列程序执行后输出结果为(   D   )

class BaseClass {
    public BaseClass() {} {
         System.out.println("I’m BaseClass class");
     }
     static { 
        System.out.println("static BaseClass"); } 
    } 
    public class Base extends BaseClass { 
        public Base() {} { 
            System.out.println("I’m Base class"); 
      } 
    static {
         System.out.println("static Base"); 
       } 
    public static void main(String[] args) { 
        new Base(); 
    } 
}

A、static BaseClass I’m BaseClass class static Base I’m Base class

B、I’m BaseClass class I’m Base class static BaseClass static Base

C、I’m BaseClass class static BaseClass I’m Base class static Base

D、static BaseClass static Base I’m BaseClass class I’m Base class

答案解析:本题主要考点是代码的执行顺序:1、父类的静态代码块2、子类的静态代码块3、父类的构造方法4、子类的构造方法

7、有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是(B)

60   66   18000   33

答案解析:将非零元素所在行、列、非零元素的值构成一个三元组(i,j,v),每个非零元素占3*2=6个字节,共10个非零元素,需6*10 = 60 个字节,还一般要用三个整数来存储矩阵的行数、列数和总元素个数,又需要3*2 = 6个字节;

8、以下哪项不属于java类加载过程?(B)

A、生成java.lang.Class对象

B、int类型对象成员变量赋予默认值

C、执行static块代码

D、类方法解析

答案解析:类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。其中准备、验证、解析3个部分统称为连接。

9、()运算符把其操作数中所有值为0和所有值为1的位分别在结果的相应中设置1和0(D)

&     |     !    ~

答案解析:&与操作;|或操作;!非操作;~取反操作

10、Java程序的种类有(BCD )

类(Class)   Applet     Application     Servlet

答案解析:Java程序的种类有:内嵌于Web文件中,由浏览器来观看的_Applet,可独立运行的 Application   ,服务器端的 Servlets

11、关于下面程序 ThisTest .java 运行结果 说法正确的是 : (B )

public class ThisTest {
            public static void main(String args[]) {
                String x="7";       
        int y = 2;
                int z=2;              
        System.out.println(x+y+z);
            }  
}
A、11      B、722     C、22     D、程序有编译错误 

答案解析:字符串可以通过加号进行拼接,座椅随后整形与字符串的相加相当于拼接成字符串。

12、如果一个list初始化为{5,3,1},执行以下代码后,其结果为(B)?
nums.add(6);
nums.add(0,4);
nums.remove(1);

A、[5,3,1,6]    B[4,3,1,6]    C、[4,3,6]   D[5,3,6]

答案解析:nums.add(6) [5,3,1,6]   nums.add(0,4)[4,5,3,1,6]    nums.remove(1);[4,3,1,6]

13、数组A的每个元素需要4个字节存放,数组有8行 10列,若数组以行为主顺序存放在内存SA开始的存储区中,则A中8行5列的元素的位置是(C)

SA+74     SA+292      SA+296      SA+300

答案解析:要求8行5列地址,其实求的就是A[7][4]地址,故位置为(7*10 + 4)* 4 = 296

14、考虑下面这个简单的例子,让我们看看reflection是如何工作的。其中"c.getDeclaredMethods"的作用是:(D)
import java.lang.reflect.*;
public class DumpMethods{
    public static void main(String[] args) {
        try {
            Class c=Class.forName(args[0]);
            Method m[]=c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++) {
                System.out.println(m[i].toString());
            }
        } catch (Throwable e) {
            System.err.println(e);
        }
    }
}
 
A、取得类的公有方法对象
B、取得类的所有公有方法名称
C、取得类的所有方法对象
D、以上选项都不正确

答案解析:

getDeclaredMethods() 返回 Class 对象表示的类或接口的所有已声明的方法数组,但是不包括从父类继承和接口实现的方法。

getMethods() 返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承或实现接口的方法。

15、关于Java的一些概念,下面哪些描述是正确的:( B\F)

所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException
通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行
java中所有的数据都是对象
Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize方法一定会得到执行
Java是跨平台的语言,无论通过哪个版本的Java编写的程序都能在所有的Java运行平台中运行
Java通过synchronized进行访问的同步,synchronized作用非静态成员方法和静态成员方法上同步的目标是不同的

答案解析:

A:Java中所有错误和异常的父类是java.lang.Throwable

B:基本数据类型不是对象,不能用new的方法获取,但是每个基本数据类型都对应着封装类型,这些封装类型为了解决基本数据类型面向对象用的。

C:Java垃圾回收器负责回收无用对象占据的内存资源,但对象没有使用new获取了一块特殊区域,这块特殊区域的回收使用finallize()

D:Java跨平台是因为有JVM的存在,Java的三个版本的运行需要各自不同的环境。

编程题:

1、给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
代码:

class Solution {    
    public int[] twoSum(int[] nums, int target) {
         int[] indexs = new int[2];
         HashMap<Integer,Integer> hash = new HashMap<Integer,Integer>();
        for(int i = 0; i < nums.length; i++){
            if(hash.containsKey(nums[i])){
                indexs[0] = i;
                indexs[1] = hash.get(nums[i]);
                return indexs;
            }
            // 将数据存入 key为补数 ,value为下标
            hash.put(target-nums[i],i);
        }
        return indexs;
}}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值