版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA 答案1、D ( Arraylist的内存结构是数组,当超出数组大小时创建一个新的数组,把原数组中元素拷贝过去。其本质是顺序存储的线性表,插入和删除操作会引发后续元素移动,效率低,但是随机访问效率高LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问)2、B ( 1. 要使用t.start()才启动这个线程。2. 题目中的synchronized关键字修饰了static方法,产生对Class对象的加锁,但是Java的内置锁是可重入的,所以不会死锁。)3、B (JDBC提供两套接口,一个面向数据库厂商,一
2、个面向JDBC使用者)4、B ( A、for循环的话,很灵活,但是代码不够简洁. B、System.arraycopy()源码。可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C+)实现的文件中。 可以将native方法比作Java程序同程序的接口。public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length); C、
3、选项有误,copyOf不是System的方法,而是Arrays的方法,下面是源码,可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的123456public static int copyOf(int original, int newLength) int copy = new intnewLength; System.arraycopy(original, 0, copy, 0, Math.min
4、(original.length, newLength); return copy; D。clone的话,返回的是Object【】,需要强制转换。 一般用clone效率是最差的, CD可以排除。具体的理由不好说。不过一致的说法和实验证明是arraycopy()效率高!)5、D (动态INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp" flush="true" /> 它总是
5、会检查所含文件中的变化 , 适合用于包含动态页面 , 并且可以带参数。各个文件分别先编译,然后组合成一个文件。静态 INCLUDE 用 include 伪码实现 , 定不会检查所含文件的变化 , 适用于包含静态页面 <% include file="included.htm" %>。先将文件的代码被原封不动地加入到了主页面从而合成一个文件,然后再进行翻译,此时不允许有相同的变量。 以下是对 include
6、;两种用法的区别 , 主要有两个方面的不同 一 : 执行时间上 : <% include file="relativeURI"%> 是在翻译阶段执行 <jsp:include page="relativeURI" flush="true" /> 在请求处理阶段执行 .
7、;二 : 引入内容的不同 : <% include file="relativeURI"%> 引入静态文本 (html,jsp), 在 JSP 页面被转化成 servlet 之前和它融和到一起 . <jsp:include page="relativeURI" flush="true" />
8、160;引入执行页面或 servlet 所生成的应答文本 .)6、D (String类型和数组属于引用传递,但执行change方法后,数组改变的是ch0,也就是ch数组引用未改变,但其所指向内容的值被改变)7、C (运行时数据区包括:虚拟机栈区,堆区,方法区,本地方法栈,程序计数器虚拟机栈区 :也就是我们常说的栈区,线程私有,存放基本类型,对象的引用和 returnAddress ,在编译期间完成分配。堆区 , JAVA 堆,也称 GC 堆,所有线程共享,存放对象的实例和数组,
9、0;JAVA 堆是垃圾收集器管理的主要区域。方法区 :所有线程共享,存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。这个区域的内存回收目标主要是针对常量池的对象的回收和对类型的卸载。程序计数器 :线程私有,每个线程都有自己独立的程序计数器,用来指示下一条指令的地址。)8、D (D:含有抽象方法的类(包括直接定义了抽象方法;继承一个抽象父类,但没有完全实现父类包含的抽象方法;实现一个接口,但没有完全实现接口包含的抽象方法)只能被定义成抽象类。A:用于修饰抽象类或者抽象方法B:final修饰的类不能被继承C:抽象类不能被实例化,无法使用new
10、关键字调用抽象类的构造器创建抽象类的实例,即使抽象类不包含抽象方法,也不能被实例化。)9、AB (String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。Strin
11、gBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。)10、CDE (=默认比较的是对象或者变量所存储的地址,equals方法则可以则继承的类里重写,包装类中的equals实际比较的是所存储的变量值,而对象直接用=则比较的是地址(s=u) ,因为, s 是 Integer 类型, u 是&
12、#160;Long 类型,两个不同类型的引用不能进行= 比较。 (s=t) , s 是指向一个 9 的引用,而 t 也是一个指向 9 的引用,虽然都是指向 9 ,但却是指向不同的 9 ,即是两个不同的引用。因此 = 比较返回的是假。 (s.equals(t) , Integer 的 equals 方法如下: p
13、ublic boolean equals(Object obj) if (obj instanceof Integer) return value = (Integer)obj).intValue();
14、 return false 是 Integer 的实例且 value 值也相等的情况下返回真,其他返回假。在这里, s 和 t 都是 Integer 类型且值都为 9 ,因此结果为真。 (s.equals(9) , 在进行 equals 比较之前,会对 9 调用 Integer.v
15、alueOf 方法,进行自动装箱 , 由于 IntegerCache 中已经存在 9 ,所以,直接返回其引用,引用相同,equals 就自然相同了。所以结果为真。 (s.equals( new Integer(9) ,直接创建了一个新的 Integer 实例,但且值也为 9 ,所以,满足条件,返回真)11、C (关键字static(类方法,实例方法) 1:静态方法和静态变量是属
16、于某一个类,而不属于类的对象。 2:静态方法和静态变量的引用直接通过类名引用。 3:在静态方法中不能调用非静态的方法和引用非静态的成员变量。非静态方 法中可以调用静态方法和变量,即(反之,则可以)。(静态方法)12、B (操作步骤就是先解码再编码,用new String(src,"GBK")解码得到字符串用getBytes("UTF-8")得到UTF8编码字节数组)13、C (这里的参数如果为空,则默认false。这里的true和fal
17、se代表未获取到Session时是否创建为true时,当request.getSession未获取到Session就创建一个新的Session,并放入request域中)14、B (方法摘要protected Objectclone() 创建并返回此对象的一个副本。 booleanequals(Object obj) 指示其他某个对象是否与此对象“相等”。protected &
18、#160;voidfinalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 Class<?>getClass() 返回此Object的运行时类。 inthashCode() 返回该对象的哈希码值。 v
19、oidnotify() 唤醒在此对象监视器上等待的单个线程。 voidnotifyAll() 唤醒在此对象监视器上等待的所有线程。 StringtoString() 返回该对象的字符串表示。 voidwait()
20、160; 其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 voidwait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 voidwait(long timeout, int nanos) 在其他线程调用此对象的 notify() 方法或
21、notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。15、C (Integer i01 = 59. 直接赋值数字,java会自动装箱,自动调用Integer.valueOf(59)Integer i03 = Integer.valueOf(59). Integer.valueOf(int i)会返回一个Integer对象,当i在-128127之间时,会返回缓存中已创建的Integer对象。Integer i04 = new Integer(59) 返回一个新的对象。所以这题,59在-128127之间,所以前三条语句返回
22、的是同一个对象(在缓存区已创建的对象),而i04使用new新创建了一个新的对象,所以i04 与前面三个对象都不一样 )16、A (Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet(2)创建:通过调用servlet构造函数创建一个servlet对象(3)初始化:调用init方法初始化(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求(5)卸载:调用destroy方法让servlet自己释放其占用的资源init()方法和destroy()方法只会调用一次)17、D (最终
23、类就是被final修饰的类,最终方法就是被final修饰的方法。最终类不能被继承,最终方法不能被重写)18、A (基本类型四类八种,其余全是引用类型四类八种:整数(byte short int long) 浮点数(float double)字符型(char) 逻辑性(boolean)注意大小写,大写的是封装基本类型的引用类型。byte Byte short Short int Integer long - Longfloat Float double Double char Character boolean Boolean )19、ABCD (普通的java对象是通过new关键字把对应类的字
24、节码文件加载到内存,然后创建该对象的。反射是通过一个名为Class的特殊类,用Clas敏感词orName("className");得到类的字节码对象,然后用newInstance()方法在虚拟机内部构造这个对象(针对无参构造函数)。也就是说反射机制让我们可以先拿到java类对应的字节码对象,然后动态的进行任何可能的操作)20、AD (创建Statement是不传参的,PreparedStatement是需要传入sql语句)21、B ( PROPAGATION_REQUIREDSupport a current transaction; create a new one i
25、f none exists. 支持一个当前事务;如果不存在,创建一个新的。This is typically the default setting of a transaction definition, and typically defines a transaction synchronization scope.默认设置PROPAGATION_SUPPORTSSupport a current transaction; execute non-transactionally if none exists. 支持当前事务;如果不存在当前事务则执行非事务。P
26、ROPAGATION_NOT_SUPPORTEDDo not support a current transaction; rather always execute non-transactionally.不执行当前事务;而是总是执行非事务PROPAGATION_REQUIRES_NEWCreate a new transaction, suspending the current transaction if one exists. 创建一个新的事务,如果存在当前事务的话暂停(挂起)当前事务 。PROPAGATION_NESTEDExecute within a nested t
27、ransaction if a current transaction exists 如果当前存在事务的话,执行一个嵌套的事务PROPAGATION_NEVERDo not support a current transaction; throw an exception if a current transaction exists. 不支持当前事务;如果存在当前事务则抛出一个异常PROPAGATION_MANDATORYSupport a current transaction; throw an exception if no current transaction
28、exists. 支持当前事务;如果不存在当前事务则抛出一个异常)22、B(这道题主要考察类加载时候的初始化问题,执行这个类的 main方法,会导致类进行加载,而类加载的属性如下 1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化。我们不要去纠结这里的顺序,一般来说我们只需要知道,静态方法一般在最后。 2、只有在调用new方法时才会创建类的实例 3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法 4、
29、类实例销毁时候,首先销毁子类部分,再销毁父类部分Java初始化顺序:1 继承体系的所有静态成员初始化(先父类,后子类)2 父类初始化完成(普通成员的初始化->构造函数的调用)3 子类初始化(普通成员->构造函数) )23、C (A:LinkedList实现了List接口; B: AbstractSet实现了Set接口;C: HashSet继承自AbstractSet基类; D: WeakMap继承自 AbstractMap。24、C(执行顺序优先级:静态块>main()>构造块>构造方法静态块按照申明顺序执行,所以先执行pu
30、blicstaticB t1 = newB() 静态变量会按声明的顺序初始化,所以先会执行public static B t1 = new B(); 接着在执行静态代码块public static B t2 = new B(); 打印“静态块”,所以会打印两个“构造块” 最后执行B t = new B(); 打印“构造块” )25、D26、D27、C( a.虚拟机会自己抛出RuntimeException异常b.RuntimeException异常不需要声明抛出或者被捕获c.subclass:子类, RuntimeException不是Thro
31、able子类,是Exception的子类。意思:RuntimeException 是Throable子类并表明他是一个严重的问题,应该合理的被trycatch捕获d:空指针异常(NullPointException)是 RuntimeException的一种运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可
32、能避免这类异常的发生。 运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。 非运行时异常 (编译异常): 是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查
33、异常。 )28、BCD (数组是对象,int float char这些基本类型不是对象。基本数据类型(或叫做原生类、内置类型)8种。关于如何判断基本类型和对象,参考下面的:行为:1) 基本类型只是一个值,没有任何行为。2)对象类型有自己的行为内存分配:1)基本类型在栈内分配2)对象在堆内分配3)对象引用保存在栈内引用与值:1)基本类型是值类型,仅表示一个值,保存在栈内2)引用类型分两部分,对象引用保存在栈内,对象保存在堆内,3)访问变量,是使用的引用找对象 )29、DE(Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。1、ThreadLocal的类
34、声明:public class ThreadLocal<T>可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。2、ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,C选项错。由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,变量被彻底封闭在每个访问的线程中.所以E对.3、ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本: static cla
35、ss ThreadLocalMap static class Entry extends WeakReference<ThreadLocal> /* The value associated with this ThreadLocal. */ Object value; Entry(
36、ThreadLocal k, Object v) super(k); value = v; /* * The table, resized as necessary.
37、0; * table.length MUST always be a power of two. */ private Entry table;所以D对)30、ABD (如果是静态变量是共享的话,那必须同步,否则尽管有副本,还是会出错,故C错)31、D ( Java致力于检查程序在编译和运行时的错误。Java虚拟机实现了跨平台接口类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。注意,是避免数据覆
38、盖的可能,而不是数据覆盖类型 )32、B (参考22题)33、A ( System.in和 System.out是java中的标准输入输出流,一般情况下代表从控制台输入和输出到控制台。inputstream,outputstream都位于system.io包中)34、D(1、int i = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,2、catch捕捉异常,继续执行System.out.print(1);3、当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执
39、行finally中的代码,其他地方的代码都不会执行 )35、D( D.final只是指向不变,但是指向的值有可能变,所以依然不是线程安全Java线程之间的通信由Java内存模型(简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化volatile变量
40、的写-读可以实现线程之间的通信。从内存语义的角度来说,volatile与监视器锁有相同的效果:volatile写和监视器的释放有相同的内存语义;volatile读与监视器的获取有相同的内存语义。)36、C(简单的来说 java的堆内存分为两块:permantspace(持久带)和heap space。持久带中主要存放用于存放静态类型数据,如 Java Class, Method 等, 与垃圾收集器要收集的Java对象关系不大。而heapspace分为年轻带和年老带 年轻代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC。在年
41、轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象年老代溢出原因有 循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存,既A B D选项持久带溢出原因 动态加载了大量Java类而导致溢出 )37、D ( -Xmx:最大堆大小 -Xms:初始堆大小即最小内存值 -Xmn:年轻代大小-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值。XXSurvivorRatio=3,即Eden:FromSurvivor:
42、ToSurvivor=3:1:1;所以Survivor一共是2048)38、ABCD (会话跟踪是一种灵活、轻便的机制,使Web上的状态编程变为可能。 HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。隐藏表单域:<input type="hidden">,非常适合
43、不需要大量数据存储的会话应用。URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启后它仍可以保留其值Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话)39、D( 重
44、写:两同,两小,一大两同:方法名,方法参数列表相同。两小:抛出的异常类型要小于等于父类,返回值类型要小于等于父类一大:访问权限大于等于父类。重载:在同一个类中,方法名和方法参数列表不同,其他的(访问权限、返回值)随意。 )40、C (ResultSet数组是从1开始遍历。ResultSet是jsp,用来接收获取的数据库信息,查询时也是从第1列开始)41、B (HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null,与之对应的是Hashtable,(注意大小写:不是HashTable),Hashtable不能将键和值设为null,否则运行时会报空指针异常错误
45、;HashMap线程不安全,Hashtable线程安全)42、D (抽象类 特点:1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。接口1.在接口中只有方法的声明,没有方法体。2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final 3.在接口中的方法,永远都被public来修饰。4.接口中没有构造方法,也不能实例化接口的对
46、象。5.接口可以实现多继承6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法7.则实现类定义为抽象类 )43、AD( 1.JVM加载class文件时,就会执行静态代码块,静态代码块中初始化了一个变量x并初始化为5,由于该变量是个局部变量,静态代码快执行完后变被释放。2.申明了两个静态成员变量x,y,并没有赋初值,会有默认出值,int类型为0,3.执行x-操作,变量单独进行自增或自减操作x-和-x效果一样,此时x变为-14.调用MyMethod()方法,在该方法中对x和y进行计算,由于x和y都是静态成员变量,所以在整个类的生命周期内的x和y都是同一个5.y=x+ + +
47、x可以看成y=(x+)+(+x),当+或者-和其它变量进行运算时,x+表示先运算再自增,+x表示先自增再参与运算。所以此时x为-1参与运算然后自增,x此时为0,+x后x为1,然后参与运算,那么y=-1+1就为0,此时x为16.执行并打印x+y + +x运算方式和第5步相同,最后计算结果就为3. )44、B ( 1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改
48、变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值 )45、A ( Spring依赖注入(DI)的三种方式,分别为:1)接口注入 2)Setter 方法注入 3)构造方法注入. 依赖注入是一种思想,或者说是一种设计模式,在java中是通过反射机制实现,与具体框架无关 )46、C (public Method getDeclaredMethods()返回类或接口声明的所有方法,包括public, protected, default (package) 访问
49、和private方法的Method对象,但不包括继承的方法。当然也包括它所实现接口的方法。public Method getMethods()返回某个类的所有public方法,包括其继承类的公用方法,当然也包括它所实现接口的方法 )47、ACD ( 1.Serial New/Serial Old 收集器是最基本最古老的收集器,它是一个单线程收集器,并且在它进行垃圾收集时,必须暂停所有用户线程。Serial New收集器是针对新生代的收集器,采用的是Copying算法,Serial Old收集器是针对老年代的收集器,采用的是Mark-Compact算法。它的优点是实现简单高效,但是缺点
50、是会给用户带来停顿。2.Parallel New收集器是Serial收集器的多线程版本(参照Serial New),使用多个线程进行垃圾收集。3.Parallel Scavenge收集器是一个新生代的多线程收集器(并行收集器),它在回收期间不需要暂停其他用户线程,其采用的是Copying算法,该收集器与前两个收集器有所不同,它主要是为了达到一个可控的吞吐量。4.Parallel Old是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和Mark-Compact算法。5.CMS(Current Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,
51、它是一种并发收集器,采用的是Mark-Sweep算法。6.G1收集器是当今收集器技术发展最前沿的成果,它是一款面向服务端应用的收集器,它能充分利用多CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型 )48、ABC (都是Throwable的子类: 1.Exception(异常) :是程序本身可以处理的异常。 2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。3.检查异常(编译器要求必须处置的异常) : 除了E
52、rror,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。4.非检查异常(编译器不要求处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error)。)49、ACD (Servlet的生命周期一般可以用三个方法来表示:init():仅执行一次,负责在装载Servlet时初始化Servlet对象service() :核心方法,一般HttpServ
53、let中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。destory():在停止并且卸载Servlet时执行,负责释放资源初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。所以选ACD。B是在调用service方法时才构造的)50、A(mock对象:也成为伪对象,在测试中的利用mock对象来代替真实对象,方便测试的进行。java的封装性:指的是将对象的
54、状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,通过该类提供的方法实现对内部信息的操作访问。反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性 )51、D(sleep和wait的区别有: 1,这两个方法来自不同的类分别是Thread和Object2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法。3,wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用synchronized(x) x.notif
55、y() /或者wait() 4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备)52、D ( Base base = new Son(); 这句new 了一个派生类,赋值给基类,所以下面的操作编译器认为base对象就是B
56、ase类型的。Base类中不存在methodB()方法,所以编译不通过)53、B (在上面main()方法中,并没有创建一个新的线程,只是简单地方法调用而已,如果想要创建线程,需要t.start();创建线程,等待cpu时间片,而run()方法只是简单地方法调用,所以先执行run(),在输出dazhong)54、A (forward和redirect是最常问的两个问题forward,服务器获取跳转页面内容传给用户,用户地址栏不变redirect,是服务器向用户发送转向的地址,redirect后地址栏变成新的地址)55、C (java程序的初始化遵循3个原则: (1)静态
57、对象(变量)优于非静态的 (2)父类优于子类 (3)按照成员变量定义的谁许进行初始化初始化的工作可以在许多不同的代码中完成,执行顺序如下(有父才有子):父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、子类静态代码块、父类非静态变量、父类菲静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数 )56、ABCD(1、加载JDBC驱动程序: 2、提供JDBC连接的URL 3、创建数据库的连接 4、创建一个Statement 5、执行SQL语句 6、处理结果 7关闭JDBC对象 )57、BCD(在集合框架中,有些类是线程安
58、全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出hashtable:就比hashmap多了个线程安全enumeration:枚举,相当于迭代器StringBuffer 是线程安全,而 StringBuilder 是线程不安全的。除了这些之外,其他的都是非线程安全的类和接口。最起码的队列就是安全的
59、 Queue)58、D (public void add(Byte b) b=b+; 这里涉及java的自动装包/自动拆包(AutoBoxing/UnBoxing) Byte的首字母为大写,是类,看似是引用传递,但是在add函数内实现+操作,会自动拆包成byte值传递类型,所以add函数还是不能实现自增功能。也就是说add函数只是个摆设,没有任何作用。 Byte类型值大小为-128127之间。 add(+a);这里+a会越界,a的值变为-128 add(b); 前面说了,add不起任何作用,b还是127)59、C (不论程序是否发生错误及捕捉到异常情况,都会执行finally部分 )60、D
60、(HashMap和Hashtable都实现了Map接口HashMap的线程不安全,而Hashtable的线程安全HashMap允许null键和null值存在,Hashtable不允许null键或null值存在,否则会报空指针异常HashMap中没有contains方法,只有containsKey()和containsValue()方法,Hashtable中有contains()方法,用于判断映射表中是否存在与指定值关联的键 )61、C (Ant和Maven都是基于Java的构建(build)工具。理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。Ant是软件构建工具,M
61、aven的定位是软件项目管理和理解工具。 Ant特点:1)没有一个约定的目录结构;2)必须明确让ant做什么,什么时候做,然后编译,打包 ;3)没有生命周期,必须定义目标及其实现的任务序列;4)没有集成依赖管理 Maven特点:1)拥有约定,知道你的代码在哪里,放到哪里去2)拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程3)只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情4)拥有依赖管理,仓库管理)62、C (a是类中的成员变量,存放在堆;b、c都是方法中的局部变量,存放在栈区 )63、A (
62、StringBuffer类的对象调用toString()方法将转换为String类型 这个正确两个类都有append()方法 String类没有append方法可以直接将字符串“test”复制给声明的Stirng类和StringBuffer类的变量 引用类型只有String可以直接复制,其他的都要new出来两个类的实例的值都能够被改变 StringBuffer类可以直接改变它的内容,不用重新分配地址; String 对象/ 实例 是不可以被改变的。String:是对象不是
63、原始类型。为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立,StringBuffer sb = new StringBuffer(); !:不能通过赋值符号对他进行赋值 sb = "welcome to here!" /error对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
64、中赋值的时候可以通过它的append方法.sb.append("hello");字符串连接操作中StringBuffer的效率要比String高:String str = new String("welcome to ");str += "here"的处理步骤实际上是通过建立一个StringBuffer,然后调用append(),最后再将StringBuffer toSting()(toString方法:StringBuffer类型转化成String类型); )64、B (对方法的返回类型没有要求,但方法名必须相同,参数列表必须不同)
65、65、D (接口必须是public 接口的方法定义默认为public abstract类型接口中的成员变量类型默认为public static final )66、B (若调用start,则先执行主线程的,后执行子线程的,即结果为pingpong若调用run,相当于函数调用,顺序执行,即结果为pongping )67、AB (参考57题)68、A (java.awt包是java图形界面的包java.lang是java语言的核心好,lang是language的简写java.swing是经过java封装的与操作系统无关的图形界面包)69、C (if()语句括号中为比较表达式,返回值要么是true,要么是false,if(x=y)是将y赋值给x,但是数据类型是int类型的,编译不能通过,如果把代码改为这样:boolean x =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理审美意识的形成与发展
- 大肠息肉的中医护理与多学科合作
- 伤口造口失禁的护理团队建设
- 2026春青岛版一年级数学下册《两位数加两位数进位加法》教学设计及评析
- 成人外科护理基础理论
- 压力性损伤的护理职业健康与安全
- 2025-2026学年毛笔书法教学设计美术
- 六分钟步行试验临床规范应用中国专家共识
- 2025-2026学年一下公开课教学设计英语
- 3.3元素作业设计-2025-2026学年九年级化学人教版上册教学设计
- DB5104∕T82-2023 康养产业项目认定规范
- 2025-2030年中国太阳能光伏发电行业市场深度调研及前景趋势与投资研究报告
- 驾校教练车承包协议
- 金砖国家的经济合作试题及答案
- 《鸭养殖技术》课件
- 国防科大宣讲课件
- 建筑施工企业安全风险分级管控及隐患排查治理双重预防工作指南
- 会计中级职称《财务管理》电子书
- 机场控制区通行证培训
- 苗圃管理的病虫害防治及维护措施
- 物理课程标准2025解读
评论
0/150
提交评论