zoukankan      html  css  js  c++  java
  • 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
     
     
     
     
     
     
     
     
  • 相关阅读:
    Ionic Android开发环境搭建 下
    Ionic Android开发环境搭建 上
    百度地图API 简单使用
    json2.js 的使用
    第三回 Bootstrap3.x 起步
    第二回 认识CDN
    WPF 实现的等待效果界面
    AutoFac使用
    SQL语句优化
    MySQL索引的使用
  • 原文地址:https://www.cnblogs.com/buhuiflydepig/p/12371376.html
Copyright © 2011-2022 走看看