java程序员面试问题

2024-10-15 版权声明 我要投稿

java程序员面试问题(共8篇)

java程序员面试问题 篇1

摘要:很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了 Java 线程方面一些典型的问题,这些问题经常被高级工程师所问到。

很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了 Java 线程方面一些典型的问题,这些问题经常被高级工程师所问到。

0.Java 中多线程同步是什么?

在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。

1.解释实现多线程的几种方法?

一 Java 线程可以实现 Runnable 接口或者继承 Thread 类来实现,当你打算多重继承时,优先选择实现 Runnable。

2.Thread.start()与 Thread.run()有什么区别?

Thread.start()方法(native)启动线程,使之进入就绪状态,当 cpu 分配时间该线程时,由 JVM 调度执行 run()方法。

3.为什么需要 run()和 start()方法,我们可以只用 run()方法来完成任务吗?

我们需要 run()&start()这两个方法是因为 JVM 创建一个单独的线程不同于普通方法的调用,所以这项工作由线程的 start 方法来完成,start 由本地方法实现,需要显示地被调用,使用这俩个方法的另外一个好处是任何一个对象都可以作为线程运行,只要实现了 Runnable 接口,这就避免因继承了 Thread 类而造成的 Java 的多继承问题。

4.什么是 ThreadLocal 类,怎么使用它?

ThreadLocal 是一个线程级别的局部变量,并非“本地线程”。ThreadLocal 为每个使用该变量的线程提供了一个独立的变量副本,每个线程修改副本时不影响其它线程对象的副本(译者注)。

下面是线程局部变量(ThreadLocal variables)的关键点:

一个线程局部变量(ThreadLocal variables)为每个线程方便地提供了一个单独的变量。

ThreadLocal 实例通常作为静态的私有的(private static)字段出现在一个类中,这个类用来关联一个线程。

当多个线程访问 ThreadLocal 实例时,每个线程维护 ThreadLocal 提供的独立的变量副本。

常用的使用可在 DAO 模式中见到,当 DAO 类作为一个单例类时,数据库链接(connection)被每一个线程独立的维护,互不影响。(基于线程的单例)

ThreadLocal 难于理解,下面这些引用连接有助于你更好的理解它。

《Good article on ThreadLocal on IBM DeveloperWorks 》、《理解 ThreadLocal》、《Managing data : Good example》、《Refer Java API Docs》

5.什么时候抛出 InvalidMonitorStateException 异常,为什么?

调用 wait()/notify()/notifyAll()中的任何一个方法时,如果当前线程没有获得该对象的锁,那么就会抛出 IllegalMonitorStateException 的异常(也就是说程序在没有执行对象的任何同步块或者同步方法时,仍然尝试调用 wait()/notify()/notifyAll()时)。由于该异常是 RuntimeExcpetion 的子类,所以该异常不一定要捕获(尽管你可以捕获只要你愿意).作为 RuntimeException,此类异常不会在 wait(),notify(),notifyAll()的方法签名提及。

6.Sleep()、suspend()和 wait()之间有什么区别?

Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了 interrupt()方法,它将唤醒那个“睡眠的”线程。

注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep

(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方法,使用 suspend()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend()容易引起死锁问题。

object.wait()使当前线程出于“不可运行”状态,和 sleep()不同的是 wait 是 object 的方法而不是 thread。调用 object.wait()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用 object.notify(),这样将唤醒原来等待中的线程,然后释放该锁。基本上 wait()/notify()与 sleep()/interrupt()类似,只是前者需要获取对象锁。

7.在静态方法上使用同步时会发生什么事?

同步静态方法时会获取该类的“Class”对象,所以当一个线程进入同步的静态方法中时,线程监视器获取类本身的对象锁,其它线程不能进入这个类的任何静态同步方法。它不像实例方法,因为多个线程可以同时访问不同实例同步实例方法。

8.当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?

可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java 没有为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法没有声明为同步,即使你在使用共享数据 Java 照样会调用,而不会做检查是否安全,所以在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critial section access),如果方法不访问临界区(共享资源或者数据结构)就没必要声明为同步的。

下面有一个示例说明:Common 类有两个方法 synchronizedMethod1()和 method1(),MyThread 类在独立的线程中调用这两个方法。

