正文内容
程序员面试宝典java
来源:文库
作者:开心麻花
2025-09-22
1

程序员面试宝典java(精选8篇)

程序员面试宝典java 第1篇

java程序员面试宝典_java程序员面试经验

一些Java软件工程师求职者们,可能因为种种原因,对Java语言及其深层原理掌握不牢固,以至于在面试中犯各种错误。本期乔布简历小编将为大家带来的主题是java程序员面试经验,一起来了解一下java程序员面试宝典吧~

关键词:java程序员面试宝典,java程序员面试经验

以下是一些java程序员面试需要注意的地方:

1、对于此类岗位而言,具体的项目是用人单位招聘时最看重的参考因素。即便是没有工作经验的应届生,也要准备可作为自己能力参考的具体作品。如果从未参加过任何项目,可以准备自己在相关领域的课程设计,如有必要还可以将其修改为完整的项目。对于这份具体作品,求职者要有相当的了解。通过求职者对于该作品的讲解,招聘官会判断求职者的技术能力到底如何。

2、Java程序员要求掌握的技能会比较多,求职者在简历上可以分类依次列举出自己所掌握的专业技能,有证书的列出自己所持有的证书名称。在面试的时候,可以对自己所掌握的技能做出介绍,并辅以实例证明,这样会更具有说服力。

3、基础很重要,不要生疏了。不管应聘什么程序员岗位,基础永远都是最重要的。只有有了踏实的基础,再辅以较好的学习能力,这样才不会被互联网日新月异的变化甩开。很多程序员在面试时往往是因为答不出最基础的问题才会错失工作机会。面试前巩固一下基础知识,永远不要轻视了基础。

程序员要时刻关注技术前沿,将新技术与自己所从事的工作联系到一起,做一些深入思考,面试时谈谈这样的问题也是向面试官展现自己学习能力的好机会~

本文来源简历http://cv.qiaobutang.com/knowledge/articles/5652f8b30cf2a980ccfbcec2

程序员面试宝典java 第2篇

java程序员面试宝典--把自己当作英语天才

面试题目全部为英文,而且涉及到的知识面极广,一般来说,只有重点大学中品学兼优的在校学生才能搞定,不过鄙人以为大多数这样的人都去读研了。这样的题目通常出现在注册资产在一亿以上的公司,他们要是成长性好的员工,这是无可厚非的事情。不过他们认为工作了一年以上的程序员也能轻松搞定,至少有部分人能搞。所以当你踌躇满志的去应聘之前,请看看你的实力如何(过六级或者四级680分以上,专业课平均分80以上者可以一试)。

java程序员面试宝典--把自己视为java语言的高手

现在网上流行的大公司面试题可能有些人已经看过了,我用java将近两年了,自认为资质不弱常人,但那样的题目拿到手之后的感觉就是憋气。很多地方只是有个模糊的概念,回答不完全,查阅资料之后方能答上。或许我的基础还有些薄弱,不过当我试着以试题上的题目与面试我的人“讨论”时发现,他知道的也就是这一题的答案而已。

java程序员面试宝典--把自己当作编译器

考试题目大都是一些读程序写结果,或者找错误之类的,不过很多都是编译特例,如果给你个IDE,你肯定是轻松搞定,但你没有那样的机会,回答不出来说明你实际操作经验不足(别人就那么认为的)。虽然这也的确是程序员应该掌握的东西,但是这样似乎有些以偏概全了。平时忙着做项目,有空的时候学习新技术,谁会有那种闲夫去研究java原来可以这样运行的。

java程序员面试宝典--一些经验的东西对面试很重要

一份十页的卷子,他只需要看一两分钟就ok了,然后过来和你谈。询问的主要是过去做过什么项目,当然你说的越多越好(不能太夸张)。这样的面试一般是经理或者老板出马,因为你回答的东西他们看不懂,所以就懒得看了。如果你做过项目,那么适当的,含蓄的夸张点你所做过的东西,态度要好,同时要求的工资不能太高,市场价就可以了。对于那些没有工作经验或者经验较少的人,我只能报以深切的同情。不过如果你基础好,糊弄这样的老板应该没有什么问题。

Java程序内存泄漏研究 第3篇

在一些传统的编程语言(如C语言)中,回收内存的任务是由程序本身负责的。程序可以显式的分配/释放变量所占用的内存。在Java语言中,内存回收的任务由JVM(Java虚拟机)来担当,JVM提供了一个系统级的垃圾回收器(Gar bage Col l ect or,GC)线程,它负责自动回收那些无用对象所占用的内存,这种内存回收的过程被称为垃圾回收。Java程序员只需通过内存分配操作创建对象,而无须关心对象占用的空间是如何被收回的。因此很多程序员认为在Java中不必担心内存泄漏问题,然而实际并非如此,Java中仍然存在内存泄漏。

1 Java中的内存泄漏

1.1 GC的工作原理

内存泄漏,通常是指分配出去以后,却无法收回的内存空间。在Java中,内存的回收是通过GC自动实现的,对程序员来说是透明的,因此,要讨论Java的内存泄漏问题,必须从GC的工作原理谈起。

GC通过监控对象的运行状态(包括申请、引用、被引用、赋值等)及时准确的释放对象,而释放对象的根本原则就是在可达测试(Reachabi l i t y Test)[1]中从根对象不可达。GC从根对象(堆栈对象、静态对象、JNI句柄指向的对象等)开始,利用有向图按照引用关系遍历整个堆空间,所有被遍历到的对象即为“活”的对象,“活”的对象GC不能进行回收。GC把那些失去引用,从根不可达的对象删除,释放内存。

1.2 J ava内存泄漏的定义

J ava中的内存泄漏是存在一些被分配的对象,这些对象存在以下两个特点:首先,这些对象是可达的,即在有向图中,存在通路可以使其与根相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以被判定为Java中的内存泄漏,这些对象不会被GC回收,而它们却仍然占着内存。如图一所示。

现在越来越多的服务器采用Java技术,而服务器程序往往长期运行,因此Java的内存泄漏问题就不容忽视,否则即使是只有少量的泄漏,长期运行之后,也会导致耗尽全部的可用内存而导致系统崩溃的危险。

2 几种典型的内存泄漏及解决方法

在程序中要查明代码引起泄漏的原因是很困难的,但大多数Java程序中的内存泄漏情况却十分相似,下面介绍几种典型的内存泄漏及其解决方法。

2.1 未彻底清除失效对象。

常见的是废弃聚集的引用(Obsol et e Col l ect i on Refer ences):对象加入到一个聚集中,当其不再需要时并没有被移去,当该聚集用St at i c声明且在程序的整个生命周期中存在时问题尤为突出[2]。还有一种典型的错误是对临时对象的引用,临时对象使用后就会成为垃圾,但此时若还保持对其引用,就会使得GC无法回收这些失效的对象。

解决方式:及时清除失效对象的引用、尽量少用静态集合类、减少临时对象的使用、对象不用时最好显式的设置为Nul l。

2.2 类装载器

