java面向对象企业面试题.docx
- 文档编号:6892554
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:11
- 大小:21.07KB
java面向对象企业面试题.docx
《java面向对象企业面试题.docx》由会员分享,可在线阅读,更多相关《java面向对象企业面试题.docx(11页珍藏版)》请在冰豆网上搜索。
java面向对象企业面试题
1、抽象类和接口的区别?
(1)接口可以被多重implements,抽象类只能被单一extends
(2)接口只有定义,抽象类可以有定义和实现
(3)接口的字段定义默认为:
publicstaticfinal,抽象类字段默认是"friendly"(本包可见)
当功能需要累积时用抽象类,不需要累积时用接口。
2、什么是类的返射机制?
通过类(Class对象),可以得出当前类的fields、method、construtor、interface、superClass、modified等,同是可以通过类实例化一个实例、设置属性、唤醒方法。
Spring中一切都是返射、struts、hibernate都是通过类的返射进行开发的。
3、类的返射机制中的包及核心类?
java.lang.Class
java.lang.refrection.Method
java.lang.refrection.Field
java.lang.refrection.Constructor
java.lang.refrection.Modifier
java.lang.refrection.Interface
4、得到Class的三个过程是什么?
对象.getClass()
类.class或Integer.type(int)Integer.class(java.lang.Integer)
Class.forName();
5、如何唤起类中的一个方法?
产生一个Class数组,说明方法的参数
通过Class对象及方法参数得到Method
通过method.invoke(实例,参数值数组)唤醒方法
6、如何将数值型字符转换为数字(Integer,Double)?
Integer.parseInt(“1234”)
Double.parseDouble(“123.2”)
7、如何将数字转换为字符?
1+””
1.0+””
8、如何去小数点前两位,并四舍五入。
doubled=1256.22d;
d=d/100;
System.out.println(Math.round(d)*100);
9、如何取得年月日,小时分秒?
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));
10、如何取得从1970年到现在的毫秒数
Java.util.Datedat=newDate();
longnow=dat.getTime();
11、如何获取某个日期是当月的最后一天?
当前日期加一天,若当前日期与结果的月份不相同,就是最后一天。
取下一个月的第一天,下一个月的第一天-1
publicstaticvoidmain(String[]args)
{
Calendarc=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,30);
Calendarc1=(Calendar)c.clone();
System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+""+c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,1);
if(c.get(Calendar.MONTH)!
=c1.get(Calendar.MONTH))
{
System.out.println("是最后一天");
}
else
{
System.out.println("不是取后一天");
}
}
12、如何格式化日期?
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”);
13、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
Stringa=newString("中".getBytes("gb2312"),"iso-8859-1");
Stringa=newString("中".getBytes("iso-8859-1"));
14、Strings=newString("xyz");创建了几个StringObject?
New了一个,”XYZ”本来又是一个
两个
15、float型floatf=3.4是否正确?
报错,应当是floatf=3.4f
如果是floatf=3(整数)正确
16、说出一些常用的类,包,接口,请各举5个
常用的类:
BufferedReaderBufferedWriterFileReaderFileWirterStringInteger
常用的包:
java.langjava.awtjava.iojava.utiljava.sqljavax.xmljavax.sevletjavax.ejb.javax.faces
常用的接口:
ListMapDocumentNodeListEjbObjectEjbHomeSessionBeanEntityBean
17、java中会存在内存泄漏吗,请简单描述。
会。
如:
inti,i2;return(i-i2);//wheni为足够大的正数,i2为足够大的负数。
结果会造成溢位,导致错误。
18、java中实现多态的机制是什么?
静态的多态:
方法名相同,参数个数或类型不相同。
(overloading)
动态的多态:
子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法
实现接口的实例传与接口的引用调用的实现类的方法。
19、垃圾回收器的基本原理是什么?
垃圾回收器可以马上回收内存吗?
有什么办法主动通知虚拟机进行垃圾回收?
动态内存
存放类实例
静态内存
类本身
垃圾收集主要针对的是动态内存,一般当内存不够用时会进行垃圾收集。
或通过System.gc()手动收集,但不保证一定执行。
20、静态变量和实例变量的区别?
statici=10;//常量
classAa;a.i=10;//可变
静态方法可以调用静态变量。
实现方法可以调用静态变量、实例变量
21、是否可以从一个static方法内部发出对非static方法的调用?
不可以,如果其中包含对象的method();不能保证对象初始化.
22、写clone()方法时,通常都有一行代码,是什么?
Clone有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
23、JAVA语言如何进行异常处理,关键字:
throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
Try:
执行部分,产生异常
Catch:
捕捉异常
Finally:
不管有没有异常都执行
Throws:
在方法声明处声明要抛出的异常,调用者必须对其进行处理。
Throw:
抛出一个异常
在try中可以抛出异常,一般与声明的异常相同。
自定义异常要继承于Exception或Exception的子类
25、冒泡排序法
//相邻两个数比较,将最小或最大的放到后面,最后面数的不参与比较
publicclassBubbleSort{
privatestaticintal[]=newint[10];
publicBubbleSort(){
al[0]=2;
al[1]=3;
al[2]=23;
al[3]=45;
al[4]=1;
al[5]=67;
al[6]=23;
al[7]=80;
al[8]=35;
al[9]=72;
}
publicstaticvoidmain(String[]args){
BubbleSortbs=newBubbleSort();
System.out.println("排序前:
");
display(al);
for(inti=0;i for(intj=0;j if(al[j]>al[j+1]){ swap(j,j+1); } } } System.out.println(); System.out.println("排序后: "); display(al); } privatestaticvoiddisplay(int[]al2){ for(inti=0;i System.out.print(al2[i]+""); } } privatestaticvoidswap(inti,intj){ inttemp=al[i]; al[i]=al[j]; al[j]=temp; } } 26、StringandStringBuffer的区别? String: 长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,速度慢。 StringBuffer: 长度可变,可以将多个字符串值直接联合,效率高 27、用java代码编写堆栈 publicclassStack{ int[]data; intmaxSize; inttop; publicStack(intmaxSize){ this.maxSize=maxSize; data=newint[maxSize]; top=-1; } /** *依次加入数据 *@paramdata要加入的数据 *@return添加是否成功 */ publicbooleanpush(intdata){ if(top+1==maxSize){ System.out.println("栈已满! "); returnfalse; } this.data[++top]=data; returntrue; } /** *从栈中取出数据 *@return取出的数据 */ publicintpop()throwsException{ if(top==-1){ thrownewException("栈已空! "); } returnthis.data[top--]; } publicstaticvoidmain(String[]args)throwsException{ Stackstack=newStack(1000); stack.push (1); stack.push (2); stack.push(3); stack.push(4); stack.push(5); while(stack.top>=0) { System.out.println(stack.pop()); } } } 28、集合的作用是什么? 数据的传送增、删、改、查、constainsAll,可以存放不同类型的对象。 29、集合的通用方法有那些? 通用方法是什么? (操作) 集合List的遍历方法有: Iterator: Enumeration For Get set Collection的通用方法有: Iterator() Add() Clear(); remove() 30、说出ArrayList,Vector,LinkedList的存储性能和特性HashMap和Hashtable的区别 ArrayListVector: 以数组的方式存储,增、删慢,查、改快 ArrayList: 线程不安全,速度快 Vector: 线程安全,速度慢(synchoronized) LikedList: 以单链表的方式存储,增、删快,查、改慢 HashMap与Hashtable都实现的Map接口,HashTable线程安全,HashMap线程不安全。 31、Collection和Collections的区别。 Collection是集合的根接口,其下有set及list Collections是集合的算法。 32、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 用contains来区分是否有重复的对象。 还是都不用。 在比较时先调用hashCode方法,如果不相同,证明不相等。 如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。 ==: 主要用在基本数据类型及引用 Equals: 主要是对象或对象引用的比较。 集合中是否包含某一个元素用contains来判断。 33、List,Set,Map是否继承自Collection接口? List,set继承于Collection Map没有继承于Collection,其相对是独立的。 属于Collection类型的对象,可以通过构造函数将一个集合构造成另外一个集合。 34、面向对象的特征有哪些方面 1.抽象: 找共性,将共有的属性、方法放到父类中 2.继承: 子类继承于父类,具有父类的所有属性与方法,可以重用,也可以覆盖。 3.封装: 一个类包括多个属性及方法。 4.多态性: 动态: 静态: 35、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。 为了提高效率节省空间,我们应该用StringBuffer类 36、int和Integer有什么区别? Int是基本数据类型,不是对象,占一个内存空间,没有方法。 与其同类的有long,char,doble Integer是封装类,具有方法及属性。 与其同类的有Long,Double.Float 37、运行时异常与一般异常有何异同? 运行时异常: javaJVM抛出的异常,代码中不用处理。 一般异常: 用户抛出的异常,如果用throws声明了,调用这个方法的代码必须对其处理。 38、&和&&的区别? &: 与: 左边若为false右边还执行。 &&: 短路与,左边若为false右边不执行。 39、final,finally,finalize的区别? final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 算符可以用来决定某对象的类是否实现了接口。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 企业 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)