public class Common {

public synchronized void synchronizedMethod1(){

System.out.println(“synchronizedMethod1 called”);

try {

Thread.sleep(1000);

} catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(“synchronizedMethod1 done”);

}

public void method1(){

System.out.println(“Method 1 called”);

try {

Thread.sleep(1000);

} catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(“Method 1 done”);

}

}

public class MyThread extends Thread {

private int id = 0;

private Common common;

public MyThread(String name, int no, Common object){

super(name);

common = object;

id = no;

}

public void run(){

System.out.println(“Running Thread” + this.getName());

if(id == 0){

common.synchronizedMethod1();

} else {

common.method1();

}

} catch(Exception e){

e.printStackTrace();

}

}

public static void main(String[] args){

Common c = new Common();

MyThread t1 = new MyThread(“MyThread-1”, 0, c);

MyThread t2 = new MyThread(“MyThread-2”, 1, c);

t1.start();

t2.start();

}

}

这里是程序的输出:

Running ThreadMyThread-1

synchronizedMethod1 called

Running ThreadMyThread-2

Method 1 called

synchronizedMethod1 done

Method 1 done

结果表明即使 synchronizedMethod1()方法执行了,method1()也会被调用。

9.在一个对象上两个线程可以调用两个不同的同步实例方法吗?

不能,因为一个对象已经同步了实例方法,线程获取了对象的对象锁。所以只有执行完该方法释放对象锁后才能执行其它同步方法。看下面代码示例非常清晰:Common 类有 synchronizedMethod1()和 synchronizedMethod2()方法,MyThread 调用这两个方法。