J ava类装载器的使用为内存泄漏提供了许多可乘之机。由于类装载器不仅仅只与对象引用有关,同时也和对象内部的引用有关,比如数据变量,方法和各种类。这意味着只要存在对数据变量、方法、各种类和对象的类装载器,那么类装载器将驻留在JVM中。因为类装载器在和很多类关联的同时又可以和静态数据变量关联,那么相当多的内存就可能发生泄漏[3]。

2.3 全局集合

大型应用程序中存在各种各样的全局数据仓库,Java程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现全局变量。由于静态的变量会永驻内存,难免造成内存泄漏。

常用的解决方式是周期运行的清除作业。这个作业会验证仓库中的数据然后清除一切不需要的数据。另一个解决办法是引用记数(Ref er ence Count i ng)[3]。集合负责统计集合中每个元素的引用者数量。引用者会通知集合什么时候已经对元素不再引用。当引用者的数目为零时,该元素就可以从集合中移除了。

2.4 高速缓存

高速缓存是一种用来快速查找已经执行过的操作结果的数据结构。缓存通常都是以动态方式实现的,如果缓存设置不正确而大量使用缓存的话则会出现内存溢出(Out Of Memor y Er r or)。

为避免这种错误,程序可以确定高速缓存在它所使用的内存中有一个上界,当高速缓存所占空间超过该上界时,移除缓存中旧的数据,释放缓存空间。另一个解决途径是使用J ava.l ang.r ef.Sof t Ref er ence类坚持将对象放入高速缓存。这个方法可以保证当JVM用完内存或者需要更多堆的时候,可以释放这些对象的引用。

3 Java内存泄漏的研究现状

对无用对象保持引用是造成内存泄漏的主要原因,因此针对Java内存泄漏的研究主要是通过分析对象是否仍有用以及对象之间的引用关系来进行的。

3.1 针对对象是否仍然有用

J VM利用有向图进行可达测试发现“活”的对象,“活”的对象GC将不进行回收,但是“活”的对象不一定就是有用的对象,因此无用对象的确定对发现内存泄漏有着至关重要的作用。文献[4]针对Java中的临时对象的创建而造成的内存泄漏提出了这样一种场景(Scenar i o):创建临时对象的时候,给出其期望的生命周期,当该对象的生命周期超出该期望期时,该对象就有可能是内存泄漏对象[2,3,4]。文献[5]针对J ava中的数组,提出了一个结合向前数据流分析和向后控制流分析算法标志变量的关系,并确定数组中元素的有用区域,算法给出个程序点相关的变量间的约束关系以及在各点依然有用的数组元素,GC利用数组间的约束关系回收不再有用的数组变量[2,3,4,5]。

3.2 针对对象间的引用关系

通过分析对象或者类之间的引用关系找出可疑的实例或者区域。专业检测内存泄漏工具Jpr obe Memor y Debugger正是基于对实例的引用树(Ref er ence Tr ee)和被引用树(Ref er r er Tr ee)的分析来判定该实例是否为可疑的泄漏对象。JDK TM1.2中定义了对象引用应用程序设计接口,该应用程序设计接口允许应用程序以对象引用的方式与JVM的内存管理器进行交互。应用对象引用队列可以创建这样一个环境:当通过对象引用获得某一对象时,应用程序得到通知。然后,应用程序就可以对相关对象进行跟踪和清除操作,这样就减少了内存泄漏。

3.3 针对对象行为的分析

文献[2]提出通过分析对象行为来确定该对象是否为内存泄漏对象的设想,同一个类的多个对象,使用逻辑的不同导致其行为不同,从而导致了某些对象被回收,而某些对象未被回收。用对象生存期行为模型来描述对象从创建开始到被销毁为止的整个时间段内的行为,通过分析泄漏对象和未泄漏对象的行为差异,获取导致泄漏的对象行为。然后在该基础上通过深入研究对象行为来确定更多的内存泄漏[2]。

3.4 针对根对象的研究

GC利用有向图从根对象开始遍历所用的引用,某对象由根可达,则保留之,不可达则释放之。由此,根对象的选择对GC显得尤为重要。如果根对象选择的不适宜,则可能使很多无用对象仍可以从根对象可达,无法被回收。文献[6]通过进行类型分析(Type Anal ysi s)以获得比较适合的根对象,同时分析变量是否有用使仍可用的对象成为根对象。

4 内存泄漏的检测、处理及改进

4.1 检测内存泄漏的存在

一般说来,一个正常的系统在其运行稳定后其内存的占用量是基本稳定的,不应该是无限制的增长。同样,对任何一个类的对象的使用个数也有一个相对稳定的上限,不应该是持续增长的。根据这样的基本假设,我们持续地观察系统运行时使用内存的大小和各实例的个数,如果内存的大小持续地增长,则说明系统存在内存泄漏,如果特定类的实例对象个数随时间而增长,则说明这个类的实例可能存在泄漏情况

[7]。

另一方面发生内存泄漏的一个迹象是:在应用程序中出现了Out Of Memor y Er r or。也有可能应用程序确实正在使用这么多的内存,但是在许多情况下Out Of Memor y Er r or都是内存泄漏的信号。一种查明方法是不间断地监控GC的活动,确定内存使用量是否随着时间增加。如果确实如此,就可能发生了内存泄漏。

4.2 处理内存泄漏的方法

一旦知道确实发生了内存泄漏,就需要更专业的工具来进行处理。这些专业工具从JVM获得内存系统信息的方法基本上有两种:JVMTI(Java Vi r t ual Machi ne Tool s I nt erf ace)和字节码技术。J VMTI及其前身J VMPI(J ava Vi r t ual Machi ne Pr of i l i ng I nt er f ace)都是标准接口,作为外部工具同JVM进行通信,搜集JVM的信息。字节码仪器则是引用通过探针获得工具所需的字节信息的预处理技术。

目前的大多数工具,要么是基于JVMTI创建Java堆转储,并离线分析它;要么是基于JVMTI获取Java程序时刻信息(堆信息及对象的分配、引用关系等)。而JVMTI会加大内存开销使程序的执行变得非常缓慢。下面简单介绍一下内存泄漏检测工具JRocki t Memor y Leak Det ect or。

J Rocki t Memor y Leak Det ect or是一种实时检测基于BEA J VM运行的J ava程序内存泄漏的工具,它内嵌于BEA J Rocki t J VM,支持在系统全速运行时使用,而不会引起通常与此类工具相关联的性能开销,因此不存在上述一般工具的缺点。该工具通过三步处理泄漏。

(1)通过趋势分析发现那些对象类存在泄漏。J Rocki t Memor y Leak Det ect or为用户提供了一个趋势分析,趋势分析可以说明应用程序中每个类使用堆空间的情况。它将告诉你某一类型的实例使用了多少空间、它们占用了堆的哪一部分、存在多少个实例以及每秒钟堆空间使用的增加速度,增长最快的对象就是值得怀疑的对象。

(2)找出同泄漏对象相关的其他类。可以在趋势分析表中选择一个怀疑类型,所有具有指向选中类型的实例的类型都可以显示在一个图中,用户可以回溯到导致引用的最终原因。类的实例可以被显示和内观,指向一个选中实例的所有实例都可以在一张实例图中显示出来,可以打开分配跟踪,跟踪某个类的所有分配情况。

