JAVA面试题汇集.docx
《JAVA面试题汇集.docx》由会员分享,可在线阅读,更多相关《JAVA面试题汇集.docx(56页珍藏版)》请在冰点文库上搜索。
JAVA面试题汇集
阐明:
该面试题集共54页,当前仅供即将毕业学员参照使用,不能作为原则化试题,上述试题收集渠道来源较为广泛,难度上无法控制,有些题是针对五年以上开发人员,我对试题答案无法作出对的地保证,试题答案供人们参照使用。
学员们应当尽量举一反三,积极思考。
我接触招聘公司当前普遍反映学员们自己积极学习和自学能力以及对基本知识掌握比较弱,但愿这些试题可以协助人们加深理解和记忆,该试题只供达内学员参照,请勿外传!
!
最后预祝同窗们揾工顺利!
达内广州中心
大客户运营经理
贾元峥
JAVA面试题集
基本知识:
1.C++或Java中异常解决机制简朴原理和应用。
当JAVA程序违背了JAVA语义规则时,JAVA虚拟机就会将发生错误表达为一种异常。
违背语义规则涉及2种状况。
一种是JAVA类库内置语义检查。
例如数组下标越界,会引起IndexOutOfBoundsException;访问null对象时会引起NullPointerException。
另一种状况就是JAVA容许程序员扩展这种语义检查,程序员可以创立自己异常,并自由选取在何时用throw核心字引起异常。
所有异常都是java.lang.Thowable子类。
2.Java接口和C++虚类相似和不同处。
由于Java不支持多继承,而有也许某个类或对象要使用分别在几种类或对象里面办法或属性,既有单继承机制就不能满足规定。
与继承相比,接口有更高灵活性,由于接口中没有任何实当代码。
当一种类实现了接口后来,该类要实现接口里面所有办法和属性,并且接口里面属性在默认状态下面都是publicstatic,所有办法默认状况下是public.一种类可以实现各种接口。
3.垃圾回收长处和原理。
并考虑2种回收机制。
Java语言中一种明显特点就是引入了垃圾回收机制,使c++程序员最头疼内存管理问题迎刃而解,它使得Java程序员在编写程序时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中对象不再有“作用域”概念,只有对象引用才有“作用域”。
垃圾回收可以有效防止内存泄露,有效使用可以使用内存。
垃圾回收器普通是作为一种单独低档别线程运营,不可预知状况下对内存堆中已经死亡或者长时间没有使用对象进行清晰和回收,程序员不能实时调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
4.请说出你所懂得线程同步办法。
wait():
使一种线程处在等待状态,并且释放所持有对象lock。
sleep():
使一种正在运营线程处在睡眠状态,是一种静态办法,调用此办法要捕获InterruptedException异常。
notify():
唤醒一种处在等待状态线程,注意是在调用此办法时候,并不能确切唤醒某一种等待状态线程,而是由JVM拟定唤醒哪个线程,并且不是按优先级。
Allnotity():
唤醒所有处入等待状态线程,注意并不是给所有唤醒线程一种对象锁,而是让它们竞争。
5.请讲一讲析构函数和虚函数用法和作用。
6.Error与Exception有什么区别?
Error表达系统级错误和程序不必解决异常,
Exception表达需要捕获或者需要程序进行解决异常。
7.在java中一种类被声明为final类型,表达了什么意思?
表达该类不能被继承,是顶级类。
8.描述一下你最惯用编程风格。
9.heap和stack有什么区别。
栈是一种线形集合,其添加和删除元素操作应在同一段完毕。
栈按照后进先出方式进行解决。
堆是栈一种构成元素
10.如果系统要使用超大整数(超过long长度范畴),请你设计一种数据构造来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。
publicclassBigInt()
{
int[]ArrOne=newArrOne[1000];
StringintString="";
publicint[]Arr(Strings)
intString=s;
for(inti=0;i{11.如果要设计一种图形系统,请你设计基本图形元件(Point,Line,Rectangle,Triangle)简朴实现12,谈谈final,finally,finalize区别。 final?修饰符(核心字)如果一种类被声明为final,意味着它不能再派生出新子类,不能作为父类被继承。因而一种类不能既被声明为abstract,又被声明为final。将变量或办法声明为final,可以保证它们在使用中不被变化。被声明为final变量必要在声明时给定初值,而在后来引用中只能读取,不可修改。被声明为final办法也同样只能使用,不能重载。 finally?再异常解决时提供finally块来执行任何清除操作。如果抛出一种异常,那么相匹配catch子句就会执行,然后控制就会进入finally块(如果有话)。 finalize?办法名。Java技术容许使用finalize()办法在垃圾收集器将对象从内存中清除出去之前做必要清理工作。这个办法是由垃圾收集器在拟定这个对象没有被引用时对这个对象调用。它是在Object类中定义,因而所有类都继承了它。子类覆盖finalize()办法以整顿系统资源或者执行其她清理工作。finalize()办法是在垃圾收集器删除对象之前对这个对象调用。13,AnonymousInnerClass(匿名内部类)与否可以extends(继承)其他类,与否可以implements(实现)interface(接口)? 匿名内部类是没有名字内部类。不能extends(继承)其他类,但一种内部类可以作为一种接口,由另一种内部类实现。14,StaticNestedClass和InnerClass不同,说得越多越好(面试题有很笼统)。 NestedClass(普通是C++说法),InnerClass(普通是JAVA说法)。Java内部类与C++嵌套类最大不同就在于与否有指向外部引用上。详细可见http://.net/articles/services/view.asp?id=704&page=1 注:静态内部类(InnerClass)意味着1创立一种static内部类对象,不需要一种外部类对象,2不能从一种static内部类一种对象访问一种外部类对象第四,&和&&区别。 &是位运算符。&&是布尔逻辑运算符。15,HashMap和Hashtable区别。 都属于Map接口类,实现了将惟一键映射到特定值上。 HashMap类没有分类或者排序。它容许一种null键和各种null值。 Hashtable类似于HashMap,但是不容许null键和null值。它也比HashMap慢,由于它是同步。16,Collection和Collections区别。 Collections是个java.util下类,它包具有各种关于集合操作静态办法。 Collection是个java.util下接口,它是各种集合构造父接口。17,什么时候用assert。 断言是一种包括布尔表达式语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一种Assertionerror。它用于调试目:assert(a>0);//throwsanAssertionerrorifa<=0断言可以有两种形式:assertExpression1;assertExpression1:Expression2; Expression1应当总是产生一种布尔值。 Expression2可以是得出一种值任意表达式。这个值用于生成显示更多调试信息String消息。 断言在默认状况下是禁用。要在编译时启用断言,需要使用source1.4标记: javac-source1.4Test.java 要在运营时启用断言,可使用-enableassertions或者-ea标记。 要在运营时选取禁用断言,可使用-da或者-disableassertions标记。 要系统类中启用断言,可使用-esa或者-dsa标记。还可以在包基本上启用或者禁用断言。 可以在预测正常状况下不会到达任何位置上放置断言。断言可以用于验证传递给私有办法参数。但是,断言不应当用于验证传递给公有办法参数,由于不论与否启用了断言,公有办法都必要检查其参数。但是,既可以在公有办法中,也可以在非公有办法中运用断言测试后置条件。此外,断言不应当以任何方式变化程序状态。18,GC是什么?为什么要有GC?(基本)。 GC是垃圾收集器。Java程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。要祈求垃圾收集,可以调用下面办法之一:System.gc()Runtime.getRuntime().gc()19,Strings=newString("xyz");创立了几种StringObject? 两个对象,一种是“xyx”,一种是指向“xyx”引用对象s。20,Math.round(11.5)等於多少?Math.round(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;21,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错? shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)。shorts1=1;s1+=1对的。22,sleep()和wait()有什么区别?搞线程最爱 sleep()办法是使线程停止一段时间办法。在sleep时间间隔期满后,线程不一定及时恢复执行。这是由于在那个时刻,其他线程也许正在运营并且没有被调度为放弃执行,除非(a)“醒来”线程具备更高优先级(b)正在运营线程由于其他因素而阻塞。 wait()是线程交互时,如果线程对一种同步对象x发出一种wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。23,Java有无goto? Goto?java中保存字,当前没有在java中使用。24,数组有无length()这个办法?String有无length()这个办法? 数组没有length()这个办法,有length属性。String有length()这个办法。25,Overload和Override区别。Overloaded办法与否可以变化返回值类型? 办法重写Overriding和重载Overloading是Java多态性不同体现。重写Overriding是父类与子类之间多态性一种体现,重载Overloading是一种类中多态性一种体现。如果在子类中定义某办法与其父类有相似名称和参数,咱们说该办法被重写(Overriding)。子类对象使用这个办法时,将调用子类中定义,对它而言,父类中定义犹如被“屏蔽”了。如果在一种类中定义了各种同名办法,它们或有不同参数个数或有不同参数类型,则称为办法重载(Overloading)。Overloaded办法是可以变化返回值类型。26,Set里元素是不能重复,那么用什么办法来区别重复与否呢?是用==还是equals()?它们有何区别? Set里元素是不能重复,那么用iterator()办法来区别重复与否。equals()是判读两个Set与否相等。 equals()和==办法决定引用值与否指向同一对象equals()在类中被覆盖,为是当两个分离对象内容和类型相配话,返回真值。27,给我一种你最常用到runtimeexception。ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFORMatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException28,error和exception有什么区别? error表达恢复不是不也许但很困难状况下一种严重问题。例如说内存溢出。不也许指望程序能解决这样状况。 exception表达一种设计或实现问题。也就是说,它表达如果程序运营正常,从不会发生状况。29,List,Set,Map与否继承自Collection接口?List,Set是Map不是30,abstractclass和interface有什么区别? 声明办法存在而不去实现它类被叫做抽象类(abstractclass),它用于要创立一种体现某些基本行为类,并为该类声明办法,但不能在该类中实现该类状况。不能创立abstract类实例。然而可以创立一种变量,其类型是一种抽象类,并让它指向详细子类一种实例。不能有抽象构造函数或抽象静态办法。Abstract类子类为它们父类中所有抽象办法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该办法。懂得其行为其他类可以在类中实现这些办法。 接口(interface)是抽象类变体。在接口中,所有办法都是抽象。多继承性可通过实现这样接口而获得。接口中所有办法都是抽象,没有一种有程序体。接口只可以定义staticfinal成员变量。接口实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体予以)所有这种接口办法。然后,它可以在实现了该接口类任何对象上调用接口办法。由于有抽象类,它容许使用接口名作为引用变量类型。普通动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象类与否实现了接口。31,abstractmethod与否可同步是static,与否可同步是native,与否可同步是synchronized? 都不能32,接口与否可继承办口?抽象类与否可实现(implements)接口?抽象类与否可继承实体类(concreteclass)? 接口可以继承办口。抽象类可以实现(implements)接口,抽象类与否可继承实体类,但前提是实体类必要有明确构造函数。33,启动一种线程是用run()还是start()? 启动一种线程是调用start()办法,使线程所代表虚拟解决机处在可运营状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会及时运营。run()办法可以产生必要退出标志来停止一种线程。34,构造器Constructor与否可被override? 构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。35,与否可以继承String类? String类是final类故不可以继承。36,当一种线程进入一种对象一种synchronized办法后,其他线程与否可进入此对象其他办法? 不能,一种对象一种synchronized办法只能由一种线程访问。37,try{}里有一种return语句,那么紧跟在这个try后finally{}里code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。38,编程题:用最有效率办法算出2乘以8等於几? 有C背景程序员特别喜欢问这种问题。 2<<339,两个对象值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对? 不对,有相似hashcode。40,当一种对象被当作参数传递到一种办法后,此办法可变化这个对象属性,并可返回变化后成果,那么这里究竟是值传递还是引用传递? 是值传递。Java编程语言只由值传递参数。当一种对象实例作为一种参数被传递到办法中时,参数值就是对该对象引用。对象内容可以在被调用办法中变化,但对象引用是永远不会变化。41,swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上? switch(expr1)中,expr1是一种整数表达式。因而传递给switch和case语句参数应当是int、short、char或者byte。long,string都不能作用于swtich。42,编程题:写一种Singleton出来。 Singleton模式重要作用是保证在Java应用程序中,一种类Class只有一种实例存在。 普通Singleton模式普通有几种种形式: 第一种形式:定义一种类,它构造函数为private,它有一种staticprivate该类变量,在类初始化时实例话,通过一种publicgetInstance办法获取对它引用,继而调用其中办法。publicclassSingleton{ privateSingleton(){} //在自己内部定义自己一种实例,是不是很奇怪? //注意这是private只供内部调用 privatestaticSingletoninstance=newSingleton(); //这里提供了一种供外部访问本class静态办法,可以直接访问 publicstaticSingletongetInstance(){ returninstance; }} 第二种形式:publicclassSingleton{ privatestaticSingletoninstance=null; publicstaticsynchronizedSingletongetInstance(){ //这个办法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if(instance==null) instance=newSingleton();returninstance; }}其她形式: 定义一种类,它构造函数为private,所有办法为static。 普通以为第一种形式要更加安全些 Hashtable和HashMap Hashtable继承自Dictionary类,而HashMap是Java1.2引进Mapinterface一种实现 HashMap容许将null作为一种entrykey或者value,而Hashtable不容许 尚有就是,HashMap把Hashtablecontains办法去掉了,改成containsvalue和containsKey。由于contains办法容易让人引起误解。 最大不同是,Hashtable办法是Synchronize,而HashMap不是,在各种线程访问Hashtable时,不需要自己为它办法实现同步,而HashMap就必要为之提供外同步。Hashtable和HashMap采用hash/rehash算法都大概同样,因此性能不会有很大差别。43.描述一下JVM加载class文献原理机制?44.试举例阐明一种典型垃圾回收算法?45.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序方式打印出来.46.请写一种java程序实现线程连接池功能?47.给定一种C语言函数,规定实当前java类中进行调用。48、编一段代码,实当前控制台输入一组数字后,排序后在控制台输出;49、列出某文献夹下所有文献;50、调用系统命令实现删除文献操作;51、实现从文献中一次读出一种字符操作;52、列出某些控制流程办法;53、多线程有哪些状态?54、编写了一种服务器端程序实当前客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端程序;55、作用域public,private,protected,以及不写时区别答:区别如下:作用域当前类同一package子孙类其她packagepublic√√√√protected√√√×friendly√√××private√×××不写时默以为friendly56、ArrayList和Vector区别,HashMap和Hashtable区别答:就ArrayList与Vector重要从二方面来说.一.同步性:Vector是线程安全,也就是说是同步,而ArrayList是线程序不安全,不是同步二.数据增长:当需要增长时,Vector默认增长为本来一培,而ArrayList却是本来一半就HashMap与HashTable重要从三方面来说。一.历史因素:Hashtable是基于陈旧Dictionary类,HashMap是Java1.2引进Map接口一种实现二.同步性:Hashtable是线程安全,也就是说是同步,而HashMap是线程序不安全,不是同步三.值:只有HashMap可以让你将空值作为一种表条目key或value57、char型变量中能不能存贮一种中文中文?为什么?答:是可以定义成为一种中文,由于java中以unicode编码,一种char占16个字节,因此放一种中文是没问题58、多线程有几种实现办法,都是什么?同步有几种实现办法,都是什么?答:多线程有两种实现办法,分别是继承Thread类与实现Runnable接口同步实现方面有两种,分别是synchronized,wait与notify
11.如果要设计一种图形系统,请你设计基本图形元件(Point,Line,Rectangle,Triangle)简朴实现
12,谈谈final,finally,finalize区别。
final?
修饰符(核心字)如果一种类被声明为final,意味着它不能再派生出新子类,不能作为父类被继承。
因而一种类不能既被声明为abstract,又被声明为final。
将变量或办法声明为final,可以保证它们在使用中不被变化。
被声明为final变量必要在声明时给定初值,而在后来引用中只能读取,不可修改。
被声明为final办法也同样只能使用,不能重载。
finally?
再异常解决时提供finally块来执行任何清除操作。
如果抛出一种异常,那么相匹配catch子句就会执行,然后控制就会进入finally块(如果有话)。
finalize?
办法名。
Java技术容许使用finalize()办法在垃圾收集器将对象从内存中清除出去之前做必要清理工作。
这个办法是由垃圾收集器在拟定这个对象没有被引用时对这个对象调用。
它是在Object类中定义,因而所有类都继承了它。
子类覆盖finalize()办法以整顿系统资源或者执行其她清理工作。
finalize()办法是在垃圾收集器删除对象之前对这个对象调用。
13,AnonymousInnerClass(匿名内部类)与否可以extends(继承)其他类,与否可以implements(实现)interface(接口)?
匿名内部类是没有名字内部类。
不能extends(继承)其他类,但一种内部类可以作为一种接口,由另一种内部类实现。
14,StaticNestedClass和InnerClass不同,说得越多越好(面试题有很笼统)。
NestedClass(普通是C++说法),InnerClass(普通是JAVA说法)。
Java内部类与C++嵌套类最大不同就在于与否有指向外部引用上。
详细可见http:
//.net/articles/services/view.asp?
id=704&page=1
注:
静态内部类(InnerClass)意味着1创立一种static内部类对象,不需要一种外部类对象,2不能从一种static内部类一种对象访问一种外部类对象
第四,&和&&区别。
&是位运算符。
&&是布尔逻辑运算符。
15,HashMap和Hashtable区别。
都属于Map接口类,实现了将惟一键映射到特定值上。
HashMap类没有分类或者排序。
它容许一种null键和各种null值。
Hashtable类似于HashMap,但是不容许null键和null值。
它也比HashMap慢,由于它是同步。
16,Collection和Collections区别。
Collections是个java.util下类,它包具有各种关于集合操作静态办法。
Collection是个java.util下接口,它是各种集合构造父接口。
17,什么时候用assert。
断言是一种包括布尔表达式语句,在执行这个语句时假定该表达式为true。
如果表达式计算为false,那么系统会报告一种Assertionerror。
它用于调试目:
assert(a>0);//throwsanAssertionerrorifa<=0
断言可以有两种形式:
assertExpression1;
assertExpression1:
Expression2;
Expression1应当总是产生一种布尔值。
Expression2可以是得出一种值任意表达式。
这个值用于生成显示更多调试信息String消息。
断言在默认状况下是禁用。
要在编译时启用断言,需要使用source1.4标记:
javac-source1.4Test.java
要在运营时启用断言,可使用-enableassertions或者-ea标记。
要在运营时选取禁用断言,可使用-da或者-disableassertions标记。
要系统类中启用断言,可使用-esa或者-dsa标记。
还可以在包基本上启用或者禁用断言。
可以在预测正常状况下不会到达任何位置上放置断言。
断言可以用于验证传递给私有办法参数。
但是,断言不应当用于验证传递给公有办法参数,由于不论与否启用了断言,公有办法都必要检查其参数。
但是,既可以在公有办法中,也可以在非公有办法中运用断言测试后置条件。
此外,断言不应当以任何方式变化程序状态。
18,GC是什么?
为什么要有GC?
(基本)。
GC是垃圾收集器。
Java程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。
要祈求垃圾收集,可以调用下面办法之一:
System.gc()
Runtime.getRuntime().gc()
19,Strings=newString("xyz");创立了几种StringObject?
两个对象,一种是“xyx”,一种是指向“xyx”引用对象s。
20,Math.round(11.5)等於多少?
Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
21,shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。
可修改为s1=(short)(s1+1)。
shorts1=1;s1+=1对的。
22,sleep()和wait()有什么区别?
搞线程最爱
sleep()办法是使线程停止一段时间办法。
在sleep时间间隔期满后,线程不一定及时恢复执行。
这是由于在那个时刻,其他线程也许正在运营并且没有被调度为放弃执行,除非(a)“醒来”线程具备更高优先级(b)正在运营线程由于其他因素而阻塞。
wait()是线程交互时,如果线程对一种同步对象x发出一种wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
23,Java有无goto?
Goto?
java中保存字,当前没有在java中使用。
24,数组有无length()这个办法?
String有无length()这个办法?
数组没有length()这个办法,有length属性。
String有length()这个办法。
25,Overload和Override区别。
Overloaded办法与否可以变化返回值类型?
办法重写Overriding和重载Overloading是Java多态性不同体现。
重写Overriding是父类与子类之间多态性一种体现,重载Overloading是一种类中多态性一种体现。
如果在子类中定义某办法与其父类有相似名称和参数,咱们说该办法被重写(Overriding)。
子类对象使用这个办法时,将调用子类中定义,对它而言,父类中定义犹如被“屏蔽”了。
如果在一种类中定义了各种同名办法,它们或有不同参数个数或有不同参数类型,则称为办法重载(Overloading)。
Overloaded办法是可以变化返回值类型。
26,Set里元素是不能重复,那么用什么办法来区别重复与否呢?
是用==还是equals()?
它们有何区别?
Set里元素是不能重复,那么用iterator()办法来区别重复与否。
equals()是判读两个Set与否相等。
equals()和==办法决定引用值与否指向同一对象equals()在类中被覆盖,为是当两个分离对象内容和类型相配话,返回真值。
27,给我一种你最常用到runtimeexception。
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,
ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFORMatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
28,error和exception有什么区别?
error表达恢复不是不也许但很困难状况下一种严重问题。
例如说内存溢出。
不也许指望程序能解决这样状况。
exception表达一种设计或实现问题。
也就是说,它表达如果程序运营正常,从不会发生状况。
29,List,Set,Map与否继承自Collection接口?
List,Set是
Map不是
30,abstractclass和interface有什么区别?
声明办法存在而不去实现它类被叫做抽象类(abstractclass),它用于要创立一种体现某些基本行为类,并为该类声明办法,但不能在该类中实现该类状况。
不能创立abstract类实例。
然而可以创立一种变量,其类型是一种抽象类,并让它指向详细子类一种实例。
不能有抽象构造函数或抽象静态办法。
Abstract类子类为它们父类中所有抽象办法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该办法。
懂得其行为其他类可以在类中实现这些办法。
接口(interface)是抽象类变体。
在接口中,所有办法都是抽象。
多继承性可通过实现这样接口而获得。
接口中所有办法都是抽象,没有一种有程序体。
接口只可以定义staticfinal成员变量。
接口实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体予以)所有这种接口办法。
然后,它可以在实现了该接口类任何对象上调用接口办法。
由于有抽象类,它容许使用接口名作为引用变量类型。
普通动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象类与否实现了接口。
31,abstractmethod与否可同步是static,与否可同步是native,与否可同步是synchronized?
都不能
32,接口与否可继承办口?
抽象类与否可实现(implements)接口?
抽象类与否可继承实体类(concreteclass)?
接口可以继承办口。
抽象类可以实现(implements)接口,抽象类与否可继承实体类,但前提是实体类必要有明确构造函数。
33,启动一种线程是用run()还是start()?
启动一种线程是调用start()办法,使线程所代表虚拟解决机处在可运营状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会及时运营。
run()办法可以产生必要退出标志来停止一种线程。
34,构造器Constructor与否可被override?
构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。
35,与否可以继承String类?
String类是final类故不可以继承。
36,当一种线程进入一种对象一种synchronized办法后,其他线程与否可进入此对象其他办法?
不能,一种对象一种synchronized办法只能由一种线程访问。
37,try{}里有一种return语句,那么紧跟在这个try后finally{}里code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
38,编程题:
用最有效率办法算出2乘以8等於几?
有C背景程序员特别喜欢问这种问题。
2<<3
39,两个对象值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对?
不对,有相似hashcode。
40,当一种对象被当作参数传递到一种办法后,此办法可变化这个对象属性,并可返回变化后成果,那么这里究竟是值传递还是引用传递?
是值传递。
Java编程语言只由值传递参数。
当一种对象实例作为一种参数被传递到办法中时,参数值就是对该对象引用。
对象内容可以在被调用办法中变化,但对象引用是永远不会变化。
41,swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上?
switch(expr1)中,expr1是一种整数表达式。
因而传递给switch和case语句参数应当是int、short、char或者byte。
long,string都不能作用于swtich。
42,编程题:
写一种Singleton出来。
Singleton模式重要作用是保证在Java应用程序中,一种类Class只有一种实例存在。
普通Singleton模式普通有几种种形式:
第一种形式:
定义一种类,它构造函数为private,它有一种staticprivate该类变量,在类初始化时实例话,通过一种publicgetInstance办法获取对它引用,继而调用其中办法。
publicclassSingleton{
privateSingleton(){}
//在自己内部定义自己一种实例,是不是很奇怪?
//注意这是private只供内部调用
privatestaticSingletoninstance=newSingleton();
//这里提供了一种供外部访问本class静态办法,可以直接访问
publicstaticSingletongetInstance(){
returninstance;
}
第二种形式:
privatestaticSingletoninstance=null;
publicstaticsynchronizedSingletongetInstance(){
//这个办法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if(instance==null)
instance=newSingleton();
returninstance; }
其她形式:
定义一种类,它构造函数为private,所有办法为static。
普通以为第一种形式要更加安全些
Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进Mapinterface一种实现
HashMap容许将null作为一种entrykey或者value,而Hashtable不容许
尚有就是,HashMap把Hashtablecontains办法去掉了,改成containsvalue和containsKey。
由于contains办法容易让人引起误解。
最大不同是,Hashtable办法是Synchronize,而HashMap不是,在
各种线程访问Hashtable时,不需要自己为它办法实现同步,而HashMap
就必要为之提供外同步。
Hashtable和HashMap采用hash/rehash算法都大概同样,因此性能不会有很大差别。
43.描述一下JVM加载class文献原理机制?
44.试举例阐明一种典型垃圾回收算法?
45.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序方式打印出来.
46.请写一种java程序实现线程连接池功能?
47.给定一种C语言函数,规定实当前java类中进行调用。
48、编一段代码,实当前控制台输入一组数字后,排序后在控制台输出;
49、列出某文献夹下所有文献;
50、调用系统命令实现删除文献操作;
51、实现从文献中一次读出一种字符操作;
52、列出某些控制流程办法;
53、多线程有哪些状态?
54、编写了一种服务器端程序实当前客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端程序;
55、作用域public,private,protected,以及不写时区别
答:
区别如下:
作用域当前类同一package子孙类其她package
public√√√√
protected√√√×
friendly√√××
private√×××
不写时默以为friendly
56、ArrayList和Vector区别,HashMap和Hashtable区别
就ArrayList与Vector重要从二方面来说.
一.同步性:
Vector是线程安全,也就是说是同步,而ArrayList是线程序不安全,不是同步
二.数据增长:
当需要增长时,Vector默认增长为本来一培,而ArrayList却是本来一半
就HashMap与HashTable重要从三方面来说。
一.历史因素:
Hashtable是基于陈旧Dictionary类,HashMap是Java1.2引进Map接口一种实现
二.同步性:
Hashtable是线程安全,也就是说是同步,而HashMap是线程序不安全,不是同步
三.值:
只有HashMap可以让你将空值作为一种表条目key或value
57、char型变量中能不能存贮一种中文中文?
为什么?
是可以定义成为一种中文,由于java中以unicode编码,一种char占16个字节,因此放一种中文是没问题
58、多线程有几种实现办法,都是什么?
同步有几种实现办法,都是什么?
多线程有两种实现办法,分别是继承Thread类与实现Runnable接口
同步实现方面有两种,分别是synchronized,wait与notify
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2