一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)

 面试涉及问题含有:

Java

  JDK8新特性

  集合(哈希冲突、HashMap的原理、自动排序的集合TreeSet)

  多线程安全问题

  String和StringBuffer

JVM

  原理、运行流程、内部结构

Linux

  查询含有某字符串内容的命令grep

  查询进程、GC状态、杀死进程

Hadoop五种节点介绍

--------------------------------------------------------------------------------------------------------

 

JAVA:

1、JDK8新特性:

  • 函数接口Functional Interface

    只包含一个抽象方法的接口,也成为SAM(Single Abstract Method单方法接口)类型的接口。

     例如Runnable接口的run()方法。JDK8新增了许多函数接口,其中一个重要的原因就是支持Lambda表达式。

  • Lambda(拉姆达) 表达式(闭包) − Lambda允许把函数作为一个方法的参数,函数作为参数传递进方法中。

      一种匿名方法,可以将函数接口中的函数作为方法参数处理。在Java中Lambda表达式返回值是一个对象,这个对象必须是单方法接口

      lambda表达式的重要特征:

        可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。

        可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

        可选的大括号:如果主体包含了一个语句,就不需要使用大括号。

        可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

      Lambda的设计可以实现简洁而紧凑的语言结构。最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如:

复制代码
Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );  Arrays.asList( "a", "b", "d" ).forEach( ( String e ) -> System.out.println( e ) );  Arrays.asList( "a", "b", "d" ).forEach( e -> {     System.out.print( e );     System.out.print( e ); } );   String separator = ","; Arrays.asList( "a", "b", "d" ).forEach(      ( String e ) -> System.out.print( e + separator ) );  Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> e1.compareTo( e2 ) ); 等同于 Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> {     int result = e1.compareTo( e2 );     return result; } );
复制代码
  • 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

    Lambda表达式的一种特殊形式。当一个lambda表达式body中仅仅是调用某个方法,此时使用方法引用替代Lambda表达式。从形式上直接引用这个方法,比在lambda表达式body中引用在形式上更简洁。

      方法引用通过方法的名字来指向一个方法。

      方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

      方法引用使用一对冒号 :: 

复制代码
Java 8使用两个新概念扩展了接口的含义:默认方法和静态方法。默认方法使得接口有点类似traits,不过要实现的目标不一样。默认方法使得开发者可以在 不破坏二进制兼容性的前提下,往现存接口中添加新的方法,即不强制那些实现了该接口的类也同时实现这个新加的方法。  默认方法和抽象方法之间的区别在于抽象方法需要实现,而默认方法不需要。接口提供的默认方法会被接口的实现类继承或者覆写,例子代码如下:  private interface Defaulable {     default String notRequired() {          return "Default implementation";      }         }   private static class DefaultableImpl implements Defaulable { }   private static class OverridableImpl implements Defaulable {     @Override     public
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信