java试题复盘——11月13日

上:

10. AccessViolationException异常触发后,下列程序的输出结果为(   A   )

1

2

3

4

5

6

7

8

9

10

11

12

13

14

AccessViolationException异常触发后,下列程序的输出结果为(      )

static void Main(string[] args)  

{  

    try  

    {  

        throw new AccessViolationException();  

        Console.WriteLine("error1");  

    }  

    catch (Exception e)  

    {  

        Console.WriteLine("error2");  

    }  

    Console.WriteLine("error3");  

 

 

 

 

  

A. error2
  error3
B. error3
C. error2
D. error1

 

解析:  1、若catch(){}块中,如果有throw语句,则try{}catch(){}finally{}块之外的代码不执行;否则,执行。

     2、若try{}中有异常,则异常下面的代码不执行。

        3、finally{}中代码必执行。

 

 

12.假链接中我们通常在a标签的href中添加什么能使得页面不跳转(C)

  A、#

  B、##

  C、javascript:;

  D、直接为空,无需添加

解析:

  假连接就是指点击后不会跳转的链接。

<a href="#">顶部</a>  回到页面顶部
<a href="javascript:">不回顶部</a>  不会回到页面顶部

14.指出下列程序运行的结果:   B

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public class Example{

    String str=new String("tarena");

    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';

    }

}

 

A、tarena and abc

B、tarena and gbc

C、test ok and abc

D、test ok and gbc

解析:

1、java语言参数之间只有值传递,包括按值调用和按引用调用。 一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量 值。

按值调用:包括八大基本数据类型都是按值调用。传值的时候,也就是说方法得到的是所有参数值的一个拷贝。 按引用调用:数组、对象。传值时候,传递的是引用地址的拷贝,但是都是指向同一个对象。                

2、String是不可变类(final and Immutable),这里只是把副本的指向修改成指向“test ok”,原地址str的指向的值没有发生改变。 

17. 下面关于Spring的说法中错误的是(D)

  A、Spring是一系列轻量级Java EE框架的集合

  B、Spring中包含一个“依赖注入”模式的实现

  C、使用Spring可以实现声明式事务

  D、Spring提供了AOP方式的日志系统

解析:

spring没有提供AOP方式的日志系统
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
Spring通过对AOP的支持,借助log4j等Apache开源组件实现了日志系统。

21. 下面这段JS程序的执行结果是:   D

1

2

3

4

5

6

7

8

var user = {

 count : 1,

 getCount: function(){

  return this.count;

 }

}

var func = user.getCount

console.log(func())

  A、this.count

  B、1

  C、报错

  D、undefined

23. Java 多线程有几种实现方法?(A B )(多选)

A.  继承Thread类
B.  实现Runnable接口
C.  实现Thread接口
D.  以上都不正确

解析:

实现多线程的方法:

1.继承Thread类
2.实现Runnable接口
3.实现Callable接口,然后使用 FutureTask包装,因为Callable接口没有实现Runnable接口不能做为Thread的target,而FutureTask是在Java程序中可以取消的异步运算,有可以开始,取消运算,查询运算是否结束,获得查询结果的功能,特别注意的是,如果查询结果时,运算还没完成则会阻塞线程。
4.使用,java.util.current.ThreadPoolExecutor来获取线程,执行多线程
 
其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。
 
 
 

27. java中关于继承的描述正确的是(A C D)(多选)

A、一个子类只能继承一个父类

B、子类可以继承父类的构造方法

C、继承具有传递性

D、父类一般具有通用性,子类更具体

 
解析:子类不可以继承父类的构造方法,只可以调用父类的构造方法。子类中所有的构造函数都会默认访问父类中的空参数构造函数,这是因为子类的构造函数内第一行都有默认的super()语句。super()表示子类在初始化时调用父类的空参数的构造函数来完成初始化。一个类都会有默认的空参数的构造函数,若指定了带参构造函数,那么默认的空参数的构造函数,就不存在了。这时如果子类的构造函数有默认的super()语句,那么就会出现错误,因为父类中没有空参数的构造函数。因此,在子类中默认super()语句,在父类中无对应的构造函数,必须在子类的构造函数中通过this或super(参数)指定要访问的父类中的构造函数。
 
 
 

28. 下列说法错误的有( A C D )(多选)

A、在类方法中可用this来调用本类的类方法

B、在类方法中调用本类的类方法时可直接调用

C、在类方法中只能调用本类中的类方法

D、在类方法中绝对不能调用实例方法

 
解析:
A:类方法是指类中被static修饰的方法,无this指针。
C:类方法是可以调用其他类的static方法的。
D:可以在类方法中生成实例对象再调用实例方法。
 
 

29. 下面的Java赋值语句哪些是有错误的 (B F)(多选)

 

A、int i =1000;

B、float f = 45.0;

C、char s = ‘u0639’

D、Object o = ‘f’;

E、String s = "hello,world";

F、Double d = 100;

 
解析:C使用的是Unicode(统一码、万国码、单一码)
 
 

32. 哪一个html盒模型中的border的正确写法? A

A、p{  border:5px   solid red;}

B、p{border:5px  <br> red solid; }

C、p{border:  red solid 5px; }

D、p{border: solid red 5px; }

解析:

