java程序员面试葵花宝典

时间:2023-05-31 07:47:31 其他范文 收藏本文 下载本文

java程序员面试葵花宝典(精选10篇)由网友“妙音娘子安陵容”投稿提供,下面是小编收集整理的java程序员面试葵花宝典,供大家参考借鉴,欢迎大家分享。

java程序员面试葵花宝典

篇1:java程序员面试葵花宝典

人们常说:机会总是留给有准备的人。作为一个炙手可热的java程序员,在求职之前,一定要明确自己的求职态度,熟悉求职的过程,做好充分的准备,把一些可预见的事情做好。这样在招聘的时候才能充满自信,处变不惊。求职过程中,有些事情是无法预料的,这些事情可能会打乱求职者的心态,影响求职的结果。如果应聘者能够尽早把准备工作做好,即便发生了一些意料之外的事情,也不会有太大的影响,把事态控制在自己所能控制的范围之内。

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

认识职业规划

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

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

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

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

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

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

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

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

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

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

软件人才的职业规划

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

程序员;

软件工程师;

系统分析师;

数据库架构师;

测试工程师;

项目经理。

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

应聘过程

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

掌握基本的应聘流程

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

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

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

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

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

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

作品

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

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

证书

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

个人简历

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

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

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

[java程序员面试葵花宝典]

篇2:java程序员面试之葵花宝典

15、error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

17、abstract class和interface有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

18、heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

19、forward 和redirect的区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

20、EJB与JAVA BEAN的区别?Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

22、JSP中动态INCLUDE与静态INCLUDE的区别?动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

24、GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)

26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor.

27、String s = new String(“xyz”);创建了几个String Object? 两个

28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

public class ThreadTest1{private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1; Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i<2;i++){ Thread t=new Thread(inc); t.start(); t=new Thread(dec); t.start(); } } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+“-inc:”+j); }

private synchronized void dec(){ j--; System.out.println(Thread.currentThread().getName()+“-dec:”+j); }

class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } } class Dec implements Runnable{public void run(){ for(int i=0;i<100;i++){ dec(); } } } }

29、Java有没有goto? java中的保留字,现在没有在java中使用。

30、启动一个线程是用run()还是start()?启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?

SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。

32、应用服务器有那些?

BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat

33、给我一个你最常见到的runtime exception。

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

34、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

35、List, Set, Map是否继承自Collection接口? List,Set是,Map不是

36、说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

37、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronize

[java程序员面试之葵花宝典]

篇3:java面试之葵花宝典

*** JAVA面试题. ***

1、作用域public,private,protected,以及不写时的区别

答:区别如下:

作用域 当前类 同一package 子孙类 其他 package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

不写时默认为friendly2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,

是否可以implements(实现)interface(接口)

答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作

为一个接口,由另一个内部类

实现

3、Static Nested Class 和 Inner Class的不同

答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++

嵌套类最大的不同就在于

是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类

的对象,不需要一个外部类对

象,2 不能从一个static内部类的一个对象访问一个外部类对象

4、&和&&的区别

答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

5、Collection 和 Collections的区别

答:Collection是集合类的上级接口,继承与他的接口主要有 Set 和List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排

序、线程安全化等操作

6、什么时候用assert

答: assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。

在实现中,assertion就是

在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这个

boolean表达式的值为 true;如果该

值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说, assertion

用于保证程序最基本、关

键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,

assertion检查通常是关闭的

7、String s = new String(“xyz”);创建了几个String Object

答:两个,一个字符对象,一个字符对象引用对象

8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少

答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参

数加1/2 后求其floor9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错

答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 +=

1;(可以正确编

译)

10、Java有没有goto

答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法

答:数组没有length()这个方法,有 length的属性。String有有 length()这个方法

12、Overload和Override的区别。Overloaded 的方法是否可以改变返回值的类型

答:方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding

是父类与子类之间多态性的一种

表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类

有相同的名称和参数,我们说该

方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,

父类中的定义如同被“屏蔽”

了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,

则称为方法的重载

(Overloading)。Overloaded的方法是可以改变返回值的类型

13、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()?

它们有何区别

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个

Set是否相等

equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离

的对象的内容和类型相配

的话,返回真值

14、给我一个你最常见到的 runtime exception

答 : 常 见 的 运 行 时 异 常 有 如 下 这 些 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,

UnsupportedOperationException15、error和exception有什么区别

答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可

能指望程序能处理这样的情况

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的

情况

16、List, Set, Map是否继承自 Collection接口

答: List,Set是,Map不是

17、abstract class和interface 有什么区别

答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并

为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以

创建一个变量,其类型是一个

抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。 Abstract 类

的子类为它们父类中的所有

抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为

的其它类可以在类中实现这些

方法

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现

这样的接口而获得。接口中的

所有方法都是抽象的,没有一个有程序体。接口只可以定义 static final成员变量。接口的实

现与子类相似,除了该实现

类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种

接口的方法。然后,它可以在

实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引

用变量的类型。通常的动态联

编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某

对象的类是否实现了接口

18、abstract的method 是否可同时是static,是否可同时是 native,是否可同时是synchronized

答:都不能

---------- 1 ----------

*** JAVA面试题.txt ***

19、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类

(concrete class)

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但

前提是实体类必须有明确的构

造函数

20、构造器Constructor 是否可被override

答:构造器Constructor 不能被继承,因此不能重写Overriding,但可以被重载Overloading21、

是否可以继承String类

答:String类是final类故不可以继承

22、try {}里有一个return语句,那么紧跟在这个try后的 finally {}里的 code会不会被执行,

什么时候被执行,在return

前还是后

答:会执行,在return前执行

23、用最有效率的方法算出 2乘以8等於几

答:2 << 324、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不

答:不对,有相同的hash code25、当一个对象被当作参数传递到一个方法后,此方法可改

变这个对象的属性,并可返回变化后的结果,那么这里到底是 值传递还是引用传递

答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方

法中时,参数的值就是对该对象

的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

26、swtich是否能作用在byte 上,是否能作用在long上,是否能作用在String上

答:witch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数

应该是 int、short、char

或者 byte。long,string 都不能作用于 swtich27、ArrayList 和 Vector 的区别,HashMap 和

Hashtable的区别

答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是

同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而 ArrayList却是原来的一半

就HashMap与 HashTable主要从三方面来说。

一.历史原因:Hashtable 是基于陈旧的Dictionary 类的,HashMap是Java 1.2引进的 Map接口

的一个实现

二.同步性:Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,

不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

28、char 型变量中能不能存贮一个中文汉字?为什么?

答:是能够定义成为一个中文

[java面试之葵花宝典]

篇4:如何面试java程序员

如何面试java程序员

JAVA面试经典问题:Java程序的基本结构

Java语言区分大小写吗?

区分,不管是数据还是标识符或者关键字都区分大小写,例如public不能写成Public, “abc”不能写成”ABC”,int i不能写成INT I等等,

main方法是作什么用处的?

这是程序的入口方法,是由虚拟机自动调用的。

语句必须用分号结束吗?

必须的,但是代码块{}可以用分号结束,也可以不用分号结束

Java中有几种注释,各自的功能

有三种:

单行注释//:加在行首只能注释一行

多行注释/* */:注释多行,但不能嵌套使用

文档注释/** */:用于生成HTML形式的文档,需要配合javadoc命令实现

Java语言的数据类型是强类型还是弱类型?

是强类型,意味着每一个变量都必须明确声明数据类型。

Java语言中数据类型的划分?有什么区别?

分成基本类型和引用类型两大类,

基本类型:有8种,只能存储单一的值,不以对象的形式存在

引用类型:除了基本类型之外其他的都是引用类型,能够存储复杂数据类型,以对象的'形式存在

基本类型都有哪8种类型?

布尔类型:boolean 占1字节

字符类型:char 占2字节

整型:byte 占1字节 short 占2字节 int 占4字节 long 占8字节

浮点型:float 占4字节 double 占8字节

布尔值可不可以用0或者非0数代替?

不可以,布尔值只能是true和false,不能使用数字,这和C语言是不一样的。

直接写个整数10默认是什么类型的?

整型的直接量例如10,100等默认的数据类型都是int型

如何让一个整型的直接量变成long型的?

在直接量后面加大写L后者小写l,例如10L

整型数据在程序中直接使用可以使用什么进制?

10进制

,8进制

,16进制

,但不能使用二进制

浮点运算在Java中有没有误差?

有误差,所以精密运算请使用BigDecimal类

直接写一个3.14的直接量是什么数据类型的?

篇5:java程序员面试自我介绍

java程序员应试者应充分利用各种个人资源,想了解java程序员面试指南?除了前面提到的应试者面带微笑、目光交流、坐姿端正等表情、身体语言外,请以沉稳平静的声音、以中等语速、以清晰的吐字发音、以开朗响亮的声调给考官以愉悦的听觉享受,声音小而模糊、吞吞吐吐的人,一定是胆怯、紧张、不自信和缺乏活力与感染力的。面试中java程序员自我介绍的重要性:通过自我介绍,主动地向面试考官推荐自己,这是面试组成结构的重要内容,同时也是面试测评的重要指标。下面一起来透视java程序员面试指南,java程序员自我介绍。

