高频面试题(一)
-
1. 若在某一个类定义中定义有如下的方法:abstract void performDial( ); 该方法属于() ?
A.本地方法
B.最终方法
C.静态方法
D.抽象方法答案: D
解析:
- 本地方法:简单地讲,一个native Method就是一个java调用非java代码的接口;native方法表示该方法要用另外一种依赖平台的编程语言实现。
- 最终方法:final void B(){},这样定义的方法就是最终方法,最终方法在子类中不可以被重写,也就是说,如果有个子类继承了这个最终方法所在的类,那么这个子类中不能出现void B(){}这样的方法。
- 最终类:final class A {},这样定义的类就是最终类,最终类不能被继承。
- abstract修饰抽象类
-
2.在为传统面向对象语言的程序做单元测试的时候,经常用到mock对象。Mock对象通过反射数。请问反射最大程度破坏了面向对象的以下哪个特性?
A.封装
B.多态
C.继承
D.抽象答案: A
解析:
A.封装
反射破坏代码的封装性,破坏原有的访问修饰符访问限制3.以下程序的执行结果是:
static boolean foo(char c) { System.out.print(c); return true; } public static void main1(String[] args) { int i = 0; for (foo('A'); foo('B') && (i < 2); foo('C')) { i++; foo('D'); } }
A.ABDCBDCB
B.ABCDABCD
C.编译时出错
D.运行时抛出异常答案:
A解析:
略,代码敲一遍就知道了= =!4.一个完整的URL地址由(),(),端口和文件四部分组成。
A.协议 用户名
B.协议 主机名
C.主机名 ip
D.以上都不正确答案:
B解析:
**URL(Uniform Resource Locator) **,统一资源定位符,能够对因特网的资源进行定位。
URL一般有四部分组成:<协议>://<主机>:<端口>/<路径>
现在最常用的<协议>为http协议。
- <主机>是指主机在因特网上的域名。
- http协议的默认<端口>为80(可以省略)。
- <路径>是指要活的的文件的路径。
-
5.以下程序的输出结果是?
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 static void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } }
A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc答案:
B解析:
考察值传递和引用传递。对于值传递,拷贝的值用完之后就会被释放,对原值没有任何影响,但是对于引用传递,拷贝的是对象的引用,和原值指向的同一块地址,即操作的是同一个对象,所以操作之间会相互影响
所以对于String str是值传递,操作之间互不影响,原值保持不变。而ch是数组,拷贝的是对象的引用,值发生了改变,因此选择B6.下面有关servlet service描述错误的是?
A.不管是post还是get方法提交过来的连接,都会在service中处理
B.doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C.service()是在javax.servlet.Servlet接口中定义的
D.service判断请求类型,决定是调用doGet还是doPost方法答案:
B解析:
doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的7.以下代码运行输出的是
public class Person{ private String name = "Person"; int age=0; } public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(p.name); } }
A.输出:Person
B.没有输出
C.编译出错
D.运行出错答案:
C解析:
Java中对字段属性是静态绑定,方法成员是动态绑定,这里错在:在子类中试图访问父类的private字段,所以编译不通过,将private去掉就可访问,不是动态绑定的问题,它本来就属于静态绑定。8. 在 myjsp.jsp 中,关于下面的代码说法错误的是:( )
<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>
A.该页面可以使用 exception 对象
B.该页面发生异常会转向 error.jsp
C.存在 errorPage 属性时,isErrorPage 是默认为 false
D.error.jsp 页面一定要有isErrorPage 属性且值为 true答案:
A解析:
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErroePage为true时,该对象才可以使用。对于C项,errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到errorPage指定的页面,没必要给errorPage再设置一个errorPage。所以当errorPage属性存在时, isErrorPage属性值为false9.Java对象的初始化方式有( )
A.初始化块
B.构造器
C.定义变量时指定初始化值
D.其它各项都不对答案:
A B C解析:
对象的初始化方式:
1.new时初始化 ;
2.静态工厂 newInstance;
3.反射Class.forName();
4.clone方式;
5.反序列化;10.一个servlet的生命周期不包括方法?
A.init()方法
B.invalidate()方法
C.service()方法
D.destroy()方法答案:
B