ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:31.46KB ,
资源ID:4191693      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4191693.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA面试题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA面试题.docx

1、JAVA面试题诚信、创新、开放、合作 1 在main(String args)方法内是否可以调用一个非静态方法?答案:不能2 同一个文件里是否可以有两个public类?答案:不能3 方法名是否可以与构造器的名字相同? 答案:可以。public class Test public Test(String iceboy) System.out.println(iceboy); public void Test(String iceboy) System.out.println(iceboy); public static void main(String args) Test a = new Te

2、st(abc);/输出“abc” a.Test(iceboy);/输出“iceboy” 4. 初始化了一个没有run()方法的线程类,是否会出错? 答案:不会。 第一种方法:直接继承Thread类。public class Test public static void main(String args) ThreadClass t = new ThreadClass(); t.start(); System.out.println(end);/输出“end” class ThreadClass extends Thread /Thread类已经实现了空的run()方法。 第二种方法:实现Ru

3、nnable接口public class Test public static void main(String args) ThreadClass t = new ThreadClass(); Thread thread = new Thread(t); thread.start(); System.out.println(end); class ThreadClass implements Runnable public void run() /必须有此方法否则编译报错。它是Runnable接口中的抽象方法。 System.out.println(Threads); 4 局部内部类是否可以

4、访问非final变量?答案:不能访问局部的,可以访问成员变量(全局的)。class Out private String name = out.name; void print() final String work = out.local.work;/若不是final的则不能被Animal 使用. int age=10; class Animal /定义一个局部内部类.只能在print()方法中使用./局部类中不能使用外部的非final的局部变量.全局的可以. public void eat() System.out.println(work);/ok /age=20;error not f

5、inal System.out.println(name);/ok. Animal local = new Animal(); local.eat(); 5 选择语句case中,允许使用的值有哪些? 答案:int,short,char,byte(都在int范围之内,且是整数)6 Math,String是不可继承的。(final类)Instanceof 后面跟的应该是OBJECT。构造器可以是私有的。(private)=与=意义是完全不同的。一个是赋值,一个是等于。全局变量可以不进行初始化,如果使用一个局部变量,则这个局部变量要被初始化。7 在try-catch-final块中的退出语句。pub

6、lic class Test public static void main(String args) int a=1; try a=a/0; catch(Exception e) System.out.println(catch); return;/当return时,finally中的语句会执行。 /System.exit(0);/若用上这句,finally中的语句不会执行。直接返回,退出程序。 finally /当没有System.exit(0);时,无论是否发生异常它都会执行。 System.out.println(finally); 注:try-catch-final块的顺序不能调换。

7、8 下面都是正确的main方法签名。public static void main(String args)public static final void main(String args)static public void main(String args)static public synchronized void main(String args)static public abstract void main(String args)/错误9 if(-0.0 = 0.0)是相等还是不等?答案:相等。10一个抽象类是否可以没有抽象方法? 答案:可以。11RandomAccessFi

8、le 类继承Object,并且实现了DataInput和DataOutput接口。 答案:正确12Collection与Collections的区别?答案:Collection是一个接口,但 Collections却是一个辅助类,里面有很多静态的工具方法。而且很有用的。如:reverse(Listlist);sort(Listlist, Comparatorc)等。Collections没有实现任何接口。它直接继承了Object。13class Child extends Parentsclass Parents是否可以这样声明类,在一个文件中?答案:可以。无所谓的。14. 数组,无论是当前的

9、,还是类等级的,都会被初始化。 String 是被初始化为 null,不是空字符。 null,“,” “,都是不同的。 “continue”只能在一个循环里(如for,do,while),它不能在case语句中出现。 Primitive(int,char,long等)数组是不能互相赋值的,即使它们本身可以。 一个Constructor可以抛出任何异常。 初始化块是按照声明的顺序执行的。 所有关于 NaN(Not a Number) 和 non-NaN 的比较,都返回false.这条很重要。 =会产生编译错误,如果两边类型不匹配的话。 equals() 返回 false 如果对象类型不同,但不产

10、生 编译错误。15Java成员变量默认初始化的值。 成员变量类型取值 byte-0 short-0 int-0 long-0L char-u0000 float-0.0F double-0.0D boolean-false所有引用类型null16. integer和long 操作 /和% 的话, 可能会抛出ArithmeticException,比如除0。但是 float与double不会,即使是除以0。 double a=0;a=a/0;则a等于NaN。17普通内部类不可以拥有静态变量,但静态内部类可以。 File类没有 任何 处理文件内容的方法。InputStream 和 OutputSt

11、ream 是 抽象类, DataInput 和 DataOutput是 接口。DataInputStream实现了DataInput接口。18面向对象的特征有哪些方面 ? 答案:最基本特征:封装,继承,多态。 其他特征:抽象关联,聚合,组合,内聚,耦合19String是最基本的数据类型吗? String 和StringBuffer的区别? 答案:String不是一最基本的数据类型。 STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuff

12、er的toString()方法 20int 和 Integer 有什么区别 答案:int是基本类型。Integer是引用类型。Integer可以把String转换成int。21.运行时异常与一般异常有何异同? 答案:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。22说出一些常用的类,包,接口,请各举5个?答案:常用类-System,ArrayList,FileInputStream,Thread,Socket. 常用的包-ja