java程序员面试指南--实力是关键

可以分为实际操作的能力和理论上的知识。虽然上机很少,但是毫无疑问的是,如果你在IDE下很强,那么你就有很强的自信。有自信不一定行,但没有自信一定不行,我想大多数人都是这样认为的吧!理论的东西你可以花点时间系统的研究一下,不过如何才算系统呢?我也不知道,我是把《java2核心技术》看了两遍。

java程序员面试指南--态度是成功的催化剂

态度说穿了就是面试技巧问题,你的实际态度不重要,重要的是如何让他认为你态度不错,是个“知书达理”的好孩子。将来是否好管理是老板一类的人最在意的。

java程序员面试指南--经验是能力体现

这个没有什么好说的,一般来说经验越多,能力越强。如果他要求的工资不高的话,当然优先啦!小公司通常都是这么想的。

java程序员面试指南--运气也需要

我有同学,大学毕业之后在广州找了两个月没有找到工作,主要原因一是基础差点,加上没有经验,笔试,面试都过不去。偏偏有一次他去应聘,笔试答完之后,本来是技术员给他面试的,经理刚好过来。就问了他是哪里人,大学有没有补考之类的问题,五分钟之后就让他下个星期过来上班,月薪2500。后来他了解了一下,经理录用他的理由很简单,我同学是安徽人,经理接触过的安徽人给他的印象很好,什么踏实,肯干,任劳任怨。总之就是安徽人有优先权。不过我怎么感觉主要的理由是“比较听话”。

java程序员自我介绍--报出自己的姓名和身份

可能应试者与面试考官打招呼时,已经将此告诉了对方,而且考官们完全可以从你的.报名表、简历等材料中了解这些情况,但仍请你主动提及。这是礼貌的需要,还可以加深考官对你的印象。

java程序员自我介绍-- 简单地介绍一下你的学历、工作经历等基本个人情况

请提供给考官关于你个人情况的基本的、完整的信息,如:学历、工作经历、家庭概况、兴趣爱好、理想与报负等。 这部分的陈述务必简明扼要、抓住要点。例如介绍自己的学历,一般只需谈本专科以上的学历。工作单位如果多,选几个有代表性的或者你认为重要的介绍,就可以了,但这些内容一定要和面试及应考职位有关系,

请保证叙述的线索清晰,一个结构混乱、内容过长的开场自,会给考官们留下杂乱无章、个性不清晰的印象,并且让考官倦怠,削弱对继续进行的面试的兴趣和注意力。

应试者还要注意这部份内容应与个人简历、报名材料上的有关内容相一致,不要有出入。在介绍这些内容时,应避免书面语言的严整与拘束,而使用灵活的口头语进行组织。这些个人基本情况的介绍没有对或错的问题——都属于中性问题,但如果因此而大意就不妥了。

java程序员自我介绍-- 以经验来说明自己的能力

接下来由这部份个人基本情况,自然地过渡到一两个自己本科或工作期间圆满完成的事件,以这一两个例子来形象地、明晰他说明自己的经验与能力,例如:在学校担任学生干部时成功组织的活动;或者如何投入到社会实践中,利用自己的专长为社会公众服务;或者自己在专业上取得的重要成绩以及出色的学术成就。

java程序员自我介绍--说明应聘该职位的原因

接下来要着重结合你的职业理想说明你应考这个公务员职位的原因,这一点相当重要。你可以谈你对应考单位或职务的认识了解,说明你选择这个单位或职务的强烈愿望。原先有工作单位的应试者应解释清楚自己放弃原来的工作而做出新的职业选择的原因。你还可以谈如果你被录取,那么你将怎样尽职尽责地工作,并不断根据需要完善和发展自己。当然这些都应密切联系你的价值观与职业观。不过,如果你将自己描述为不食人间烟火的、不计较个人利益的“圣人”,那么考官们对你的求职动机的信任,就要大打折扣了。

对于 java程序员自我介绍,这里我们介绍了一条清晰的线索,便于你组织你的自我介绍。为了保证结构明确,有条条有理,你可以多用短句子以便于口语表述,并且在段与段之间使用过渡句子,口语也要注意思路、叙述语言的流畅,尽量避免颠三倒四,同一句话反复说几遍的“粘糊劲,同时不要用过于随便的表述。而在java程序员面试指南里建议读者不要表示将来踏上工作岗位,将“一定要……“绝对……诸如此类的保证,似乎在做就职演讲。 这些例子很多画蛇添足似的自我介绍不但不会为你的形象增添色彩,会“越抹越黑”!。

