首页 > 代码库 > 牛客知识点

牛客知识点

1.

在 myjsp.jsp 中,关于下面的代码说法错误的是: (  )   
<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %> 
在 myjsp.jsp 中,关于下面的代码说法错误的是: (  )   
<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %> 

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

该页面可以使用 exception 对象
该页面发生异常会转向 error.jsp
存在 errorPage 属性时,isErrorPage 是默认为 false
error.jsp 页面一定要有isErrorPage 属性且值为 true
  • 添加笔记
  • 收藏
  • 纠错

本题知识点

Java 阿里巴巴

参考解析添加解析

  • 推荐
    技术分享MyGoodHelper
    A
    页面有isErrorPage属性且值为false,不可以使用 exception 对象
    编辑于 2015-02-02 17:48:50回复(2)
  • 更多回答(23条)
  • 技术分享Rodriguez.D
    exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用。对于C项,errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到 errorPage指定的页面,没必要给errorPage再设置一个errorPage。所以当errorPage属性存在时, isErrorPage属性值为false
     
     
    2.A,依赖注入是一种思想,或者说是一种设计模式,在java中是通过反射机制实现,与具体框架无关。
     
     
    10.
    对于线程局部存储TLS(thread local storage),以下表述正确的是

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

    解决多线程中的对同一变量的访问冲突的一种技术
    TLS会为每一个线程维护一个和该线程绑定的变量的副本
    每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了
    Java平台的java.lang.ThreadLocal是TLS技术的一种实现

    • ABD
      C:同一全局变量或者静态变量每个线程访问的是同一变量,多个线程同时访存同一全局变量或者静态变量时会导致冲突,尤其是多个线程同时需要修改这一变量时,通过TLS机制,为每一个使用该全局变量的线程都提供一个变量值的副本,每一个线程均可以独立地改变自己的副本,而不会和其它线程的副本冲突。
      编辑于 2015-01-09 11:14:28回复(3)
    • 更多回答(13条)
    • 技术分享幻影迷风
      如果是静态变量是共享的话,那必须同步,否则尽管有副本,还是会出错,故C错
      发表于 2015-08-19 00:07:10回复(4)
    • 技术分享XQ

        ThreadLocal可以给一个初始值,而每个线程都会获得这个初始化值的一个副本,这样才能保证不同的线程都有一份拷贝。ThreadLocal 不是用于解决共享变量的问题的,不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一个机制.

       

       

      10.
      关于HashMap与HashTbale,以下说法错误的是()

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

      两者都是用key-value方式获取数据
      Hashtable允许null值作为key和value,而HashMap不可以
      HashMap不是同步的,而Hashtable是同步的
      迭代HashMap采用快速失败机制,而Hashtable不是
      快速失败(Fail-Fast)机制:对于线程不安全的集合对象的迭代器,如果在使用迭代器的过程中有其他线程修改了集合对象结构或者元素数量,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。
          迭代 HashMap 采用快速失败机制,而 HashTable 不是,因为 HashTable 是线程安全的。
       
      15.
      Java数据库连接库JDBC用到哪种设计模式?

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

      生成器
      桥接模式
      抽象工厂
      单例模式

       

       B.桥接模式。JDBC提供两套接口,一个面向数据库厂商,一个面向JDBC使用者。
       
      20.
      下面有关JVM内存,说法错误的是?
      程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
      Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
      方法区用于存储JVM加载的类信息、常量、静态变量、即使编译器编译后的代码等数据,是线程隔离的
      原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
      收藏本题

       

      30.

      A,java是强类型语言,所有的方法必须放在类里面,包括main
      B ,java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口
       
      50.
      以下关于JAVA语言异常处理描述正确的有?

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

      throw关键字可以在方法上声明该方法要抛出的异常。
      throws用于抛出异常对象。
      try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
      finally语句块是不管有没有出现异常都要执行的内容。
      在try块中不可以抛出异常

      Java语言中的异常处理包括声明异常、抛出异常、捕获异常和处理异常四个环节。
      throw用于抛出异常。
      throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。
      try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。
      cacth用于捕获从try中抛出的异常并作出处理。
      finally语句块是不管有没有出现异常都要执行的内容。
       
       
      50.
      1
      2
      3
      4
      5
      6
      7
      8
      public class Test
      {
          public int x;
          public static void main(String args[])
          {
              System. out. println("Value is" + x);
          }
      }

      对于上面这段代码,以下说法正确的是:

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

      程序会打出 "Value is 0"
      程序会抛出 NullPointerException
      非静态变量不能够被静态方法引用
      编译器会抛出 "possible reference before assignment"的错误

      答:
      C
      当类加载时,static静态方法随着类加载而初始化,此时实例对象还未被创建,但是非静态成员变量需要等到实例对象创建才会被初始化,故无法被引用。
      因此这里在静态方法中访问x会造成编译出错
       
      60.
      下面那些情况可以终止当前线程的运行?

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

      当一个优先级高的线程进入就绪状态时
      抛出一个异常时
      当该线程调用sleep()方法时
      当创建一个新线程时
      B
      当一个优先级高的线程进入就绪状态时,它只是有较高的概率能够抢到CPU的执行权,不是一定就能抢到执行权,所以A错
      抛出一个例外时,该线程就终止了,所以B正确
      当前线程调用sleep()方法或者wait()方法时,只是暂时停止了该线程的运行,不是终止线程,注意题目说的是“终止”,就是完全停止,所以C错误
      当创建一个新的线程时,该线程也加入到了抢占cpu执行权的队伍中,但是是否能抢到,并不清楚,和A的思想一样,所以D错误
       
      线程结束的三个原因:
      1、run方法执行完成,线程正常结束
      2、线程抛出一个未捕获的Exception或者Error
      3、直接调用该线程的Stop方法结束线程(不建议使用,容易导致死锁)
       
      70.
      ArrayList list = new ArrayList(20);中的list扩充几次

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

      0
      1
      2
      3

       

      ArrayList的构造函数总共有三个:
      (1)ArrayList()构造一个初始容量为 10 的空列表。
      (2)ArrayList(Collection<? extends E> c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
      (3)ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表。
      调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容,所以选择A

牛客知识点