13、va.io,java.util,java.sql,java.javax.naming, 常用接口-Collection,Connection, Cloneable, Comparable, Serializable23.说出ArrayList,Vector, LinkedList的存储性能和特性.答案:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayL

14、ist差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 24设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 注:因为这4个线程共享J,所以线程类要写到内部类中。加线程:每次对j加一。减线程:每次对j减一。public class TestThreads private int j=1; /加线程 private class Inc implements Runnable public void run() for(int i = 0;i 10;i+) inc();

15、 /减线程 private class Dec implements Runnable public void run() for(int i = 0;i 10;i+) dec(); /加1 private synchronized void inc() j+; System.out.println(Thread.currentThread().getName()+-inc:+j); /减1 private synchronized void dec() j-; System.out.println(Thread.currentThread().getName()+-dec:+j); /测试程

16、序 public static void main(String args) TestThreads test = new TestThreads(); /创建两个线程类 Thread thread = null; Inc inc = test.new Inc(); Dec dec = test.new Dec(); /启动4个线程 for(int i = 0;i 2;i+) thread = new Thread(inc); thread.start(); thread = new Thread(dec); thread.start(); 25数组转换问题。 Object object =

17、new Person2; Person person = new Person 3; person = (Person )object;/可以转换 int i = new int2; long l = new int3; i = (long)l;/不可以转换26用socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。 Server.java:源代码 import .*;import java.io.*;class Server public Server() BufferedReader br = null; PrintWriter pw = null; try S

18、erverSocket server = new ServerSocket(8888);/建立服务器端 Socket socket = server.accept();/监听客户端 /得到该连接的输入流 br = new BufferedReader(new InputStreamReader(socket.getInputStream(); /得到该连接的输出流 pw = new PrintWriter(socket.getOutputStream(),true); /先读后写 String data = br.readLine(); System.out.println(data);/输出

19、到控制台 pw.println(data);/转发给客户端 catch(Exception e) e.printStackTrace(); finally try /关闭读写流 br.close(); pw.close(); catch(Exception e) public static void main(String args) Server server = new Server(); Client.java:源代码import .*;import java.io.*;class Client public Client() BufferedReader br = null; Prin

20、tWriter pw = null; try Socket socket = new Socket(localhost,8888);/与服务器建立连接,服务器要先启 /得到Socket的输入与输出流 br = new BufferedReader(new InputStreamReader(socket.getInputStream(); pw = new PrintWriter(socket.getOutputStream(),true); /先写后读 pw.println(Client:你好!); String data = null; while(true) data = br.read

21、Line(); if(data!=null) break; System.out.println(data); catch(Exception e) e.printStackTrace(); finally try br.close(); pw.close(); catch(Exception e) public static void main(String args) Client c = new Client(); 27谈谈final, finally, finalize的区别。答案:final 用于声明属性,方法和类,分别表示属性不可变,注意:如果是基本类型说明变量本身不能改变,如果是

22、引用类型,说明它不能指向其他的对象了。但对象还是可以改变的。方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示无论是否出现异常总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。28Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 答案:可以继承其他类或完成其他接口,在swing编程中常用此方式。29.Static Nested Class 和 Inn

23、er Class的不同,说得越多越好(面试题有的很笼统)。 答案:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例 被实例化。而通常的内部类需要在外部类实例化后才能实例化。30.&和&的区别。 答案:&是位运算符,表示按位与运算,&是逻辑运算符,表示逻辑与(and).另外,也可以用于逻辑运算,与的区别在于是非短路运算符,是短路运算符31.HashMap和Hashtable的区别。 答案:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口, 主要区别在于HashMap允许空(null)键值(key)与空

24、值(value),由于非线程安全,效率上可能高于Hashtable,Hashtable不允许有空(null)键值(key)与空值(value)。32什么时候用assert? 答案:1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。使用方法 assert ,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。33GC是什么? 为什么要有GC? 答案:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测

25、对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显式操作方法。 34String s = new String(xyz);创建了几个String Object? 答案:两个,一个是对象,一个是对象的引用。35Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 答案:Math.round(11.5)=12Math.round(-11.5)=-11,总是返回接近0的数。36short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答案:short s1 = 1; s

26、1 = s1 + 1; 有错(s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(没有错,s1=2)37.sleep() 和 wait() 有什么区别? 答案:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间(休息),把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,时间到了会继续运行。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行

27、状态。38Java有没有goto语句? 答案:没有39数组有没有length()这个方法? String有没有length()这个方法?答案:数组没有length()这个方法,有length的属性。String有length()这个方法。40数组是不是基本类型? 答案:不是。41Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?答案:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重载Overload是一个类中多态性的一种表现,方法名必需相同,参数列表必需不同.(长度不同或类型不同),与返回值类型没有关系. 构造

28、器也可以重载.方法名和参数列表都相同,只有返回类型不相同则是方法重复定义.编译出错. Overloaded的方法是可以改变返回值的类型。重写Override是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。42Set里的元素能重复吗?那么用什么方法区分是否重复? 答案:Set里的元素是不能重复的,如果重复就重复的就不加到里面。用iterator()方法来区分 重复与否。应该覆盖equals()判断两个Set是否相等。43.”=”与equal有何区别?答案:“=”比较的是内存地址,equal比较的是内容本身。44给我一个你最常见到的runtime exception。 答案:IndexOutOfBoundsException 数组越界 NullPointerException 空指针异常 SystemExcep

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1