3.对于一个已经不被任何变量引用的对象,当垃圾回收器准备回收该对象所占用的内存时,将自动调用该对象的哪个方法()
A finalize
B notify
C notifyAll
D hashCode
A
就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用finalize()方法来回收资源。
在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消
JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。
垃圾回收是由守护进程执行的
8.以下描述错误的一项是( )?
A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的
B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C
程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的
原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
下面代码执行后的结果为( )
int main()
{
int sum=0;
int i=0,j=0;
for(j=0;j<6;j++)
{
if(j%2)continue;
sum++;
}
printf(“sum=%d”,sum);
return 0;
}
A.sum=1
B.sum=2
C.sum=3
D.其他几项都不对
C
估计看错了
下面代码的输出结果是什么?
public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A.3
B.123
C.1
D.12
D
1、inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,
2、catch捕捉异常,继续执行System.out.print(1);
3、当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行
.能单独和finally语句一起使用的块是( )
A.try
B.catch
C.throw
D.throws
A
强行解释下throw与throws。throws是向外面抛出,与finally无关,throw可以随意使用,但是与finally结合使用的时候,必须是在try/catch/finally组合块中,所以,算不上单独使用。
(多选)下面的Java赋值语句哪些是有错误的 正确答案:BF
A. int i =1000;
B. float f = 45.0;
C. char s = ‘\u0639’;
D. Object o = ‘f’;
E. String s = “hello,world\0”;
F. Double d = 100;
解析:
B:45.0必须写成45.0f,否则会默认为double类型
F:Java是强类型语言,不能把整型直接赋值给double类型的变量,赋值前必须进行强制类型转换
(多选)关于Java中的数组,下面的一些描述,哪些描述是准确的:( )
A.数组是一个对象,不同类型的数组具有不同的类
B.数组长度是可以动态调整的
C.数组是一个连续的存储结构
D.一个固定长度的数组可类似这样定义: int array[100]
E.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
F.可以二维数组,且可以有多维数组,都是在Java中合法的
ACF
1.数组其实也是一个对象,在一个数组中,所有的数组元素都具有相同的数据类型。当然,由于java是面向对象的语言,而类与类支持继承关系,这样可能在父类类型的数组里存放了不同的子类类型元素。
2.定义一个一维数组的方式是:type[] arrayname或者type arrayname[];
3.一维数组的初始化:
(1)静态初始化
1)int[] arr = new int[]{1, 2, 3}
2)int[] arr = {1, 2, 3}
(2)动态初始化
int[] arr = new int[3];
4.没有多维数组
如果从数组底形的运行机制来看,数组其实是一个引用,这个引用指向真实的数组内存。数组元素的类型也可以是引用,把之前的type换成int[],那么上面的定义数组的语法就是int [][] arrName,这样似乎就是定义了二维数组。但他的实质还是一维数组,只是数组元素也是引用。
27.abstract和final可以同时作为一个类的修饰符。( )
A.正确
B.错误
B
abstract修饰一个类,这个类肯定可以被继承,但是final类是不能继承的,所以有矛盾,肯定不能同时用
30.关于JAVA的垃圾回收机制,下面哪些结论是正确?
A.程序可以任意指定释放内存的时间
B.JAVA程序不能依赖于垃圾回收的时间或者顺序
C.程序可明确地标识某个局部变量的引用不再被使用
D.程序可以显式地立即释放对象占有的内存
B
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。
当对象的引用变量被赋值为null,可能被当成垃圾。
以下哪个类包含方法flush()?()
A. InputStream
B. OutputStream
C. A 和B 选项都包含
D. A 和B 选项都不包含
flush()一般用于刷新缓冲区的数据,一般是输出流
39.public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
360DW();
}
};
t.run();
System.out.print(“DW”);
}
static void 360DW() {
System.out.print(“360”);
}
A.DW
B.360
C.360DW
D.都不输出
C
我应该是对的答案错了???
40.java8中,下面哪个类用到了解决哈希冲突的开放定址法
A.LinkedHashSet
B.HashMap
C.ThreadLocal
D.TreeMap
ThreadLocalMap中使用开放地址法来处理散列冲突,而HashMap中使用的是分离链表法。之所以采用不同的方式主要是因为:在ThreadLocalMap中的散列值分散得十分均匀,很少会出现冲突。并且ThreadLocalMap经常需要清除无用的对象,使用纯数组更加方便。
41(多选).以下哪些方法可以取到http请求中的cookie值()?
A.request.getAttribute
B.request.getHeader
C.request.getParameter
D.request.getCookies
下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用:
1)Cookie[] getCookies()
返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。
2)Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。
3)String getHeader(String name)
以字符串形式返回指定的请求头的值。Cookie也是头的一种;
4)String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
42(多选).Java程序的种类有( )
A. 类(Class)
B. Applet
C. Application
D. Servlet
选了唯一认识 避开了所有正确答案
BCD
Java程序的种类有:
(a)内嵌于Web文件中,由浏览器来观看的_Applet
(b)可独立运行的 Application
(c)服务器端的 Servlets
43(多选).byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /语句1/
b6=b4+b5; /语句2/
b8=(b1+b4); /语句3/
b7=(b2+b5); /语句4/
System.out.println(b3+b6);
下列代码片段中,存在编译错误的语句是()
A.语句2
B.语句1
C.语句3
D.语句4
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。
对于Java中异常的描述正确的是( )
A. 用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。
B. 如果try块中没有抛出异常,finally块中的语句将不会被执行。
C. 抛出异常意味着程序发生运行时错误,需要调试修改
D. Java中的可不检测(unchecked)异常可能来自RuntimeException类或其子类。
A错 在调用此方法的时候 也可以再次申明以将异常交由更高一级处理。
B错 finally块中的语句一定会被执行。除非catch块中有System.exit(0)。
C错 抛出异常不一定是运行时异常,也有可能是编译时异常。
D对 运行时异常的特点是Java编译器不会检查它。
以下对选择语句描述错误的是()
A根据某一条件重复执行一部分代码直到满足终止条件为止
B可以根据条件控制程序流程,改变程序执行的顺序
C选择语句可以嵌套使用
D当条件满足时就会执行相应的语句
A是循环哦哦
52.多重继承的概念在Java中实现是通过如下哪些?()
I. 扩展两个或多个类
II. 扩展一个类并实现一个或多个接口。
III. 实现两个或更多接口。
A. 只有I &II
B. 只有II & III
C. 只有III
D. 都是
Java中不支持多继承,也就是不能存在一个子类继承多个父类的情况,当然你会问这是为什么呢.因为这会造成子类中某些方法或者变量的不确定性。
为了弥补java中采用单继承所带来的不足,Java出现了接口这个概念,接口可以很好的避免这个问题的出现。
Java中通过多实现接口的方式去解决类之间无法多继承的问题。
53.This调用语句必须是构造函数中的第一个可执行语句。
A. 正确
B. 错误
this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。
int i=5;
int s=(i++)+(++i)+(i–)+(–i);
s=( )//s 的值是什么?
A.28
B.25
C.21
D.26
E.24
F.23
忘记加过之后的值变化了
int s=(i++)+(++i)+(i–)+(–i);
int s = (5)+(++6)+(7–)+(–6)
=5+7+7+5
=24;
56.子类要调用继承自父类的方法,必须使用super关键字。
A. 正确
B. 错误
子类也可以new一个父类对象,然后调用父类方法,并不一定要使用super方法。
另外,子类调用父类的构造方法时,super语句必须是子类构造方法的第一句。
59.下面程序段的时间复杂度是()
i = k = 0;
while( k < n ){
i ++ ;
k += i ;
}
A.O(n)
B.O(n^1/2)
C.O(n*i)
D.O(n+i)
假设循环次数为t,则循环条件满足(t+1)t/2
61.下列不属于java语言鲁棒性特点的是
A.java能检查程序在编译和运行时的错误
B.java能运行虚拟机实现跨平台
C.java自己操纵内存减少了内存出错的可能性
D.java还实现了真数组,避免了覆盖数据的可能
鲁棒性(Robust,即健壮性)
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
感觉B选项虽然描述也对,但是,不应该把它归结于鲁棒性,B选项主要是体现Java的由于虚拟机,实现了一次编译,到处运行,跨平台性的特点。因此,我选B。
65.(多选)常用的servlet包的名称是?
A.java.servlet
B.javax.servlet
C.servlet.http
D.javax.servlet.http
JEE5.0中的Servlet相关的就下面这几个包:
javax.servlet
javax.servlet.jsp
java.servlet.jsp.el
java.servlet.jsp.tagext
而最用得多的就是
javax.servlet
javax.servlet.http
这两个包了.
66.(多选)以下哪种方式实现的单例是线程安全的
A.枚举
B.静态内部类
C.双检锁模式
D.饿汉式
1.饿汉式(线程安全,调用效率高,但是不能延时加载); 2.懒汉式(线程安全,调用效率不高,但是能延时加载); 3.Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用); 4.静态内部类实现模式(线程安全,调用效率高,可以延时加载); 5.枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)。
如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( )
A.void use() { …}
B.protected void use() { …}
C.public void use() { …}
D.以上语句都可以用在类SmallCup中
既然是实现接口,就要实现接口的所以方法,相当于重写方法,方法的重写需要满足:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)
75.观察以下代码:
class Car extends Vehicle
{
public static void main (String[] args)
{
new Car(). run();
}
private final void run()
{
System. out. println (“Car”);
}
}
class Vehicle
{
private final void run()
{
System. out. println(“Vehicle”);
}
}
下列哪些针对代码运行结果的描述是正确的?
A.Car
B.Vehicle
C.Compiler error at line 3
D.Compiler error at line 5
E.Exception thrown at runtime
答案:A
首先final声明的方法是不能被覆盖的,但是这里并不错误,因为方法是private的,也就是子类没有继承父类的run方法,因此子类的run方法跟父类的run方法无关,并不是覆盖。new Car().run()也是调用子类的run方法。
7、下列关于容器集合类的说法正确的是?
A. LinkedList继承自List
B. AbstractSet继承自Set
C. HashSet继承自AbstractSet
D. WeakMap继承自HashMap
a选项linkedlist类是实现了List接口,而不是继承
b选项AbstractSet类实现Set接口
c选项HashSet继承 AbstractSet类,同时也实现set
d选项WeakMap是js里面的玩意儿吧,,不太懂
9、(多选)在java中重写方法应遵循规则的包括()
A. 访问修饰符的限制一定要大于被重写方法的访问修饰符
B. 可以有不同的访问修饰符
C. 参数列表必须完全与被重写的方法相同
D. 必须具有不同的参数列表
方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
10、Java 语言中创建一个对象使用的关键字是()
A. class
B. interface
C. new
D. create
我吐了
16、有这么一段程序:
public class Test{
public String name=“abc”;
public static void main(String[] args){
Test test=new Test();
Test testB=new Test();
System.out.println(test.equals(testB)+","+test.name.equals(testB.name));
}
}
请问以上程序执行的结果是()
A. true,true
B. true,false
C. false,true
D. false,false
1.test.equals(testB),两个对象用equals()函数比较,如果两个对象是一个则返回true,如果不是String的实例并且是两个不同的对象则返回false,当两个对象是String的实例时,则比较字符串内容是否相同.相同则返回true, 不相同返回false.
2.test.name.equals(testB.name) 字符串内容相同,返回true.
3.test.name == testB.name, 栈中有一块内存存的是"abc", test.name和testB.name都指向这块内存,所以返回true
19、事务隔离级别是由谁实现的?
A. Java应用程序
B. Hibernate
C. 数据库系统
D. JDBC驱动程序
A,我们写java程序的时候只是设定事物的隔离级别,而不是去实现它
B,Hibernate是一个java的数据持久化框架,方便数据库的访问
C,事物隔离级别由数据库系统实现,是数据库系统本身的一个功能
D,JDBC是java database connector,也就是java访问数据库的驱动
20、类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2。( )
A. 正确
B. 错误
???/
23、面这条语句一共创建了多少个对象:String s=“welcome”+“to”+360;
A. 1
B. 2
C. 3
D. 4
字面量的创建是发生在编译期,类似于上述面试题,答案只创建一个对象。
24、HashMap和HashTable的描述,错误的是?
A. 他们都实现了Map接口。
B. HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。
C. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
D. 通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。
D
HashMap无contains方法
25、下列关于Java并发的说法中正确的是()
A. CopyOnWriteArrayList适用于写多读少的并发场景
B. ReadWriteLock适用于读多写少的并发场景
C. ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
D. 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了
答案:B
A,CopyOnWriteArrayList适用于写少读多的并发场景
B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,
读与读之间可以并发执行。在读多写少的情况下可以提高效率
C,ConcurrentHashMap是同步的HashMap,读写都加锁
D,volatile只保证多线程操作的可见性,不保证原子性
26、(多选)下面选项中,哪些是interface中合法方法定义?()
A. public void main(String [] args);
B. private int getSum();
C. boolean setFlag(Boolean [] test);
D. public float get(int x);
interface中的方法默认为public abstract 的 ,变量默认为public static final
33、以下那个数据结构是适用于"数据必须以相反的顺序存储然后检索" ? ()
A. Stack
B. Queue
C. List
D. Liink List
栈-先进后出(比喻:坐电梯) 队列-先进先出(水管) list-链表(怎么存就怎么取)
34、下面哪个Set类是排序的?
A. LinkedHashSet
B. TreeSet
C. HashSet
D. AbstractSet
TreeSet自然排序,LinkedHashSet按添加顺序排序
35、String s = new String(“xyz”);创建了几个StringObject?
A. 两个或一个都有可能
B. 两个
C. 一个
D. 三个
两个。第一个对象是字符串常量"xyz" 第二个对象是new String(“xyz”)的时候产生的,在堆中分配内存给这个对象,只不过这个对象的内容是指向字符串常量"xyz" 另外还有一个引用s,指向第二个对象。这是一个变量,在栈中分配内存。
36、以下J2EE中常用的名词解释错误的是?
A. EJB容器:Enterprise java bean 容器
B. JNDI:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
C. JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
D. JAF:JAVA安全认证框架。提供一些安全控制方面的框架。
JNDI:Java Naming and Directory Interface,Java命名和目录接口。
37、从以下哪一个选项中可以获得Servlet的初始化参数?
A. Servlet
B. ServletContext
C. ServletConfig
D. GenericServlet
C
通过ServletConfig接口的getInitParameter(java.lang.String name)方法
以下哪项不属于java类加载过程?
A. 生成java.lang.Class对象
B. int类型对象成员变量赋予默认值
C. 执行static块代码
D. 类方法解析
不应该选D,而应该选B
类的加载包括:加载,验证,准备,解析,初始化。
选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:这个会调用。可以用反射试验。
选项D:类方法解析发生在解析过程。
41、列哪个选项是正确计算42度(角度)的余弦值?
A. double d=Math.cos(42)
B. double d=Math.cosine(42)
C. double d=Math.cos(Math.toRadians(42))
D. double d=Math.cos(Math.toDegrees(42))
答案:C
Math.cos为计算弧度的余弦值,Math.toRadians函数讲角度转换为弧度
42、下列关于构造函数说法正确的是( )
A. 构造函数的返回值为void
B. 构造函数不可以被重载
C. 构造函数可以是内联函数
D. 构造函数可以没有参数
就是天王老子来了这道题也选D
50、下列哪种异常是检查型异常,需要在编写程序时声明?
A. NullPointerException
B. ClassCastException
C. FileNotFoundException
D. IndexOutOfBoundsException
A:空指针异常
B:类转换异常
C:文件找不到异常
D :索引超出异常
A\B\D是运行异常,C检查型异常
53.(多选) 下列说法哪个正确()
A.abstract类只能用来派生子类,不能用来创建abstract类的对象。
B.final类不但可以用来派生子类,也可以用来创建final类的对象。
C.abstract不能与final同时修饰一个类。
D.abstract类定义中可以没有abstract方法。
1、abstract类不能用来创建abstract类的对象;
2、final类不能用来派生子类,因为用final修饰的类不能被继承;
3、如2所述,final不能与abstract同时修饰一个类,abstract类就是被用来继承的;
4、类中有abstract方法必须用abstract修饰,但abstract类中可以没有抽象方法,接口中也可以有abstract方法。
对象存储在堆区。
数组是一种对象。
57.java中,静态变量static在不同线程的不同实例中地址是否一样?他们储存在什么区域()
A.地址一样,在堆栈区。
B.地址不一样,在堆栈区。
C.地址一样,在全局区。
D.地址不一样,在全局区。
static变量也称作静态变量,静态变量和非静态变量的区别是:
静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
60.下列哪个说法是正确的()
A.ConcurrentHashMap使用synchronized关键字保证线程安全
B.HashMap实现了Collction接口
C.Array.asList方法返回java.util.ArrayList对象
D.SimpleDateFormat是线程不安全的
hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全。hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费。concurrentHashMap采用分段加锁的机制来确保安全
64.下列js可以让一个input的背景颜色变成红色的是?
A.inputElement.style.backgroundColor = ‘red’;
B.inputElement.backgroundColor = ‘red’;
C.inputElement.style.backgroundColor = ‘#0000’;
D.inputElement.backgroundColor = ‘#0000’;
A
backgroundColor属性设置元素的背景颜色
#0000应该为#FF0000
65.以下js表达式返回false的是()
A.1true
B.“”false
C.falsenull
D.nullundefined
typeof
undefined 值未定义
boolean 布尔值
string 字符串
number 数值(整形和浮点)
object 对象或null
function 函数
67.老王去年种了一块菜地,今年他又新开发出了一块比去年大的正方形菜地,这块新地的卷心菜的产量比去年多211只。请问他今年总共可从这两块菜地上收获多少只卷心菜?(假设面积相等的菜地去年和今年的产量一样)。
A.11235
B.9874
C.7934
D.8216
E.13186
总共收获2x+211颗,其中x必须为整数。只有A满足
68.一个包里有5个黑球,10个红球和17个白球。每次可以从中取两个球出来,放置在外面。那么至少取________次以后,一定出现过取出一对颜色一样的球。
A.16
B.9
C.4
D.1
既然是“一定出现”,共32个球,全取出来(16次),肯定可以满足条件(5+10=15!=17)。
其他选项都不能保证“一定出现”。
69.2个空瓶换1瓶水,1元钱买1瓶水,20元钱一共能够喝多少瓶水?(可以朝老板借水或者瓶子)
A.19
B.20
C.30
D.40
向老板借20瓶水加上买的20瓶水,全部喝掉以后40个瓶子换20瓶水,还给老板,所以可以喝40瓶水。答案为D。