没有合适的资源?快使用搜索试试~ 我知道了~
各大公司Java面试题及答案.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 10 浏览量
2022-07-14
20:01:43
上传
评论
收藏 92KB PDF 举报
温馨提示
试读
33页
各大公司Java面试题及答案.pdf
资源推荐
资源详情
资源评论
程序员面试之
九阴真经
谈谈 final, finally, finalize 的区别:
final :::修饰符(关键字)如果一个类被声明为 final ,意味着它不能再派生出新的
子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为
final 的。将变量或方法声明为 final ,可以保证它们在使用中不被改变。 被声明为 final
的变量必须在声明时给定初值, 而在以后的引用中只能读取, 不可修改。被声明为 final
的方法也同样只能使用,不能重载
finally :::再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,
那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话) 。
finalize :::方法名。 Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内
存中清除出去之前做必要的清理工作。 这个方法是由垃圾收集器在确定这个对象没有被
引用时对这个对象调用的。 它是在 Object 类中定义的, 因此所有的类都继承了它。 子
类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。 finalize() 方法是
在垃圾收集器删除对象之前对这个对象调用的。
Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以
implements( 实现 )interface( 接口 ) :
匿名的内部类是没有名字的内部类。不能 extends( 继承 ) 其它类, 但一个内部类可以
作为一个接口,由另一个内部类实现。
&和&&的区别:
& 是位运算符。 &&是布尔逻辑运算符。
HashMap和 Hashtable 的区别:
都属于 Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,
因为它是同步的。
Collection 和 Collections 的区别:
Collections 是个 java.util 下的类,它包含有各种有关集合操作的静态方法。
Collection 是个 java.util 下的接口,它是各种集合结构的父接口。
GC是什么 ? 为什么要有 GC? ( 基础 ): (C++里有析构函数据完成垃圾回收 )
GC是垃圾收集器。 Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc() 。
String s = new String("xyz"); 创建了几个 String Object :
两个对象,一个是“ xyx”, 一个是指向“ xyx”的引用对象 s。
Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 :
Math.round(11.5) 返回( long )12,Math.round(-11.5) 返回( long ) -11 。
short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错:
short s1 = 1; s1 = s1 + 1; 有错, s1 是 short 型, s1+1 是 int 型, 不能显式转化为
short 型。可修改为 s1 =(short)(s1 + 1) 。 short s1 = 1; s1 += 1 正确。
sleep() 和 wait() 有什么区别:
sleep() 方法是使线程停止一段时间的方法。在 sleep 时间间隔期满后,线程不一定立
即恢复执行。 这是因为在那个时刻, 其它线程可能正在运行而且没有被调度为放弃执行,
除非
(a) “醒来”的线程具有更高的优先级
(b) 正在运行的线程因为其它原因而阻塞。
wait() 是线程交互时,如果线程对一个同步对象 x 发出一个 wait() 调用,该线程会暂
停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
数组有没有 length() 这个方法 ? String 有没有 length() 这个方法:
数组没有 length() 这个方法,有 length 的属性。
String 有有 length() 这个方法。
Overload 和 Override 的区别。 Overloaded 的方法是否可以改变返回值的类型:
方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写
Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态
性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数, 我们说该方法
被重写 (Overriding) 。子类的对象使用这个方法时, 将调用子类中的定义, 对它而言,
父类中的定义如同被“屏蔽”了。 如果在一个类中定义了多个同名的方法, 它们或有不
同的参数个数或有不同的参数类型,则称为方法的重载 (Overloading) 。Overloaded 的
方法是可以改变返回值的类型。
Set 里的元素是不能重复的, 那么用什么方法来区分重复与否呢 ? 是用 ==还是 equals()?
它们有何区别:
Set 里的元素是不能重复的, 那么用 iterator() 方法来区分重复与否。 equals() 是判读
两个 Set 是否相等。
equals() 和==方法决定引用值是否指向同一对象 equals() 在类中被覆盖,为的是当两
个分离的对象的内容和类型相配的话,返回真值。
给我一个你最常见到的 runtime exception :
ArithmeticException, ArrayStoreException, BufferOverflowException,
BufferUnderflowException, CannotRedoException, CannotUndoException,
ClassCastException, CMMException, ConcurrentModificationException,
DOMException, EmptyStackException, IllegalArgumentException,
IllegalMonitorStateException, IllegalPathStateException,
IllegalStateException, ImagingOpException, IndexOutOfBoundsException,
MissingResourceException, NegativeArraySizeException, NoSuchElementException,
NullPointerException, ProfileDataException, ProviderException,
RasterFormatException, SecurityException, SystemException,
UndeclaredThrowableException, UnmodifiableSetException,
UnsupportedOperationException 。
error 和 exception 有什么区别:
error 表示恢复不是不可能但很困难的情况下的一种严重问题。 比如说内存溢出。 不可
能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。 也就是说, 它表示如果程序运行正常, 从不会发
生的情况。
List, Set, Map 是否继承自 Collection 接口:
List ,Set 是。
Map不是。
abstract class 和 interface 有什么区别:
声明方法的存在而不去实现它的类被叫做抽象类( abstract class ),它用于要创
建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它
指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。 Abstract 类的子类
为它们父类中的所有抽象方法提供实现, 否则它们也是抽象类为。 取而代之, 在子类中
实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口( interface )是抽象类的变体。在接口中,所有方法都是抽象的。多继承性
可通过实现这样的接口而获得。 接口中的所有方法都是抽象的, 没有一个有程序体。 接
口只可以定义 static final 成员变量。接口的实现与子类相似,除了该实现类不能从
接口定义中继承行为。当类实现特殊接口时, 它定义(即将程序体给予)所有这种接口
的方法。 然后, 它可以在实现了该接口的类的任何对象上调用接口的方法。 由于有抽象
类,它允许使用接口名作为引用变量的类型。 通常的动态联编将生效。 引用可以转换到
接口类型或从接口类型转换, instanceof 运算符可以用来决定某对象的类是否实现了
接口。
接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体
类(concrete class) :
接口可以继承接口。 抽象类可以实现 (implements) 接口, 抽象类可继承实体类, 但
前提是实体类必须有明确的构造函数。
启动一个线程是用 run() 还是 start() :
启动一个线程是调用 start() 方法,使线程所代表的虚拟处理机处于可运行状态,
这意味着它可以由 JVM调度并执行。这并不意味着线程就会立即运行。 run() 方法可以
产生必须退出的标志来停止一个线程。
构造器 Constructor 是否可被 override :
构造器 Constructor 不能被继承,因此不能重写 Overriding ,但可以被重载
Overloading 。
try {} 里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会
被执行,什么时候被执行,在 return 前还是后:
会执行,在 return 前执行。
两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code,这句话对不对:
不对,有相同的 hash code 。
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回
变化后的结果,那么这里到底是值传递还是引用传递:
是值传递。 Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递
到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,
但对象的引用是永远不会改变的。
swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上:
switch ( expr1 )中, expr1 是一个整数表达式。因此传递给 switch 和 case 语
句的参数应该是 int 、 short 、 char 或者 byte 。long,string 都不能作用于 swtich 。
编程题 : 写一个 Singleton 出来:
Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例
存在。
一般 Singleton 模式通常有几种种形式:
第一种形式:定义一个类, 它的构造函数为 private 的,它有一个 static 的 private
的该类变量,在类初始化时实例话,通过一个 public 的 getInstance 方法获取对它的
引用 , 继而调用其中的方法。
public class Singleton {
private Singleton(){}
// 在自己内部定义自己一个实例,是不是很奇怪?
// 注意这是 private 只供内部调用
private static Singleton instance = new Singleton();
// 这里提供了一个供外部访问本 class 的静态方法,可以直接访问
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 的。
一般认为第一种形式要更加安全些。
Hashtable 和 HashMap的区别:
Hashtable 继承自 Dictionary 类,而 HashMap是 Java1.2 引进的 Map interface
的一个实现
HashMap允许将 null 作为一个 entry 的 key 或者 value ,而 Hashtable 不允许
还有就是, HashMap把 Hashtable 的 contains 方法去掉了,改成 containsvalue
和 containsKey 。因为 contains 方法容易让人引起误解。
最大的不同是, Hashtable 的方法是 Synchronize 的,而 HashMap不是,在
多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap
就必须为之提供外同步。
Hashtable 和 HashMap采用的 hash/rehash 算法都大概一样, 所以性能不会有很大的差
异
作用域 public,private,protected, 以及不写时的区别:
作用域 当前类 同一 package 子孙类 其他 package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为 friendly 。
ArrayList 和 Vector 的区别 ,HashMap 和 Hashtable 的区别:
答:就 ArrayList 与 Vector 主要从二方面来说 .
一. 同步性 :Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全
的,不是同步的
二. 数据增长 : 当需要增长时 ,Vector 默认增长为原来一培, 而 ArrayList 却是原来的一
半
就 HashMap与 HashTable 主要从三方面来说。
一. 历史原因 :Hashtable 是基于陈旧的 Dictionary 类的, HashMap是 Java 1.2 引进的
Map接口的一个实现
二. 同步性 :Hashtable 是线程安全的,也就是说是同步的,而 HashMap是线程序不安全
的,不是同步的
三. 值:只有 HashMap可以让你将空值作为一个表的条目的 key 或 value 。
char 型变量中能不能存贮一个中文汉字 ?为什么:
答:是能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 个字
节,所以放一个中文是没问题的。
介绍 JAVA中的 Collection FrameWork( 包括如何写自己的数据结构 ) :
答: Collection FrameWork 如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection 是最基本的集合接口,一个 Collection 代表一组 Object ,即 Collection
的元素( Elements )
Map提供 key 到 value 的映射。
jsp 有哪些内置对象 ?作用分别是什么:
答:JSP 共有以下 9 种基本内置组件(可与 ASP的 6 种内部组件相对应) :
request 用户端请求,此请求会包含来自 GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page JSP 网页本身
exception 针对错误网页,未捕捉的例外。
jsp 有哪些动作 ?作用分别是什么:
答:JSP 共有以下 6 种基本动作
jsp:include :在页面被请求的时候引入一个文件。
剩余32页未读,继续阅读
资源评论
xhr131452007
- 粉丝: 7
- 资源: 14万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功