面试总结之JAVA

1. what is thread safe? 

线程安全就是说多线程访问同一代码,不会产生不确定的结果。编写线程安全的代码是低依靠线程同步。
线程安全: 在多线程中使用时,不用自已做同步处理
线程不安全: 在多线程中使用时,必须做线程同步,不然会有未知后果

进程和线程的区别?

如何启动线程,最有效终止线程的方法?

wait & sleep的区别?

实现线程类有几种方法?为什么要有两种(extend thread/implement runnable)

2. jdbc?
用jdbc连到db2要经过几步?建立连接,发送sql语句,处理结果
What are 4 drivers available in JDBC ?(高)

3. String 和 Stringbuffer的区别
String s1 = "Monday"; 
String s2 = "Monday"; 

String s1 = "Monday"; 
String s2 = new String("Monday"); 
的区别

4.exception throwing会导致程序终止吗?(低) 
Exception: 请给出 5 common example of exceptions
what is a "resource leak"?
Java设计有Finally blocks的主要原因?

若多个catch blocks都匹配抛出的异常,怎么处理?

异常没有被捕获到的时候程序会发生什么?

5. 软件设计模式?列几个知道的及其实现方法

6。有关类的public、private和protected 
(1) 无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文件中,b.两个 
类在同一文件夹中,c.两个类在同一软件包中。 
(2) protected:继承类和同一软件包的类可访问。 
(3) 如果构造方法为private,那么在其他类中不能创建该类的对象。

一般用什么方法去获取private的数据?

7.Javabean 有什么好处,
我理解Bean就是个容器
上面这个就是个最最简单的例子,用eclipse生成的
Bean对其中的成员变量作了很好的封装和保护
可以使用set、get使对变量的操作做一些限定

javaBean有几个典型特征:
是一个public类
有一个不带参数的构造方法
通过getXXX获取属性,通过setXXX设置属性。

JSP 如何调用JAVAEAN
jsp:useBean id="tempname" class="com.****.****" scope="page"/>

8. java中xml的解析。举几个解析的方法:DOM(JAXP Crimson解析器) ,接着是SAX ,JDOM,DOM4j

用过哪个?为什么选这个,跟其他的优缺点比较

解析xml步骤:file, 读文件, root(element)。。。

9. SWT 和 swing的区别

10. 谈谈final, finally, finalize的区别。(基本,可判断使用java时间的长短)
  final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

11. HashMap和Hashtable的区别。(中, 可判断使用java时间的长短。)

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

12. Collection 和 Collections的区别。(可以详问怎样实现排序-高)

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口。

13. Java内存管理

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

14. sleep() 和 wait() 有什么区别? (可判断个人的理解)

搞线程的最爱sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

15. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?(理解)

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

16. abstract class和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

17. 启动一个线程是用run()还是start()?(高)

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

18.实现一个Thread 有几种方法?以及区别。(中)

两种,继承thread或实现runable接口。区别在多继承上。

19.JDBC连接数据库的步骤。Statement有几种,怎么使用。Datasource怎么使用(判断使用java的熟练度,个人发挥)

20.如果用过EJB,可以问怎么写EJB,如何部署。相关知识可以有JNDI,RMI, SOCKET等。(高,个人能力,表达,理解)

21.用过STRUCTS,SPRING, hebnate的可问相关问题(你来整理几个:) 我这方面不是很熟。可以考验个人能力,表达,理解。 高)描述一下MVC模式的框架,以及说明一下struts的几个主要类分别完成mvc的那个部分。

22. 举出几个常用的设计模式并简要说明。例如

23. Util包相关问题。在做项目的过程中,您是如何选择使用哪种集合类的?

24. 您认为java需要进行性能优化么?是否举例说明进行java性能优化的经验。


500+ 精选 Java 面试题大放送 (qq.com)

面试官:Object o = new Object() 占用了多少字节? (qq.com)

面试官:String长度有限制吗?是多少? (qq.com)

面试官再问你 HashMap 底层原理,就把这篇文章甩给他看 (qq.com)

阿里二面:什么是mmap? (qq.com) 

当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮 (qq.com)

详解面试中常考的 Java 反射机制 (qq.com)

详解面试中常被问到的那些异常问题 (qq.com)

某团面试题:JVM 堆内存溢出后,其他线程是否可继续工作? (qq.com)

携程面试官竟然问我 Java 虚拟机栈! (qq.com)

面试还在问jvm,扎扎实实的给面试官上了一课! (qq.com)

多线程

面试官真是搞笑!让实现线程安全的单例,又不让使用synchronized! (qq.com)

13张图,深入理解Synchronized (qq.com)

来探讨一下最近面试问的ThreadLocal问题 (qq.com)

面试官:如何评估一个线程池需要设置多少个线程 (qq.com)

面试官:线程池中多余的线程是如何回收的? (qq.com)

posted on 2016-06-04 16:08  浩然119  阅读(306)  评论(0编辑  收藏  举报