变相怪杰 发表于 2015-1-18 11:41:02

JAVA教程之JAVA程序员口试32问 挑选自 liujun9999...

Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)程序|程序员第一,谈谈final,finally,finalize的区分。
第二,AnonymousInnerClass(匿名外部类)是不是能够extends(承继)别的类,是不是能够implements(完成)interface(接口)?

第三,StaticNestedClass和InnerClass的分歧,说得越多越好(口试题有的很笼统)。

第四,&和&&的区分。

第五,HashMap和Hashtable的区分。

第六,Collection和Collections的区分。

第七,甚么时分用assert。

第八,GC是甚么?为何要有GC?

第九,Strings=newString("xyz");创立了几个StringObject?

第十,Math.round(11.5)等於几?Math.round(-11.5)等於几?

第十一,shorts1=1;s1=s1+1;有甚么错?shorts1=1;s1+=1;有甚么错?

第十二,sleep()和wait()有甚么区分?

第十三,Java有无goto?

第十四,数组有无length()这个办法?String有无length()这个办法?

第十五,Overload和Override的区分。Overloaded的办法是不是能够改动前往值的范例?

第十六,Set里的元素是不克不及反复的,那末用甚么办法来辨别反复与否呢?是用==仍是equals()?它们有何区分?

第十七,给我一个你最多见到的runtimeexception。

第十八,error和exception有甚么区分?

第十九,List,Set,Map是不是承继自Collection接口?

第二十,abstractclass和interface有甚么区分?

第二十一,abstract的method是不是可同时是static,是不是可同时是native,是不是可同时是synchronized?

第二十二,接口是不是可承继接口?笼统类是不是可完成(implements)接口?笼统类是不是可承继实体类(concreteclass)?

第二十三,启动一个线程是用run()仍是start()?

第二十四,机关器Constructor是不是可被override?

第二十五,是不是能够承继String类?

第二十六,当一个线程进进一个对象的一个synchronized办法后,别的线程是不是可进进此对象的别的办法?

第二十七,try{}里有一个return语句,那末紧跟在这个try后的finally{}里的code会不会被实行,甚么时分被实行,在return前仍是后?

第二十八,编程题:用最无效率的办法算出2乘以8等於几?

第二十九,两个对象值不异(x.equals(y)==true),但却可有分歧的hashcode,这句话对不合错误?

第三十,当一个对象被看成参数传送到一个办法后,此办法可改动这个对象的属性,并可前往变更后的了局,那末这里究竟是值传送仍是援用传送?

第三十一,swtich是不是能感化在byte上,是不是能感化在long上,是不是能感化在String上?

第三十二,编程题:写一个Singleton出来。

以下是谜底

第一,谈谈final,finally,finalize的区分。
final―润色符(关头字)假如一个类被声明为final,意味着它不克不及再派生出新的子类,不克不及作为父类被承继。因而一个类不克不及既被声明为abstract的,又被声明为final的。将变量或办法声明为final,能够包管它们在利用中不被改动。被声明为final的变量必需在声明时给定初值,而在今后的援用中只能读取,不成修正。被声明为final的办法也一样只能利用,不克不及重载
finally―再非常处置时供应finally块来实行任何扫除操纵。假如抛出一个非常,那末相婚配的catch子句就会实行,然后把持就会进进finally块(假如有的话)。
finalize―办法名。Java手艺同意利用finalize()办法在渣滓搜集器将对象从内存中扫除进来之前做需要的清算事情。这个办法是由渣滓搜集器在断定这个对象没有被援用时对这个对象挪用的。它是在Object类中界说的,因而一切的类都承继了它。子类掩盖finalize()办法以收拾体系资本大概实行其他清算事情。finalize()办法是在渣滓搜集器删除对象之前对这个对象挪用的。

第二,AnonymousInnerClass(匿名外部类)是不是能够extends(承继)别的类,是不是能够implements(完成)interface(接口)?
匿名的外部类是没着名字的外部类。不克不及extends(承继)别的类,但一个外部类能够作为一个接口,由另外一个外部类完成。

第三,StaticNestedClass和InnerClass的分歧,说得越多越好(口试题有的很笼统)。
NestedClass(通常为C++的说法),InnerClass(通常为JAVA的说法)。Java外部类与C++嵌套类最年夜的分歧就在因而否有指向内部的援用上。详细可见http://www.frontfree.net/articles/services/view.asp?id=704&page=1
注:静态外部类(InnerClass)意味着1创立一个static外部类的对象,不必要一个内部类对象,2不克不及从一个static外部类的一个对象会见一个内部类对象

第四,&和&&的区分。
&是位运算符。&&是布尔逻辑运算符。

