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]