(3)向下发掘,观察独立的对象之间是如何相互联系的。

同时,该工具也可以动态的找出所有内存分配的堆栈路径。利用这三个特性,将该工具紧紧地集成在JVM中,那么就可以安全有效的捕捉和修复内存泄漏了。

4.3 改进内存泄漏的方式

在实际应用中若能根据GC的运行机制有针对性的进行设计和编码,可以减少甚至避免内存泄漏的发生,具体措施包括以下几个方面。

(1)少用静态对象变量、静态集合类。像Has h Map、Vect or等静态集合类的生命与应用程序一样长,被其引用的对象GC无法回收,容易造成内存泄漏。

(2)慎用内部类。内部类中隐藏着外部类的对象实例的引用,一旦没有释放,可能导致一系列对象得不到释放。

(3)简化对象引用关系、及时清除静态变量的引用、对象不用时显式的设置为nul l。

(4)勿用长生命周期对象管理短生命周期对象。

(5)使用J ava.l ang.r ef包。该包中定义了三个引用类:Sof t Ref er ence、Weak Ref er enc、Phant om Ref er ence。可以解决未知或者多余对象引用造成的内存泄漏。

(6)及时关闭物理连接。比如数据库连接和网络连接,除非显式的关闭,否则不会被GC自动回收。

(7)使用Fi nal i ze方法清除本地系统资源。本地系统资源是通过Java以外的函数获得的资源,GC无法回收。可以在Fi nal i ze方法中加入清除内存代码,解决本地系统资源得不到释放造成的内存泄漏。

(8)调用对象的特定方法清除引用或释放资源。有些对象不再被使用时会提供用来清除引用或释放资源的方法,如对话框的Di spose方法、容器组件的Romove方法、Swi ng组件UI的Uni nst al l方法等。

5 结束语

内存泄漏是一个特别重要又难以解决的问题,不再有用的对象被其他依然有用的对象的引用是导致内存泄漏的主要原因。良好的编程风格和专业的检测工具可以有效地减少内存泄露,但如何更好地避免甚至消除内存泄漏、如何解决因内存泄漏而导致的Java程序系统性能下降问题将是内存泄漏相关领域的重要研究方向。

摘要:Java有比较安全的内存管理机制,垃圾回收器(GC)会自动地对无用的内存空间进行回收,但是GC并不能回收所有的垃圾空间,仍然存在着内存泄漏。本文从GC的工作原理入手,详细分析了产生内存泄漏的原因,讨论了几种典型内存泄漏及解决的方法,介绍了内存泄漏的相关研究及发展趋势,指出了检测和处理内存泄漏的方式,给出了避免内存泄漏的建议。

关键词:内存泄漏,垃圾回收,引用

参考文献

[1]QUEST公司.JProbe Memory Debugger Developer's Guide[R].2005.

[2]贾晓霞,吴际,金茂忠等.Java程序内存泄漏综述[J].计算机应用研究,2006,(09):1-3.

[3]Staffan Larsen.Memory Leaks,Be Gone[EB/OL].http://dev2dev.bea.com/pub/a/2005/06/memory_leaks.html,2005-06.

[4]Wim De Pauw,Gary Sevitsky.Visualizing Reference Patterns for Solving Memory Leaks in Java[C].Lisbon:Pro-ceedings of the13th Europ ean Conference on OO Program-ming,1999:116-134.

[5]RShaham,E K Kolodner,M Sagiv.Automatic Re-moval of Array Memory Leaks in Java[C].Berlin:Compiler Construction,the9th International Conference,volume1781of Lecture Notes in Computer Science,2000:50-66.

[6]Agesen O,Detlefs D,MOSS J E B.Garbage Collection and Local Variable Typeprecisionand Liveness in Java Virtual Machines[C].New York:Programming Language Design and Implementation(PLDI),1998:269-279.

HR给出的“面试宝典” 第4篇

1.面试前干什么

研究一下企业的性质和岗位说明书,企业的性质往往成为企业选人的重要因素,不同的企业青睐不同的人才,比如:日本公司注重服从和等级观念,如果在面试时表现得个性张扬,喜欢自由,那么你多半没戏;欧美的企业注重授权和创新,如果你表现得太过死板,唯唯诺诺,那么,估计你的机会也不大。民营企业跟着感觉走吧,谈不上什么特点。这就是我们经常说的:企业要找符合企业文化的人。了解企业文化,不是让你欺骗企业,伪装自己,但是明明知道是错的,为什么不适当地调整一下呢?你说,我就这个性,不改。那我觉得你自己去开公司、做老板吧,不要去打工了。对于岗位说明书,也要好好研究一下,因为同样的职位,每个企业之间的工作内容常常不一样,同样招聘人事经理,有的公司注重宏观的东西,有的公司注重操作层面的,如果人家叫你主要去做人力资源规划和战略,你在那儿谈保险怎么交,员工关系怎么处理等,你的胜算有几成?

2.礼仪

英国的人力资源专家曾经作过研究,三种人更容易得到工作:漂亮的、个子高的、有礼貌的。前两者是爹娘遗传的,估计你也改变不了,但是对于礼仪,却是可以注意的,去面试前,建议你好好审视一下自己的穿着,首先未必要穿名牌,但是看上去男生要给人感觉很利索、协调,女生看上去要干净、大方,不要给别人很邋遢的感觉。有的应聘者,一看西装皱巴巴的,领带打得歪里斜巴的,能有好印象吗?坐下来前就给否定了,因为中国人其实是非常注重外表的,即以貌取人。还有的女生,打扮太时尚,那么大的耳环,企业找人不是找模特或者选美,所以不合适的穿戴往往会让你在一开始就给“枪毙”了,现在很多学校的学生搞什么写真集求职,实在是“误入歧途”,碰上不怀好意的招聘者,也许会惹大麻烦,但你最后不要把责任全部推给别人。

3.面对不同的面试人员,保持良好的心态

有的面试人员风格比较强势、直率,面试时咄咄逼人,往往有一种审问犯人的感觉;有的面试人员温和、艺术。遇到这两种面试人员,自己首先要有好的心态,对于前者,往往会让人不舒服,有压力感,但是你不能因此就产生逆反心理,觉得对方素质如何如何(本人曾经在网上看到有些应聘者写的文章),甚至由此得出该公司不怎么样的结论,这实际上要不得,应该以一种宽容、平和的心态去对待;对于后者,不要麻痹大意,因为温和面孔的背后常常是一把利剑。所以,在内心里,一定要记住:这是一场面试、是求职,不要太多地关注所谓的“自尊”。

4.学会区分不同的问题

有经验的面试官往往会用不同的面试方法和问题,所以对于各种不同的问题,不必紧张,有的问题可能是确认你的工作经验和能力,有的问题则是考验你的分析能力、思考能力、反应、思路等,比如:下水道的盖子为什么是圆的?这样的问题没有正确答案,只要能够自圆其说即可。对于没有工作经验的校园招聘,通常就会用这种方法,面试时注意区分,有的应聘者对什么问题都很紧张,结果影响了水平的发挥。

