您的位置:首页 > 职场人生

面试题整理

2015-07-24 13:29 501 查看
一、抽象

面向对象软件开发的一个基本方法就是抽象,到底什么是抽象呢? 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。要抽象,就必须进行比较,没有比较就无法找到共同的部分。 共同特征是指那些能把一类事物与他类事物区分开来的特征,这些具有区分作用的特征又称本质特征。因此抽取事物的共同特征就是抽取事物的本质特征,舍弃不同特征。

二、封装、继承、多态

封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,也不能对类中非公共的数据进行操作。这样可以防止外部的干扰和误用。

封装的目的在于将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只须用设计者提供的接口来访问对象。同时减少了程序各部分之间的依赖性,降低了程序的复杂性,由于隐藏了其内部信息的细节,使内部信息不易受到破坏,安全性有了保证,同时也为外界访问提供了简单方便的界面。

继承是一种由已有类创建新类的机制。

继承:利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它 自己的状态和行为。从现有类出发定义一个新类,称为新类继承了现有的类,其中被继承的现有类叫做超类(superclass)或父类,由继承而得到的类称为子类(subclass)。

多态性是指允许不同类的对象对同一消息作出响应。多态的实现包含了方法的继承、方法的重载,以及父类父类引用指向子类对象。

三、说说JDK、JRE、JVM的区别

JDK: Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

JRE:Java Runtime Enviromental(java运行时环境)。所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含编译器、调试器和其它工具。

我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集。

四、Java集合

1、说说Java集合类的框架图

2、list和set的区别

List:元素有序,可重复,因为其中元素有索引。

set: 无序(无下标),不可重复。

3、Set、map区别

Set 是存储集合。map是存储键值对。

4、ArrayList和LinkedList区别

ArrayList:底层的数据结构使用的是数组。特点:查询速度很快。但是增删稍慢。线程不同步(线程无联系),不安全。

LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。

Vector:底层是数组数。线程同步。被ArrayList替代了。因为效率低,但是安全

(List集合判断元素是否相同,依据是元素的equals方法。当存储时会自动调用。)

5、HashSet、TreeSet区别

HashSet底层使用的是hash表。

TreeSet底层使用的是红黑二叉树。可以对set集合中的元素进行自动排序

6、HashSet的存储机制

Hashmap的底层是hash表。当存储相同对象时,先判断对象的hashCode是否相等,如果hashCode不等,则为不同对象,直接返回,如果hashCode相等,则接着判断equals。如果equals返回为0,则视为相同对象。

7、HashMap、TreeMap

HashMap底层是表,线程不同步,HashMap允许存入null键值

reeMap:底层是二叉树结构,线程不同步,且具有顺序(对键进行了排序)。

五、JavaI/O

六、多线程

七、网络编程

八、反射
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: