image.png
详细版脑图


提问环节

  1. Java中接口技术是什么?它解决了什么问题?是怎么实现的?它的演变历程(Java SE 8中支持静态方法、默认方法等等)?
  2. lambda表达式技术是什么?它解决了什么问题?是怎么实现的?
  3. 函数式接口是什么?它解决了什么问题?是怎么实现的?
    • 函数式接口只是一个概念,特指那些只包含一个抽象方法的接口,它可以被隐式地转换成lambda表达式,通过@FunctionalInterface注解来声明
    • 它用来支持lambda表达式,以便让它以更加简洁方式来表示:实现函数式接口的类的实例对象
    • 参考:详解Java8函数是接口
  4. 方法引用是什么时候引入的?它解决了什么问题?是怎么实现的?
    • 方法引用是Java SE 8引入的,它是lambda表达式的一个补充
    • 是用于简化lambda表达式的写法的“语法糖”
    • 所以它也是编译器行为,在编译时将“方法引用”解析为具体的lambda表达式,再根据lambda表达式解析
  5. 对于几种循环方式,while / for / foreach / stream流forEach 哪种方式在什么场景下效率更高?为什么?
  6. 在最常遇到的场景,如数组/数组列表的:排序(顺序逆序)、过滤(根据元素某个属性值)获取单个/多个、批量处理(如修改时间格式、拼接返回数据等)?
  7. Comparator这个接口它解决了哪些问题?有什么特别之处?实战运用?
    • 如上面的脑图中的介绍,Comparator接口包含了很多非常方便的静态方法来创建比较器
    • 在实战中,主要用于根据需要对数组/数组列表进行排序
    • 实战运用参考上述对数组处理
  8. 代理底层是如何实现的?它主要解决了哪些问题?实战运用?
  9. ArrayList和LinkedList底层实现有什么不同?