5.面试要注意“答所问”

很多人往往忽略这一点,比如现在很多企业的面试人员往往不够专业,会首先说:自我介绍一下吧。

有经验的面试官往往不问这些问题,但有的应聘者总是喜欢说着说着,就开始介绍自己了,往往引起面试人员的反感。还有的应聘者,根本没有听清楚问题,就按照自己的思路回答,结果驴头不对马嘴。听不清楚,可以确认一下嘛。所以,建议应聘者要跟紧面试人员的思路,保持高度集中,不要停留在自己的“思维圈子”里。

6.回答问题注意条理,简明,不要啰唆

麦肯锡公司有一句名言:所有的事情都可以分成三句话去讲。比如:今天上午9点吃早饭。可以说成:今天我吃饭,时间是上午9:00,吃的是早饭。因此建议大家在回答问题的时候,不妨按照这样一个套路:第一点、第二点、第三点……这样听的人很清楚,说的人也不会漏掉重点,还有一个,就是要简明,不要啰唆,你不要把别人当傻瓜,一件事情或观点关键是重点,所以这个道理其实就是言简意赅。有的应聘者自我介绍搞了10分钟,听的人早烦了,谁有这个耐心呢?

Java程序员面试宝典 第5篇

本文由 tonhhssy 贡献 pdf 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。编辑推荐 揭开知名 IT 企业面试、笔试的核心机密; 传授程序员岗位求职的关键技巧。《Java 程序员面试宝典》 不同于其他 Java 程序书籍的主要特点如下。唯一性 本书是国内 市场上唯一介绍 Java 程序员求职面试技巧的图书和案例库。本书从实际出发,将 Java 程序 员面试中常会考到的一些编程基础性问题,比如 final、super 类、构造函数等最易考到的基 础 考点,放在第 2 部分 Java 程序设计里面,希望能切切实实解决实际问题。深入性 面试题通过一道题考一个专类方面的能力。说起 Java,人们首先想到的是 Java 编程语言,然而事 实上,Java 是一种技术,它由 4 个方面组成: Java 编程语言、Java 类文件格式、Java 虚拟机和 Java 应用程 序接口(Java API)。从面试者的角度来讲,一个测试也许能从多方面 揭示应试者的素质,至少你能 了解应试者所掌握类的水平。市面上流行的面试书籍在 此专业性的分类方面做得不够,正因为如此,《Java 程序员面试宝典 》 一书中追求的是程序员求职背后的一些东西: 对于技术的本质理解,而不仅限于对 Java 技术的单 纯讲解。广泛性 本书包括但不仅限于 Java 程序员面试。对求职市场面 试做了妥善分类后,将面试对象分为软件 开发人员、网络工程师、测试工程师和系统管理员(又包括操作系统管理员和数据库管理员等)实际上市面上流行的面试书籍仅对软件开发。人员比较侧重,而忽略网络工程师和测试工程师,而现 实情况是在诸如趋势科技、思科等公 司的面试中,对网络方面的考题日趋增加,在银行、金融公司 的面试中对系统管理员方面的 考题也占很大的比重。本书就这一方面给出详细论断,并结合大量考 题分析题目特点给出应 试方案。本书将在这些方面做出改进,以适应市场需求。同时本书对外企经常考到的 UML 及设计模式内容也做了深入的分析,并在上一本书《程序员面 试宝典》的基础上从本质 上诠释面试的真谛。真实性 本书的所有面试题都来自 2005—2006 年各大公司的面 试题及培训资料,内容非常新,可以算做 面试者求职前的一份全真模拟。我们希望营造一种 真实的面试氛围,同时作者希望把如何做好一个 职业人,以及作者在职场上所获得的实际感 悟融会在书中,通过真情实感,娓娓道来,指引读者走 上理想的工作岗位。本书不是一本万 能书籍,但却肯定是你工作求职的好助手、好伙伴!本书是程序员面试宝典系列中的一 部,也是上一本《程序员面试宝典》的姊

妹丛书。本书对程 序设计面试中 Java 常见的题型 和常用解答技巧进行了介绍,它不仅能帮助求职者快速复习有相关知 识点,也对现代职业人 如何有效求职、面试考官如何关注求职者动态等做了详细解说。本书通过详 解各大知名公司 技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅出地对其解答思 路进行 了分析和指导。希望能把在技术面试中取得的宝贵经验毫无保留地传授给读者,以便使求职 者对程序设计面试中的常见题型应付自如。通过对本书的学习,你会发现和完善有关试题的 最佳解 决方案,以应对不利局面的情况。本书简介 本书是程序员面试宝典系列中的一部,也是上一本《程序员面试宝典》的姊妹丛书。本 书对程序设 计面试中 Java 常见的题型和常用解答技巧进行了介绍,它不仅能帮助求职者快 速复习有相关知识点,也对现代职业人如何有效求职、面试考官如何关注求职者动态等做了 详细解说。本书通过详解各大知名公司技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅 出地对其解答思路进行了分析和指导。希望能把在技术面试中取得的宝 贵经验毫无保留地传授给读 者,以便使求职者对程序设计面试中的常见题型应付自如。通过 对本书的学习,你会发现和完善有 关试题的最佳解决方案,以应对不利局面。本书适 合(但不限于)将要找工作的程序和高校计算机类应曲毕业生,以及其他计算机爱好者。目录

第 1 部分 求职过程 第 1 章 应聘求职 第 2 章 简历书写 第 3 章 3 种考试 第 4 章 职业生涯发展规划 第 5 章 3 个求职技巧 第 2 部分 Java 程序设计 第 6 章 Java 程序设计基本概念 第 7 章 异常与反射 第 8 章 传递与引用 第 9 章 循环、条件、概率 第 10 章 Java 内存管理 第 11 章 面向对象 第 12 章 继承与接口 第 13 章 JavaScript 第 14 章 Java 架构技术及相关中间件 第 3 部 分 数据结构和设计模式 第 15 章 字符串 第 16 章 设计模式 第 4 部分 UNIX、Oracle、网络 第 17 章 操作系统 第 18 章 数据库和 SQL 语言 第 19 章 计算机网 络及分布式系统 第 6 部分 Java 开源 第 20 章 J2EE 技术 第 21 章 数据相关 第 22 章 Java 中的 Web 设计 第 23 章 Java 中的网页设计 第 24 章 Struts 结构设计 第 25 章 Java 安全性 第 6 部分 综合面试题 第 26 章 英语面试 第 27 章 电话面试 第 28 章 智力测试 附录 A 简历模板 附录 B 面试经历总结 下载后 点击此处查看更多内容 1


程序员面试宝典java 第6篇

要点:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

问题:Java为什么要引入异常处理机制

要点:

程序执行时经常会出现除零溢出、数组越界等运行错误,影响程序的正常执行。错误及异常是不可避免的,一个好的应用程序,在满足用户要求的各种功能的同时,还应具备能预见程序执行过程中可能产生的各种异常的能力,并能为异常情况给予恰当处理。在Java语言中,这种技术就是异常处理 Java语言通过面向对象的异常处理机制来解决运行期间的错误,可以预防错误的程序代码或系统错误所造成的不可预期的结果发生。减少编程人员的工作,增加了程序的灵活性,增加程序的可读性和健壮性.问题:什么是JAVA多线程机制

