JAVA 面试题 综合1.docx
- 文档编号:18353177
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:22
- 大小:25KB
JAVA 面试题 综合1.docx
《JAVA 面试题 综合1.docx》由会员分享,可在线阅读,更多相关《JAVA 面试题 综合1.docx(22页珍藏版)》请在冰点文库上搜索。
JAVA面试题综合1
JAVA面试题综合1
目录
Java面试题整理9
Java面向对象9
1.super()与this()的区别?
9
2.作用域public,protected,private,以及不写时的区别?
9
3.编程输出如下图形。
9
4.JAVA的事件委托机制和垃圾回收机制10
5.在JAVA中,如何跳出当前的多重嵌套循环?
10
6.什么是java序列化,如何实现java序列化?
(写一个实例)10
7.一个".java"源文件中是否可以包括多个类(不是内部类)?
有什么限制?
10
8.排序都有哪几种方法?
请列举。
用JAVA实现一个快速排序?
10
9.Overload和Override的区别。
Overloaded的方法是否可以改变返回值的类型?
11
10.Final类有什么特点?
11
11.继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
11
12.内部类的实现方式?
12
13.用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?
13
14.如在COLLECTION框架中,实现比较要实现什么样的接口?
14
15.用插入法进行排序代码如下13
16.编程:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
14
15、Java编程,打印昨天的当前时刻15
16、文件读写,实现一个计数器16
17、指出下面程序的运行结果。
16
18、抽象类和接口的区别?
17
19、什么是类的返射机制?
17
20、类的返射机制中的包及核心类?
17
21、得到Class的三个过程是什么?
17
22、如何唤起类中的一个方法?
18
23、如何将数值型字符转换为数字(Integer,Double)?
18
24、如何将数字转换为字符?
18
25、如何去小数点前两位,并四舍五入。
18
26、如何取得年月日,小时分秒?
18
27、如何取得从1970年到现在的毫秒数18
28、如何获取某个日期是当月的最后一天?
19
29、如何格式化日期?
19
30、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
20
32、Strings=newString("xyz");创建了几个StringObject?
20
33、float型floatf=3.4是否正确?
20
35、说出一些常用的类,包,接口,请各举5个20
36、java中会存在内存泄漏吗,请简单描述。
20
37、java中实现多态的机制是什么?
20
38、垃圾回收器的基本原理是什么?
垃圾回收器可以马上回收内存吗?
有什么办法主动通知虚拟机进行垃圾回收?
21
39、静态变量和实例变量的区别?
21
41、是否可以从一个static方法内部发出对非static方法的调用?
21
42、写clone()方法时,通常都有一行代码,是什么?
21
43、JAVA语言如何进行异常处理,关键字:
throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
21
Java面向对象
1.super()与this()的区别?
this()当前类的对象,super()父类对象。
super():
在子类访问父类的成员和行为,必须受类继承规则的约束
而this代表当前对象,当然所有的资源都可以访问.
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.
2.作用域public,protected,private,以及不写时的区别?
Øpublic:
不同包、同一包、类内都可用
Øprivate:
类内
Øprotected:
不同包的子类、同一包内、类内都可用
Ø不写时:
同一包内、类内
3.编程输出如下图形。
*****
****
***
**
*
代码如下:
publicclassPrint{
publicstaticvoidmain(String[]args){
for(inti=0;i<5;i++){
for(intj=5;j>i;j--){
System.out.print("*");
}
System.out.println();
}
}
}
4.JAVA的事件委托机制和垃圾回收机制
java事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。
在这种方案中,监听器简单的等待,直到它收到一个事件。
一旦事件被接受,监听器将处理这个事件,然后返回。
垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。
如果一个对象没有指向它的引用或者其赋值为null,则此对象适合进行垃圾回收
5.在JAVA中,如何跳出当前的多重嵌套循环?
ØBreak;
Øreturn;
6.什么是java序列化,如何实现java序列化?
(写一个实例)
序列化:
处理对象流的机制,所谓对象流也就是将对象的内容进行流化。
可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:
将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:
FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
7.一个".java"源文件中是否可以包括多个类(不是内部类)?
有什么限制?
可以。
如果这个类的修饰符是public,其类名与文件名必须相同。
8.排序都有哪几种方法?
请列举。
用JAVA实现一个快速排序?
排序的方法有:
Ø插入排序(直接插入排序、希尔排序),
Ø交换排序(冒泡排序、快速排序),
Ø选择排序(直接选择排序、堆排序),
Ø归并排序,分配排序(箱排序、基数排序)
代码见文件
9.Overload和Override的区别。
Overload的方法是否可以改变返回值的类型?
方法的重写Override:
子类覆盖父类的方法,将子类传与父类的引用调用的还是子类的方法。
重载Overloading:
一个类多个方法,名称相同,参数个数类型不同。
两者都是Java多态性的不同表现。
Overloaded的方法是可以改变返回值的类型。
10.final类有什么特点?
类不可以继承
属性常量
方法不可以overridding
11.继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:
父类:
packagetest;
publicclassFatherClass
{
publicFatherClass()
{
System.out.println("FatherClassCreate");
}
}
子类:
packagetest;
importtest.FatherClass;
publicclassChildClassextendsFatherClass
{
publicChildClass()
{
System.out.println("ChildClassCreate");
}
publicstaticvoidmain(String[]args)
{
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
}
}
输出结果:
C:
>javatest.ChildClass
FatherClassCreate
FatherClassCreate
ChildClassCreate
12.内部类的实现方式?
答:
示例代码如下:
packagetest;
publicclassOuterClass
{
privateclassInterClass
{
publicInterlass()
{
System.out.println("InterClassCreate");
}
}
publicOuterClass()
{
InterClassic=newInterClass();
System.out.println("OuterClassCreate");
}
publicstaticvoidmain(String[]args)
{
OuterClassoc=newOuterClass();
}
}
输出结果:
C:
>javatest/OuterClass
InterClassCreate
OuterClassCreate
13.如在COLLECTION框架中,实现比较要实现什么样的接口?
Collection框架中实现比较要实现Comparable接口和Comparator接口
14.编程:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
答:
代码如下:
publicclassTest
{
staticvoidsplit(Stringstr,intlength)
throwsException{
byte[]bt=str.getBytes("gbk");
//for(inti=0;i ////打印出字节数组中的值,可以看出只要是汉字[采用GBK编码时占两个字节/UTF-8占3个字节],并且为两个负整数 ////由于字节的第一位都是1,所以它就是由负数来表示的 //System.out.println(bt[i]); //} //判断最后一个是否为负,如果是负的则加上后面一个字节 inti=0; intnum=0; for(;i { if(bt[i]<0) { i++; } num++; if(num==length) { break; } } System.out.println(i); System.out.println(newString(bt,0,++i,"gbk")); } publicstaticvoidmain(String[]args){ try{ Test.split("我ABC汉DEF",4); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } 15、Java编程,打印昨天的当前时刻 importjava.util.Calendar; publicclassTest{ publicstaticvoidmain(String[]args){ Calendarcal=Calendar.getInstance(); cal.add(Calendar.DATE,-1); System.out.println(cal.getTime()); } } 16、文件读写,实现一个计数器 publicintgetNum(){ inti=-1; try{ Stringstri=""; BufferedReaderin=newBufferedReader(newFileReader(f)); while((stri=in.readLine())! =null){ i=Integer.parseInt(stri.trim()); } in.close(); }catch(Exceptione){ e.printStackTrace(); } returni; } publicvoidsetNum(){ inti=getNum(); i++; try{ PrintWriterout=newPrintWriter(newBufferedWriter(newFileWriter(f,false))); out.write(String.valueOf(i)); out.close(); }catch(Exceptione){ e.printStackTrace(); } } 17、指出下面程序的运行结果。 classA{ static{ System.out.print("1"); } publicA(){ System.out.print("2"); } } classBextendsA{ static{ System.out.print("a"); } publicB(){ System.out.print("b"); } } publicclassHello{ publicstaticvoidmain(String[]ars){ Aab=newB();//执行到此处,结果: 1a2b ab=newB();//执行到此处,结果: 1a2b2b } } 注: 类的static代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造 18、抽象类和接口的区别? (1)接口可以被多重implements,抽象类只能被单一extends (2)接口只有定义,抽象类可以有定义和实现 (3)接口的字段定义默认为: publicstaticfinal,抽象类字段默认是"default"(本包可见) 19、什么是类的返射机制? 【反射示例】 通过类(Class对象),可以得出当前类的fields、method、construtor、interface、superClass、modified等,同时可以通过类实例化一个实例、设置属性、唤醒方法。 Spring中一切都是返射、struts、hibernate都是通过类的返射进行开发的。 20、类的返射机制中的包及核心类? java.lang.Class java.lang.refrection.Method java.lang.refrection.Field java.lang.refrection.Constructor java.lang.refrection.Modifier java.lang.refrection.Interface 21、得到Class的三个过程是什么? 对象.getClass() 类.class或Integer.type(int) Integer.class(java.lang.Integer) Class.forName(); 22、如何通过发射调用类中的一个方法? 产生一个Class数组,说明方法的参数 通过Class对象及方法参数得到Method 通过method.invoke(实例,参数值数组)唤醒方法 23、如何将数值型字符转换为数字(Integer,Double)? Integer.parseInt(“1234”) Double.parseDouble(“123.2”) 24、如何将数字转换为字符串? 1+”” 1.0+”” String.valueOf (1); Integer.toString (1); 25、如何去小数点前两位,并四舍五入。 doubled=1256.22d; d=d/100; System.out.println(Math.round(d)*100); 26、如何取得年月日,小时分秒? Calendarc=Calendar.getInstance(); c.set(Calendar.YEAR,2004); c.set(Calendar.MONTH,0); c.set(Calendar.DAY_OF_MONTH,31); System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+""+c.get(Calendar.DAY_OF_MONTH)); 27、如何取得从1970年到现在的毫秒数 java.util.Datedat=newDate(); longnow=dat.getTime(); 28、如何获取某个日期是当月的最后一天? 当前日期加一天,若当前日期与结果的月份不相同,就是最后一天。 取下一个月的第一天,下一个月的第一天-1 Calendarc=Calendar.getInstance(); //假设设定为2004,1,30 c.set(Calendar.YEAR,2004); c.set(Calendar.MONTH,0); intmaxDayOfMonth=c.getActualMaximum(Calendar.DAY_OF_MONTH); if(maxDayOfMonth==30) { System.out.println("是最后一天"); } else { System.out.println("不是最后一天"); } 29、如何格式化日期? Importjava.text.SimpleDateFormat; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddhh: mm: ss"); Datedat=newDate(); //把日期转化为字符串 Stringstr=sdf.format(dat); System.out.println(str); //将字符串转化为日期 Java.util.Dated1=sdf.parse(“yyyy-mm-dd”); 30、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 Stringa=newString("中".getBytes("gb2312"),"iso-8859-1"); Stringa=newString("中".getBytes("iso-8859-1")); 32、Strings=newString("xyz");创建了几个StringObject? new了一个,”XYZ”本来又是一个 两个 33、float型floatf=3.4是否正确? 报错,应当是floatf=3.4f 如果是floatf=3(整数)正确 35、说出一些常用的类,包,接口,请各举5个 常用的类: BufferedReaderBufferedWriterFileReaderFileWirterStringInteger 常用的包: java.langjava.awtjava.iojava.utiljava.sqljavax.sevlet 常用的接口: ResultSet,java.sql.Statement,Connection,CollectionListMapDocument 36、java中会存在内存泄漏吗,请简单描述。 会。 一般我们常说的内存泄漏是指堆内存的泄漏。 堆内存是指程序从堆中分配的大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。 应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete或设定为null释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。 37、java中实现多态的机制是什么? 静态的多态: 方法名相同,参数个数或类型不相同。 (overloading) 动态的多态: 子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法 实现接口的实例传与接口的引用调用的实现类的方法。 38、垃圾回收器的基本原理是什么? 垃圾回收器可以马上回收内存吗? 有什么办法主动通知虚拟机进行垃圾回收? 动态内存 存放类实例 静态内存 类本身 垃圾收集主要针对的是动态内存,一般当内存不够用时会进行垃圾收集。 或通过System.gc()手动收集,但不保证一定执行。 39、静态变量和实例变量的区别? 静态变量是当前类的所有实例共享的。 静态方法可以调用静态变量。 实例方法可以调用静态变量、实例变量 41、是否可以从一个static方法内部发出对非static方法的调用? 不可以,如果其中包含对象的method();不能保证对象初始化. 42、写clone()方法时,通常都有一行代码,是什么? clone有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。 43、JAVA语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛出异常吗? try: 执行部分,产生异常 catch: 捕捉异常 finally: 不管有没有异常都执行 throws: 在方法声明处声明要抛出的异常,调用者必须对其进行处理。 throw: 抛出一个异常 在try中可以抛出异常,一般与声明的异常相同。 自定义异常要继承于Exception或Exception的子类 44、JAVA类实现序列化的方法(二种) JAVA类实现序例化的方法是实现java.io.Serializable接口 45、冒泡排序法 //相邻两个数比较,将最小或最大的放到后面,最后面数的不参与比较 publicclassBubbleSort{ privatestaticintal[]=newint[10]; publicBubbleSort(){ al[0]=2; al[1]=3; al[2]=23; al[3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 面试题 综合1 试题 综合