Java常见面试题.doc_第1页
Java常见面试题.doc_第2页
Java常见面试题.doc_第3页
Java常见面试题.doc_第4页
Java常见面试题.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java常见面试题1、分析下列Java代码: class A public static void main(String args) method(); static void method() try System.out.println(“Hello”); System.exit(0); finally System.out.println(“good-bye”); 编译运行后,输出的结果是:()a) “Hello”b) “good-bye”c) “Hello”后面是”good-bye”d) 代码不能通过编译解析:当且仅当JVM推出时不会执行finally里的语句。若把System.exit(0)改为:return ;这时将会执行finally里的语句后再结束main()。; 2、 int index = 1; String test = new String3; String foo = testindex; foo结果是什么?A、 foo有一个值“”B、 foo有一个值nullC、 抛出一个异常D、 代码不会编译解析:在创建数组时,只是对其分配了空间,并没对它进行初始化。因此里面元素的值都是null值。 3、以下代码执行结果是public class A String s=”123”; Public void method(String s) System.out.println(s); System.out.println(this.s);public static void main(String args) A a = new A();a.method(“abc”);A、 abc 123B、 123 abcC、 abc abcD、 123 123解析:在程序执行时,将首先检查是否有局部变量,若有将直接调用它的值,否则将会检测全局变量。若还没,这样的程序将不会通过编译。 4、public class ConstOver public ConstOver(int x,int y,int z)说出哪个重载了ConstOver构造器?A、ConstOver()B、protected int ConstOver()C、private ConstOver(int z,int y,byte z)D、public void ConstOver(byte x,byte y,byte z)E、public Object ConstOver(int x,int y,int z)解析:这个题要求我们掌握构造方法的形式,及重载的实质。构造方法:方法名与类名相同,无返回类型。重载:在一个类中,方法名相同,参数列表不同。5、1、public class X2、 pulbic Object m()3、 Object o = “Str”;4、 Object b = new Object;5、 Object oa = new Object1;6、 oa0 = o;7、 oa = b;8、 o = b;9、 System.out.println(oa0);10、 11、 在哪一行执行后发生了垃圾回收?A、 4行B、 5行C、6行C、 7行D、8行E、 9行解析:垃圾机制回收的时机:在对象没被任何变量指向时,系统将会回收这块内存区域(堆区)。6、class Tag implements Runnable inti; publicvoid run() try Thread.sleep(5000); i=10; catch (InterruptedException e) e.printStackTrace(); publicstaticvoid main(String args) try Tag a = new Tag(); Thread t = new Thread(a); t.start(); (17) int j=a.i; catch(Exception e) e.printStackTrace(); 在17行加上什么,保证j=10?CA、a.wait();B、t.wait();C、t.join();D、t.yield();E、t.notify();F、a.notify();G、errupt();解析:join()用于让子线程执行完毕后在执行主线程。7、当试图编译并运行下面程序时会出现什么结果?D public class MyMainpublic static void main(String argv) System.out.println(Hello cruel world);A) 编译器报main属于保留字而不能在一个class中使用B) 代码将编译、运行并输出“Hello cruel world”C) 代码编译通过,但运行时报没有定义构造方法D) 代码编译通过,但运行时报main方法没有正确定义解析:注意main()方法的参数列表,是一个字符数组。本例中编译会通过,因为系统将会认为这是个普通方法,而在程序执行时将会找不到程序入口而报错。8、当编译并运行下面程序时会出现什么结果?public class MyAr public static void main(String argv) int i = new int5; System.out.println(i5); A) 编译出错B) 运行出错C) 输出0D) 输出“null”解析:数组越界问题是数组中经常遇到的问题,java将在执行时发现这个问题而引发异常。9、Java Swing中,JFrame的默认布局管理器是()。A) FlowLayoutB)BorderLayoutC)GridLayoutD)GridBagLayout 10、Java Swing中,JPanel的默认布局管理器是(A)。A) FlowLayoutB)BorderLayoutC)GridLayoutD)GridBagLayout 11、public class Hope public static void main(String argv) Hope h = new Hope(); protected Hope() for(int i =0; i 10; i +) System.out.println(i); A) 编译错误,构造方法不能被声明为protectedB) 运行错误,构造方法不能被声明为protectedC) 编译并运行输出0到10D) 编译并运行输出0到9解析:对于构造方法,四种修饰符都可以修饰,只不过它们的使用位置有要求而已。如Class这个类,它的构造方法就是private的,所以我们不能直接产生它的实例。只能通过Class.forName()去得到它的实例。13、public class Test public static void stringReplace(String text) text=text.replace(j,L); public static void bufferReplace(StringBuffer text) text=text.append(c); public static void main(String args) String textString=new String(java); StringBuffer textBuffer=new StringBuffer(java); stringReplace(textString); bufferReplace(textBuffer); System.out.println(textString+textBuffer); A、编译并运行输出Lava javacB、编译并运行输出java javaC、编译并运行输出java javacD、编译并运行输出 Lava java解析:字符串的长度不可变性,是在面试中经常遇到的一个问题。因此我们一定要牢记这一点。对于字符串的任何改变都是重新创建一段内存空间来保存它。像此题中把字符串当成参数传递,但字符串改变时,并不影响原引用的字符串。 14、当编译和运行下面程序时,哪项描述可以最准确的表达发生了什么事情?public class MyAr public static void main(String argv) MyAr m = new MyAr(); m.amethod(); public void amethod() int i; System.out.println(i);A、编译并输出0B、编译错误C、编译并输出nullD、运行错误解析:局部变量必须赋初值,是初级程序员经常犯的错误。为了避免此类情形,我们要养成良好的编程习惯:在定义一个变量时就给它赋上一个值。 15、下面哪些编译正确? A、 short myshort = 99;myshort= myshort+2;B、 String name = Excellent tutorial Mr Green;C、 char c = 17;D、 int z = 015;解析:理解字符在内存中的存放形式及两个short型相加时,得到的结果是int型的。Byte,short,char都是无条件直接转换成int型。16、关于线程,以下说法正确的是:A、 sleep方法执行时会释放对象锁。B、 wait方法执行时会释放对象锁。C、sleep方法必须写在同步方法或同步块中D、wait方法必须写在同步方法或同步块中解析:在学习中要学会将相似的知识点做比较。Wait()是在Object里定义的方法,必须放在同步方法或同步块中,wait()在执行时竟会释放对象锁,它需要其他方法来唤醒才能执行。而sleep()是在Thread类里定义的,它可以放在程序的任何方法中,它不会释放对象锁,它是在休眠指定时间后自动醒来。 17、给定JAVA代码如下,编译运行后,输出结果是()。public class test static int i; public int aMethod() i+; return i; public static void main(String args) Test test=new Test(); test.aMethod(); System.out.println(test.aMethod(); A、 0B、 1C、 2E、 3E、 编译错误F、 运行错误解析:静态变量在下次调用时将会保存上次调用的值,因为它的这个特点,我们常常把它用做记数器使用。 18、给定JAVA代码如下,关于super的用法,以下描述正确的是( ).(选择一项)class C extends B public C() super(); A、用来调用类B中定义的super()方法B、用来调用类C中定义的super()方法C、用来调用类B中的无参构造方法D、用来调用类B中第一个出现的构造方法解析:构造方法是一个类特有的方法,它用于创建此类的对象。子类不能继承父类的构造方法。但子类在创建对象为了不单独初始化继承自父类的属性,可以通过关键字super去调用父类的构造方法去初始化。若父类没有无参的构造方法,子类在调用时也必须传入参数,否则将报错。 19、下面哪些为真?A、接口里可定义变量,并且变量的值不能修改B、任何情况下,类都不能被private修饰C、类可以被protected修饰(内部类)D、接口不能实例化解析:此题容易选上B。只是受习惯的影响,以为我们没见过的就是不存在的。对于内部类就可以用private去修饰。 20下列哪一种叙述是正确的( )A abstract修饰符可修饰属性、方法和类B 抽象方法的body部分必须用一对大括号 C 声明抽象方法,大括号可有可无D声明抽象方法不可写出大括号解析:抽象方法的定义:只有方法的声明,没有方法的实现,即没有方法体。 21、给定JAVA程序Test.java如下,编译运行,结果是( ).(选择一项)package com;public class Test protected void talk() System.out.print(talk); 给定Test的子类Test2,代码如下:package com.util;import com.*;public class Test2 extends Test public static void main(String args) Test tt=new Test();/不能访问 tt.talk(); A、输出字符串:talkB、输出字符串:talk talkC、编译错误:在com.util.Test2中无法访问方法talk()D、编译错误解析:此题很容易选A。这是没有很好地理解protected的作用造成的。虽然Test2继承了Test,但只能在main()外部去调用父类的构造方法,在main()中直接调用将产生编译错误,Talk()将不可视。22、在JAVA中,要创建一个新目录,要使用()类的实例。A、FileB、FileOutputStreamC、PrintWriterD、Dir23、给定java代码如下,编译运行结果是()。public class Test static int x; public int count() return x+; public static void main(Stringargs) System.out.println(count();/不能执行非静态方法。 A、 编译错误B、 运行错误C、正常运行,输出1D、正常运行,输出0解析:易粗心选上D。普通方法只能通过对象.方法的方式调用。24、给定一个java程序的代码片断如下,运行后,正确的输出结果是()。String s=hello,world;s.replace(, );System.out.println(s);A、 hello worldB、 hello,worldC、HELLO WORLDD、HELLO,WORLD解析:同题13. 25、要打印出list储存的内容,以下语句正确的是()(选择二项)ArrayList list=new ArrayList();list.add(a);list.add(b);Iterator it=list.iterator();、 A、while(it.hasNext() System.out.println(it.next();B、for(int i=0;ilist.size();i+) System.out.println(list.get(i);C、while(list.hasNext() System.out.println(list.next();D、for(int i=0;i10) throw Exception(“smethings wrong!”); b) if(i10) throw Exception e(“smethings wrong!”); c) if(i10) throw new Exception(“smethings wrong!”); d) if(i10) throw new Exception e(“smethings wrong!”); 35、下面继承哪些叙述是正确的() a) 在java中只允许单一继承,/接口可以多继承。 b) 在java中一个类只能实现一个接口 c) 在java中一个类不能同时继承一个类和实现一个接口 d) java的单一继承使代码更可靠解析:在java中为了避免菱形继承的危险,抛弃了C+中的多重继承,而采用去实现多个接口去弥补这个缺陷。须注意的是接口可以多继承。36、public class MyExample public static void main(String args) System.out.println(args2); 如果以下列命令行运行:java MyExample Lovo online 代码将输出()。a) MyExampleb) Lovoc) Onlined) 产生异常:“java.lang.ArrayIndexOutOfBoundsException” 37、在Java语言中,如果你编写一个多线程序,可以使用的方法是()。 a) 扩展类Thread b) 实现Runnable接口 c) 扩展类Runnable d) 实现接口Thread 38、在Java中,下列(AB)是合法的声明 a) float f=1/3; b) int i=1/3; c) float f=1.01 d) double d=999d; 解析:两个整形相除,结果仍为int型的。在给float型变量赋值时,应在数值后面在上个f或F。39、编译下面java程序片断: class test int count=9; public void a() int count=10; System.out.println(“count1=”+count); public void count() System.out.println“count2=”+count); public static void main(String args) test t=new test(); t.a(); t.count(); 结果是()a) 不能通过编译b) 输出:count1=10count2=9c) 输出:count1=9count2=9解析:在一个方法内,局部变量与全局变量同名时,根据就近原则,将执行局部变量。局部变量一旦出了作用域将不再起作用,就会执行全局变量。40、HashMap和Hashtable正确的说法是() a) 都属于Map接口 b) Hashtable类不是同步的,HashMap类是同步的,反了 c) Hashtable类不允许null键和null值d) HashMap类允许null键和null值解析:此题告诉我们在java学习要注意对相似知识点进行比较。 41、java中有关“重载”和“重写”的说法正确的说法是() a) “重写”是父类与子类之间多态性的一种表现 b) “重载”是一个类中多态性的一种表现c) “重载”的方法是可以改变返回值的类型d) “重载”的方法不能改变返回类型解析:重载与重写的区别一定要牢牢掌握。42、下面关于构造方法说法正确的是() a) 构造方法不能被继承 b) 构造方法不能被重写 c) 构造方法不能被重载 d) 构造方法可以重载 43、在java多线程中sleep()和wait()方法,下列说法正确的是()a) sleep()方法是使线程停止一段时间的方法b) 在sleep()时间间隔期满后,线程立即恢复运行/就绪c) wait()方法用于线程交互d) 使用wait()方法后,线程需要被通知唤醒 44、在java中,关于捕获错误的语法try-catch-finally的下列描述正确的是() a) try-catch必须配对使用 b) try可以单独使用 c) try-finally可以配对使用 d) 在try-catch后如果定义了finally,则finally肯定会执行 45、在java中一个类被声明为final类型,表示的意思是() a) 该类可以被其子类继承 b) 该类一定是一个子类 c) 该类不能被继承 d) 该类是一个顶级类 46、Collection和Collections正确的说法是() a) Collections是个java.util包下的接口 b) Collection是个java.util包下的类 c) Collections包含有各种有关集合操作的静态方法 d) Collection是各种集合结构的父接口 47、在J2EE中,要等待客户机请求连接,服务器可以使用以下()类。A、 SocketB、 ServerSocketC、 ServerD、URL 48、下面关于TCP/IP通信正确的描述是()A、TCP/IP通信必须要有服务器端和客户端。B、 服务器端通过调用Socket类的构造方法得到一个Socket对象。C、服务器端调用ServerSocket.accept()方法监听指定的端口。D、ServerSocket.accept()方法会使线程阻塞。 49、以下说法正确的是:A、 使用TDD开发时,先要有文档,然后根据需求编写代码,最后测试。B、 JUnit中测试方法必须写在tearDown中C、 JUnit中测试方法必须以test开头D、SetUp方法用于销毁,tearDown用于初始化E、 SetUp方法用于初始化,tearDown用于销毁 50、public class Test public static String output=; public static void foo(int i) try if(i=1) throw new Exception(); output +=1; catch(Exception e) output+=2; return; finally output+=3; output+=4; public static void main(String args) foo(0); foo(1); System.out.println(output); 以上代码输出结果为A、 1342B、 123C、134234D、13423 52、下列说法正确的是:A) 数组有length()方法B) String有length()方法C) 数组有length属性D) String有length属性 53、下面哪个编译没有错误?interface IFaceclass CFace implements IFaceclass Basepublic class ObRef extends Base public static void main(String argv) ObRef ob = new ObRef(); Base b = new Base(); Object o1 = new Object(); IFace o2 = new CFace(); A、o1=o2;B、b=ob;C、ob=b;D、o1=b; 54、请选出程序执行的结果()public class Test public static void test(Object obj) System.out.println(“One”); public static void test(Object objs) System.out.println(“Two”); public static void main(String args) test(null);A) 编译出错B) 运行时出错C) 打印出:OneD) 打印出:Two更多1 上一篇Bad version number in .class file 问题解决 下一篇Java关键字abstract主题推荐面试题java局部变量全局变量服务器猜你在找Java中各种修饰符与访问修饰符的说明(稍谈内部类)Swing+数据库连接面试中常遇见的50道java基础题Swing GUI开发(一)stanford编程方法习题答案(the art and science of java)chapter04linux安装gcc和gcc-c+Java之美从菜鸟到高手演变之字符串给Java中TextField控件的回车事件CGLIB-Spring的一种反射机制CentOS 5.4 下gcc和gcc-c+的光盘 rpm 安装方式查看评论 暂无评论窗体顶端发表评论 用 户 名: mxm6868 评论内容: 窗体底端* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场核心技术类目全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BIHTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML componentsWindows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 RackspaceWeb App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP Spark HBase PureSolr Angular Cloud Foundry Redis Scala Django Bootstrap个人资料 oh_Mourinho 访问:65280次 积分:1157分 排名:第12544名 原创:39篇 转载:61篇 译文:1篇 评论:11条文章搜索窗体顶端窗体底端文章分类 Java 基础知识(17) Struct(3) Hibernater(26) Spring(3) Oracle(10) Mysql(1) Html(0) Ajax(3) 其他(5) weblogic(3) XML(2) JDBC/JNDI(3) JSP(3) JDBC(2) DIV+CSS(6) tomcat(1) 动态代理(1) 内部类(2) 接口(0) Java静态动态成员(1) struts2(3) IO(1) JQuery(1) JaveScript(0) ExtJs(2) 开发工具(1) 设计模式(2)文章存档 2013年12月(1) 2013年10月(1) 2013年03月(2) 2013年01月(4) 2012年12月(4)展开阅读排行 Spring加载多个配置文件(6256) JAVA实现JNDI连接数据库(3369) Spring基于HibernateTransactionManager的事物管理(3223) Java执行SQL脚本文件(3013) Java imageIO处理图像(2843) myEclipse默认快捷键使用(2687) DIV+CSS 文字向上滚动(2585) DIV显示隐藏层(2139) jndi中在web.xml中配置的说明(1725) 文件上传组件(Flash,JQuery,asp,php,js,AJAX)(1604)评论排行 Java执行SQL脚本文件(4) hibernate常见异常(1) Bad version number in .class file 问题解决(1) DIV显示隐藏层(1) Hibernate的三种延迟加载(1) Hibernate中的session.load(class,id)参数问题(1) 由hbm.xml和pojo类生成数据库表失败(求大侠赐招)(1) DIV+CSS 文字向上滚动(1) Ajax与JSON的一些总结(0) JS中instanceof跟typeof的区别(0)推荐文章最新评论Bad version number in .class file 问题解决NANJI_WUBING: 我的也是这样子。Java执行SQL脚本文件wm1998: 真垃圾。Java执行SQL脚本文件lyjie: 这是最笨的方法,自己做解析;不过竟然没给出最主要的解析的方法,这是要干嘛,浪费哥阅读的时间DIV显示隐藏层bwrobert: 什么狗屁东西Java执行SQL脚本文件廖世勇: List sqlList = loadSql(sqlFile); 最重要的东西没有,这篇文章就成了.DIV+CSS 文字向上滚动zhux_island: 这个要怎么用啊?Hibernate的三种延迟加载oh_Mourinho: 沙发自己的。Java执行SQL脚本文件oZhangMing: 怎么帮人不帮到底啊,DBCenter 还有SqlFileExecutor().loadSql()怎么.由hbm.xml和pojo类生成数据库表失败(求大侠赐招)oh_Mourinho: 等、Hibernate中的session.load(class,id)参数问题oh_Mourinho: 沙发自己坐公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈网站客服 杂志客服 微博客服 400-600-2320京 ICP 证 070598 号北京创新乐知信息技术有限公司 版权所有江苏乐知网络技术有限公司 提供商务支持Copyright 1999-2014, CSDN.NET, All Rights Reserved 夜色妖娆 目录视图 摘要视图 订阅有奖征资源,博文分享有内涵 4月推荐博文汇总 CSDN博客支持Windows Live Writer离线写博客啦 Java常见面试题分类: Java 基础知识2012-11-22 14:44 482人阅读 评论(0) 收藏 举报1、分析下列Java代码: class A public static void main(String args) method(); static void method() try System.out.println(“Hello”); System.exit(0); finally System.out.println(“good-bye”); 编译运行后,输出的结果是:()a) “Hello”b) “good-bye”c) “Hello”后面是”good-bye”d)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论