Fork me on GitHub

牛客网刷题总结(二)

1.Java表达式”13 & 17”的结果是什么?

解析:&在Java中是位运算符,如果相对应位都是1,则结果为1,否则为0。13和17都为单数,所以二进制后最后一位都是1,所以结果为1

2.

下面关于Java package的描述,哪个是正确的:()

I. 包不提供将所有类名分区为更易管理的块的机制.

II. 包提供可见性控制机制.

III. 包的一个重要属性是包内定义的所有类都可以通过该包外的代码访问.

IV. 声明为包的一部分的类的.class文件可以存储在多个目录中.

解析:Java 提供了包机制,用于区别类名的命名空间,访问控制包名必须与相应的字节码所在的目录结构相吻合。

3.

以下表达式的类型和值是什么?(注意整数除法)()

1
`-``5` `+ ``1``/``4` `+ ``2``*-``3` `+ ``5.0`

解析:-5+0-6+5.0=-6.0

4. 下面哪个描述正确? ()
1
程序中的注释越多,程序运行得越快。
1
int是java.lang包中可用的类的名称
1
类总是有一个构造函数(可能由java编译器自动提供)
1
实例变量名称只能包含字母和数字

解析:默认自动生成无参构造, 如果手动添加了构造方法, 默认的就会消失

5. 以下哪个命令用于查看tar(backup.tar)文件的内容而不提取它?()
1
tar -xvf backup.tar
1
tar -tvf backup.tar
1
tar -svf backup.tar
1
none of these

解析:

1
2
3
4
5
-s 还原文件的顺序和备份文件内的存放顺序相同。 
-t 列出备份文件的内容。
-v 显示指令执行过程。
-f 指定压缩文件
-x 从备份文件中还原文件。
6.在Java中,什么是Garbage Collection?()
1
自动删除在程序中导入但未使用的任何包
1
JVM检查任何Java程序的输出并删除任何没有意义的东西
1
当对象的所有引用都消失后,对象使用的内存将自动回收
1
操作系统定期删除系统上可用的所有java文件

解析:垃圾回收器是将没有引用的对象进行垃圾回收,回收前会调用finalize()方法,下一个周期中进行回收

7.下面哪个描述正确? ()
1
echo $$返回登录shell的PID和echo $? 返回上一个命令的状态
1
echo $$返回上一个命令和echo $的状态? 返回登录shell的PID
1
echo $$和echo $? 返回一些无意义的整数值
1
所有陈述都是错误的

解析:

echo $$ 当前登录shell 的PID 、echo $? 最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)

8.以下类定义中的错误是什么?()
1
`abstract` `class` `xy``{``    ``abstract` `sum (``int` `x, ``int` `y) { }``}`

解析:抽象方法不能有方法体,只能申明

9. 以下哪个类包含方法flush()?()
1
InputStream
1
OutputStream
1
A 和B 选项都包含
1
A  和B 选项都不包含

解析:flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。

10.尝试编译以下程序会产生怎么样的结果?()
1
2
3
4
5
6
7
8
9
public` `class` `MyClass {
``long` `var;
``public` `void` `MyClass(``long` `param) { var = param; }``//(1)
``public` `static` `void` `main(String[] args) {
``MyClass a, b;
``a =``new` `MyClass();``//(2)
``b =``new` `MyClass(``5``);``//(3)
``}
}

解析:这道题一定要看仔细了,MyClass方法并不是构造参数,而是返回类型为void的普通方法,普通方法自然需要实例化对象然后去调用它,所以124不对,第三个是正确的,因为没有带参数的构造器,所以自然不能传一个int进去。

11.关于修饰语的使用,以下哪一项是正确的? ()
1
如果没有为成员声明指定可访问性修饰符(public,protected和private),则该成员只能访问其类的包中的类及其类的子类的任何位置
1
您无法指定局部变量的可访问性。它们只能在声明它们的区域内访问
1
类的子类必须与它们扩展的类位于同一个包中D)上面提到的都不是

解析:方法内的变量称为局部变量

12. 在各自最优条件下,对N个数进行排序,哪个算法复杂度最低的是? ()
1
插入排序
1
快速排序
1
堆排序
1
归并排序

解析:插入排序:最佳O(N)

快速排序:最佳O(NlogN)

堆 排序:最佳O(NlogN)

归并排序:最佳O(NlogN)

因此选择插入排序。

13.下面有关JVM内存,说法错误的是?
1
2
3
4
A程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
D原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

解析:方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。
在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

14.下面有关SPRING的事务传播特性,说法错误的是?

链接:

1
2
3
4
A.PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B.PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C.PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D.PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚

解析:事务属性的种类:传播行为、隔离级别、只读和事务超时

PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常

15.下面哪一项不是加载驱动程序的方法?
1
A通过DriverManager.getConnection方法加载
1
B调用方法 Class.forName
1
C通过添加系统的jdbc.drivers属性
1
D通过registerDriver方法注册

解析:

1
2
3
4
加载驱动方法
1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2.DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");