Java基础 面试问题集锦
主要是2017年3月份在,在BAT及一线互联网企业校招、内推时,自己在找实习的时候,面试或者电话面试问道的一些问题进行记录,并在查阅其他网上资料进行整理的。
Java
java集合类
- 百度百科: [ 详细说明 ]
- 讲到集合collection之前,我们先分清三个概念:
1.colection 集合,用来表示任何一种数据结构
2.Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口
3.Collections 集合工具类,指的是 java.util.Collections 类。 - 我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。
1.List 关注事物的索引列表
2.Set 关注事物的唯一性
3.Queue 关注事物被处理时的顺序
4.Map 关注事物的映射和键值的唯一性
几个比较重要的接口和类简介
1、List接口
- List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。
- ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。
- LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。
- Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
2、Set接口
- Set关心唯一性,它不允许重复。
- HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。
- LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。
- TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)
3、Queue接口
- Queue用于保存将要执行的任务列表。
- LinkedList 同样实现了Queue接口,可以实现先进先出的队列。
- PriorityQueue 用来创建自然排序的优先级队列。番外篇中有个例子http://android.yaohuiji.com/archives/3454你可以看一下。
4、Map接口
- Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。
- HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。
- Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。
- LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。
- TreeMap 当需要键值对,并关心元素的自然排序时可采用它。
Java的定义
- 百度百科: 详细说明
- Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Java具有简单性、面向对象(封装、继承、多态)、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3]