2020-2-27 牛客试题复盘

1、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。

A、正确
B、错误

解析:

运行异常,可以通过java虚拟机来自行处理。非运行异常,我们应该捕获或者抛出.

2、以下哪个不属于JVM堆内存中的区域(B)?

A、survivor区
B、常量池
C、eden区
D、old区

解析:

jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区).
 
 
3、list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?(A)
Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
    Object obj = it.next();
    if (needDelete(obj))  //needDelete返回boolean,决定是否要删除
    {
        //todo delete
    }
    index ++;
}
 
A、it.remove();
B、list.remove(obj);
C、list.remove(index);
D、list.remove(obj,index);

解析:

Iterator  支持从源集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。这样做的好处是可以避免 ConcurrentModifiedException ,当打开 Iterator 迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove() 方法是个安全的做法。

4、下面有关java hashmap的说法错误的是?

A、HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
B、HashMap 的实现不是同步的,意味着它不是线程安全的
C、HashMap通过开放地址法解决哈希冲突
D、HashMap中的key-value都是存储在Entry数组中的

解析:

HashMap是采用拉链法解决哈希冲突的.

5、Consider the following code:

Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);
Which test would return true?
 
A、(s==u)
B、(s==t)
C、(s.equals(t))
D、(s.equals(9))
E、(s.equals(new Integer(9))

6、下面的类哪些可以处理Unicode字符?   ABC

A、InputStreamReader
B、BufferedReader
C、Writer
D、PipedInputStream

解析:

字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter

字节流:

InputStream  
|-- FileInputStream (基本文件流)  
|-- BufferedInputStream  
|-- DataInputStream  

|-- ObjectInputStream
字符流
Reader 
|-- InputStreamReader (byte->char 桥梁) 
|-- BufferedReader (常用) 
Writer 
|-- OutputStreamWriter (char->byte 桥梁) 
|-- BufferedWriter 
|-- PrintWriter (常用)
 
 
7、Given the following code:
 
  import EnclosingOne.InsideOne
1.class Enclosingone
2.{
3.    public class InsideOne {}
4.
5.}
6.public class inertest
7.{
8.    public static void main(string[]args)
9.    {
10.        EnclosingOne eo = new EnclosingOne();
11.        //insert code here
12.    }
13.
14.}
Which statement at line 11 constructs an instance of the inner class?  AD
A、InsideOne ei=eo.new InsideOne();
B、eo.InsideOne ei=eo.new InsideOne();
C、InsideOne ei=EnclosingOne.new InsideOne();
D、EnclosingOne.InsideOne ei=eo.new InsideOne();

 解析:

答案A正确的原因是,开头有一个导包。

8、类之间存在以下几种常见的关系:    ABC

A、“USES-A”关系
B、“HAS-A”关系
C、“IS-A”关系
D、“INHERIT-A”关系
 解析:
USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。
关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。
HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。
IS-A:表示继承。父类与子类,这个就不解释了。
要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
 
 
 
9、下面有关servlet中init,service,destroy方法描述错误的是?   D
A、init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法
B、service()方法处理客户机发出的所有请求
C、destroy()方法标志servlet生命周期的结束
D、servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的
解析:
servlet在多线程下其本身并不是线程安全的。
如果在类中定义成员变量,而在service中根据不同的线程对该成员变量进行更改,那么在并发的时候就会引起错误。最好是在方法中,定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量是在栈中,彼此各自都拥有独立的运行空间而不会互相干扰,因此才做到线程安全。
 
 
 
10、Java程序中的类名称必须与存放该类的文件名相同。
A、对
B、错
解析:
内部类可以不同。
 
 
 
11、程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引发异常,异常输出信息为 ”something’swrong!” ,语句为()  A
A、if(i>10)throw new Exception("something’swrong!");
B、if(i>10)throw Exception e("something’swrong!");
C、if(i>10) throw new Exception e("something’swrong!");
D、if(i>10)throw Exception( "something’swrong!");
 
 
12、下列说法正确的有()  A
A、能被java.exe成功运行的java class文件必须有main()方法
B、J2SDK就是Java API
C、Appletviewer.exe可利用jar选项运行.jar文件
D、能被Appletviewer成功运行的java class文件必须有main()方法
解析:
A:正确main方法是入口 
B:J2SDK当然不仅仅包含java API 
C:jar选项是java.exe 的选项 
D:Appletviewer是运行applet的, applet 不用main方法,继承applet类即可。
 
 
 
13、给出下面的代码段:
public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?(CD)
A、Base(a,b);
B、x=a, y=b;
C、x=a; y=b;
D、this(a,b);
解析:
赋值语句不能用逗号隔开。
 
 
14、下面代码在main()方法中第八行后可以正常使用的是( A D )
A、t.a
B、this.c
C、Test.b
D、Test.c
解析:
A :  在private  修饰不能在外部类中调用,main 方法属于Test类的方法, 所以 对象 t 可以在他自己的类方法中调用它的private
B : static 方法中没有this 这么一说
C: b不是static变量
D: 合理
 
 
15、character流和byte流的区别不包括(ABD )
A、每次读入的字节数不同
B、前者带有缓冲,后者没有。
C、前者是字符读入,后者是字节读入。
D、二者没有区别,可以互换。
解析:
字符流使用了缓冲区,而字节流没有使用缓冲区。
 
 
16、关于数据库连接的程序,以下哪个语句的注释是错误的(A )
A、Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); //指定MySQL JDBC驱动程序
B、String url=”jdbc:odbc:student_access”;  //指定数据源为student_access
C、Connection con=DriverManager.getConnection(url); //创建连接指定数据库的对象
D、Statement stmt=con.creatStatement();//创建执行SQL语句的Statement对象
 解析:

Jdbc连接数据库一般分为以下几步:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//声明数据库驱动,数据源的url,用于登录数据库的账户和密码(将其他功能封装成方法的时候方便使用)
String driver = "数据库驱动名称"
String url = "数据库连接地址"
String user = "用来连接数据库的用户名"
String pwd = "用来连接数据库的密码"
//加载数据库驱动 
Class.forName(driver);
//根据url创建数据库连接对象Connection
Connection con = DriverManage.getConnection(url,user,pwd);
//用数据库连接对象创建Statement对象(或PrepareStatement)
Statement s = con.createStatement();
PrepareStatement ps = con.PrepareStatement(sql);
//做数据库的增删改查工作
ResultSet rs = s.executeQuery();
//关闭结果集对象Resultset,statement对象,connection对象,
rs.close();
s.close();
con.close();
//各个步骤的异常处理
 
 
 
17、java8中,下面哪个类用到了解决哈希冲突的开放定址法     C
A、LinkedHashSet
B、HashMap
C、ThreadLocal
D、TreeMap
 
 
18、ResultSet中记录行的第一列索引为?
A、-1
B、0
C、1
D、以上都不是
 解析:
ResultSet跟普通的数组不同,索引从1开始而不是从0开始。
 
 
19、关于JSP生命周期的叙述,下列哪些为真?
A、JSP会先解释成Servlet源文件,然后编译成Servlet类文件
B、每当用户端运行JSP时,jsp init()方法都会运行一次
C、每当用户端运行JSP时,jsp service()方法都会运行一次
D、每当用户端运行JSP时,jsp destroy()方法都会运行一次
 解析:
B:init方法:负责初始化Servlet对象。在Servlet的整个生命周期类,init()方法只被调用一次。
D:destroy方法:销毁Servlet对象,释放占用的资源,Servlet要被卸载时调用
 
 
20、下面描述属于java虚拟机功能的是? ABCD
A、通过 ClassLoader 寻找和装载 class 文件
B、解释字节码成为指令并执行,提供 class 文件的运行环境
C、进行运行期间垃圾回收
D、提供与硬件交互的平台
 
 
21、关于Java的一些概念,下面哪些描述是正确的:( BF   )
A、所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException
B、通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行
C、java中所有的数据都是对象
D、Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize方法一定会得到执行
E、Java是跨平台的语言,无论通过哪个版本的Java编写的程序都能在所有的Java运行平台中运行
F、Java通过synchronized进行访问的同步,synchronized作用非静态成员方法和静态成员方法上同步的目标是不同的

 解析:

A、java异常和错误的基类Throwable,包括Exception和Error
B、try...catch...finally finally不管什么异常都会执行
C、java是面向对象的,但是不是所有的都是对象,基本数据类型就不是对象,所以才会有封装类的;
D、如果是等待清理队列中如果又被调用,则不会执行finallize方法
E、JAVA跨平台性    实现在任意平台的java程序都可以在其他平台运行
F、synchronized实现方式:三种
 
 
22、下列有关JAVA异常处理的叙述中正确的是(ABD)
A、finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B、throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C、final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D、throw是用来明确地抛出一个异常情况
 
 
23、在运行时,由java解释器自动引入,而不用import语句引入的包是(A)。
A、java.lang
B、java.system
C、java.io
D、java.util
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/buhuiflydepig/p/12371376.html