JAVA面试题大全6.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA面试题大全6.pdf》由会员分享,可在线阅读,更多相关《JAVA面试题大全6.pdf(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、说明,为了减轻大家的负担和节省大家的时间,一些过时知识点和被笔试概率极低的题目不再被收录和分析。回答问题的思路:先正面叙述一些基本的核心知识,然后描述一些特殊的东西,最后再来一些锦上添花的东西。要注意有些不是锦上添花,而是画蛇添足的东西,不要随便写上。把答题像写书一样写。我要回答一个新技术的问题大概思路和步骤是:我们想干什么,干这个遇到了什么问题,现在用什么方式来解决。其实我们讲课也是这样一个思路。例如,将 ajax时,我们希望不改变原来的整个网页,而知识改变网页中的局部内容,例如,用户名校验,级联下拉列表,卜.来树状菜单。用传统方式,就是浏览器自己直接向服务器发请求,服务器返回新页面回盖掉老
2、页面,这样就不流畅了。对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得)答案的段落分别,层次分明,条理清楚都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。要将你做出答案的思路过程,或者说你记住答案的思想都写下来。把答题想着是辩论赛。答题就是给别人讲道理、摆事实。答题不局限于什么格式和形式,就是要将自己的学识展现出来!别因为人家题目木来就模棱两可,你就心里胆怯和没底气了,不敢回答了
3、。你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗?关于就业薪水,如果你是应届生,那不能要高工资,好比大饼的故事,要拿高工资,就去中关村!少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。基础好的冷桂华的故事。初级程序员薪水:2000-4500中级程序员薪水:4000-70(X)高级程序员薪水:7000以 I:公司招聘程序员更看重的要用到的编码技术、而不是那些业务不太相关的所谓项目经历:1.公司想招什么样的人2.公司面试会问什么”3.简历怎么写4 怎样达到简历上
4、的标准(培训中心教项目的目的)对于些公司接到了 一些项目,想招聘些初中级的程序员过来帮助写代码,完成这个项目,你更看重的是他的专业技术功底,还是以前做过几个项目的经历呢?我们先排除掉那些编码技术功底好,又正好做过相似项目的情况,实际上,这种鱼和熊掌兼得的情况并不常见。其实公司很清楚,只要招聘进来的人技术真的很明白,那他什么项目都可以做出来,公司招人不是让你去重复做你以前的项目,而是做一个新项目,业务方面,你只要进了项目团队,自然就能掌握。所以,大多数招聘单位在招聘那些编码级别的程序员时也没指望能招聘到做过类似项目的人,也不会刻意去找做过类似项目的人,用人单位也不是想把你招进,然后把你以前做过的
5、项目重做遍,所以,用人单位更看重招进来的人对要用到的编码技术的功底到底怎样,技术扎实不扎实,项目则只要跟着开发团队走,自然就没问题。除非是一些非常专业的行业,要招聘特别高级的开发人员和系统分析师,招聘单位才特别注重他的项目经验和行业经验,要去找到行业高手,公司才关心项目和与你聊项目的细节.,这样的人通常都不是通过常规招聘渠道去招聘进来的,而是通过各种手段挖过来的,这情况不再我今天要讨论的范围中。技术学得明白不明白,人家几个问题就把你的深浅问出来了,只要问一些具体的技术点,就很容易看出你是真懂还是假懂,很容看出你的技术深度和实力,所以,技术是来不得半点虚假的,必须扎扎实实。由于项目的种类繁多,涉
6、及到现实生活中的各行各业,什么五花八门的业务都有,例如,酒店房间预定管理,公司车辆调度管理,学校课程教室管理,超市进销存管理,知识内容管理,等等成千上万等等,但是,不管是什么项目,采用的无非都是我们学习的那些目前流行和常用的技术。技术好、经验丰富,则项目做出来的效率高些,程序更稳定和更容易维护些:技术差点,碰碰磕磕最后也能把项目做出来,无非是做的周期长点、返工的次数多点,程序代码写得差些,用的技术笨拙点。如果一个人不是完完全全做过某个项目,他是不太关心该项目的业务的,对其中的一些具体细节更是一窍不知,(如果我招你来做图书管理,你项目经历说你做过汽车调度,那我能问你汽车调度具体怎么回事吗?不会,
7、所以,你很容易蒙混过去的)而一个程序员的整个职业生涯中能实实在在和完完整整做出来的项目没几个,更别说在多个不同行业的项目了,有的程序员更是一辈子都只是在做某一个行业的项目,结果他就成了这个行业的专家(专门干一件事的家伙)。所以,技术面试官通常没正好亲身经历过你简历写的那些项目,他不可能去问你写的那些项目的具体细节,而是只能泛泛地问你这个项目是多少人做的,做了多长时间,开发的过程,你在做项目的过程中有什么心得和收获,用的什么技术等面上的问题,所以,简历上的项目经历可以含有很多水分,很容易作假,技术面试官也无法在项目上甄别你的真伪。简历该怎么写:精通那些技术,有一些什么项目经历教项目是为了巩固和灵
8、活整合运用技术,增强学习的趣味性,熟悉做项目的流程,或得一些专业课程中无法获得的特有项目经验,增强自己面试的信心。讲的项目应该真实可靠才有价值,否则,表面上是项目,实际上还是知识点的整合,对巩固技术点和增强学习的趣味性,但无法获得实际的项目经验。(项目主要是增加你经验的可信度,获得更多面试机会,真正能不能找到工作,找到好工作,主要看你键盘上的功夫了)建议大家尽量开自己的b lo g,坚持每天写技术blog。在简历上写上自己的blog地址,可以多转载一些技术文章。Java就业培训教程就是小沈阳1.Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线
9、程的语法,集合的语法,沁 的语法,虚拟机方面的语法,其他97、一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。1 0、&和&的区别。&和&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只 要 有方为 false,则结果为false。&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对 于 if(str!=null&!str.equals。)表达式,当 s tr为 null时,后面
10、的表达式不会执行,所以不会出现NullPointerExccption如果将&改为&,贝 ij会抛出 NullPointerException 异常。If(x=33&+y0)y 会增长,If(x=33&+y0)不会增长&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用OxOf来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0 x31&OxOf的结果为0 x01。备注:这道题先说两者的共同点,再说出&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。29、Java 有没有 goto?java中的保留字,现在没
11、有在java中使用。108、在JAVA中,如何跳出当前的多重嵌套循环?在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如,ok:for(int i=0;i10;i+)(for(int j=O;j 10;j+)(System.out.prinlln(i=+i+,j=+j);if(j=5)break ok;)另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。boolean found=false;for(int i=0;
12、i10&!found;i+)(for(int j=O;jl 0;j+)(System.out.println(5=+i+”,j=+j);if(j=5)(found=true;break;42、switch是否能作用在byte上,是否能作用在long上,是否能作用在String?在switch(exprl)中,e xp rl只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,bytgshortchar都可以隐含转换为in t,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合sitch的语法规定,并且不
13、能被隐式转换成int类型,所以,它们不能作用于swtich语句中。25、short si=1;si=si+1;有什么错?short si=1;si+=1;有什么错?对于S 110!1S1=1;51=$1+1;由于S1+1运算时会自动提升表达式的类型,所以结果是in t型,再赋值给short类型s i时,编译器将报告需要强制转换类型的错误。对于$110!1$1=1;51+=1;由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。55、char型变量中能不能存贮一个中文汉字?为什么?char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包
14、含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。44、编程题:用最有效率的方法算出2 乘以8 等於几?2 3,因为将一个数左移n位,就相当于乘以了 2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8
15、等於几的最效率的方法是2 boolean 和 short()java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类111String s=Hello;s=s+world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s 原先指向一个String对象,内 容 是 Hello,然后我们对s 进行了+操作,那 么 s 所指向的那个对象是否发生了改变呢?答案是没有。这时,s 不指向
16、原来那个对象了,而指向了另一个String对象,内容为Hello world!,原来那个对象还存在于内存之中,只是s 这个引用变量不再指向它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因 为 String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要 个 String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。同时,我们还可以知道,如果要使用内容相同的字符串,不
17、必每次都new一个String。例如我们要在构造器中对一个名叫s 的 String引用变量进行初始化,把它设置为初始值,应当这样做:public class Demo private String s;public Demo s=Initial Value;而非s=new String(nInitial Value);后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为 String对象不可改变,所以对于内容相同的字符串,只 要-个 String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s 都指向同一个对象。上面的结论还基于
18、这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多 Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即 Strin
19、gBuffer。41、是否可以继承String类?String类是final类故不可以继承。27、String s=new String(xyz”);创建了几个 String Object?二者之间有什么区别?两个,一个放在常量区,不管写多少遍,都是同一个。New String每写一遍,就创建一个新。5、String 和 StringBuffer 的区别JAVA平台提供了两个类:String和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的
20、时候你就可以使用StringBuffer,典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了 equals方法,newString(ttabc,).equals(new String(“abc”)的结果为 true,而 StringBuffer 没有实现 equals 方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为 falseo接着要举一个具体的例子来说明,我们要把1 至 I 100的所有数字拼起来,组成一个串。StringBuffer sbf=new StringBuffe
21、rQ;for(int i=0;i100;i+)(sbf.append(i);)上面的代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了 101个对象。String str=new StringO;for(int i=0;i100;i+)(str=str+i;)3、如何把一段逗号分割的字符串转换成一个数组?如果不查jdk叩i,我很难写出来!我可以说说我的思路:1.用正则表达式,代码大概为:String result=orgStr.split(7,);2.用 StingTokenizer,代码为:StringTokcnizer tokencr=String
22、Tokenizer(orgStr,);String result=new Stringtokener.countTokens();Int i=0;while(tokener.hasNext()resulti+=toker.nextToken();)38、数组有没有length。这个方法?String有没有length。这个方法?数组没有length。这个方法,有 length的属性。String有有length。这个方法。43、try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后?会执行,在 return前执
23、行。我的答案是在return中间执行,参看下一题的讲解。public class Test*param args add by zxx zDec 9,2008*/public static void main(String args)/TODO Auto-generated method stubSystem.out.printin(new Test().test();)static int test()(int x=1;try(return x;)finally(+X;)-执行结果-17、下面的程序代码输出的结果是多少?public class smallT(public static vo
24、id main(String argsJ)(smallT t=new smallT();int b=t.get();System.out.println(b);)public int get()(try|return 1 ;finallyreturn 2;)返回的结果是2。我可以通过下面一个例子程序来帮助我解释这个答案,从下面例子的运行结果中可以发现,try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时
25、函数并不是马上返回,它要执行finally语句后才真正开始返回。在讲解答案时可以用下面的程序来帮助分析:public class Test/*param args add by zxx zDec 9,2008*/public static void main(String args)/TODO Auto-generated method stubSystem.out.printin(new Test().test();)int test()(try(return fund();)finally(return func2();)int fund()(System.out.printIn(nfun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 试题 大全
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内