java面试大总结(1)

  这是我最近一段时间内,由于找工作的原因搜集了一堆关于 java基础的面试内容和题目,都是网上的朋友们的,可能很多朋友都见过了,为了方便以后继续使用,特此把自己的一些总结也也贡献给大家。

呵呵,有点乱,也有点重复的,但总比少的好了!

Java 基础知识<o:p></o:p>

<o:p> </o:p>

面向对象的特征:<o:p></o:p>

抽象,封装、继承、多态<o:p></o:p>

面向对象的特征 <o:p></o:p>

1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。<o:p></o:p>

2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。<o:p></o:p>

3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。<o:p></o:p>

4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。<o:p></o:p>

<o:p></o:p>

int Integer 的区别:<o:p></o:p>

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Intjava的原始数据类型,Integerjavaint提供的封装类。Java为每个原始类型提供了封装类。<o:p></o:p>

原始类型封装类<o:p></o:p>

booleanBoolean<o:p></o:p>

charCharacter<o:p></o:p>

byteByte<o:p></o:p>

shortShort<o:p></o:p>

intInteger<o:p></o:p>

longLong<o:p></o:p>

floatFloat<o:p></o:p>

doubleDouble<o:p></o:p>

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。<o:p></o:p>

<o:p> </o:p>

String类和StringBuffer类的区别<o:p></o:p>

<o:p></o:p>

它们都是处理字符串的类,但是它们有一个最大的区别,那就是,String对象是存储你不能改动的文本字符<o:p></o:p>

,相反,如果你希望改动,则应使用StringBuffer类作为替换<o:p></o:p>

StringBuffer是可变的而String是不可变的.<o:p></o:p>

而且String用得多个的话会占用不同的内存.<o:p></o:p>

:String str = "bb";<o:p></o:p>

str = "aa";<o:p></o:p>

前一个bb的内存地址不变,当又给它赋值为aa时它又指向aa的地址.<o:p></o:p>

StringBuffer就不会这样. <o:p></o:p>

:"=="比较的是两个对象的地址,"equals()"比较的是两个对象的值.<o:p></o:p>

<o:p> </o:p>

集合<o:p></o:p>

Collection 层次结构 中的根接口<o:p></o:p>

Collection 表示一组对象,这些对象也称为 collection 的元素<o:p></o:p>

Java集合的缺点:类型未知<o:p></o:p>

总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:<o:p></o:p>

<o:p> </o:p>

Collection<--List<--Vector<o:p></o:p>

Collection<--List<--ArrayList<o:p></o:p>

Collection<--List<--LinkedList<o:p></o:p>

Collection<--Set<--HashSet<o:p></o:p>

Collection<--Set<--HashSet<--LinkedHashSet<o:p></o:p>

Collection<--Set<--SortedSet<--TreeSet<o:p></o:p>

<o:p> </o:p>

List 是基于Array,可以有重复的值<o:p></o:p>

Vector : 基于ArrayList很重要的一点就是Vectorsychronized”的,这个也是VectorArrayList的唯一的区别<o:p></o:p>

<o:p> </o:p>

ArrayList:基于Array上的链表,但是不同的是ArrayList不是同步的<o:p></o:p>

LinkedList:它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于ArrayList一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势<o:p></o:p>

<o:p> </o:p>

HashSet:虽然SetList都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是SetList的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储<o:p></o:p>

Set总结:<o:p></o:p>

1. Set实现的基础是MapHashMap);<o:p></o:p>

2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象;<o:p></o:p>

<o:p></o:p>

性能时Map所要面对的一个大问题。如果你知道get()时怎么工作的,你就会发觉(比方说)在ArrayList里面找对象会是相当慢的。而这正是 HashMap的强项。它不是慢慢地一个个地找这个键,而是用了一种被称为hash code的特殊值来进行查找的。散列(hash)时一种算法,它会从目标对象当中提取一些信息,然后生成一个表示这个对象的“相对独特”的int hashCode()Object根类的方法,因此所有Java对象都能生成hash codeHashMap则利用对象的hashCode()来进行快速的查找。这样性能就有了急剧的提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值