public class Common {

public synchronized void synchronizedMethod1(){

System.out.println(“synchronizedMethod1 called”);

try {

Thread.sleep(1000);

} catch(InterruptedException e){

e.printStackTrace();

System.out.println(“synchronizedMethod1 done”);

}

public synchronized void synchronizedMethod2(){

System.out.println(“synchronizedMethod2 called”);

try {

Thread.sleep(1000);

} catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(“synchronizedMethod2 done”);

}

}

public class MyThread extends Thread {

private int id = 0;

private Common common;

public MyThread(String name, int no, Common object){

super(name);

common = object;

id = no;

}

public void run(){

System.out.println(“Running Thread” + this.getName());

try {

if(id == 0){

common.synchronizedMethod1();

} else {

common.synchronizedMethod2();

}

} catch(Exception e){

e.printStackTrace();

}

}

public static void main(String[] args){

Common c = new Common();

MyThread t1 = new MyThread(“MyThread-1”, 0, c);

MyThread t2 = new MyThread(“MyThread-2”, 1, c);

t1.start();

t2.start();

}

10.什么是死锁

死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。这种情况可能发生在当两个线程尝试获取其它资源的锁,而每个线程又陷入无限等待其它资源锁的释放,除非一个用户进程被终止。就 JavaAPI 而言,线程死锁可能发生在一下情况。

当两个线程相互调用 Thread.join()

当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必需的锁,互相等待时被阻塞就有可能出现死锁。

11.什么是线程饿死,什么是活锁?

线程饿死和活锁虽然不想是死锁一样的常见问题,但是对于并发编程的设计者来说就像一次邂逅一样。

当所有线程阻塞,或者由于需要的资源无效而不能处理,不存在非阻塞线程使资源可用。JavaAPI 中线程活锁可能发生在以下情形:

当所有线程在程序中执行 Object.wait(0),参数为 0 的 wait 方法。程序将发生活锁直到在相应的对象上有线程调用 Object.notify()或者 Object.notifyAll()。

当所有线程卡在无限循环中。

java程序员面试题 篇2

2、怎么样来捕获数据库中的异常?

3、如何处理网页中的验证信息,如何友好的进行处理?

4、用javaScript实现java中的监听器功能?

5、你对对日外包的看法?

6、数据库连接方式由哪几种?

Jdbc、连接池、hibernate

7、你清楚哪几种设计模式,谈谈各种设计模式的类结构。

8、谈谈jsp和sevlet的区别,以及它们性能上的区别。

jsp是servlet的一种简化,jsp编译后是“类servlet”。servlet 主要是用来处理业务层;

jsp 则是主要负责 表现层。

servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出。Servlet中没有内置对象。Jsp由html代码和jsp标签构成可以方便地编写动态网页,在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。

总之,使用jsp只需要完成程序员需要输出到客户端的内容,至于jsp中的java脚本如果镶嵌到一个类中,由jsp容器完成,而servlet则是个完整的java类,这个类的service方法用于生成对客户端的响应

9、如何来编写存储过程,如何优化存储过程,以及存储过程和TSQL的区别。

10、提供的培训,CMM-5软件开发流程培训、代码编写规范和业务流程培训、对日语的培训。

1、为什么要选择这个行业,和计算机专业的相比有什么优势?

2、Servlet是什么,以及生命周期?

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

3、怎么理解事务?

4、怎么理解MVC?

自己做自己的事情,主要强调分层,5、同时插入大量数据,使用何种方法优化?Batch

6、多个有关系得怎么样操作?

7、你认为你还有什么优点在前面没有提到?

8、对加班的看法?

9、与上级意见不一致时怎么样处理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解团队精神?

你怎样处理学习新技术和项目开发之间的矛盾? 怎样去学习新技术?

作为一个初级程序员怎么样弥补与有经验程序员之间的差距? 你对索引的理解,索引有几种,什么时候用索引? 对Oracle理解?

怎样优化复杂的查询语句? 你对Jdbc理解?

对Finally块的理解和应用? 游标的理解? ResultSet 重载,重写? 签名

EJB的事务,Hibernate的事务? Struts的标签? 重定向和跳转? A、:效率高,速度快

a.地址栏不改变跳转——服务器端跳转,服务器之间内部转,相同的request,可传参;

b.执行到跳转语句后无条件立刻跳转——之后的代码不再被执行;

注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;

c.使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);d.通过传递参数。

e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢

a.地址栏改变跳转——客户端跳转(其中地址可以是任意的)

b.所有代码执行完毕之后再跳转,跳转语句后面的代码还是会执行,除非在其后面加上return(return)需复杂一些。

<% Response.sendRedirect(“aa.jsp”);boolean b = true;

if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>

c.不能保存request属性——地址改变了,客户端跳转,不同的request d.通过对URL地址的重写传递参数:

response.sendRedirect(“responseDemo04.jsp?id=mldn”);

e.地址中的”/”代表是:http://localhost:8080/

下面是两种比较重要的跳转,我还是与上次的一次,把我做的笔记贴出来:24、25、Hibernate的左联结和右连接,缓存,数据加载? 面向对象如何理解?

26、EJB中CMP和BMP,SessionBean的机制?27、28、29、对日外包是否有抵触情绪? 如何减少Servlet的请求? 对设计模式了解多少?作过的项目中用过那些设计模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎样看待团队合作,在团队合作中你扮演什么样的角色,遇到技术难题时怎么解决? Exception的层次结构? EJB对数据库的访问机制? Struts中是否有事务处理? Hibernate的其它功能(除了ORM)? 如何提高数据库中的数据查询效率? 作为项目经理如何对组内成员分工? 描述一下你做过项目的流程。

加班到12点,突然有人来问你技术上的难题,你会如何处理? Oracle的冷备份、热备份 Strurs中怎样实现 Hibernate怎样实现ORM Spring 的事务处理机制

Strurs的验证方式,Javascript的验证的方式

一个是服务器端验证,一个是客户端验证

Struts的工作机制 Delete/trancate的区别

trancate与delete都是删除数据,不同的是trancate是将表的所有数据都删除,而delete可以有选择地删除数据; delete删除数据是记录在日志中的,可以通过其将数据恢复,而trancate则是将整个表截断,其操作是不记录在日志里的。46、47、48、作为项目组长,你遇到的最大问题是什么?如何解决?

Ajax/内嵌框架实现局部刷新,有什么差别?

Exception/Error的区别,在什么情况下可以抛出RuntimeException 父类不同

知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。

在程序运行时候出错而又不是系统原因差生的,一般是由于程序原因产生,比如程序写的不够严谨、完善

典型的RuntimeException

ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化视图(MV)

业务处理模块中,是如何处理事务? Sql语句如何优化 数据库右连接

JDBC的连接关闭在哪?

Finally语句块内

错误处理模块是放在哪个层的。接口能否继承接口。

接口可以继承接口..但是要使用extends~而不是用implements 抽象类能否继承实体类。

抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。

项目中查询时怎么样实现的?

作为项目负责人你是管理这个团队的?

在你做项目过程中遇到些什么问题,是怎么样解决的?

Jquery中的几种选择器:

Javascript如何进行数字和字符串之间的转换?

Java程序员面试干货 篇3

不管你是学生还是工作者,多多少少都对面试感到困扰和无奈,为啥你总是被拒绝?为何面试官屡屡刁难让你不知所措?原因是因为你不知道回答的技巧,怎样回答面试官才会满意。那么,请仔细阅读这篇文章吧,经典提问和参考回答会让你茅塞顿开,收获成功。一:请做一下自我介绍

分析:一般人回答,这个问题过于平常,只说姓名,年龄,工作经验,这些在简历上都有。其实企业最希望知道的是求职者能否胜任工作,包括最强的技能,最深入研究的知识领域,个性中,最积极的部分。做过最成功的事儿,主要的成就等等。要突出积极的个性和做事的能力,说得合情合理,企业才会相信。二:你最大的优点是什么?

参考回答:沉着冷静,条理清楚,立场坚定,乐于助人,有责任心,加上例子,我在某某地方经过1到2年的培训及项目实战,加上实习工作,我想我适合这份工作。

三:说说你最大的缺点?

分析:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么,如果求职者说自己小心眼,非常懒,工作效率低,企业肯定不会录用你,要从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。

四:说说你对加班的看法

分析:实际上好多公司问这个问题并不证明一定要加班,只是想测试你是否愿意为公司奉献。

参考回答:如果是工作需要的话,我会义不容辞的加班,我现在单身,没有任何负担,可以全身心的投入工作,但同时我也会提高工作效率,减少不必要的加班。五:你对工资的要求

分析:如果你对工资的要求太低,那显然贬低自己的能力,如果你对工资要求太高,那样会显得你分量过重,公司受用不起,一些公司通常都事先对求聘的职位,定下开支预算。因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。

参考回答:一,我的工资没有硬性要求,我相信贵公司给出的工资水平友善合理。我注重的是,找对工作的机会,所以只要条件公平,我都不会计较太多。二,我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也会变成特别感兴趣,因此我希望公司,能根据我的情况和市场标准,给我合理的薪水。三,如果你必须自己说出具体的数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字,最好给出一个具体的数字,这样表明你已经对当今的人才市场做了调查,知道像自己这样的学历求职者有什么样的价值。六:未来你对自己的职业,有什么规划?

分析:这是每一个应聘者,都不希望被问到的问题,但是几乎每一个人都会问道,比较多的答案是“管理者”,当然,说出其他一些你感兴趣的时候也是可以的,你要知道,考官总喜欢有进取心的应聘者,此时如果说不知道,或许就会使你失去一个好机会,最普通的回答应该是,我准备在技术领域有所突破或者我希望能按照公司的管理思路发展。

七:如果你没被录用,你怎么打算?

参考回答:现在的社会是一个竞争的社会,从这次面试中也可以看出这一点,有竞争就必然有优劣,有成功,必定就会有失败,往往成功的背后有许多的困难和挫折,如果这次失败也仅仅是一次而已,只有经过经验经历的积累,才能塑造出一个完美的成功者,我会从以下几个方面来正确看待这个失败,一,要敢于面对,面对这种失败,不气馁,接受已经失败了这次机会,就不会回头的这个现实。从心里一直和精神上体现出对这次失败的抵抗力,要有自信,相信自己经历了这次之后经过努力一定行,能够超越自我。二,善于反思,对于这次面试经验,要认真的总结,思考,剖析,能够从自身的角度找差距,正确的对待自己,实事求是地评价自己,辩证地看待自己的成长得失,做一个明白人。三,走出阴影,克服这一次失败带给自己的心理压力,时刻牢记自己的弱点,防患于未然,加强学习,提高自身素质,四,认真工作,回到原单位岗位后,要实实在在踏踏实实的工作,相信三百六十行,行行出状元,争取在本岗位上做出一定的成绩,五,再接再厉,以后如果有机会的话会仍然再次参加竞争。八:想过创业吗?

分析:这个问题可以显示你的冲劲,但如果你回答有的话千万要小心,因为下一个问题可能就是,那你为什么不这样做呢? 九:我们为什么要在众多的面试者中选择你?

分析:别过度吹嘘自己的能力,或者信口开河的乱开支票,例如一定会为该公司带来多少钱的业务等。这样很容易给人一种说大话不切实际不靠谱的感觉。参考回答:根据我对贵公司的了解,以及我在这份工作上所积累的专业经验以及人脉,相信正是贵公司所寻找的人才,而我在工作态度上,EQ上,也有圆融成熟的一面,和主管同事都能合作愉快。十:和同事上司难以相处,你怎么办?

参考回答,一,我会服从领导的指挥,配合同事的工作,我会从自身找原因仔细分析是不是自己的工作做得不够好,还要看一下是不是为人处事方面做的不够好,如果是这样的话,我会努力改正,二,如果我找不到原因,我会找机会跟他们沟通,请他们指出我的不足,及时改正,作为优秀的员工,应该时刻以大局为重,即使在一段时间内领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信他们会看见我的努力。

十一:上级领导抢了你的功劳怎么办?

参考回答:首先我不会找那位上级领导说明这事,我会主动找我的主管领导沟通,因为沟通是解决人际关系的最好办法,但结果会有两种:因我的主管领导认识到自己的错误,我想我会是具体情况决定是否原谅他;他会更加变本加厉的来威胁我,那我会毫不犹豫的找我的上级领导反映此事,因为他们这样做会造成负面影响,在今后的工作不利。十二:同事孤立你怎么办?

参考回答:应检讨一下自己是不是对工作的热心度超过同事之间交往的热心了?加强同事间的交往,找到共同的兴趣爱好。二,工作中切勿伤害别人的自尊心。三,不在领导面前拨弄是非。十三:你对我们的公司了解多少?

参考回答:这个在公司面试之前,上网查一下该公司的主营业务,可类似的回答,贵公司有意改变策略,加强与外国公司的合作,拓宽国际市场等等。十四:你能为我们的公司带来什么呢?

参考回答:一,假如你可以的话,试着告诉他们,你可以减低他们的费用,我已经过某某近两年的专业培训,立刻就可以上岗工作。二,企业很想知道未来的员工能为企业做些什么?求职者应再次重复自己的优势,然后表示,就我的能力而言,我可以做一个优秀的员工,在组织中发挥能力,给组织带来高效率和更多的收益,企业喜欢求职者就申请的职位表明自己的能力,比如申请营销之类的职位,可以说,我可以开发大量的新客户,同时对老客户做到更全面周到的服务,开发老客户的新需求和消费等等。十五:最能概括你的三个词

参考回答:我经常用的三个字是适应能力强,有责任心和做事有始有终,并结合具体例子向主考官解释。

十六:作为被面试者,给我打一下分

参考回答:试着列出四个优点和一个非常非常小的缺点,可以抱怨一下设施(没有明确责任人的确定是不会有人介意的)十七:你并非毕业于名牌院校?

参考回答:是否毕业于名牌院校不重要,重要的是有能力完成您交给我的工作,我经过某某的职业培训,掌握的技能完全可以胜任贵公司的现在的工作,而且我比一些名牌院校的应届毕业生的动手能力还要强,我想我更适合贵公司这个职位。十八:怎样看待学历和能力? 参考回答:我想一个人的工作能力的高低,直接决定职场命运,而学历的高低只是进入一个企业的敲门砖,如果公司把学历卡在博士上,我就无法进入贵公司,当然这不一定是我个人的损失,如果一个本科生都能完成的工作,你又何必非要招聘一位博士生呢?

十九:你做过哪件事最令自己骄傲?

参考回答:这是考官给你的一个机会,让你展示自己把握命运的能力,这会体现你潜在的领导能力以及你被提升的可能性,假如你应聘一个服务性质的单位,你很可能会被邀请去午餐,记住,你的前途,取决于你的知识,你的社交能力和综合表现。

二十:你工作经验欠缺,如何能胜任这项工作?

分析。如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘公司并不真正在乎经验,关键看应聘者怎样回答,对这个问题的回答最好要提前,因为你的诚恳,机智,果敢以及敬业。

参考回答:作为应届毕业生,在工作经验方面确实会有所欠缺,因此在读书期间,我一直利用各种机会在这个行业里做兼职,我也发现,实际工作远比书本知识丰富复杂,但我有较强的责任心,适应能力和学习能力,而且我比较勤奋,所以在兼职中均能圆满完成各项工作,从中获取的经验也令我受益匪浅,请贵公司放心,学校所学及兼职的工作经验,使我一定能胜任这个职位。

二十一:你认为自己申请这个职位还欠缺什么?

分析:企业喜欢问求职者的弱点,但精明的求职者一般不直接回答。

参考回答:继续重复自己的优势,然后说,对于这个职位和我的能力来说,我相信自己是可以胜任的,只是缺乏经验,这个问题可以进入公司以后,以最短的时间来解决,我的学习能力很强,我相信我可以很快融入公司的企业文化,进入工作状态。

二十二:你通常如何处理别人的批评?

参考回答,沉默是金,不必说什么,否则情况会更糟糕,不过我会接受建设性的批评,我会等大家冷静下来再一起讨论。二十三:你为什么愿意到我公司来工作?

分析:对于这个问题,你要格外小心,如果你对该单位工作有了研究,你可以回答一些详细的原因。

JAVA程序员面试题1 篇4

2008-06-12 10:40

1.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算法都大概一样,所以性能不会有很大的差异。

2.同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

3.final, finally, finalize的区别是什么?

final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

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

4.& 和&& 的区别

& 是位运算符。&& 是布尔逻辑运算符。

5.Collection 和 Collections的区别

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

6.GC是什么? 为什么要有GC?(基础)

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

7.String s = new String(“xyz”);创建了几个String Object?

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s

8.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

9.Java有没有goto?

Goto是java中的保留字,现在没有在java中使用

10.数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。String有length()这个方法.11.sleep()和 wait()有什么区别? 搞线程的最爱

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

12.error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

13.int和Integer有什么区别

int是基本数据类型,而Integer是java提供的类(包装类)。因为java是运用堆栈结构的,int基本类型放在栈里,而Integer类是放在堆里的,这是他俩的本质区别。从生命周期上想。int的生命周期短相对于Integer。

14.面向对象的特征有哪些方面 ?

1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2.继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3.封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

4.多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

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

Java程序员集合框架面试题 篇5

1、什么是Java集合API

Java集合框架API是用来表示和操作集合的统一框架,它包含接口、实现类、以及帮助程序员完成一些编程的算法。简言之,API在上层完成以下几件事:

● 编程更加省力,提高城程序速度和代码质量

● 非关联的API提高互操作性

● 节省学习使用新API成本

● 节省设计新API的时间

● 鼓励、促进软件重用

具体来说,有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不是真正的集合。

2、什么是Iterator

一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。

3、Iterator与ListIterator有什么区别?

Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。

4、什么是HaspMap和Map?

Map是接口,Java 集合框架中一部分,用于存储键值对,HashMap是用哈希算法实现Map的类。

5、HashMap与HashTable有什么区别?对比Hashtable VS HashMap

两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间有一下区别: ● HashMap和Hashtable大致是等同的,除了非同步和空值(HashMap允许null值作为key和value,而Hashtable不可以)。

● HashMap没法保证映射的顺序一直不变,但是作为HashMap的子类LinkedHashMap,如果想要预知的顺序迭代(默认按照插入顺序),你可以很轻易的置换为HashMap,如果使用Hashtable就没那么容易了。

● HashMap不是同步的,而Hashtable是同步的。

● 迭代HashMap采用快速失败机制,而Hashtable不是,所以这是设计的考虑点。

6、在Hashtable上下文中同步是什么意思?

同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

7、什么叫做快速失败特性

从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。一个快速失败系统设计用来即时报告可能会导致失败的任何故障情况,它通常用来停止正常的操作而不是尝试继续做可能有缺陷的工作。当有问题发生时,快速失败系统即时可见地发错错误告警。在Java中,快速失败与iterators有关。如果一个iterator在集合对象上创建了,其它线程欲“结构化”的修改该集合对象,并发修改异常(ConcurrentModificationException)抛出。

8、怎样使Hashmap同步?

HashMap可以通过Map m = Collections.synchronizedMap(hashMap)来达到同步的效果。

9、什么时候使用Hashtable,什么时候使用HashMap

基本的不同点是Hashtable同步HashMap不是的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable,反之使用HashMap。非线程安全的数据结构能带来更好的性能。

如果在将来有一种可能—你需要按顺序获得键值对的方案时,HashMap是一个很好的选择,因为有HashMap的一个子类LinkedHashMap。所以如果你想可预测的按顺序迭代(默认按插入的顺序),你可以很方便用LinkedHashMap替换HashMap。反观要是使用的Hashtable就没那么简单了。同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。

10、为什么Vector类认为是废弃的或者是非官方地不推荐使用?或者说为什么我们应该一直使用ArrayList而不是Vector

你应该使用ArrayList而不是Vector是因为默认情况下你是非同步访问的,Vector同步了每个方法,你几乎从不要那样做,通常有想要同步的是整个操作序列。同步单个的操作也不安全(如果你迭代一个Vector,你还是要加锁,以避免其它线程在同一时刻改变集合).而且效率更慢。当然同样有锁的开销即使你不需要,这是个很糟糕的方法在默认情况下同步访问。你可以一直使用Collections.sychronizedList来装饰一个集合。

java程序员面试之葵花宝典 篇6

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

17、abstract class和interface有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

18、heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

19、forward 和redirect的区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

20、EJB与JAVA BEAN的区别?Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

22、JSP中动态INCLUDE与静态INCLUDE的区别?动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

24、GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)