一.什么是多线程?

多线程是指同时存在几个执行体,按照不同的执行线索共同工作的情况。

二.什么是程序,进程和线程?

程序是一段静态的代码,是应用软件执行的蓝本。

进程是程序的一次动态执行过程,它对应了从代码加载,执行至执行完毕的一个完整的过程。这个过程也是进程本身从生产,发展至消亡的过程。

线程是比进程更小的执行单位。

区别:一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索即每个线程也有其从生产,发展到消亡的过程。

三.线程的生命周期

线程的生命周期可分为四个阶段,新建,运行,中断和死亡。

新建:当一个Thread类或者其子类的对象被声明并创建时,新生成的线程就处于新建装他,有了相应的内存空间和其他资源。

运行:线程被创建之后,就有了运行的条件了,一旦轮到它来享用CPU资源时,便可以摆脱创建它的主进程开始了自己的生命周期。

中断:一个正在执行的线程可能被认为的中断,让出CPU使用权,进入阻塞状态。线程阻塞时,不能进入排队队列,只有当引起阻塞的原因被撤销时,线程才可转入就绪状态,重新进入排队队列中,等待CPU资源,以便从中止处开始运行。

死亡:线程死亡有2种情况,一是正常运行,完成了它全部的工作。另一种是线程被提前强制终止。死亡状态下的线程,释放了被分配的内存。

四.线程的优先级

在java系统中,线程调度依据优先级基础上的“先到先服务”原则。

Thread类的setPriority(int a)方法可设置线程的优先级,取值有Thread.MIN_PRIORITY,Thread.MAX_PRIORITY, Thread.NORM_PRIORITY三种,默认级别为Thread.NORM_PRIORITY.五.如何实现多线程

Java编程中实现多线程有两种方式:一是继承Thread类,用其子类创建线程,二是实现Runnable接口

六.线程同步

当两个或者多个线程同时访问一个变量,并且一个线程需要改变某个变量时,需要对修改数据的方法修饰为synchronized.当一个线程在使用同步方法时需要用到某个变量,而此变量又需要其他线程修改后才能符合本线程需要,此时用wait(),让本线程等待。

其他线程如果在使用同步方法时不需要等待,那么当它使用完该方法后,用notifyAll()方法通知所有由于使用该同步方法而处于等待的线程结束等待,(notify()方法只能通知第一个处于等待的线程结束等待)

七.Interrupt()方法

一个线程在run方法执行完后便会自动消灭,如果想在run方法执完毕前就消灭线程,可以使用interrupt()方法,此时该线程会捕获InterruptedException异常,在处理该异常的语句里告诉线程立刻结束run方法的执行。

问题:java多线程使用cup是什么机制

要点:java获得cup使用权根据优先级,高优先的先执行,这个和操作系统是一样的,但是优先级别的控制是通过虚拟机控制的,然后在执行的时候是通过操作系统时间片的机制,多线程java有自己的调度算法,虚拟机会自动调度执行的线程,而操作系统处理的是cpu的执行,其实两者都有调度算法,xp的机制我想和

1、main方法是怎么写的public static void main(String [] args){}

2、变量的命名规则是怎么样的?

采用驼峰命名法,见名知意,以小写字母开始。

常量命名:全部大写。

方法命名: 小写字母开始,驼峰命名。

类命名:首字母大写。

3、if„else„和写两个if 有什么区别

if„else„只执行其中一条,写两个if,两个都要执行

4、在JAVA中直接写浮点常数,默认是什么类型?

默认是double类型

5、什么是标识符?它的命名规则是什么?

凡是可以命名的地方都叫标识符。

标识符有两种:

1、系统标识符(关键字);

2、用户标识符

以字母、数字、下划线、$复活组成,不能以数字开头

6、什么是变量?

变量是命了名的内存空间,并且空间的值是可以改变的。

7、JDK与JRE分别是什么?

JDK叫java开发工具集,包括编译环境、运行环境、调试环境以及基础类库。

JRE叫java运行环境,包括虚拟机、核心类库、以及健接文件。

8、try-catch-finally三个基本块的作用?catch里的代码是干什么的?

try块表示此处代码可能引发异常

catch块捕获try块的异常

finally块通常用于资源的回收,连接关闭,清理工作等

try-catch-finally不能单独存在,try块后必须跟catch或finally

catch或finally前必须跟try块

9、继承类和实现接口分别怎么做?

继承用extends关键字继承

定义接口用interface关键字

实现接口用implements10、如何去获得字符串的长度?

调用String类的length()方法

11、Java的基本数据类型有哪些?

int 4字节 整型

byte 1字节 整型

char 2字节 整型

short 4字节 整型

long 8字节 整型

double 8字节 浮点

float 4字节 浮点

boolean 布尔

12、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

值传递,Java里没有引用传递

13、列出至少5个最常见到的runtime exception并描述在什么情况下出现

IOException在未找到文件时会抛出

NullPointerExecption在对象引用指向空时会抛出

ArrayIndexOutOfBoundsExecption在数组下标越界时会抛出

NumberFormatException在字符串不能转换成数字时会抛出

ArithmeticException在分母为零时会抛出

14、ArrayList和Vector的区别

vector是线程安全的,所以效率低,Arraylist是线程不安全的,但是效率高。

15、在IO中字节流和字符流的父类是什么?

字节流父类是InputStrean和OutputStream

字符流父类是Reader和Writer16、什么是包?定义包有什么好处?

文件夹。

好处:

1、可以有效的组织相关类;

2、可以做到信息的隐藏。

17、怎么样知道磁盘一个目录中有哪些文件?

1、File对象.list()方法;

2、File对象.listFile()方法。

18、如何获得一定范围的随机整数?

x+Math.random()*y 其中x是位移数,确定最小范围,y是放大系数,确定最大数。

(x-y)*Math.randon()+y19、如何获得java当前的工作目录

使用System.getProperty(“user.dir”)能够获得当前工作目录的字符串地址。

20、怎么样判断一个异常类是checked异常还是unchecked异常?

判断当前异常类,是否是RuntimeException的子类,如果是,则是运行期异常否则是编译期异常。

21、log4j一共有几个级别?分别是哪些?级别的高低有什么样的区别.log4j有五个级别:

DEBUG:调试

INFO:信息

WARN:警告

ERROR:错误

FATAL:崩溃

21、静态变量和成员变量应该怎么访问?

静态变量可以通过对象.和类名.的方式访问

成员变量通过对象.的方式访问

22、如何将一个字符串转成一个基本数据类型

Int x = Integer.parselint(“32”);

Double d = Double.parseDouble(“4.5”);

23、如何让JFrame的初始位置居中(在不同的分辨率中)

窗体对象.setLocationRelativeTo(null);

24、谈谈集合的作用

方便对数据进行 存储,检索,操作,传输。

