• 牛客网知识点总结(二


    1.ResultSet中记录行的第一列索引为?

    :

    正确答案: C   你的答案: B (错误)

    -1
    0
    1
    以上都不是

     ResultSet跟普通的数组不同,索引从1开始而不是从0开始,ResultSet结果集读取数据的方法主要是getXXX() ,他的参数可以使整型表示第几列(是从1开始的),还可以是列名。

    3.

    Given:
    1
    2
    3
    4
    5
    6
    7
    8
    9
        //point X
    public class Foo {
        public static void main(String[] args) throws Exception {
     
            PrintWriter out = new PrintWriter(
                new java.io.OutputStreamWriter(System.out), true);
            out.printIn(“Hello”);
        }
    }

    Which statement at PointX on line I allows this code to compile and run?

    正确答案: A   你的答案: A (正确)

    import java.io.PrintWriter;
    include java.io.PrintWriter;
    import java.io.OutputStreamWriter;
    include java.io.OutputStreamWriter;
    no statement is needed.
    其次:
        1.PrintWriter
        2.OutputStreamWriter
    注意:
        在创建OutputStreamWriter的时候,使用的是类的全名称。所以不需要使用import
     
    5.daemon线程:
    将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。
    守护线程在非守护线程结束后,会自动结束;
    3.daemon线程是守护线程,当主线程结束时,守护线程会自动结束

    6.D.Spring提供了AOP方式的日志系统
    Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统。

    6.按值传递和按引用传递
    given the following code,what will be the output?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class Value{
        public int i=15;
    }
    public class Test{
        public static void main(String argv[]){
            Test t=new Test( );
            t.first( );
        }
     
    public void first( ){
        int i=5;
        Value v=new Value( );
        v.i=25;
        second(v,i);
        System.out.println(v.i);
    }
     
    public void second(Value v,int i){
        i = 0;
        v.i = 20;
        Value val = new Value( );
        v = val;
        System.out.println(v.i+" "+i);
       }
    }
    
    正确答案: A   你的答案: B (错误)
    
    15 0 20
    15 0 15
    20 0 20
    0 15 20
    可能有人会选择B,包括我刚开始也是。总以为v不是已经指向了val了吗??为什么还是20呢?不应该是15吗?
    其实,原因很简单。现在我们把second()换一下
    publicvoidsecond(Value tmp,inti){
        i = 0;
        tmp.i = 20;
        Value val = newValue( );
        tmp = val;
        System.out.println(tmp.i+" "+i);
       }
    这个tmp其实相当于是一个指向原来first中的V这个对象的指针,也就是对v对象的引用而已。但是引用是会改变所指的地址的值的。
    所以在second中当tmp.i= 20的时候,就把原来first中的v的i值改为20了。接下来,又把tmp指向了新建的一个对象,所以在second中的tmp
    现在指的是新的对象val,i值为15.
    当执行完毕second后,在first中在此输出v.i的时候,应为前面second中已经把该位置的i的值改为了20,所以输出的是20.
    至于疑惑v指向了val,其实只是名字的问题,在second中的v实践也是另外的一个变量,名字相同了而已,这个估计也是纠结的重点。
    简单的总结,不对希望可以提出来,谢谢!
     
    8.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Test
    {
         public static void changeStr(String str)
         {
             str = "welcome";
         }
         public static void main(String[] args)
         {
             String str = "1234";
             changeStr(str);
             System.out.println(str);
         }
    }
    Please write the output result 。
    正确答案: A   你的答案: B (错误)
    
    1234
    welcome
    空
    不确定

    引用类型作为形参传递会改变实参的值,但是String是特殊的引用类型,作为形参传递不会影响实参的值。

    此处应该考察Java方法参数传递特性。Java方法调用中,只存在值传递调用。
    此处,实参str是引用变量,由于java方法调用是值传递,所以形参str得到的是实参str的一个拷贝。此时形参str和实参str均指向字符串"1234"。
    然后,在changeStr方法中,形参str指向了一个新的字符串"welcom",而后方法结束,形参str被销毁。而实参str仍然指向字符串"1234"。
     
    9.
    floor: 求小于参数的最大整数。返回double类型-----n. 地板,地面
             例如:Math.floor(-4.2) = -5.0
    -----------------------------------------------------------
    ceil:   求大于参数的最小整数。返回double类型-----vt. 装天花板;
             例如:Math.ceil(5.6) = 6.0
    -----------------------------------------------------------
    round: 对小数进行四舍五入后的结果。返回int类型
             例如:Math.round(-4.6) = -5
     
    10.LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问
     
    11.change方法里面是将传入的参数修改成10,但是并没有对SendValue的属性str就行修改,要修改必须指明this.str="10",所有答案还是6
    以下代码输出的是:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class SendValue{
        public String str="6";
        public static void main(String[] args) {
            SendValue sv=new SendValue();
            sv.change(sv.str);
            System.out.println(sv.str);
        }
        public void change(String str) {
            str="10";
        }
    }
    
    正确答案: A   你的答案: B (错误)
    
    6
    10
    都不对
    16

    10.CallableStatement继承自PreparedSatement,PreparedStatement继承自Statement,这个题出的不严谨,觉得BC都算正确。

    11.

    检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package algorithms.com.guan.javajicu; 
    public class Example { 
      String str = new String("good"); 
      char[] ch = {'a','b','c'}; 
      public static void main(String[] args) { 
         Example ex = new Example(); 
         ex.change(ex.str, ex.ch); 
         System.out.print(ex.str +"and"); 
         System.out.print(ex.ch);  
      
        
      public void change(String str, char ch[]){ 
         str= "test ok"
         ch[0]= 'g'
      

    正确答案: D   你的答案: B (错误)

    test okandabc
    test okandgbc
    goodandabc
    goodandgbc

    本题知识点

    参考解析添加解析

    • java 中String是 immutable的,也就是不可变,一旦初始化,其引用指向的内容是不可变的。
       
      也就是说,String str = “aa”;str=“bb”;第二句不是改变“aa”所存储地址的内容,而是另外开辟了一个空间用来存储“bb”;同时由str指向
       
      原来的“aa”,现在已经不可达,GC时会自动回收。
       
      因此String作为参数传进来时候,str= "test ok"; 实际给副本引用str指向了新分配的地址,该地址存储“test ok”。
       
      因此,原先的str仍然指向“good”
      编辑于 2016-01-17 20:49:58回复(5)
    • 更多回答(30条)
    • 副本与原数据是不相关的,不会相互影响的。不过一般方法传递时候,只有基本数据类型和String才会传递副本,其他的类型是按引用的传递的。
      发表于 2016-01-17 19:45:21回复(0)
    • d 如果传入的参数是引用类型,那么传递过来的就是这个引用参数的副本,该副本存放参数地址。如果函数中没有改变这个副本的地址,而是改变了地址中的值。那么该改变会影响到传入的参数。如果改变了副本的地址,则该副本指向了一个新的地址,此时传入的参数还是指向原来的地址
       
      12.
      D
      suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的 resume() 被调用,才能使得线程重新进入可执行状态
      能不能出一些新一点的题目,Thread类的suspend()和resume()方法都已经被声明已废弃了,考这种题目有意思?
       
      13.
      java关于异常处理机制的叙述哪些正确

      正确答案: B C   你的答案: B C (正确)

      catch部分捕捉到异常情况时,才会执行finally部分
      当try区段的程序发生异常时,才会执行catch区段的程序
      在try区段不论程序是否发生错误及捕获到异常错误,都会执行finally部分
      以上都是

      15.
      abstract class和interface有什么区别。

      正确答案: A B D   你的答案: A B D (正确)

      抽象类可以有构造方法,接口中不能有构造方法
      抽象类中可以有普通成员变量,接口中没有普通成员变量
      抽象类中不可以包含静态方法,接口中可以包含静态方法
      一个类可以实现多个接口,但只能继承一个抽象类。
  • 相关阅读:
    开发进度01
    eclipse 调用cmd运行DataX
    kettle 新建DB连接双击打不开
    用户体验评价
    找水王课堂练习
    人月神话阅读笔记01
    用户模板和用户场景
    大道至简阅读笔记03
    第九周
    第八周总结
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5940341.html
Copyright © 2020-2023  润新知