Java之reference-JAVA程序员JAVA工程师面试必看(共10篇)
1.Java之reference-JAVA程序员JAVA工程师面试必看 篇一
Java求职必看:9道华为Java程序员面试题!
大公司的面试题,总是能代表着行业对从业者的要求,也代表着技术的发展趋势和方向,这里就整理9道华为的Java面试题,供Java从业者参考。
1.Java程序的种类有(BCD)
A.类(Class)B.Applet C.Application D.Servlet
2.下列说法正确的有(BCD)
A. 环境变量可在编译source code时指定
B. 在编译程序时,所能指定的环境变量不包括class path C. javac一次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
3.下列标识符不合法的有(ACD)
A.new B.$Usdollars C.1234 D.car.taxi
4.下列说法错误的有(BCD)A. 数组是一种对象 B. 数组属于一种原生类
C. int number=={31,23,33,43,35,63}
D. 数组的大小可以任意改变
5.不能用来修饰interface的有(ACD)A.private B.public C.protected D.static
6.下列正确的有(ACD)
A. call by value不会改变实际参数的数值 B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址 D. call by reference能改变实际参数的内容
7.下列说法错误的有(ACD)
A. 在类方法中可用this来调用本类的类方法 B. 在类方法中调用本类的类方法时可直接调用 C. 在类方法中只能调用本类中的类方法 D. 在类方法中绝对不能调用实例方法
8.下列说法错误的有(ABC)
A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在 C. Java语言中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
9.下列说法错误的有(BCD)
A. 能被java.exe成功运行的java class文件必须有main方法 B. J2SDK就是Java API C. Appletviewer.exe可利用jar选项运行.jar文件
D. 能被Appletviewer成功运行的java class文件必须有main方法
2.Java程序员面试 篇二
第一,谈谈final,finally,finalize的区别。
Fanal 修饰符 可以修饰类,属性和方法。被修饰的类不可以派生子类,不能被作为父类被继承。它修饰的属性和方法必须在声明的时候给定初值,以后不能修改。
Fanaly 在捕获异常的时候最后执行的语句,可以不写。
Fanalize 是Object类中定义的,所以所有的类都继承了它,这个方法是垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类,也可以实现其他接口。匿名内部类在swing中比较常见。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
静态内部类,普通的内部类
静态内部类是不能直接调用外部的类,可以通过外部类的引用来调用
非静态类inner class 可以自由的引用外部类的属性和方法,但是它与一个实例绑定在了一起,不可以定义静态的属性、方法。
第四,&和&&的区别。
&和&&都是java中的逻辑运算符
&两边的表达式的结果都是true的,整个的运算结果才是true,只要有任意一个是false,其结果就是false的
&&是短路与,既第一个表达式是false 就不用判断第二个表达式,结果就是false
第五,HashMap和Hashtable的区别。
它们实现了将key 映射到 value的对象,键和值都是对象,不能有重复的键,可以有重复的值
Hashtable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现 HashMap可以定义null key 和null 的value,而HashTable不可以
HashMap是线程不安全的,而HashTable线程安全,所以HashMap的效率比HashTable的要高些
第六,Collection 和 Collections的区别。
Collection是所有集合的父接口。
List 和set是Collection的子接口
Collections是操作有关集合的工具类。
第七,什么时候用assert.断言 Debug模式下才有效
第八,GC是什么? 为什么要有GC?
GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
第九,String s = new String(“xyz”);创建了几个String Object?
2个,一个是引用对象s 还有字符串对象xyz
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
-11 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
S1 =s1+1 会出错,因为1默认为int型。相加会出错。
S1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符重载,所以是不一样的。
第十二,sleep()和 wait()有什么区别?
Sleep()是线程的休眠,方法里边要有毫秒值。意思是过了多少毫秒后会执行一次。不释放系统资源
Wait()是线程的等待,必须唤醒notify才能够执行,不占用系统的资源
第十三,Java有没有goto?
没有,不过它是java语言中的保留字
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组中没有length()方法,有length属性。
String有length()方法,字符串的长度。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载 重载的方法名字必须相同,参数表不同,可以改变返回类型
Override 是重写 重写是子类继承父类的虚方法重新定义参数表要相同,返回类型也要和父类相同。
Overloaded可以改变返回类型
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
set里的元素是不能重复的,用iterator()方法来区分重复与否。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
第十八,error和exception有什么区别?
Error 是编辑时出现的错误,不能通过编译,也就是不能生成.class的文件
Exception是异常,异常是可以避免和捕获的,程序能够通过编译。第十九,List,Set,Map是否继承自Collection接口?
List set
是继承Collection 接口的。Map不是 第二十,abstract class和interface有什么区别?
abstract class是抽象类,可以定义普通方法,也可以定义只有方法名,没有实现的方法。抽象类是被继承的 interface是接口,所有的方法都是抽象方法。实现接口就是重写接口里的所有方法。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
Abstract和method是不可以static的,因为抽象类是要被继承的。
native是映射本地方法,不存在被子类继承,所以也不能与abstract混用
抽象类没有具体的实现,觉得定义成synchronized是没有必要的,修饰具体的方法
才有意义
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口,extends
抽象类可以实现接口。
抽象类是可以继承实体类的,但实体类中要有明确的构造函数。第二十三,启动一个线程是用run()还是start()?
启动线程要是start()方法。
第二十四,构造器Constructor是否可被override?
构造器不能被重写的,可以重载。第二十五,是否可以继承String类?
不能,String是final的。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
如果其他的方法不是同步的,是可以进去的。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
finally里的代码会执行,在return之前执行
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
2<<3 第十七,给我一个你最常见到的runtime exception.NullPointerException 空指针
ArrayIndexOutOfBoundException
数组下标越界
ClassCastException 造型异常 第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
这是对的,equals方法是比较两个值。而不是内存地址。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
Public class Singleton{ Private static Singleton s = new Singleton();Private Singleton(){ } Public static Singleton getInstance(){ Return s;}
3.Java程序员面试题 篇三
Java程序员面试题
1.下列程序段执行后,t5的结果是_____.int t1=5,t2=6,t3=7,t4,t5;
t4 = t1 t5 = t4 2.String s = new String(“xyz”);创建了_____个String Object.3.类型转换 int x=4; System.out.println(“value is ” +((x>4)?99.9:9));输出是______; 4.Boolean类型 boolean a = false; if(a = true){ System.out.println(true); } else { System.out.println(false);结果是______; 5.int i = 5; Integer iInteger = new Integer(i); Integer jInteger = new Integer(i); System.out.println(i == iInteger); System.out.println(iInteger == jInteger);输出结果是______; 6.TreeSet map = new TreeSet(); map.add(“one”); map.add(“two”); map.add(“three”); map.add(“four”); map.add(“one”); Iterator it = map.iterator(); while(it.hasNext()){ System.out.print(it.next()+ “ ”); } 输出结果是 ________________________________________; class Polish { public static void main(String[] args){ int x = 4; StringBuffer sb = new StringBuffer(“..fedcba”); sb.delete(3,6); sb.insert(3, “az”); if(sb.length()> 6)x = sb.indexOf(“b”); sb.delete((x-3),(x-2)); System.out.println(sb); 北京千渡网讯科技有限公司博宝艺术网http:// } } 结果是: ____________ 8.class Emu { static String s = “-”; public static void main(String[] args){ try { throw new Exception(); } catch(Exception e){ try { try { throw new Exception(); } catch(Exception ex){ s += “ic ”;} throw new Exception(); } catch(Exception x){ s += “mc ”;} finally { s += “mf ”;} } finally { s += “of ”;} System.out.println(s);结果是:______________________ 9..抽象类和接口的区别 10.写一个方法,实现字符串的反转,如:输入abc,输出cba 11.short s1 =1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错? 12.下列哪些集合能够改变其容量大小,同时能够根据索引访问其元素,并且访问方法是非线形安全的? A.java.util.HashSet B.java.util.LinkedHashSet C.java.util.List D.java.util.ArrayList E.java.util.Vector F.java.util.PriorityQueue 13.下列关于泛型的说法,错误的是() A、泛型是一种参数化类型 B、可以取代继承机制。 C、避免了运行时进行类型转换可能的潜在性错误 D、增强了程序的灵活性和安全性 14.下面关于System.out的说法哪些是正确? A.System.out是1个PrintStream。 B.System.out是1个OutputStream。 C.System.out是1个FilterOutputStream。 D.System.out不是1个PrintStream。 E.System.out在异常时,将抛出IOException 面试官:知道多态么? 应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系? 2.自行车 一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问到,“你是从哪搞到的这么漂亮的车的?” 骑车的那个程序员说,“我刚从那边过来,有一个漂亮的姑娘骑着这个车过来,并停在我跟前,把衣服全脱了,然后对我说,‘你想要什么都可以’”。另一个程序员马上说到,“你绝对做了一个正确的选择,因为那姑娘的衣服你并不一定穿得了”。 3.警告 有一个小伙子在一个办公大楼的门口抽着烟,一个妇女路过他身边,并对他说,“你知道不知道这个东西会危害你的健康?我是说,你有没有注意到香烟盒上的那个警告(Warning)?” 小伙子说,“没事儿,我是一个程序员”。那妇女说,“这又怎样?” 程序员说,“我们从来不关心Warning,只关心Error” 4.火车 一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶奶和一个年轻漂亮的姑娘。两个上前坐了下来。程序员和那个姑娘他们比较暧昧地相互看对方。这时,火车进入山洞,车厢里一片漆黑。此时,只听见一个亲嘴的声音,随后就听到一个响亮的巴掌声。很快火车出了山洞,他们四个人都不说话。那个老奶奶在喃喃道,“这个年轻小伙怎么这么无礼,不过我很高兴我的孙女扇了一个巴掌”。项目经理在想,“没想到这个程序员居然这么大胆,敢去亲那姑娘,只可惜那姑娘打错了人,居然给打了我。” 漂亮的姑娘想,“他亲了我真好,希望我的祖母没有打疼他”。程序员坐在那里露出了笑容,“生活真好啊。这一辈子能有几次机会可以在亲一个美女的同时打项目经理一巴掌啊” 5.程序员退休后 某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字:hello world! 6.小沈阳版之程序员的痛苦人生 1)、程序员其实可痛苦的了......需求一做一改,一个月就过去了;嚎~需求再一改一调,一季度就过去了;嚎~ 2)、程序员最痛苦的事儿是啥,知道不?就是,程序没做完,需求又改了; 3)、程序员最最痛苦的事儿是啥,知道不? 就是,系统好不容易做完了,方案全改了; 4)、程序员最最最痛苦的事儿是啥,知道不? 就是,系统做完了,狗日的客户跑了; 5)、程序员最最最最最痛苦的事儿是啥,知道不? 就是,狗日的客户又回来了,程序给删没了! 7.买鸡蛋 一个女人让他的程序员丈夫去商店买东西:你去附近的商店买些面包,如果有鸡蛋的话,买6个回来,这个丈夫买了6个面包回来,他的妻子大吃一惊:你为什么买了6个面包?!程序员丈夫回答:因为他们有鸡蛋。 8.“咚咚咚”“谁?”过了很久„„“Java” 9.怎么使用面向对象的方式变得富有?继承。 10.换一个电灯泡需要几个程序员?一个也不要,这是硬件问题。 11.一百万只猴子,给他们一百万个键盘,其中的一个会写出Java程序,其它的写的都是Perl程序。 12.十个顶尖软件工程师参加培训管理人员的课程。老师提出了这样一个问题:“假如你供职的公司是为航空电子设备提供软件的。有一天你乘飞机出差,当你上了飞机后你发现一个牌子上写着这个飞机用的是你的团队开发的Beta版软件,你会下飞机吗?” 九个软件工程师举了手。老师看着第十个问道:“你为什么愿意留在飞机上?”这人回答说:“如果是我的团队写的这个软件,飞机根本无法起飞,根本谈不上坠毁。” 13.为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 == Dec 25。 14.换一个电灯泡需要几个微软程序员?一个也不要,他们会把黑暗变成标准然后告诉每个人:“我们就是这么设计的。” 15.Keyboard not found...press F1 to continue 16.Unix是用户友好的,只是要成为Unix的用户很困难。 17.这个笑话大概来自70年代的米国:一个新手在试着修复一台坏了的LISP机器,他的方法就是反复关上电源然后打开。专家看到之后,严厉地批评说:“你这样是没用的,你必须要明白出错的深层次原因。” 专家关掉电源,然后打开。运行正常了。 18.计算机科学家靠什么避孕?他们的人格魅力。 19.一个微软工程师正走在路上,突然听到一只青蛙说:“如果你吻我一下的话,我就会变成漂亮的女人,我们可以结婚,从此幸福地生活在一起。”工程师看着青蛙想了一下,抓起它轻轻地放在自己的上衣口袋里。青蛙把头伸出来说:“怎么,你不准备吻我吗?”“是的”,工程师说:“我在微软工作,没有时间娶妻——不过有一只会说话的青蛙还是挺酷的。” 20.换一个电灯泡需要几个C++程序员?你还在用面向过程的思维考虑问题。一个设计良好的电灯泡类必然封装了换灯泡的方法,所以你要做的就是调用“换电灯泡”方法。 21.两个程序员在聊天:“我昨天碰到个辣妹。我把她带回家,马上就开始如饥似渴地亲吻,她就坐在我的键盘上,然后„„”“你在家里也有台电脑?CPU是什么型号的?” 22.为什么程序员喜爱UNIX:unzip, strip, touch, finger, grep, mount, fsck, more, yes, fsck, fsck, fsck, umount, sleep 23.电脑是高速的笨蛋,程序员是低速的笨蛋。 24.一个存放了一半数据的数组:悲观的程序员觉得数组是半空的。乐观的程序员觉得数组是半满的。真正的程序员?觉得数组占用的空间过大,需要调用realloc()。 25.编译成功了!交付吧 1.面试 面试官:熟悉哪种语言? 应聘者:C# 面试官:知道什么叫类么? 应聘者:我这人实在,工作努力,不知道什么叫累。 面试官:知道什么是包? 应聘者:我这人实在,平常不带包,也不用公司准备了。 面试官:知道什么是接口吗? 应聘者:我这个人工作认真,从来不找借口偷懒。 面试官:知道什么是继承么? 应聘者:我是孤儿没什么可以继承的。 面试官:知道什么叫对象么? 应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。 面试官:知道多态么? 2008-06-12 10:43 1.客服端调用EJB对象的几个基本步骤 设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其业务方法。 2.如何给weblogic指定大小的内存? 在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m-Xmx200m,可以调整最小内存为32M,最大200M 3.如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。 4.如何启动时不需输入用户名与密码? 修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.5.在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或 连接池等相关信息进行配置后,实际保存在什么文件中? 保存在此Domain的config.xml文件中,它是服务器的核心配置文件。 6.说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp 放入何目录下,然的在浏览器上就可打入 http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办? Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。 7.在weblogic中发布ejb需涉及到哪些配置文件 不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP weblogic-cmp-rdbms-jar.xml实体Bean一般还需要 8.如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配 置 缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。 9.如何查看在weblogic中已经发布的EJB? 可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 10.CORBA是什么?用途是什么? CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织(Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。 11.说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法? Session Facade Pattern:使用SessionBean访问EntityBean Message Facade Pattern:实现异步调用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问 Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性 Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性 Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 12.说说在weblogic中开发消息Bean时的persistent与non-persisten的差别 persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。 13.Servlet执行时一般实现哪几个方法? public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo() public void service(ServletRequest request,ServletResponse response)public void destroy() 14.j2ee常用的设计模式?说明工厂模式。 Java中的23种设计模式: Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 15.EJB需直接实现它的业务接口或Home接口吗,请简述理由。 基本信息: 姓 名:张三 性 别:女 年 龄:23 工作经验:2年 专 业:软件技术 教育程度:专科 联系电话:xxxxxxxxx E-mail: xxxxxxxxxxx@126.com 职业技能与特长: 熟练掌握java语言,深入理解OOP编程思想,有良好的编程习惯; 熟练掌握JSP、Servlet、JavaScript、XML等开发技术; 熟练掌握Struts2+Spring+Hibernate进行JavaEE项目开发,深入理解Struts2核心思想; 熟练掌握Jbpm工作流,理解Jbpm流程实例、任务、执行、候选人、泳道等工作流概念.熟练掌握lucene(全文检索)、mybatis、WebService等流行框架和技术; 熟悉掌握Javascript、Ajax、jQuery等前台页面技术; 熟悉Sql语句编写。熟悉Jdbc、数据源、DBUtil;熟悉Mybatis对象关系映射框架; 熟悉Tomcat、JBoss等Web服务器的安装和配置,熟悉JAVA相关开发工具(Eclipse, Jbuilder)及项目管理工具SVN、Maven的使用; 熟悉关系型数据库的理论和E-R图的编写和使用PowerDesigner建模工具, 熟练使用MySQL、Oracle等数据库, 熟悉PL/SQL语法及事务及存储过程的设计; 熟悉软件工程,能迅速接受新技术,快速学习和应用。有中型项目开发经验,能独立完成软件某个模块的分析,设计开发,单元测试; 具备一定的英语,逻辑思维能力,有很好的团队合作精神。职业概况 求职意向: 工作性质:全职 目标地点:北京 目标职能:JavaEE开发工程师 期望待遇:具体值 工作经验: 2012/4—至今 北京神舟国际旅行社集团有限公司 职务:JavaEE开发工程师 工作描述:负责相关开发文档的编写、代码功能模块的编写等工作。项目经验: 项目名称:东华国旅管理平台 开发环境:Eclipse6.5+JDK6.0+Apache2.2+Tomcat6+Oracle+SVN (Apache和Tomcat之间采用mod_jk作为桥梁,使用AJP协议通讯)使用技术:Struts2+Spring+Hibernate+Jbpm+Ajax+Jquery 开发周期:9个月 网 址:http:// 项目描述: 1.本系统拥有实时的机票查询系统,实时连接国内唯一机票预订系统中航信,信息全面,价格透明,预订便捷。最好的三方协议价格控制商业旅行成本,是企业商旅的最佳选择; 2.本系统主要分为价格政策、订单管理、会员管理、企业客户、基础数据、酒店管理、系统管理等核心模块; 3.通过对基础数据、机票、酒店、旅游线路、网站信息等数据的维护实现前台网站的所有功能; 4.对会员和企业客户的相关功能进行管理; 5.对客户在网站上形成的机票、酒店、订单进行管理。责任描述: 1.2. 3. 4. 导读:再学了3年的Java之后,想从事Java开发行业,就必不可少的要经历面试阶段,如何做好面试的准备,和在面试过程中如何完美的应对面试呢?下面小编为大家推荐一篇java程序员面试自我介绍范例,希望能帮助到大家。 java程序员面试范例 面试是一个“简单”而又“复杂”的事情,正因为它具有“简单”和“复杂”的双重性质,才使我们对这个问题不敢掉以轻心。介绍如何面试,有时候甚至可以写一本书,而有时候,你什么都不准备却可以面试成功。 因为,面试的成功与否完全取决于主考官,因此,这门学问的主要科目就是研究主考官的招聘心理。 我们研究好主考官的招聘心理,自然就可以做到“知己知彼”了。 本小节只是说说面试的“心理战”,而想真正的能够对答如流,需要的是“真功夫”,要想具备“真功夫”还是需要真正的技术水平作为前提的,本小节的内容只是给那些已经具备相应技术水平的应聘者提供一定的应聘技巧而已,以避免没有把自己的“真功夫”完全展示出来从而丧失工作机会。 面试前对自己的心理暗示: 面试并不是考试,只是和未来的同事聊聊天。 “心理战”对象,可能出现的主考官如下几类: 人物1,人力部主管(HR) 人物2,你未来的主管 我们分别来分析遇到不同类型的主考官的不同情况。 人物1:人力部主管(HR) “人物1”的出现往往是进行该职位的初审,给出一个概观定论,如果合格将会提交给“人物2”。“人物1”他们所要进行的是对人的心理和基本技能方面的一个判断。不过,也有一些公司,首次面试仍然是由业务主管来进行,然后再将初审合格的人交给人力部门来复试,如果,是这种情况,你应该就算90%入职成功了,因为,这个复试往往是走个形式,看看此人有没有被主管忽略的大问题,如果没有,基本就差不多了。那么,我们仅仅以第一种情况为例,看看“人物1”大多提出的是哪些问题。 常见提问1:请你自我介绍一下 这个问题,是人力部主考官必问的问题,这个问题的提问并不是真的想了解你的个人情况,因为,你的情况基本上在简历上都写着呢。他提出这个问题的主要目的是来考察你的语言表达能力,和你在表达过程中的一些细节表现。 所以,我们应该怎么回答呢? 看看如下对话: HR:“请你自我介绍一下” A君:“您看简历吧,基本上我都写在简历上了。” HR:汗 HR:“请你自我介绍一下” B君:“我叫XXX,年龄24,性别男,籍贯” HR:倒 HR:“请你自我介绍一下” C君:“这话从何说起呢?话说10年前” HR:晕 首先,不要认为主考官没有认真的看你的简历,没有看你的简历就让你来面试,是在浪费他自己的时间,所以绝对是首先认为简历比较合适,才约你来的。 第二,自我介绍并不是让你重复一下你简历上的所有内容,那些内容简历上都有,主考官主要是想听听你如何表达和语言的逻辑能力。 第三,这个表达不要滔滔不绝,要有张有弛,有收有放,主要将自己的想说的优势部分分别道来,能够通过你的介绍让人感觉到你的“亲和力”为佳。 “语言表达能力”并非我们日常所说的“能侃”或者“口才”,这是片面的理解,在面试过程中,我们要展现的“语言表达能力”是指,“语言亲和力”,能够让人感受到你的“沟通”能力。 回答范例: 您好!我来自XXX大学,是应届毕业生,所学专业是计算机应用技术,我在校期间参加多项课余工作,参与了多个应用系统的开发与设计,熟练掌握Java开发工具和应用系统的各种开发方法。在学习与工作期间,总结与实践了各种技术实现手段,有了一些小的积累。 近期已经毕业,看到您公司的招聘信息,感觉自己的技术与能力非常合适,就投递了简历。希望能过了您这关,呵呵(注:最后的微笑最好不要太牵强,目的是缓和气氛) 大家看到了,这个回答范例的自我介绍非常简练,但是,什么也没有落下。既实事求是的说了自己是应届毕业生,又说明了自己虽然是应届毕业生,但是参加了很多的课余工作,并且具有实际的项目开发经验,而且有了一些小的积累。 既说了自己的对这份工作和自己能力之间的考量,又表达了自己对主考官的期望。意思表达时不卑不亢,言简意赅,让人听起来就感觉很舒服。 这时候你的目的就达到了,展现出自己的“语言表达能力”和“语言亲和力”,同时又能够让人感受到你的“沟通”能力。 常见提问2:你最大的优点是什么? 这个问题如果是HR问,则最好回答了。 回答这个问题的关键是“围绕自己的技术特长”展开话题,为什么这样? 因为,往往HR都不懂技术,围绕技术说自己的特长很容易给他说晕(当然,个别懂技术的HR除外)。这里要注意的是,在说技术问题的时候,不要让HR感觉自己什么都不懂,要注意说话的节奏,不要太快,不要太骄傲。 常见提问3:你最大的缺点是什么? 这个问题是HR的杀手锏,可以说这是HR的狠招,这个问题最难回答,一般应聘者都本着“扬长避短”的心态去面试,冷不防冒出这么一个问题,还真是挺棘手的。 需要清楚HR问这个问题的目的,其目的仍然不是要真的需要知道你的缺点是什么,还是看看你的表达能力,尤其是需要考察应聘者面对危机的时候的处理能力。 所以,我们不要用下列方式作答: 1、说出自己的真实缺点,尤其是在前面谈话中没有暴露出来的缺点 2、认为说说某些大众化的缺点即可,认为说一两个无妨 3、说自己没有缺点,强调自己比较完美 总之,HR心里想的是:需要了解他面前的这个人在面对困难的时候,是如何处理问题的,从处理危机的方法来判断此人的处理事情的灵活性。当然,如果此人自己暴露出自己的缺点当然更好,省得需要去想办法问更多的问题去发现了。 所以,在回答这个问题的时候,要看起来“真诚”、“坦白”,同时,说出来的并非自己的缺点,而是最好在别人看来是优点的那些方面。 这个问题问的概率很大,通常如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,肯定不会录用你。HR喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,目的还是突出自己优点的部分。 HR喜欢聪明的求职者。 这一点比较难掌握,我们也给出范例: 回答范例: 呵呵,这个问题好难回答啊!我想想(亲和力表现,也缓解了自己的紧张情绪)我的缺点是,比较执着,比如在技术方面比较爱钻研,有的时候会为一个技术问题加班到深夜。还有就是,工作比较按部就班,总是按照主管的要求完成任务。另外的缺点是,总在自己的工作范围内有创新意识,并没有扩展给其他同事。这些问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。 嗯,我想就这些吧。 这个回答范例开头第一句话就让人觉得很自然,因为这个求职者所说的话恰恰表达了一般人听到这个问题后的心理状态,还有你一定会有一个思考的时间,因为,谁也不会立刻说出自己的缺点。 后面说出的几个缺点都是一环套一环的,说了自己“比较执着”,但又说自己其实是“比较爱钻研”,说自己总是“按部就班”,但又补充了其实那是“按照主管的要求完成任务”,这时候,如果用人单位觉得,此人是不是没有“创新思维”的时候,马上就补充道“在自己的范围内有创新意识”,至于“没有扩展给其他同事”这件事,其实无关紧要,干脆就卖给HR吧。 以上回答确实卖弄了些“技巧”,相信HR也一定能看的出来,但是,即使看出来了也无妨,HR也会心领神会,知道你是一个比较善于沟通并且善于表达的人。 人物2:你未来的主管 当见到未来主管的时候,往往是应聘者已经过了HR那一关,或者应聘者已经过了笔试的那一关,因此见到这位人物意味着距离成功已经向前进了一步。 “人物2”的面试也有他的目的,他是和你在日常工作中接触最多的人,作为你的直接上司,他需要在工作中经常给你分配任务,他需要对他的主管负责,因此,他招聘的这个人选必须是可以帮助他完成他整个Team的目标的人。 往往那个吸引你来面试的“招聘启示”就是这个人物所撰写的,因此,其实在你和他见面以前,早已经通过“招聘启示”和他有过交往了。因此,从“招聘启示”中就可以初显这位主管的端倪。 注意,主管同志并不是人事领域的高手,不会用各种语言技巧去发掘你身上的缺点或者优点,往往问题都是实打实的,或者比较一针见血的,而且,更偏重于日常工作。那么,我们下面和他过过招。 常见提问1:请你自我介绍一下 这个问题,HR也问过了,到他那里有可能还会问,主管问这个问题和HR虽然问的问题一致,但是,其目的并不是完全相同的。 他不仅仅想考察一下你的表达能力,同时还想考察一下你思路的清晰程度。 我们在回答他的问题前,一定要想清楚一件事:他是该技术领域的高手,就是我们“程序员修炼三境界”中描述的“第二层境界”的那个人物,如果还想更清楚的了解这个人物,可以去重新看看前面的那个章节。 这个自我介绍最好说的较为简洁,不要过分炫耀自己的技术如何如何强,免得引起这位主管的兴趣,引起他的技术兴趣没有什么好处,只会带来更多的技术问题的发问。 常见提问2:你最引以为自豪的项目是什么? 他问这个问题的意图是想考察你的成长路径和编程习惯,因为,最让你自豪的项目 往往是你成长最快的项目,那个成长最快的项目往往会给你今后的编程习惯留下很多痕迹。所以,通过你对那个引以为豪的项目的描述,有经验的他会很快锁定你技术成长中的缺陷和闪光点,从而判断是否能够“为我所用”。 你最好拿出一个自己最擅长技术的那个项目进行介绍,这个项目最好能够比较贴近招聘要求的那些指标。如果,没有做过什么有规模的正规项目,你就拿些自己非常擅长或者有创意的开发作品来说。这样做的好处是,他听完你的介绍后,会接下来进行提问,他所有发问,你都成竹在胸了。 切忌拿一个别人的项目,或者自己参与很少的项目来介绍,如果这样的话,一旦他深入的询问这个项目的问题,很可能你会所答非所问,反而造成更严重的影响。你大可以和他大谈特谈你在那个项目中获得的经验,那会引起此君的共鸣,有可能的话,说出一些你自己的小技巧,他会很高兴。 常见提问3:如果我录用你,你将怎样开展工作 他问这个问题的意图是,希望看看你对这个职位工作展开的一些设想,仍然是“实打实”从工作出发来提问的。所以,你在回答这个问题的时候也要“实打实”,切忌虚无缥缈的一通“高、大、全”。 一般要列出自己的入职之后的工作计划,而这些计划需要详尽,同时需要体现出你工作的严谨性,也不能是想当然的说出一些与工作无关的计划,这都有可能适得其反。 回答范例: 针对这个如何展开工作的问题,我目前仅仅是对咱们公司的大体情况有一个了解,因此,对这个职位的工作性质仅仅是自己的一个理解。 所以呢,我也不知道是否合适,我只能说一个大概。 作为这个职位而言,我想我首先要对本公司的主营业务要有一个相当的了解,了解我们公司的业务组成部分、业务的发展方向、我们面向的客户性质等等。 第二,我要了解所属部门在公司中的地位,以及部门的工作目标,从而确定自身的工作努力方向。 第三,了解我参与项目的开发方式,架构方式,紧密配合领导工作,尽快投入具体的开发工作。 这就是我开展工作的计划。 从大到小的方式进行了解,这么说可以让领导知道你不是一个盲目工作的人,而是一个按部就班,稳扎稳打的人,使人觉得和你合作很踏实。另外,一定要强调所属项目或部门的目标,因为这关系到面试你的主管的切身利益。最后,强调“尽快”投入开发工作,这样,领导就放心了,你不是一个“只了解,不工作”的人。 表a和表b具有完全相同的结构,主键为indexid。写出一个sql语句把表b中不存在而表a中存在的数据插入到表b中。 2、javascript部分 页面中有一个名称都为unitprice的type=text对象。要求输入的数据不能为空,写一个函数实现该功能,如果为空时给出提示。 3、JSP部分 ①session中存储一个String变量,变量名称为studentname,写出在jsp中如何得到这个session变量的值的语句。 ②在jsp中引用使用来引用javabean. Ⅰscope的值有哪些,这些值的区别是什么? Ⅱ不同的jsp页面中引用javabean时,id能否相同,如果能相同,对scope的值有什么要求? 4、JAVA部分 ①输入一个维数,输出以下形式的矩阵和数列,以维数n=4为例: 0000 0111 0122 0123 ②写出下面这段程序的运行结果 int a=2,b=3,c=1 a+=Cb+c; c-=b+a++; System.out.println(“a=”+a+”,b=”+b+”,c=”+c); 5、有一个Vector对象,其中每一个元素都是一个String对象,请用for循环或while循环输出Vector中的元素,要求格式为:”第i个元素为:aaa” 6、有一个HashMap其中key为String对象,value为Integer对象,写一个方法打印出此Map中的所有键值 对形如 keyCvalue 7、有一个String str=”001,A001;002,A002;003,A003″的串,写一个方法,把此串存入列 一个HashMap或Hashtable中,说明:如001为key,A001则为value。 8、面向对象概念: ①面向对象基本特征 ②什么叫多态和重载,它们有什么区别? ③用你自己的话描述你理解的j2ee的本质特征是什么? 第一题: 写一个方法,实现删除链表中某个节点的操作(其他条件自己假设,补充) public void { if(front>=rear) { s[front] =0; frontC; System.out.println(“ successful”); } else { System.out.println(“the link is empty ,can’t ”); } } 第二题: 写一个方法,实现堆栈的入栈操作 (其他条件自己假设,补充) public class stack{ private int[] s; int top,bottom; public stack(int size){ s = new int[size]; top = size-1; bottom = size-1; System.out.println(“Size of the stack is:”+size); } public boolean isEmpty() { if(top==s.length-1) return true; else return false; } public void push(int n) { if(top<0) { System.out.println(“The stack is full now,you can’t push your data!”); return; } else { s[top] = n; topC; return ; } } public void pop() { if(top>=s.length-1) { System.out.println(“The stack is empty,Can’t pop now!”); return; } else { top++; } } public void print() { System.out.println(“State of the stack:”); for(int i=s.length-1;i>top;iC) { System.out.print(s[i]+” ”); } } public static void main(String[] a) { stack st = new stack(5); System.out.println(“List of the action to the stack:”); System.out.println(“push(3):”); st.push(3); st.print(); System.out.println(” ”); System.out.println(“push(6)”); st.push(6); st.print(); System.out.println(” ”); System.out.println(“push(10)”); st.push(10); st.print(); System.out.println(” ”); System.out.println(“pop()”); st.pop(); st.print(); System.out.println(” ”); } } 第三题: 使用任意排序算法,写一个排序示例程序 import java.io.*; class SelectionSort{ public static void main(String[] args){ int[] a={4,54,8,7,6,98,42,}; sort(a); for(int i=0;i System.out.print(a[i]+” “); } System.out.println(“”); } static void sort(int[] data){ int next, indexOfNext=0,n; for (next=0;next { indexOfNext=min(data,next,(data.length)-1); swap(data,indexOfNext,next); } } static int min(int[] data,int start,int end){ int indexOfMin=start; for (int i=start+1;i<=end;i++) if(data[i] indexOfMin=i; return indexOfMin; } static void swap(int[] data,int first,int second){ int temp; temp=data[first]; data[first]=data[second]; data[second]=temp; } } 第四题: 编写一个servlet,把servlet源码和此servlet在服务器上的配置文件web.xml作为附件发送到指定的邮箱 servlet的功能要求:记录访问该servlet的客户端的ip和访问时间,把记录写入client_ip.log文件。 client_ip.log里的格式大致如下: 9:36 -4-8 192.168.0.1 9:36 2005-4-8 127.0.0.1 获取客户的IP地址 第五题 数据库中有两个表tableA和tableB,他们都有一个int型的字段id,请写出一个sql语句,实现查询id在tableA中有,而tableB中没有的记录 例如tableA中有如下记录 ―――――――――- tableA.id tableA.name 3 Mary 4 Jack 5 Lily ―――――――――- tableB.id 3 5 查询的结果应该是 ―――――――――- tableA.id tableA.name 4 Jack select * from tableA where not exists (select * from tableB where tableA.id=tableB.id) 第六题 简述jsp和servlet的联系 Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。现在许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器,也可以通过附件的应用服务器和模块来支持Servlet,这得益于Java的跨平台特性。另外,由于Servlet内部以线程方式提供提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Servlet的效率非常高。 第七题 什么是sql注入漏洞,采用什么方法来堵住sql注入漏洞 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入 第八题:简述你对xml的认识,举例说明xml能干什么,应该怎么做 XML是Extensible Markup Language的缩写,意思是可扩展置标语言没有于置标电子文档,使起数据具有结构化的置标语言。在我目前浅显的认识里:, XML 是用来传递数据的 , XML 让这些数据有了结构 ― 一个树型结构 , xml 有全套的操作这种结构的方法 xml 规范(或者说的实际点,xml parser)帮你确定你创建的字符串是合法的 xml 规范(或者说的实际点,xml parser)中有办法验证这个合法性 对于XML能用来做什么,我觉得XML可以用来下面几个方面 1:有利于开发灵活的web应用软件 使用XML来描述数据,可以使数据具有同意的组织结构,其他应用软件,对象,中间层和服务器都可以对使用XML描述的数据做进一步的处理。并可以提交到浏览器中让读者阅读 2:可以轻松的实现数据在web上发布 因为XML本身是纯文本格式的,它可以不做任何修改就和HTML文档一样在网络中传输。 3:有利于信息的集成 因为使用XML,可以把不同来源的结构化数据很容易地组织到一起。应用软件可以在中间层的服务器上对来自于后段数据库和其他的数据进行集成。最后,数据以XML格式发送到客户端或者是在其他服务器做进一步处理。 4:可以使用丰富的样式来显示数据 XML采用结构化的方式来组织数据,描述的是数据本身,不涉及到数据的表现形式。通常来说,使用CSS和 XSL以及XSLT为数据的显示提供分布的机制,也就是说数据的显示方式可以根据客户的要求制定。 5:可大大增强服务器的可伸缩性 XML将数据本身和数据的显示完全分离,从而可以在结构化的数据中嵌套数据的显示方式描述。这样,能尽可能地减少客户端与服务器之间的数据交换,减少服务器的工作量才能大大提高服务器的性能。 6:采用统一的XML文档格式来描述多种应用的数据 7:支持本地数据处理 因为XML文档中的数据格式是统一的,当客户受到数据后,便可以使用客户自己的应用软件来解析数据,并对数据进行进一步的编辑和处理。 8:可以使搜索变得更加简单 姓名:开始时间:结束时间: (请将答案写在答题纸上) 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集合框架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来装饰一个集合。 事实上Vector结合了“可变数组”的集合和同步每个操作的实现。这是另外一个设计上的缺陷。Vector还有些遗留的方法在枚举和元素获取的方法,这些方法不同于List接口,如果这些方法在代码中程序员更趋向于想用它。尽管枚举速度更快,但是他们不能检查如果集合在迭代的时候修改了,这样将导致问题。尽管以上诸多原因,oracle也从没宣称过要废弃Vector. 【Java之reference-JAVA程序员JAVA工程师面试必看】推荐阅读: java程序员面试葵花宝典09-16 成都java开发工程师培训解读:java程序员如何确定职业方向?09-07 java程序员考核11-19 Java程序员招聘要求07-12 java程序员简历范文08-15 java程序员年度总结10-024.面试笑话Java 程序员 篇四
5.JAVA程序员面试题6 篇五
6.程序员面试个人简历(JAVA) 篇六
7.java程序员面试自我介绍范例 篇七
8.java程序员面试题及答案 篇八
9.Java之reference-JAVA程序员JAVA工程师面试必看 篇九
10.程序员面试宝典 java 篇十