范文参考:

我叫XXX,今年21岁,毕业于XX解放军信息工程大学计算机科学与技术专业,拥有扎实的Core Java基础,良好的编程风格;熟悉JSP+Servlet+JavaBean模式的WEB开发;熟悉Struts,Hibernate,Spring等开源框架,了解EJB; 熟悉Tomcat,Jboss服务器等,熟悉基于Linux及Unix环境下的软件开发。

在校期间有多次社会实践经历,曾参与过学院网上虚拟实验室开发的需求分析,大学期间多次担任多课程的课代表。虽然实际工作经验不是很足,但军校四年培养了我充分的自信心和敬业精神以及扎实的学科基础知识和较强的专业技能,四年军校生活中,我严格要求自己,自觉、遵纪、守时。本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。能在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。

请各位考官多多指教,谢谢!

篇6:java程序员面试问题

1、谈谈final, finally, finalize的区别。

final―修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

finally―再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize―方法名。Java 技术允许使用 finalize 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

3、Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1

注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap

就必须为之提供外同步。

4、&和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

5、HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap

就必须为之提供外同步。

6、Collection 和 Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口.

7、什么时候用assert。

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:

assert(a >0); // throws an AssertionError if a <= 0

断言可以有两种形式:

assert Expression1 ;

assert Expression1 : Expression2 ;

Expression1 应该总是产生一个布尔值。

Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

javac -source 1.4 Test.java

要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。

要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

8、GC是什么? 为什么要有GC? (基础)。

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

9、String s = new String(“xyz”);创建了几个String Object?

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

10、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

11、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

12、sleep() 和 wait() 有什么区别? 搞线程的最爱

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

13、Java有没有goto?

Goto―java中的保留字,现在没有在java中使用。

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

数组没有length()这个方法,有length的属性。

String有有length()这个方法。

15、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

16、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

17、给我一个你最常见到的runtime exception。

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

18、error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

19、List, Set, Map是否继承自Collection接口?

List,Set是

Map不是

20、abstract class和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与

[java程序员面试问题]

篇7:JAVA程序员面试经验

JAVA程序员面试经验

以下要介绍的是一份JAVA程序员面试经验

1.数据结构,主要涉及java.util包中的一些集合类。

2.OO。按照他的一段描述建模。主要是类的.继承关系以及接口实现。还有构造函数和析构函数在继承体系中的作用等等。

3.Java和C++在内存管理的不同之处。

4.JAVA的多线程机制。

5.反射机制的作用,以及在哪些方面使用了反射机制。

6.网络:TCP/IP协议,

HTTP访问机制。还问到了SSL之类。

7.DesignPatten:用过几种DesignPattern,J2EE中有哪些Pattern已经自动实现等等

8.数据库:比较EJB中的QL语言和SQL。还写了一段QL查询语句。

9.CMP中Home接口,Remote接口是如何实现的。

10.软件工程:常见的开发模型。平常项目管理中软件工程的运用。

技术面试大概从3:40开始,面完已经4:50了。最后面试官说看你的项目经历,再安排一个.Net技术面试。反正到此地 步,只能随意。不一会他回来说,有点晚了,.Net面试就取消吧,不过还有一个英语面试。小吃了一惊,因为根据sirily的 面经,不应该有英语面试的。还好,问了一些很简单的问题,马马虎虎混了过去。

篇8:java程序员面试自我介绍

我喜欢篮球和乒乓球,曾担任大学校篮球队队员。在篮球队中深刻体会到在大家共同努力下击败对手的成就感!

对于计算机有着狂热的喜爱,虽掌握软件众多,但对编程情有独钟!在每一次解决了问题后都有一种成就感!我喜欢这种感觉,让我能沉迷于我的代码的世界中!

爱好程序设计,喜欢开发自已的小型产品,追求技术上的满足感;稳固的架构,健壮的代码,团结的合作,是我的不懈追求。

有良好的编程习惯,以及程序错误控制和解决能力,我爱程序员这个岗位,当每天敲着代码,听着音乐,是很快乐的

用心工作,用心生活!我可能不是最好的,最合适的,我觉得我是最有潜力的!,一起加油!

>>>下一页更多精彩“Java程序员面试时必考技术问题及答案”

篇9:java程序员面试自我介绍