25、类的修饰符能不能是private、static、protected?

内部类可以,因为内部类相当于外部类的属性

26、Try块中是否所有的语句都一定会执行,为什么?

不是,一但try中发生了异常,那么异常发生处下面的语句就不会执行,专区catch块执行

27、什么时候用继承,什么时候用接口?

当需要重用属性和方法时使用继承

当只需要重用方法时用接口

28、finally是不是什么时候都会执行?

是当虚拟机关闭,System.exit(0),finally内容不会执行;

29、什么是主线程?

当main()方法执行时会产生主线程,1最先开始 2最后结束

3产生其他子线程

4回收资源

30、进行IO流操作时,如果操作的文件不存在会发生什么情况?

读取流在文件不存在时,会抛出文件未找到异常

写入流在文件不存在时,会创建文件,但如果该文件所在目录不存在,同时会抛出文件未找到异常

31、IO流操作的步骤是怎么样的?

创建流 操作流 关闭流

32、finally的作用是什么?

无论是否有异常都会执行的代码块,一般用于资源回收,比如流动关闭、数据库的关闭

34、当一个线程进入一个对象的一个同步方法后,能否进入其它非同步方法? 么?一般在什么时候使用? 可以,但不能进入其他同步方法。

33、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?

Finally{}在程序开启时只执行它本身里的代码。

会执行,在方法返回前执行

35、如何启动线程,它直接调用run()方法有什么区别?

启动线程调用start方法,用start方法启动线程后,是多个线程同时进行,使用run()是普通方法,是不会产生新的线程,是单线程。

36、数组有没有length()这个方法? String有没有length()这个方法?

数组有length属性,String有length方法

37、GC是什么? 为什么要有GC?

GC叫做垃圾回收器,为了回收内存不再使用对象,释放内存空间,避免内存溢出。

38、线程同步化会带什么样的结果?

1:可以使数据安全

2:效率会降低

39、什么是线程安全?

当两个或两个以上线程,访问同一个资源时,为了保证数据的安全,只允许同一时间

只能有一个线程访问该资源。

40、服务器类有一个while循环,能否直接while(true)?

可以,但这样缺乏灵活性,没有办法控制循环结束,最好使用boolean变量来控制

循环的运行和结束。

41、java帮助文档是如何生成的?

Javadoc.exe42、什么时候类名和文件名必须一致?

当类的定义为Public时,类名必须与文件名保存一致

43、如何将实现包装类和基本数据类型转化?

包装转基本1:包装类对象.xxxvalue(值);2直接赋值

基本转包装1: Integer = new Integer(90);2直接赋值

44、类InputStream中方法read()的返回值是什么?读出的是什么?

Read()返回的是int,读取的数据

read(byte[])返回int 当前读取的字节数

45、如果一个类实现一个接口,可不可以不实现接口里定义的所有方法?

可以,但这个类只能是抽象类

46、构造方法和方法有什么区别?构造方法能不能被重载,能不能被重写?

构造方法和雷鸣相同,构造方法没有返回类型,在对象创建时,被调用。

构造方法可以重载,不能重写。

47、请列举switch()括号中能接受的所有数据类型。

Char byte short int48、GUI的布局管理器常见的有哪几种?

绝对布局

边界布局管理器

卡片布局管理器

流布局管理器

网格布局管理器

49、断言有什么作用?

断言是一个布尔表达式,当表达式为真继续执行,表达式为假,则抛出一个断言错误,主要用于测试。

50、String和StringBuffer的区别?

String具有长度不可变的特性,当String做添加、删除修改时,会产生一个新对象

StringBuffer是String类的一个改进版,是缓冲区的一个对象,当对该对象进行字符的添加、修改时,不会产生新对象。

51、接口里方法修符是什么?

Public abstract52、接口里可以定义变量吗?

不行,就可中的变量修饰符是public static final 只能定义常量

53、说几个String常用的方法

String.length()split()substring()equals()indexOf()lastundexOf()

54、在Dos界面下如何编译并执行Java程序?

Javac 文件名

Java 类名

55、创建一个线程有几种方法?

集成 thread 类

实现Runnable接口

56、项目开发的流程是怎么样的?

市场调研,需求分析,概要设计,详细设计,编码,测试,维护。

57、java语言的特点是什么?

简单,面向对象,分布式,健壮,可移植,解释性,安全,多线程,垃圾回收

58、main方法中有个参数String[] args。这个参数的值是由谁传递给它的。执行java类时,由控制台传入

59、java中采用什么字符编码集?char类型能不能放入一个中文字? Unicode 该字符集一个字符有2个字节。,char是两个字节可以放一个中文,因为中文是两个字节

60、byte的取值范围

-128~+127(-2的7次方to2的7次方-1)

61、GET方式和POST方式提交时,流有什么不同?

GET和POST是HTTP协议请求服务器的两种方式

GET方式页面参数,是附加在URL后面。/login?userName=XXX

java程序员面试葵花宝典 第7篇

以下就是笔者总结的作为一个计算机相关专业的应届毕业生或有志于从事软件开发的人员,应该如何摆正自己的心态,以及一些在求职过程中应该注意的问题。

认识职业规划

大部分程序员都是在职场中不断地遇到挫折、漫无目的地跳槽后,才对自己的职业发展方向产生了疑惑。合理地规划自己的职业生涯是非常有必要,也是非常有意义的事,对于任何人,完善的职业生涯规划都能让自己有一个目标和方向,然后向着这个目标前进。

职业规划的意义 职业规划的意义是每一个初涉职场的人必须要了解的,下面是最重要的几点。

以既有的成就为基础,确立人生的方向,提供奋斗的策略,发掘自我潜能。

完善的职业生涯规划将使你正确认识自身的个性特质、现有与潜在的资源优势,帮助你重新对自己的价值进行定位并使其持续增值,并对自己的综合优势与劣势进行对比分析。还可以使你树立明确的职业发展目标与职业理想,客观评估个人目标与现实之间的差距,并可更敏锐地搜索或发现新的或有潜力的职业机会。并且,通过采用科学的方法付诸于实际行动,不断增强你的职业竞争力,即可实现自己的职业目标和理想。

可以重新安排自己的职业生涯,突破生活的格线,塑造清新充实的自我。

准确评价个人特点和强项,增强发展的目的性与计划性,提升成功的机会。

职业生涯的发展要有计划、有目的,不可盲目地“碰运气”。很多人在职场受挫就是由于生涯规划没有做好。好的计划是成功的开始,凡事“预则立,不预则废”就是这个道理。

评估个人目标和现状的差距。

职业生涯规划可以提升应对竞争的能力。

当今社会处在变革的时代,到处充满着激烈的竞争。物竞天择,适者生存。职业活动的竞争尤为突出,特别是我国加入WTO后,要在这场激烈的职场竞争中脱颖而出,并始终立于不败之地,必须设计好自己的职业生涯规划。做好个人的职业生涯发展规划后,在职业发展的道路上,会有很多因素影响着个人的职业发展,其中最重要的应当是自身对职业的选择。如何降低在职业上最大的风险也是个人职业规划需要考虑的问题。如满足于现状,不思进取这样的问题是要靠更新知识结构、转换思维模式来解决的。针对不同的阶段,本章将分别讲述应届毕业生的近期职业规划,以及在职程序员(或相关职业)的职业生涯规划。

