仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1030|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA编程:Java口试中的圈套

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:43:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊第一,谈谈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算法都也许一样,以是功能不会有很年夜的差别。




J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-21 13:17:45 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
小女巫 该用户已被删除
板凳
发表于 2015-1-27 09:23:58 来自手机 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
因胸联盟 该用户已被删除
地板
发表于 2015-2-2 21:53:11 来自手机 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
再见西城 该用户已被删除
5#
发表于 2015-2-7 12:14:52 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
若天明 该用户已被删除
6#
发表于 2015-2-21 20:44:33 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
乐观 该用户已被删除
7#
发表于 2015-3-6 21:31:21 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
分手快乐 该用户已被删除
8#
发表于 2015-3-7 10:25:00 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
莫相离 该用户已被删除
9#
发表于 2015-3-12 07:10:19 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
山那边是海 该用户已被删除
10#
发表于 2015-3-19 18:31:31 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-30 10:26:07 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
透明 该用户已被删除
12#
发表于 2015-4-5 18:46:29 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
若相依 该用户已被删除
13#
发表于 2015-4-9 09:26:49 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
活着的死人 该用户已被删除
14#
发表于 2015-4-11 04:11:18 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
15#
发表于 2015-4-13 06:52:21 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
小魔女 该用户已被删除
16#
发表于 2015-4-26 07:11:47 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
不帅 该用户已被删除
17#
发表于 2015-4-29 21:59:19 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘飘悠悠 该用户已被删除
18#
发表于 2015-5-4 15:31:28 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
愤怒的大鸟 该用户已被删除
19#
发表于 2015-5-6 01:12:12 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表