26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor.

27、String s = new String(“xyz”);创建了几个String Object? 两个

28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

public class ThreadTest1{private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1; Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i<2;i++){ Thread t=new Thread(inc); t.start(); t=new Thread(dec); t.start(); } } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+“-inc:”+j); }

private synchronized void dec(){ j--; System.out.println(Thread.currentThread().getName()+“-dec:”+j); }

class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } } class Dec implements Runnable{public void run(){ for(int i=0;i<100;i++){ dec(); } } } }

29、Java有没有goto? java中的保留字,现在没有在java中使用。

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

31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?

SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。

32、应用服务器有那些?

BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat

33、给我一个你最常见到的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

34、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

35、List, Set, Map是否继承自Collection接口? List,Set是,Map不是

36、说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

37、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronize

java程序员面试问题 篇7

姓名:开始时间:结束时间:

(请将答案写在答题纸上)

java 基础

1StringBuffer的实现方式,容量如何扩充

2了解JVM启动参数吗?-verbose-Xms-Xmx的意思是什么 ?3

3ClassLoader的功能和工作模式

4jvm gc 如何判断对象是否需要回收,有哪几种方式?

5reader和inputstream区别?3?

6==和equals的区别? 3

7hashCode的作用,Hashmap理解,如果在hashCode中返回常量1,会有什么结果?3