软件人才的职业规划

软件行业所带来的职位不仅限于程序员,编码工作也只是软件开发的一部分。一个人从事软件行业,可以只涉及其中的一个方面,也可以涵盖多个方面。如何知道哪个或哪些类型的职位更适合自己呢?下面是在面试中的一些常见的软件人才职位。

程序员;

软件工程师;

系统分析师;

数据库架构师;

测试工程师;

项目经理。

在国内,新技术确实容易引起很多误会,甚至有的企业招聘时也盲目跟风,无论什么项目都只用Java或.NET开发,有的应届毕业生以为自己会Java或.NET即可走遍天下了。殊不知C++(本地代码程序)程序远比Java或.NET程序效率高,并且不需要安装运行环境,在某些有要求的项目中C++才是最好的选择。只有认清这些技术的各种细节,在职业生涯规划中才不会以编程语言或技术平台为主线进行设计,而应当依据个人所适合的技术进行深入,直至成为专家。

应聘过程

应聘过程是十分曲折的,任何一个环节出现问题都会导致应聘的失败。求职者应该对每一个求职环节都掌握于心,做好充分的准备,才能有的放矢,灵活应对应聘过程中出现的每一个问题。

掌握基本的应聘流程

既然是求职应聘,肯定得先找到一个公司,找到一个适合自己的职位了。现在应聘的渠道也比较多,对于IT技术职位的应聘来说,比较常见的有校园招聘、招聘网站、社会招聘会、专题招聘会等形式。

对于应届毕业生来说,校园招聘会更适合他们。因为他们一般没有什么工作经验,校园招聘也不会要求他们有工作经验,而社会招聘往往会设置一个工作经验的门槛。一些公司在每年年底的时候,会到校园去进行宣讲会,应届毕业生在这个时候去求职是再适合不过的了。

目前,招聘网站也是一个比较流行和重要的招聘信息来源。一些大型的软件公司也会在招聘网上,例如智联招聘、中华英才网等,发布他们的职位需求信息。此时,求职者投递的就是电子简历了,它相对于纸张的简历来说,亲切感要差一些。

另外,每年年初是跳槽的高峰时期,各大城市都会组织大型的招聘会,或者专题招聘会,应届毕业生和社会求职者都可以到这些招聘会上找适合自己的公司及其职位,通过面对面的交流,充分了解公司的情况和职位的情况。

通过各种渠道找到自己心仪的公司和职位以后,就可以开始去应聘了。

面试资料的准备 无论是应届毕业生还是有过工作经验的应聘者,在面试前都要准备充足的各种资料。这些资料一般包括以下几种。

作品

对于技术设计类的工作岗位,具体的作品是最重要的资料,也是用人企业最看重的东西。应届毕业生不要以为没有工作经验而不准备具体的作品。例如,应聘者所应聘的工作岗位是“Web开发人员”,应试者要事先了解该岗位对Web开发的技术要求,然后根据要求准备自己的作品资料。即便是应届毕业生也可以准备自己的作品资料,如网站后台方面的课程设计,如果有必要还可将其修改为完整的项目

通过应试者对自己作品的讲解(如源代码),用人企业可以直接了解应试者的技术能力,避免了各种测试所走的弯路。很多小规模的公司往往跳过了笔试步骤,直接通过应试者的作品来判断其能力是否适合工作岗位。

证书

由于个人简历中一般都会注明自己所获得的各种证书,很多用人企业筛选简历的依据也有证书的因素。所以应试者最好带上证书的原件,如学历证、学位证、英语等级证、程序员等级证等。由于应届毕业生没有工作经验,所以证书的作用相对比较大,而有过工作经验的反而不需要太多的证书来证明自己。

个人简历

虽然用人企业已经浏览过应试者的简历,但在实际中,用人企业仍然有可能会让应试者重新填写一份简历。对于很多应试者,重新填写简历时部分内容可能会与原来的有出入,所以应试者最好带上一份原始简历。

简历的写法及应注意的问题 简历是求职者信息的一个概况,是招聘者对求职者的情况了解的第一来源。它的重要性是不言而喻的。而事实上,大多数的简历都是不合格的。许多管理者都会抱怨简历很糟糕。那么应该如何让自己的简历做到简洁明了,在充分展示自己的同时又不显得冗余呢?其实,求职者在写简历时应该注意以下几点。

招聘单位看简历,肯定是要看一个真实的求职者。求职者应该完全如实地把信息表达出来,不可以包含任何的虚假信息。这些虚假信息对求职者是没有任何帮助的。即使它们为求职赢得了一次面试机会,也会在面试时露出马脚,使得招聘者更加反感。为人真诚是一个基本的做人原则,它反映了一个人的基本素质。

Java界面程序技术研究 第8篇

一个美观的图形用户界面是软件成功的一个重要因素.因此大多数高级程序设计语言都提供了图形界面,在Java中主要是通过java.awt包和javax.swing包来创建图形用户界面的。

图形用户界面(Graphics User Interface)简称GUI,是用图形的方式,借肋菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令、启动相关操作,并将系统运行的结果同样以图形方式显示给用户的技术。图形用户界面美观生动、操作简单,省去了字符界面用户必须记忆各种操作命令的麻烦,已经成为目前几乎所有应用软件的既成标准。

1.1 Java.awt包和Javax.swing包

在Java 2 SDK中提供了两个API工具包用于创建图形界面,他们分别是AWT包和Swing包。AWT(Abstract Windowing Toolkit),被打包为Java.awt,它一般被称作“重量级组建包”,这是相对于Swing的“轻量级”而言的。Swing包被打包为Javax.swing。需要注意的是Swing保重的组建大部分是从AWT中继承过来的,所以它们本质上一样。

1.2 布局、容器和组建

组件(Component)是允许用户同应用程序用备种方式进行交互的组件。例如,一个常用的控件是按钮。常见的组件还包括文本框、标签、复选框等等。

除了这些常规组件以外,框架窗口也能包含一个标准形式的菜单栏。每进入一个菜单栏就会激发一个下拉式菜单选项,用户可以从中选择,菜单栏总是位于窗口的顶都。虽然外观不同,但菜单栏与其他组件的处理方式是大致相同的,因此一般将其也列入组件范畴。

