`
邱铁军
  • 浏览: 43519 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java面试宝典有点难度

阅读更多
1:string, stringbuffer stringbuilder的区别, string 不可修改的底层原因
   string 长度不可改变
   stringbuffer 线程安全情况下的长度改变
   stringbuilder 非线程安全情况下的长度改变,单线程有限考虑
  
   底层原因:string不但类本身被定义为final类,而去其中的属性跟方法都被定义为final,所以其长度固定。

2:list, set, map区别
   List,Set,Map将持有对象一律视为Object类别。
   Collection、List、Set、Map都是接口,不能实例化。
   继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
   vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection接口:是最基本的集合接口,其中的一些允许元素相同一些不允许相同,一些能排序而一些不能排序,JAVA SDK不允许直接继承collection接口,但是允许继承他们的子接口list跟set。
 如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    }
list接口是有序的Collection,使用此接口能够精确的控制插入元素,同时用户也可以使用索引进行访问。这类似于array。但是跟SET不同,list允许有相同的元素。

linklist实现list接口,允许null元素,并且多了很多额外的方add(),remove(),insert方法在 LinkedList的首部或尾部,这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

ArrayList类
  ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

Vector类
  Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

set接口,不允许有重复元素的collection,很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
  请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

MAP接口,Map没有继承Collection接口,Map提供key到value的映射。个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

3:ArrayList,Vector和LinkedList的存储性能和特性
ayyaylist跟vectior都是使用数组方式存储数据的,次数组元素大于实际的数据元素便于添加元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,由于vector是现成安全的所以速度上要较arraylist慢,LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快
4:Conncurrent的包理解。

5:java抽象类(abstract)和接口(interface)的本质区别
    抽象类中可以有自己的构造函数,都是接口没有,
    抽象类中可以有普通成员变量,但是接口没有,只有静态的不可改变的变量
    抽象类中可以定义普通方法,但是接口中只能定义抽象方法
   抽象类中可以包含静态方法,但是接口中不可以
  一个是多继承,另一个事单继承
6  Java中的类变量、成员变量、实例变量、局部变量、静态变量、全局变量
一个类中大概有2部分组成,一个是属性,一个是方法
在变量定义部分定义的变量叫累的成员变量,成员变量在整个类中有效,(全局变量应该是成员变量的俗称)在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效.

成员变量又分为
实例变量

类变量(static静态变量).

class One
{
float x; //x为实例变量
static int y; //只要有关键字static, y为类变量
}
总的概括就是:在变量定义位置定义的变量为类的成员变量,成员变量又分为2类,一类值类变量,(static的静态变量),一类是实例变量。
Comparable与Comparator区别:
这2个都是用来实现集合中的排序的的,comparable只是集合内壁的排序,comparator是集合外部的排序需要在外部实现其接口






分享到:
评论

相关推荐

    Java程序员面试宝典

    《Java程序员面试宝典》主要内容简介:目前许多开发者对Java语言及其底层原理掌握不牢固,在面试过程中经常漏洞百出,无法取得好成绩。而招聘单位为了得到高素质的员工往往使出浑身解数,采用各种形式的面试考察求职...

    JAVA面试宝典 Android面试宝典

    目前许多开发者对Java语言及其底层原理掌握不牢固,在面试过程中经常漏洞百出,无法取得好成绩。而招聘单位为了得到高素质的员工往往使出浑身解数,采用各种形式的面试考察求职者,这让面试难度大大增加。求职者要想...

    精品--JAVA 面试宝典和简历模板V3.zip

    这份"精品--JAVA 面试宝典和简历模板V3.zip"压缩包文件,显然是为准备Java面试和求职者精心准备的资源集合。下面我们将深入探讨Java面试中的核心知识点以及如何制作一份出色的Java程序员简历。 面试宝典通常会涵盖...

    java面试宝典.rar

    《Java面试宝典》是一部深度剖析Java技术面试的权威指南,尤其对于想要在Java领域求职的开发者来说,它提供了一套全面的知识体系和面试策略。这份文档包含了SSH(Struts、Spring、Hibernate)三大框架、EJB...

    java面试宝典 程序员笔试

    "Java面试宝典 程序员笔试"是专门为准备Java相关职位的求职者设计的资源,它涵盖了多个关键知识点,旨在帮助求职者充分准备面试和笔试。 1. **Java基础**:这是Java学习的起点,包括基本语法、数据类型、控制流(如...

    Java面试宝典2012版

    《Java面试宝典2012版》是针对Java开发者面试精心编纂的一份参考资料,旨在帮助求职者全面准备并顺利通过技术面试。这份宝典涵盖了Java编程的基础知识、核心概念以及高级特性,旨在帮助面试者提升自己的技能,增强...

    Java面试宝典2018年最新版 .zip

    《Java面试宝典2018年最新版》是一份专为寻找Java相关工作的人士精心准备的资源,它涵盖了Java编程语言的核心概念、高级特性、框架应用以及面试常见问题和解答策略。这份资料旨在帮助求职者提升对Java技术的理解,...

    java面试宝典.7z

    这本面试手册包含了 Java 基础、Java 集合、JVM、Spring、Spring Boot、SpringCloud、Mysgl、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度参差,满足初中高级 Java 工程师的面试需求。

    Java面试宝典2018版【超全】很不错.zip

    这份"Java面试宝典2018版【超全】很不错"的压缩包文件,显然是为了帮助求职者或者开发者准备Java相关的面试而精心编排的。下面,我们将详细探讨一些可能包含在其中的重要知识点。 首先,基础部分是面试的必考项,...

    2014JAVA面试必备项目描述如何讲解整理完善面面俱到应有尽有

    5. "Java面试宝典2013版.doc"和"Java面试葵花宝典2013版.doc":这两个文档可能是两份不同版本的面试指南,提供了当时的Java面试热点和技术趋势。 6. "编写简历,项目事项.doc":这部分可能指导如何有效地编写简历,...

    Java程序员面试笔试宝典-何昊

    本书还可能涵盖了其他Java面试常考知识点,如集合框架、多线程编程、设计模式、JVM原理、IO/NIO流、反射机制、数据库操作以及算法和数据结构等。通过阅读《Java程序员面试笔试宝典-何昊》,读者不仅可以巩固基础,还...

    外出就业找工作面试宝典 java

    【Java面试宝典核心知识点详解】 Java面试宝典主要针对准备就业的求职者,特别是针对Java程序员的面试准备。这份宝典旨在提供实用且全面的面试题库,涵盖大部分Java面试可能遇到的问题,以帮助求职者提升面试成功率...

    Java程序员面试宝典 算法题

    Java 程序员面试宝典 算法题 从给定的文件信息中,我们可以总结出以下知识点: 一、算法思想 1.1 排序 * 排序算法笔试模拟题精解之“数组变换” + 题目描述:给出一个长度为 n 的数组,和一个正整数 d。你每次...

    Java面试葵花宝典-打印.doc

    Java面试葵花宝典 这是一份 Java 面试宝典,涵盖了 Java 基础知识、语法、数据类型、运算符、控制结构、方法、数组、字符串、异常处理等多方面的知识点。 1. Java 基础部分 Java 是一种面向对象的编程语言,它...

    2021最新Java程序员面试题

    在当前的IT行业中,Java程序员面试已经逐步升级为考察应聘者对多个技术栈的综合理解和应用能力。以下内容根据提供的文件信息整理出的Java程序员面试知识点: 1. MyBatis框架 - MyBatis定义:MyBatis是一个支持定制...

    葵花宝典(JAVA).rar

    【标签】"java面试"进一步明确了这份文档的核心内容,即为Java开发者提供面试指导,帮助他们理解和掌握面试过程中可能出现的问题类型以及应对策略。 【压缩包子文件的文件名称列表】中的"葵花宝典(JAVA).doc"是文档...

    面试题库简历教程JAVA

    总结起来,这个压缩包是一个综合性的Java面试准备资源库,包含了从基础理论到实际应用的多个层面,对求职者来说是提升面试表现和简历质量的宝贵参考资料。通过学习和实践其中的内容,可以有效提升Java开发者的技术...

    JAVA程序员面试大全

    首先,"Java程序员面试之葵花宝典.doc"可能包含了从基础到高级的JAVA面试问题,涵盖了语言特性、类库使用、数据结构、算法分析、并发编程、设计模式等多个方面。例如,你可能会遇到关于JAVA内存模型的问题,如JVM的...

Global site tag (gtag.js) - Google Analytics