8char型变量中能不能存贮一个中文汉字?

9interface 和 abstrat class的区别

10多线程 同步的原理

11解释是一下什么是线程安全?举例说明一个线程不安全的例子。解释Synchronized关键字的作用

12说出数据连接池的工作机制是什么?解决什么问题50%

13了解过哪些JDK5的新特性JDK版本: Integer i = 5;举例描述下相应的特性?java序列化

算法:排序算法有哪些,优缺点ArrayList LinkedList HashMap,区别递归算法使用。

架构:ibatis:sql语句中用>特殊符号,怎么办Mvc的概念谈一下自己最熟悉的web框架Spring的核心理念是什么?Spring BeanFactory,FactoryBean的区别?apache,tomcat和weblogic的最根本区别

数据库乐观锁,悲观锁?sql注入原理?数据库操作的性能瓶颈通常在哪里, 1000万级别访问,在数据库和java程序上考虑哪些来进行性能优化Statement和PreparedStatement之间的区别?数据库数据文件和索引为什么需要收缩,如何实现收缩?性能方面。多数结合多线程、同步来问,以提取一张大表数据来作为例子 解决性能的方法表关联时,内连接,左连接,右连接怎么理解用JDBC定义一个带事务性的数据库操作主要步骤是什么?表设计的时候会不会出现冗余?数据分页怎么处理?