第五,HashMap和Hashtable的区分。
都属于Map接口的类,完成了将唯一键映照到特定的值上。
HashMap类没有分类大概排序。它同意一个null键和多个null值。
Hashtable相似于HashMap,可是不同意null键和null值。它也比HashMap慢,由于它是同步的。

第六,Collection和Collections的区分。
Collections是个java.util下的类,它包括有各类有关汇合操纵的静态办法。
Collection是个java.util下的接口,它是各类汇合布局的父接口。


第七,甚么时分用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标志。还能够在包的基本上启用大概禁用断言。
能够在估计一般情形下不会抵达的任何地位上安排断言。断言能够用于考证传送给公有办法的参数。不外,断言不该该用于考证传送给私有办法的参数,由于不论是否启用了断言,私有办法都必需反省其参数。不外,既能够在私有办法中,也能够在非私有办法中使用断言测试后置前提。别的,断言不该该以任何体例改动程序的形态。


第八,GC是甚么?为何要有GC?(基本)。
GC是渣滓搜集器。Java程序员不必忧虑内存办理,由于渣滓搜集器会主动举行办理。要哀求渣滓搜集,能够挪用上面的办法之一:
System.gc()
Runtime.getRuntime().gc()

第九,Strings=newString("xyz");创立了几个StringObject?
两个对象,一个是“xyx”,一个是指向“xyx”的援用对象s。

第十,Math.round(11.5)等於几?Math.round(-11.5)等於几?
Math.round(11.5)前往(long)12,Math.round(-11.5)前往(long)-11;

第十一,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准确。

第十二,sleep()和wait()有甚么区分?弄线程的最爱
sleep()办法是使线程中断一段工夫的办法。在sleep工夫距离期满后,线程纷歧定当即恢复实行。这是由于在谁人时候,别的线程大概正在运转并且没有被调剂为保持实行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运转的线程由于别的缘故原由而堵塞。
wait()是线程交互时,假如线程对一个同步对象x收回一个wait()挪用,该线程会停息实行,被调对象进进守候形态,直到被叫醒或守候工夫到。



第十三,Java有无goto?
Goto―java中的保存字,如今没有在java中利用。

第十四,数组有无length()这个办法?String有无length()这个办法?
数组没有length()这个办法,有length的属性。
String有有length()这个办法。

第十五,Overload和Override的区分。Overloaded的办法是不是能够改动前往值的范例?
办法的重写Overriding和重载Overloading是Java多态性的分歧体现。重写Overriding是父类与子类之间多态性的一种体现,重载Overloading是一个类中多态性的一种体现。假如在子类中界说某办法与其父类有不异的称号和参数,我们说该办法被重写(Overriding)。子类的对象利用这个办法时,将挪用子类中的界说,对它而言,父类中的界说好像被“屏障”了。假如在一个类中界说了多个同名的办法,它们或有分歧的参数个数或有分歧的参数范例,则称为办法的重载(Overloading)。Overloaded的办法是能够改动前往值的范例。

第十六,Set里的元素是不克不及反复的,那末用甚么办法来辨别反复与否呢?是用==仍是equals()?它们有何区分?
Set里的元素是不克不及反复的,那末用iterator()办法来辨别反复与否。equals()是判读两个Set是不是相称。
equals()和==办法决意援用值是不是指向统一对象equals()在类中被掩盖,为的是当两个分别的对象的内容和范例相配的话,前往真值。

第十七,给我一个你最多见到的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

第十八,error和exception有甚么区分?
error暗示恢复不是不成能但很坚苦的情形下的一种严峻成绩。好比说内存溢出。不成能期望程序能处置如许的情形。
exception暗示一种计划或完成成绩。也就是说,它暗示假如程序运转一般,从不会产生的情形。


第十九,List,Set,Map是不是承继自Collection接口?
List,Set是

Map不是

第二十,abstractclass和interface有甚么区分?
声明办法的存在而不往完成它的类被叫做笼统类(abstractclass),它用于要创立一个别现某些基础举动的类,并为该类声明办法,但不克不及在该类中完成该类的情形。不克不及创立abstract类的实例。但是能够创立一个变量,其范例是一个笼统类,并让它指向详细子类的一个实例。不克不及有笼统机关函数或笼统静态办法。Abstract类的子类为它们父类中的一切笼统办法供应完成,不然它们也是笼统类为。取而代之,在子类中完成该办法。晓得其举动的别的类能够在类中完成这些办法。
接口(interface)是笼统类的变体。在接口中,一切办法都是笼统的。多承继性可经由过程完成如许的接口而取得。接口中的一切办法都是笼统的,没有一个有程序体。接口只能够界说staticfinal成员变量。接口的完成与子类类似,除该完成类不克不及从接口界说中承继举动。当类完成特别接口时,它界说(行将程序体赐与)一切这类接口的办法。然后,它能够在完成了该接口的类的任何对象上挪用接口的办法。因为有笼统类,它同意利用接口名作为援用变量的范例。一般的静态联编将失效。援用能够转换到接口范例或从接口范例转换,instanceof运算符能够用来决意某对象的类是不是完成了接口。