布局管理器(Layout Manager自动安排组件在容器中的位置。这样,窗口的外观就可以由它所包含的组件来决定,并可以通过布局管理器来排放各个组件。Java中待用的布局管理器有BorderLayout、FlowLayout等等。

1.3 事件驱动编程方法

事件驱动(Event Driven)编程方法是一种随着GUI的风行而产生的一种程序设计方法。它的最基本的思想就是通过“事件响应”对用户事件或者系统事件进行处理响应。

正常的情况下,存在一个监听器监听事件的发生,一旦监听器检测到事件,即转入处理该事件。在多线程技术的支持下.事件驱动模式可以实现前后台程序的并行运行处理。

Java语言支持事件驱动模式,在Java 2的类库中Java.awt.event中包含了可监听的事件类型,而且Java还支持自定义的事件类型监听。在Java中,事件驱动是通过Listener-Handler机制实现的。

2 Java与VC界面编程比较

Java是由C++发展而来的,它保留了C++的大部分内容,类似于C++,但句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了C++的固有缺陷,而产生的一种新的完全面向对象的语言。Java和C++都是能够实现面向对象思想。

而由于C++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了C++的固有缺陷。两者的界面编程区被主要有以下几部分。

2.1 指针

Java程序没有指针,Java程序更安全。

Java语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了C/C++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说Java没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。

2.2 多重继承

Java是通过接口来实现多重继承的,Java类只能单一的继承C++支持多重继承,这是C++的一个特征,它允许多父类派生一个类。Java不支持多重继承,但允许一个类继承多个接口,实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。

2.3 数据类型

Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而C++允许将函数和变量定义为全局的。此外,Java中取消了C/C++中的结构和联合,消除了不必要的麻烦。

2.4 内存管理

Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于C++的new操作符。Java自动进行无用内存回收操作,不需要程序员进行删除。而C++中必须由程序贝释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。Java里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。

2.5 操作符重载

Java不支持操作符重载。操作符重载被认为是C++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。

2.6 缺省函数参数

在C中,代码组织在函数中,函数可以访问程序的全局变量。C++增加了类,提供了类算法,该算法是与类相连的函数,C++类方法与Java类方法十分相似,然而,由于C++仍然支持C,所以不能阻止C++开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。Java没有函数,作为一个比C++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,

2.7 字符串

C和C++不支持字符串变量,在C和C++程序中使用null终止符代表字符串的结束,在Java中字符串是用类对象(string和stringBuffer)来实现的,这些类对象是Java语言的核心。

2.8 类型转换

在C和C++中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。

2.9 异常

C++异常处理很弱,Java支持异常功能强大。

3 Java界面编程的环境和配置

3.1 Java运行平台安装

Java不仅提供了一个运行环境,而且还提供了一个免费的Java软件开发工具集JSDK(Java Software。Development kit),有了这个工具集就可以在Java标准平台(J2se)上进行Java代码程序的开发。JSDK包括生成Java中最基本的小应用程序和应用程序所需要的所有工具和标准Java类库。

下面主要以JSDK1.4版本为例,读者可以到Sun公司站点Http://java.sun.com下载,安装JSDK的同时也建立了Java标准平台。

3.2 Java环境设置

(1)环境变量

对于“Java”代码的Javac编译器所执行的操作一般在Windows操作系统中的命令提示符窗口下运行,若要执行Javac、Java、Javadoc等命令,则需要进行额外的环境变量的设置。

(2)右键点击我的电脑,选择属性,选择高级选项卡,然后选择“环境变量”项进入环境变量设置窗口。

(3)配置用户变量:

1)新建Java_home如C:Program FilesJavajdk1.5.0(JDK的安装路径)。Java_home环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索Java_home变量来找到并使用安装好的jdk。

2)在PATH变量前面加%Java_home%bin;(注意要有分号)。path环境变量。作用是指定命令搜索路径,在命令行下面执行命令如Javac编译Java程序时,它会到path变量所指定的路径中查找到相应的命令程序。需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好path变量后,就可以在任何目录下执行Javac/Java等工具了。

3)新建classpth;%Java_home%lib;(注意分号和点号)。classpth环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们,JVM就是通过classpth来寻找类的。需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到classpth中,当然,当前目录“.”也必须加入到该变量中。

(4)测试环境变量配置是否成功:

开始〉运行〉CMD

键盘敲入:Javac Java

出现相应的命令,而不是出错信息,即表示配置成功。

4 Java界面程序

一些软件的帮助菜单中的“关于”对话框中有连接到软件公司的标签,本章将实现一个具有Web连接功能的标签。要求打开一个标签,在标签的中间有“网易”两个字,然后通过建立连接,使通过点击“网易”这两个字,自动跳转到www.163.com首页。

4.1 实现方法

运用Java.Lang包中的Runtime类可以实现标签的Web连接功能。Runtime类提供了大量能够的方法用于应用程序与其运行环境的交互。本例实用的方法原形如下:

Runtime.getRuntime.exec(“cmd/c start http://www.163.com”);

因为Runtime类中的getRuntime()方法是静态方法,所以不必创建Runtime类的实例,直接调用Runtime.getRuntime()就可以得到一个Runtime对象的引用。接着,调用exec()方法就可以执行参数command的命令。由于采用Windows XP系统,则command=“cmd/c start http://www.163.com.”;具体代码如下:

4.2 部分代码

(1)新建一个Project,取名为Jlink。

(2)新建一个Application,取名为Jlink;主窗口名为MainFrame,标题为Jlink。

(3)向MainFrame的设计窗口中每天加一个JLabel组建,并设置相关属性。

5 结语

相关文章
运动会跳绳通讯稿

运动会跳绳通讯稿

运动会跳绳通讯稿(精选6篇)运动会跳绳通讯稿 第1篇跳出健康、跳出风采胶州市第六实验小学举行跳绳比赛活动随着一生哨响,胶州市第六实验...

3
2025-09-23
艺术匠心范文

艺术匠心范文

艺术匠心范文(精选10篇)艺术匠心 第1篇一篇文学作品的优秀,源于作者深邃而独特的见识,源于作者独具匠心的表现技巧,源于作者精准而细腻的...

1
2025-09-23
英文入学申请书范文

英文入学申请书范文

英文入学申请书范文(精选9篇)英文入学申请书范文 第1篇Application Letter for AdmissionDear Sir or Madam,My name is ______...

2
2025-09-23
远程网络控制范文

远程网络控制范文

远程网络控制范文(精选11篇)远程网络控制 第1篇1 智能网络现场控制单元的基本结构远程控制依附于网络技术, 其控制模式是客户服务器模...

1
2025-09-23
银行面试题自我介绍

银行面试题自我介绍

银行面试题自我介绍(精选5篇)银行面试题自我介绍 第1篇在准备自我介绍时,我们要先明白自我介绍的目的是什么?其实,HR让你做自我介绍,...

1
2025-09-23
移动安全生产工作总结

移动安全生产工作总结

移动安全生产工作总结(精选8篇)移动安全生产工作总结 第1篇近年来,分公司始终把安全生产作为头等大事来抓,坚持“安全第一,预防为主”...

1
2025-09-23
一缕阳光的小学作文

一缕阳光的小学作文

一缕阳光的小学作文(精选6篇)一缕阳光的小学作文 第1篇当我们汲汲于富贵,戚戚于贫贱时,何不让一缕阳光走进我们的心里,晕开满心的疲惫...

1
2025-09-23
医院2016年医疗质控工作计划

医院2016年医疗质控工作计划

医院2016年医疗质控工作计划(精选12篇)医院2016年医疗质控工作计划 第1篇冕宁漫水湾友松医院2016年医疗质控工作计划2016年我院为进一步...

2
2025-09-23
付费阅读
确认删除?
回到顶部