web开发http get和post区别在web开发中,用redirect与forward做跳转有什么区别servlet中,如何定制session的过期时间,filter的应用场景有哪些 4 JSP的include有几种实现,并说明request的SetAttribute,和setparam区别?tcp,udp区别

设计模式Singleton的几种实现方式工厂模式和抽象工厂模式之间的区别项目中使用过什么设计模式?

java程序员面试问题 篇8

1、一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?.....2

2、Java有没有goto?..........................................................................................2

3、说说&和&&的区别。......................................................................................2

4、在JAVA中如何跳出当前的多重嵌套循环?...................................................2

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?...2

6、short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?..................2

7、char型变量中能不能存贮一个中文汉字?为什么?............................................2

8、用最有效率的方法算出2乘以8等於几?2

9、请设计一个一百亿的计算器..........................................................................2

10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?2

11、“==”和equals方法究竟有什么区别?...........................................................2

12、静态变量和实例变量的区别?.....................................................................2

13、是否可以从一个static方法内部发出对非static方法的调用?........................2

14、Integer与int的区别.....................................................................................2

15、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?...............................2

16、下面的代码有什么不妥之处?.......................................................................2

17、请说出作用域public,private,protected,以及不写时的区别.......................2

18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?2

19、构造器Constructor是否可被override?..........................................................2