为了代码的可读性,建议按照,border-width,border-style,border-color,的顺序书写。
但其实顺序调换是不影响呈现的
 
 

42. 现有如下html结构

1

2

3

4

5

6

<ul>

 <li>click me</li>

 <li>click me</li>

 <li>click me</li>

 <li>click me</li>

</ul>

运行如下代码:

1

2

3

4

5

6

7

    var elements=document.getElementsByTagName('li');

    var length=elements.length;

    for(var i=0;i<length;i++){

        elements[i].onclick=function(){

        alert(i);

    }

 }

依次点击4个li标签,哪一个选项是正确的运行结果(D)?

A.  依次弹出1,2,3,4
B.  依次弹出0,1,2,3
C.  依次弹出3,3,3,3
D.  依次弹出4,4,4,4
 
 
解析:当for循环全部执行完成后,i的值已经变成了4,然后你再点击li的话,就是输出4了
 
 
48.以下哪些方法是Object类中的方法   ABCD
 
A、clone()
B、toString()
C、wait()
D、finalize()
 
 解析:
Object 类中方法及说明如下:
registerNatives()   //私有方法
getClass()    //返回此 Object 的运行类。
hashCode()    //用于获取对象的哈希值。
equals(Object obj)     //用于确认两个对象是否“相同”。
clone()    //创建并返回此对象的一个副本。
toString()   //返回该对象的字符串表示。   
notify()    //唤醒在此对象监视器上等待的单个线程。   
notifyAll()     //唤醒在此对象监视器上等待的所有线程。   
wait(long timeout)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或        者超过指定的时间量前,导致当前线程等待。   
wait(long timeout, int nanos)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait()    //用于让当前线程失去操作权限,当前线程进入等待序列
finalize()    //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
 
 
 
 下:

3.以下哪个不能用来处理线程安全   D

A synchronized关键字

B volatile关键字

C Lock类

D transient关键字

 

解析:

transient,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。当一个变量不希望被持久化的时候,比如说一些账号密码,就可以用transient关键字来表示该变量不参与序列化过程。

 

5关于抽象类与接口,下列说法正确的有? A C

A 优先选用接口,尽量少用抽象类
B 抽象类可以被声明使用,接口不可以被声明使用
C 抽象类和接口都不能被实例化。
D 以上说法都不对
 
 解析:
含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class
类中定义抽象方法必须在具体
(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
 
 

18多态的表现形式有(A)

A重写

B抽象

C继承

D封装

 

20非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致.(B)

A 正确

B 错误

 

解析:

实际上这道题考查的是两同两小一大原则:
方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

 

 

23以下声明合法的是  B

A default  String  s

B public  final  static  native  int  w( )

C abstract  double  d

D abstract  final  double  hyperbolicCosine( )

 

解析:

A:java的访问权限有public、protected、private和default的,default不能修饰变量

C:普通变量不能用abstract修饰,abstract一般修饰方法和类
D:被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和改写的
心存疑问可以实验一下,看是否能通过编译
 
 
 

31 关于JSP生命周期的叙述,下列哪些为真? A C

A JSP会先解释成Servlet源文件,然后编译成Servlet类文件

B 每当用户端运行JSP时,jsp init()方法都会运行一次

C 每当用户端运行JSP时,jsp service()方法都会运行一次

D 每当用户端运行JSP时,jsp destroy()方法都会运行一次

 
 
解析:
Jsp只会在客户端第一次发请求的时候被编译,之后的请求不会再编译,同时tomcat能自动检测jsp变更与否,变更则再进行编译。

第一次编译并初始化时调用: init() ;销毁调用: destroy()  。在整个jsp生命周期中均只调用一次。  

service()方法是接收请求,返回响应的方法。每次请求都执行一次,该方法被HttpServlet封装为doGet和doPost方法

 
 

32 下面哪些属于JSP内置对象及方法?  A B C D

A request

B out

C application

D config

 
解析:
JSP内置对象有:
1.request对象
     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
     out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
     page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
     application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
   exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
 
Servlet与JSP九大内置对象的关系
JSP对象 怎样获得
out->response.getWriter
request ->Service方法中的req参数
response ->Service方法中的resp参数
session ->request.getSession
application ->getServletContext
exception ->Throwable
page  ->this
pageContext  ->PageContext
Config ->getServletConfig
 
 

35以下类型为Final类型的为(B C)

A HashMap

B StringBuffer

C String

D Hashtable

 

解析:StringBuilder , StringBuffer ,String 都是 final 的

 

50下列有关JAVA异常处理的叙述中正确的是(A B D)

A finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D throw是用来明确地抛出一个异常情况
 
 
 解析:
A:明显正确,不懂的可以去看看网上博客
B:throws是用来声明一个成员方法可能抛出的各种异常情况,错误!因为很多运行时异常,不会显示的抛出(当然你愿意的话,也可以,只不过你的代码会乱成翔)
C:final用于可以声明属性和方法,分别表示属性的不可变及方法的不可覆盖。不是方法的不可继承
D:throw是用来明确地抛出一个异常情况。错误,throw不仅仅可以抛出异常,还可以抛出Error以及Throwable.
原文地址:https://www.cnblogs.com/buhuiflydepig/p/11850454.html