第二十一,abstract的method是不是可同时是static,是不是可同时是native,是不是可同时是synchronized?
都不克不及

第二十二,接口是不是可承继接口?笼统类是不是可完成(implements)接口?笼统类是不是可承继实体类(concreteclass)?
接口能够承继接口。笼统类能够完成(implements)接口,笼统类是不是可承继实体类,但条件是实体类必需有明白的机关函数。

第二十三,启动一个线程是用run()仍是start()?
启动一个线程是挪用start()办法,使线程所代表的假造处置机处于可运转形态,这意味着它能够由JVM调剂并实行。这其实不意味着线程就会当即运转。run()办法能够发生必需加入的标记来中断一个线程。



第二十四,机关器Constructor是不是可被override?
机关器Constructor不克不及被承继,因而不克不及重写Overriding,但能够被重载Overloading。

第二十五,是不是能够承继String类?
String类是final类故不成以承继。

第二十六,当一个线程进进一个对象的一个synchronized办法后,别的线程是不是可进进此对象的别的办法?
不克不及,一个对象的一个synchronized办法只能由一个线程会见。

第二十七,try{}里有一个return语句,那末紧跟在这个try后的finally{}里的code会不会被实行,甚么时分被实行,在return前仍是后?
会实行,在return前实行。


第二十八,编程题:用最无效率的办法算出2乘以8等於几?
有C背景的程序员出格喜好问这类成绩。

2<<3

第二十九,两个对象值不异(x.equals(y)==true),但却可有分歧的hashcode,这句话对不合错误?
不合错误,有不异的hashcode。

第三十,当一个对象被看成参数传送到一个办法后,此办法可改动这个对象的属性,并可前往变更后的了局,那末这里究竟是值传送仍是援用传送?
是值传送。Java编程言语只由值传送参数。当一个对象实例作为一个参数被传送到办法中时,参数的值就是对该对象的援用。对象的内容能够在被挪用的办法中改动,但对象的援用是永久不会改动的。


第三十一,swtich是不是能感化在byte上,是不是能感化在long上,是不是能感化在String上?
switch(expr1)中,expr1是一个整数表达式。因而传送给switch和case语句的参数应当是int、short、char大概byte。long,string都不克不及感化于swtich。

第三十二,编程题:写一个Singleton出来。
Singleton形式次要感化是包管在Java使用程序中,一个类Class只要一个实例存在。
一样平常Singleton形式一般有几各种情势:
第一种情势:界说一个类,它的机关函数为private的,它有一个static的private的该类变量,在类初始化时实例话,经由过程一个public的getInstance办法猎取对它的援用,继而挪用个中的办法。
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作为一个entry的key大概value,而Hashtable不同意

另有就是,HashMap把Hashtable的contains办法往失落了,改成containsvalue和containsKey。由于contains办法简单让人引发曲解。

最年夜的分歧是,Hashtable的办法是Synchronize的,而HashMap不是,在
多个线程会见Hashtable时,不必要本人为它的办法完成同步,而HashMap
就必需为之供应外同步。

Hashtable和HashMap接纳的hash/rehash算法都也许一样,以是功能不会有很年夜的差别。



你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。

精灵巫婆 发表于 2015-1-21 12:46:30

Java 编程语言的风格十分接近C、C++语言。

再现理想 发表于 2015-1-24 23:17:23

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

若相依 发表于 2015-1-27 06:31:30

Java是一种计算机编程语言,拥有跨平台、面向对java

莫相离 发表于 2015-2-5 00:37:59

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

简单生活 发表于 2015-2-5 04:49:42

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

海妖 发表于 2015-2-7 00:11:04

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

飘灵儿 发表于 2015-2-19 04:08:23

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

老尸 发表于 2015-3-2 01:01:13

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

深爱那片海 发表于 2015-3-6 17:36:35

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

柔情似水 发表于 2015-3-13 00:09:32

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

山那边是海 发表于 2015-3-20 06:47:37

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

冷月葬花魂 发表于 2015-3-24 11:39:42

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

分手快乐 发表于 2015-3-26 20:07:10

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

乐观 发表于 2015-4-11 07:10:06

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

仓酷云 发表于 2015-4-16 16:11:39

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

因胸联盟 发表于 2015-5-4 16:57:43

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

第二个灵魂 发表于 2015-5-4 18:24:22

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

爱飞 发表于 2015-5-7 13:31:52

Java 编程语言的风格十分接近C、C++语言。

小魔女 发表于 2015-5-11 01:30:43

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页: [1]
查看完整版本: JAVA教程之JAVA程序员口试32问 挑选自 liujun9999...