Java由基础到高级面试题经典问答
你所知道的集合类都有哪些?下面就由学习啦小编为大家介绍一下Java由基础到高级面试题经典问答的文章,欢迎阅读。
Java由基础到高级面试题经典问答篇1
1、String 和StringBuffer的区别
String:
(1)String 类代表字符串。 Java 程序中的所有字符串字面值都作为此类的实例实现。
(2)String的长度是不可变的
StringBuffer:
(1)线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
(2)StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
2、启动一个线程是用run()还是start()? .
start():
线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。
run():
线程获得CPU资源正在执行任务,此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。
3、final, finally的区别。
final:
(1)final关键字可用于修饰类、变量和方法,用于表示它所修饰的类、变量和方法不可改变。
变量: final修饰变量时,表示该变量一旦获得了初始值之后就不可被改变,final既可修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。
方法:final修饰的方法不可被重写,如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法。
类:final修饰的类不可有子类。
finally:
(1)finally关键字用于异常处理机制中往往跟在try-catch语句块之后,finally语句所包含的代码在任何情况下都会被执行 会被执行,且在try-catch语句块中只能有一个finally语句块。
Java由基础到高级面试题经典问答篇2
1、List 和 Map 区别?
列表(List):
(1)List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引来访问List中的元素。
(2)List允许包含重复元素。
映射(Map):
(1)保存的是“键-值”对信息,即Map中存储的每个元素都包括起标识作用的“键”和该元素的“值”两部分,查找数据时需要提供相应的“键”,才能查找到该“键”所映射的“值”。
(2)Map集合中不能包含重复的“键”,并且每个“键”最多只能映射一个值。
2、JDBC中的PreparedStatement相比Statement的好处
PreperedStatement是Statement的子类,相对于Statement对象而言:
(1) PreperedStatement可以避免SQL注入的问题。
(2)Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。
(3)PreparedStatement 可对SQL进行预编译,对相同的插入操作可进行批量添加从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。
3、你所知道的集合类都有哪些?主要方法?
线性表型的集合:List——ArrayList、LinkedList、Vector、Stack
不允许有重复元素的Set集合:Set——HashSet
“键-值”对型的集合:Map——HashMap、HashTable
主要方法:
ArrayList:
add(int index, E element)、add(E e)、remove(int index)
remove(Object o)、get(int index)、size()、indexOf(Object obj)
subList(int fromIndex, int toIndex)、clear()
LinkedList:
push(E e)、pop()、pollLast()、pollFirst()、peek()、
get(int index)、getFirst()、getLast()、addFirst(E e)
addLast(E e)、add(E e)、remove()、remove(int index)
remove(Object o)
Vector:
firstElement()、elements()、contains(Object o)、
add(int index, E element) 、clear()
Stack:
构造方法:
Stack st=new Stack(); Stack st = new Stack();
其他方法:
peek() 、pop() 、push(E item) 、empty()、search(Object o)
HashSet:
构造方法
HashSet()
HashSet( c)
其他方法
contains(Object o) 、isEmpty()、iterator()、remove(Object o)
size()
HashMap:
entrySet() 、get(Object key)、isEmpty()、keySet()、
put(K key, V value)
Java由基础到高级面试题经典问答篇3
1、abstract class和interface有什么区别?
设计目的不同:
接口体现的是一种规范,类似于整个系统的“总纲”,它制定了系统各模块应该遵循的标准 。
抽象类作为多个子类的共同父类,体现的是模板式设计。抽象类可以被当成系统实现过程中的中间产品,这个中间产品已经实现了部分功能,但这个产品还不能当成最终产品,必须交由其子类作更进一步的完善,这种完善可能有几种不同方式。
用法不同:
在接口里:
(1)接口里只能包含不带方法体的非静态的抽象方法。
(2)接口里只能定义静态常量属性
(3)接口里不能包含初始化块和构造方法
(4)一个类可以实现多个接口,并且必须实现接口中所有的抽象方法。
在抽象类里:
(1)抽象类中既可以包含普通方法也可以定义静态方法 。
(2)抽象类既可以包含普通属性,也可以包含静态常量属性
(3)抽象类中以包含初始化块并且也可以有构造方法,但是不用于创建对象,而是让子类调用
(4)一个只能继承一个父类当一个抽象类被子类继承时子类要么重写父类的抽象方法要么将子类定义为抽象类。
2、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?
Java中有两种实现方法,分别是继承Thread类与实现Runnable接口;synchronized
3、面向对象的特征有哪些方面
封装,继承,多态三方面。
4、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
可以。
/*不可以,当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。*/
5、事务的特性有哪些?
事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
6、得到Class的三个方法是什么?
(1)类对象.getClass()
(2)类名.class
(3)Class.forName(“类名”);
7、数组有没有length()这个方法? String有没有length()这个方法
数组没有length()这个方法,只有length的属性。String有有length()这个方法。