20、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?.......................................................................2

21、写clone()方法时,通常都有一行代码,是什么?.........................................2

22、面向对象的特征有哪些方面.........................................................................2

23、java中实现多态的机制是什么?..................................................................2

24、abstractclass和interface有什么区别?...........................................................2

25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?2

26、什么是内部类?StaticNested Class 和 Inner Class的不同。..........................2

27、内部类可以引用它的包含类的成员吗?有没有什么限制?...........................2

28、AnonymousInner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?...................................................................................................................2

29、super.getClass()方法调用.....................................................................2

30、String是最基本的数据类型吗?.....................................................................2

31、String s = “Hello”;s = s + “ world!”;这两行代码执行后,原始的String对象中的内容到底变了没有? 2

32、是否可以继承String类?..............................................................................2

33、String s =new String(“xyz”);创建了几个String Object?二者之间有什么区别? 2

34、String和StringBuffer的区别.......................................................................2

35、如何把一段逗号分割的字符串转换成一个数组?...........................................2

36、数组有没有length()这个方法?String有没有length()这个方法?...................2

37、下面这条语句一共创建了多少个对象:Strings=“a”+“b”+“c”+“d”;.................2

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

39、下面的程序代码输出的结果是多少?...........................................................2

40、final,finally, finalize的区别。......................................................................2

