今天牛气了,面试了一家央企的单位,虐死我了,面试官司拿着面试题从Java问到操作系统,也是醉了,顺便记了一下几个面试题,回答的不够全面,特来总结一哈:

1.ArrayList和LinkedList的区别:

    (1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 

    (2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 

    (3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

      (4)ArrayList的时间复杂度是 O(1),而 LinkedList 是 O(n)。

2.Map、Set和List的区别:

    (1)list和set之间的相似性,list和set都是单列集合,他们有一个共同的父接口---collection。

    (2)list是依次列出一个结合中的所有的元素,若集合中有重复的,同样列出,有序;

    (3)set列出的集合中是不允许有重复的,也就是说里面有一个A对象和一个B对象,若是A.equals(B)==ture,那么用set方法列出的只会有一个,set集合默认是有序的,正向排序。

一般遍历set里面的元素时使用iterator map<key,value> 它是一个双列的集合。里面有一个key,和一个value,其中value是真正存储值得变量。

    (4)map存储的数据是无序的,其键(key)不能重复,但是其值(value)是可以重复的。

3.用过什么定时器?

      (1)第一种方式利用Timer和TimerTask

       用TimerTask定时进行某些操作的APP,即使退出了,TimerTask中依然会运行一会,但是不能长时间运行

    (2)Alarmmanager

       AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播

一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,

通常我们使用 PendingIntent,PendingIntent可以理解为Intent的封装包,简单的说就是在Intent上在加个指定的动作。

在使用Intent的时候,我们还需要在执行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的话

就是将这个动作包含在内了。

4.volatile的用法:

Volatile

5. 说出 JDK 1.7 中的三个新特性?
虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性,如 try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关闭,Java 会自动关闭。Fork-Join 池某种程度上实现 Java 版的 Map-reduce。允许 Switch 中有 String 变量和文本。菱形操作符(<>)用于类型推断,不再需要在变量声明的右边申明泛型,因此可以写出可读写更强、更简洁的代码。另一个值得一提的特性是改善异常处理,如允许在同一个 catch 块中捕获多个异常。

6.说出 5 个 JDK 1.8 引入的新特性?
Java 8 在 Java 历史上是一个开创新的版本,下面JDK 8 中 5 个主要的特性:
Lambda 表达式,允许像对象一样传递匿名函数
Stream API,充分利用现代多核 CPU,可以写出很简洁的代码
Date 与 Time API,最终,有一个稳定、简单的日期和时间库可供你使用
扩展方法,现在,接口中可以有静态、默认方法。
重复注解,现在你可以将相同的注解在同一类型上使用多次。