Java程序员面试题之八

 

41、是否可以继承String?

 

String类是final类故不可以继承。

 

 

42swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?

 

switch(expr1)中,expr1是一个整数表达式。

 

因此传递给 switch case 语句的参数应该是 int short char 或者 byte

 

long,string 都不能作用于swtich

 

 

43try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

 

会执行,return前执行

 

 

44、编程题: 用最有效率的方法算出2乘以8等於几?

 

2 << 3

 

 

45、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

 

不对,有相同的hash code

 

 

46、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

 

是值传递。

 

Java 编程语言只有值传递参数

 

当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。

对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

 

 

47、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

 

不能,一个对象的一个synchronized方法只能由一个线程访问。

 

 

48、编程题: 写一个Singleton出来。

 

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

 

一般Singleton模式通常有几种种形式:

 

第一种形式:

 

定义一个类,它的构造函数为private的,它有一个staticprivate的该类变量,在类初始化时实例话,通过一个publicgetInstance方法获取对它的引用,继而调用其中的方法。

 

 

public class Singleton {
	private Singleton(){} 
	private static Singleton instance = new Singleton();  
	public static Singleton getInstance() {  
		return instance;   
	}  
}

 

 

 

第二种形式:

 

 

 

public class Singleton {  
	private static Singleton instance = null;  
	public static synchronized Singleton getInstance() { 
		if (instance==null) {
			instance=new Singleton();
		}
		return instance;   
	} 
}

 

 

 

 

其他形式: 

 

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

 

 

49Java的接口和C++的虚类的相同和不同处。

 

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。

与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public。一个类可以实现多个接口

 

 

50Java中的异常处理机制的简单原理和应用。

 

JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。

违反语义规则包括2种情况。

 

一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException

 

另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

 

 

51、垃圾回收的优点和原理。并考虑2种回收机制。

 

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

 

回收机制有分代复制垃圾回收标记垃圾回收增量垃圾回收。

 

 

52、请说出你所知道的线程同步的方法。

 

wait():使一个线程处于等待状态,并且释放所持有的对象的lock

 

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

 

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

 

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

 

 

53、你所知道的集合类都有哪些?主要方法?

 

最常用的集合类是 List Map

 

List 的具体实现包括 ArrayList Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

 

Map 提供了一个更通用的元素存储方法。

Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

 

 

54、描述一下JVM加载class文件的原理机制?

 

JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

 

 

55char型变量中能不能存贮一个中文汉字?为什么?

 

够定义成为一个中文的。

 

因为java中以unicode编码一个char16个字节,所以放一个中文是没问题的

 

 

56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

 

多线程两种实现方法,

 

分别是继承Thread与实现Runnable接口

 

同步的实现方面有两种

 

分别是synchronized,waitnotify

 

 

57JSP的内置对象及方法。

 

request表示HttpServletRequest对象。

它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, session数据的有用的方法

 

response表示HttpServletResponse对象,

并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。

 

out对象是javax.jsp.JspWriter的一个实例,

并提供了几个方法使你能用于向浏览器回送输出结果。

 

pageContext表示一个javax.servlet.jsp.PageContext对象。

它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 

 

session表示一个请求的javax.servlet.http.HttpSession对象。

Session可以存贮用户的状态信息 

 

applicaton 表示一个javax.servle.ServletContext对象。

这有助于查找有关servlet引擎和servlet环境的信息 

 

config表示一个javax.servlet.ServletConfig对象。

该对象用于存取servlet实例的初始化参数。 

 

page表示从该页面产生的一个servlet实例

 

 

58、线程的基本概念、线程的基本状态以及状态之间的关系

 

线程指在程序执行过程中,能够执行程序代码的一个执行单位

每个程序至少都有一个线程,也就是程序本身。

 

Java中的线程有四种状态分别是:运行就绪挂起结束

 

 

59JSP的常用指令

 

<%@page language=”java” contenType=”text/html;charset=gb2312” session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text” errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”java.sql.*”%>

 

isErrorPage(是否能使用Exception对象)isELIgnored(是否忽略表达式)

 

<%@include file=”filename”%>

<%@taglib prefix=”c”uri=”http://……”%>

 

 

60、什么情况下调用doGet()doPost()

 

Jsp页面中的form标签里的method属性get时调用doGet(),为post时调用doPost()

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值