本人叫小冰,今年22岁,现在是吉林大学软件开发与信息管理专业方向的三年级学生,对软件开发怀有浓烈的兴趣,且对JAVA语言尤其熟悉,能熟练使用jsp、struts、struts2、sring2和hibernate3等流行的编程技术,并且不断学习新技术来继续丰富自已的知识,目前已经独自编写了好几个项目,例如:基于J2EE的图书管管理系统,网络商城和库存管理系统等,基于J2SE的教师管理系统,生产线故障管理系统等。拥有一定的实践经验。但仍觉得经历甚浅,希望通过与社会接触,了解社会与软件之间的需求关系,通过更多的项目实践来提高自身的软件设计能力和编程技术。

看了java程序员面试自我介绍的还看了:

篇10:程序员面试宝典java

map,set,list,等JAVA中集合解析(了解)

在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系:

java.util

+Collection 这个接口extends自 --java.lang.Iterable接口

+List 接口

-ArrayList 类

-LinkedList 类

-Vector 类 此类是实现同步的

+Queue 接口

+不常用,在此不表.

+Set 接口

+SortedSet 接口

-TreeSet 类

-HashSet

+Map 接口

-HashMap 类 (除了不同步和允许使用 null 键/值之外,与 Hashtable 大致相同.)

-Hashtable 类 此类是实现同步的,不允许使用 null 键值

+SortedMap 接口

-TreeMap 类

以下对众多接口和类的简单说明:首先不能不先说一下数组(Array)

一、Array , Arrays

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、

效率高,但容量固定且无法动态改变。

array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array。

arrays中拥有一组static函数,

equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。

fill():将值填入array中。

sort():用来对array进行排序。

binarySearch():在排好序的array中寻找元素。

System.arraycopy():array的复制。

二、Collection , Map

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。

1、Collection 和 Map 的区别

容器内每个为之所存储的元素个数不同。

Collection类型者,每个位置只有一个元素。

Map类型者,持有 key-value pair,像个小型数据库。

2、Java2容器类类库的用途是“保存对象”,它分为两类,各自旗下的子类关系

Collection

--List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。

--ArrayList / LinkedList / Vector

--Set : 不能含有重复的元素

--HashSet /TreeSet

Map

--HashMap

--HashTable

--TreeMap

Map----一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个“值”是一个Map即可。

Collection下 1.迭代器

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

2.List的功能方法

List(interface): 次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。

ArrayList: 由数组实现的List。它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。

LinkedList: 由列表实现的List。对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。

3.Set的功能方法

Set(interface): 存入Set的每个元素必须是唯一的,这也是与List不同的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

HashSet: HashSet能快速定位一个元素,存入HashSet的对象必须定义hashCode()。

TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。

3、其他特征

* List,Set,Map将持有对象一律视为Object型别。

* Collection、List、Set、Map都是接口,不能实例化。

继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。

* vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。

三、Collections

Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。

相当于对Array进行类似操作的类Arrays。

如,Collections.max(Collection coll); 取coll中最大的元素。

Collections.sort(List list); 对list中元素排序

四、如何选择?

1、容器类和Array的区别、择取

* 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。

* 一旦将对象置入容器内,便损失了该对象的型别信息。

2、

* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();

Vector总是比ArrayList慢,所以要尽量避免使用。

* 在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。

HashTree存在的唯一理由:能够维护其内元素的排序状态。

* 在各种Maps中

HashMap用于快速查找。

* 当元素个数固定,用Array,因为Array效率是最高的。

结论:最常用的是ArrayList,HashSet,HashMap,Array。而且,我们也会发现一个规律,用TreeXXX都是排序的。

注意:

1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。

2、Set和Collection拥有一模一样的接口。

3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)

4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。

5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。

HashMap会利用对象的hashCode来快速找到key。

* hashing

哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。

我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。

发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个表。

6、Map中元素,可以将key序列、value序列单独抽取出来。

使用keySet()抽取key序列,将map中的所有keys生成一个Set。

使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。

===List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。

Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充

[程序员面试宝典java]

星座成“80后”面试“宝典”

面试自我介绍宝典

java实习面试简历怎么写

腾讯实习生求职笔试面试经历

java述职报告范文

PHP笔试题目及答案

程序员面试范文

九城程序员笔试经历

java开发面试题型与技巧

富士康Java开发面试题目

java程序员面试葵花宝典
《java程序员面试葵花宝典.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【java程序员面试葵花宝典(精选10篇)】相关文章:

程序员面试宝典 csdn2023-03-11

名企精英们的跳槽经验2023-04-16

软件测试项目经验怎么写2023-03-19

斗山笔试经验文理科笔经2022-05-07

腾讯笔试题(一、二)2023-08-21

java培训班心得体会2023-11-05

java飞机大战心得体会2023-07-20

常见华为面试题2022-12-30

腾讯实习生笔试经验谈2022-08-07

微软实习生笔试题2023-06-18

点击下载本文文档