41、运行时异常与一般异常有何异同?..............................................................2

42、error和exception有什么区别?.....................................................................2

43、Java中的异常处理机制的简单原理和应用。................................................2

44、请写出你最常见到的5个runtimeexception。...............................................2

45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?............................................................................................................2

46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?..........................................................................................................................2

47、sleep()和 wait() 有什么区别?.....................................................................2

48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。.................2

49.下面两个方法同步吗?(自己发明)...........................................................2

50、多线程有几种实现方法?同步有几种实现方法?.............................................2

51、启动一个线程是用run()还是start()?............................................................2

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

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

54、简述synchronized和java.util.concurrent.locks.Lock的异同?.......................2

55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 2

56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。..................................................................................2

57、介绍Collection框架的结构..........................................................................2

58、Collection框架中实现比较要实现什么接口..................................................2

59、ArrayList和Vector的区别............................................................................2

60、HashMap和Hashtable的区别.......................................................................2

61、List和 Map 区别?......................................................................................2

62、List, Set,Map是否继承自Collection接口?....................................................2

63、List、Map、Set三个接口,存取元素时,各有什么特点?............................2

64、说出ArrayList,Vector,LinkedList的存储性能和特性......................................2

65、去掉一个Vector集合中重复的元素..............................................................2

66、Collection和 Collections的区别。...............................................................2

67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别? 2

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

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

70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!.................................................2

71、说出一些常用的类,包,接口,请各举5个...................................

上一篇:企业的环保论文下一篇:乡村学校少年宫器乐班辅导员职责