没有合适的资源?快使用搜索试试~ 我知道了~
java面试题汇总,基本是初级中级问题
资源推荐
资源详情
资源评论
java 面试笔试题大汇总 5
JAVA 相关基础知识
1、面向对象的特征有哪些方面
1.抽象:2.继承:3.封装:4. 多态性:
2、String 是最基本的数据类型吗?
基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。
java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,
我们应该用 StringBuffer 类
1)数据类型
2B 铅笔 boolean , byte 1 个字节
CS 游戏 char , short 2 个字节
if 语句 int , float 4 个字节
其他 double , long 8 个字节
简单数据类型----引用数据类型
int Integer
float Float
byte Byte
char Character
2)装箱和拆箱
由简单数据类型包装成引用数据类型——装箱
由引用数据类型转变成简单数据类型——拆箱
3)精度丢失
int num = 9 ;
Integer num2 = new Integer(num);
int num3 = num2.intValue() ;
int num1 = 5 ;
int num2 = 2 ;
int num3 = num1 / num2 ;
float num4 = num1 / num2 ;
float num5 = 1.0f * num1 / num2 ;
4)请问是否可以编写一个类继承 String
public final class String{}
final
修饰变量:常量
修饰方法:方法不可被重写
修饰类:类不可被继承
String:不可变字符串
StringBuffer/StringBuilder(可变字符串)
StringBuffer:线程安全的(先出现的)
StringBuilder:线程不安全的(后出现的)
5)String 和 StringBuffer、StringBuilder
String str1 = “hello” ;
String str2 = “hello” ;
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是 java 的原始数据类型,Integer
是 java 为 int 提供的封装类。Java 为每个原始类型提供了封装类。
原始类型封装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特
征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类
型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变
量的缺省值与它们的类型有关。
4、String 和 StringBuffer 的区别 (StringBuilder)
当我们需要对字符串进行频繁处理的时候,使用 StringBuffer。
5、运行时异常与一般异常有何异同?
Exception , RuntimeException
throws , throw
Exception , Error , throwable
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异
常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要
求必须声明抛出未被捕获的运行时异常。
6、说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。
实例化、初始化、服务、销毁
Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动
派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其
destroy 方法。
与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以
服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,
所以效率上低于 servlet。
7、说出 ArrayList,Vector, LinkedList 的存储性能和特性
Collection , Map , Collections(工具类)
Collection:
List(允许重复)
ArrayList:适合于快速查找
LinkedList:适合于改动的场合
Vector :
Set(不允许重复)
HashSet : hashcode() , equals()
TreeSet : compareTo() , compare()——TreeSet 具有排序的能力
Comparable
Comparator
Map
HashMap
TreeMap
Hashtable
Iterator
IO 流、多线程
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元
素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据
快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,
而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只
需要记录本项的前后项即可,所以插入速度较快。
9、Collection 和 Collections 的区别。
Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.
Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程
安全化等操作。
10、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
( 表达式 1 & 表达式 2 )
假设是& , 如果表达式 1 为 false,表达式 2 还是会计算
假设是&&,如果表达式 1 为 false,则整个表达式的最终结果已经确定为 false,则表达式 2 不会计算
11、HashMap 和 Hashtable 的区别。
HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主要区别在于
HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于 Hashtable。
HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains
方法容易让人引起误解。
Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。
最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable
时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。
Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。
12、final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此
方法提供垃圾收集时的其他资源回收,例如关闭文件等。
13、sleep() 和 wait() 有什么区别?
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监
控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁
定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入就绪状态。
14、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
Overload : 重载, 同一个类内部
Override : 重写,父子类
方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子
类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方
法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将
调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方
法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded 的
方法是可以改变返回值的类型。
15、error 和 exception 有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处
理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已
经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回
时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
17、abstract class 和 interface 有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行
为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可
剩余25页未读,继续阅读
资源评论
weixin_45945683
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功