最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面試題沖刺第十七天--基礎(chǔ)篇3

 更新時間:2021年08月06日 16:48:18   作者:_陳哈哈  
這篇文章主要為大家分享了最有價值的三道java基礎(chǔ)面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下

面試題1:JDK1.8的新特性有哪些?

接口的默認和靜態(tài)方法:

Java 8允許我們給接口添加一個非抽象的方法實現(xiàn),只需要使用 default關(guān)鍵字即可,這個特征又叫做擴展方法。

public interface JDK8Interface {  
    // static修飾符定義靜態(tài)方法  
    static void staticMethod() {  
        System.out.println("接口中的靜態(tài)方法");  
    }  
    // default修飾符定義默認方法  
    default void defaultMethod() {  
        System.out.println("接口中的默認方法");
    }
}

Lambda 表達式:

例如:(x, y) -> { return x + y; };λ表達式有三部分組成:參數(shù)列表,箭頭(->),以及一個表達式或語句塊。

在Java 8 中你就沒必要使用這種傳統(tǒng)的匿名對象的方式了,Java 8提供了更簡潔的語法,lambda表達式:

Collections.sort(names, (String a, String b) -> {
      return b.compareTo(a);
});

方法與構(gòu)造函數(shù)引用:

Java 8 允許你使用 :: 關(guān)鍵字來傳遞方法或者構(gòu)造函數(shù)引用,上面的代碼展示了如何引用一個靜態(tài)方法,我們也可以引用一個對象的方法:

converter = something::startsWith;
String converted = converter.convert("Java");
System.out.println(converted);

函數(shù)式接口:

所謂的函數(shù)式接口,當然首先是一個接口,然后就是在這個接口里面只能有一個抽象方法。

Annotation 注解:支持多重注解:

很多時候一個注解需要在某一位置多次使用。

@YourAnnotation
@YourAnnotation
public void test(){
    //TODO
}

新的日期時間 API:

Java 8新的Date-Time API (JSR 310)受Joda-Time的影響,提供了新的java.time包,可以用來替代java.util.Date和java.util.Calendar。

一般會用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration這些類,對于時間日期的改進還是非常不錯的。

Base64編碼:

Base64編碼是一種常見的字符編碼,可以用來作為電子郵件或Web Service附件的傳輸編碼。

在Java 8中,Base64編碼成為了Java類庫的標準。Base64類同時還提供了對URL、MIME友好的編碼器與解碼器。

JavaScript引擎Nashorn:

Nashorn允許在JVM上開發(fā)運行JavaScript應用,允許Java與JavaScript相互調(diào)用。

Stream的使用:

Stream API是把真正的函數(shù)式編程風格引入到Java中。其實簡單來說可以把Stream理解為MapReduce,當然Google的MapReduce的靈感也是來自函數(shù)式編程。她其實是一連串支持連續(xù)、并行聚集操作的元素。從語法上看,也很像linux的管道、或者鏈式編程,代碼寫起來簡潔明了,非??釒?!

Optional:

Java 8引入Optional類來防止空指針異常,Optional類最先是由Google的Guava項目引入的。Optional類實際上是個容器:它可以保存類型T的值,或者保存null。使用Optional類我們就不用顯式進行空指針檢查了。

擴展注解的支持:

Java 8擴展了注解的上下文,幾乎可以為任何東西添加注解,包括局部變量、泛型類、父類與接口的實現(xiàn),連方法的異常也能添加注解。

并行(parallel)數(shù)組:

支持對數(shù)組進行并行處理,主要是parallelSort()方法,它可以在多核機器上極大提高數(shù)組排序的速度。

編譯器優(yōu)化:

Java 8將方法的參數(shù)名加入了字節(jié)碼中,這樣在運行時通過反射就能獲取到參數(shù)名,只需要在編譯時使用-parameters參數(shù)。

其他核心 API 的改進

Java IO改進

一些IO改進包括:

  • Files.list(Path dir) 返回延遲填充的Stream,其元素是目錄中的條目。
  • Files.lines(Path path) 從文件中讀取所有行作為流。
  • Files.find() 通過在以給定起始文件為根的文件樹中搜索文件,返回通過路徑延遲填充的Stream。
  • BufferedReader.lines() 返回一個Stream,其元素是從此BufferedReader中讀取的行。

集合 API 的改進

我們已經(jīng)看到了 forEach()方法和用于集合的 Stream API。Collection API還有一些新方法是:

  • Iterator forEachRemaining(Consumer action)在所有元素都已處理完畢或該動作引發(fā)異常之前,對每個剩余元素執(zhí)行給定操作的默認方法。
  • Collection removeIf(Predicate filter)刪除此集合中所有滿足特定條件的元素的默認方法。
  • Collection spliterator() 該方法返回Spliterator實例,該實例可用于順序或并行遍歷元素。
  • map replaceAll(),compute(),merge()方法。
  • 具有鍵沖突的HashMap類的性能改進

面試題2:什么是內(nèi)部類?內(nèi)部類的作用?

將一個類定義在另一個類或者另一個方法里面,這樣的類稱著內(nèi)部類;值得注意的是,內(nèi)部類能夠訪問外部類的所有成員,包括private修飾的。

舉例:把類Inner定義在類Outer中,類Inner就被稱為內(nèi)部類。

class Outer {
    class Inner {
    }
}

注意:

內(nèi)部類是一個編譯時的概念,一旦編譯成功,就會成為完全不同的兩類。對于一個名為 outer 的外部類和其內(nèi)部定義的名為 inner 的內(nèi)部類。編譯完成后出現(xiàn) outer.class 和 outer$inner.class 兩類。所以內(nèi)部類的成員變量/方法名可以和外部類的相同。

內(nèi)部類的作用

1、內(nèi)部類可以很好的實現(xiàn)隱藏。

非內(nèi)部類是不可以使用 private和 protected修飾的,但是內(nèi)部類卻可以,從而達到隱藏的作用。同時也可以將一定邏輯關(guān)系的類組織在一起,增強可讀性。

2、間接的實現(xiàn)多繼承。

內(nèi)部類提供了Java的"多重繼承"的解決方案,彌補了Java類是單繼承的不足

每個內(nèi)部類都能獨立地繼承自一個(接口的)實現(xiàn),所以無論外部類是否已經(jīng)繼承了某個(接口的)實現(xiàn),對于內(nèi)部類都沒有影響。如果沒有內(nèi)部類提供的可以繼承多個具體的或抽象的類的能力,一些設(shè)計與編程問題就很難解決。所以說內(nèi)部類間接的實現(xiàn)了多繼承。

內(nèi)部類特點

  • 內(nèi)部類仍然是一個獨立的類,在編譯之后內(nèi)部類會被編譯成獨立的.class文件,但是前面冠以外部類的類名和$符號
  • 內(nèi)部類不能用普通的方式訪問。內(nèi)部類是外部類的一個成員,因此內(nèi)部類可以自由地訪問外部類的成員變量,無論是否是private的
  • 內(nèi)部類聲明成靜態(tài)的,就不能隨便的訪問外部類的成員變量了,此時內(nèi)部類只能訪問外部類的靜態(tài)成員變量

面試題3:內(nèi)部類有哪幾種?分別介紹一下

成員內(nèi)部類

​局部內(nèi)部類

靜態(tài)內(nèi)部類

匿名內(nèi)部類

成員內(nèi)部類

成員內(nèi)部類——就是位于外部類成員位置的類

  ​
public class Outer {
    //不對外開放的
    class Inner{
        public void show(){
            System.out.println("成員內(nèi)部類");
        }
    }
}

特點:

  • 內(nèi)部類就像一個實例成員一樣存在于外部類中。
  • 內(nèi)部類可以訪問外部類的所有成員就想訪問自己的成員一樣沒有限制。
  • 內(nèi)部類中的 this 指的是內(nèi)部類的實例對象本身,如果要用外部類的實例對象就可以用類名 .this 的方式獲得。
  • 內(nèi)部類對象中不能有靜態(tài)成員,原因很簡單,內(nèi)部類的實例對象是外部類實例對象的一個成員。

局部內(nèi)部類

局部內(nèi)部類——就是定義在一個方法或者一個作用域里面的類;

class Outer {
      public void method(){
          class Inner {
             System.out.println("局部內(nèi)部類");
          }
      }
  }

特點:

  • 方法中的內(nèi)部類沒有訪問修飾符, 即方法內(nèi)部類對包圍它的方法之外的任何東西都不可見。
  • 方法內(nèi)部類只能夠訪問該方法中的局部變量,所以也叫局部內(nèi)部類。而且這些局部變量一定要是final修飾的常量。

靜態(tài)內(nèi)部類

我們所知道static是不能用來修飾類的,但是成員內(nèi)部類可以看做外部類中的一個成員,所以可以用static修飾,這種用static修飾的內(nèi)部類我們稱作靜態(tài)內(nèi)部類,也稱作嵌套內(nèi)部類.

特點:不能使用外部類的非static成員變量和成員方法

class Outter {
      int age = 10;
      static age2 = 20;
      public Outter() {        
      }
      static class Inner {
          public method() {
              System.out.println(age);//錯誤
              System.out.println(age2);//正確
          }
      }
  }
  ​
  public class Test {
      public static void main(String[] args)  {
          Outter.Inner inner = new Outter.Inner();
          inner.method();
      }
  }

匿名內(nèi)部類

一個沒有名字的類,是內(nèi)部類的簡化寫法

本質(zhì):其實是繼承該類或者實現(xiàn)接口的子類匿名對象

public abstract class A implements B{
    public void A(){
        System.out.println("A");
    }
}
 public interface B{
     public void B();
 }
public class Test {
    public static void main(String[] args) {
        //new出接口或者實現(xiàn)類
        A a= new A (){
            //實現(xiàn)接口里未實現(xiàn)的方法
            public void B() {
                System.out.println("匿名內(nèi)部類");
            }
        };
        a.A();
        a.B();
}

特點:

一個類用于繼承其他類或是實現(xiàn)接口,并不需要增加額外的方法,只是對繼承方法的事先或是覆蓋。

只是為了獲得一個對象實例,不需要知道其實際類型。

類名沒有意義,也就是不需要使用到。 每日小結(jié)

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • java 使用JDOM解析xml文件

    java 使用JDOM解析xml文件

    java中如何使用JDOM解析xml文件呢?以下小編就用實例為大家詳細的介紹一下。需要的朋友可以參考下
    2013-07-07
  • 深入探究SpringBoot中的Sleuth用法

    深入探究SpringBoot中的Sleuth用法

    Sleuth是一個分布式跟蹤系統(tǒng),用于跟蹤應用程序中的請求和操作,在本文中,我們將探討SpringBoot中的Sleuth是什么,以及如何使用它來跟蹤應用程序中的請求和操作,感興趣的小伙伴跟著小編一起來探討吧
    2023-07-07
  • MyBatis Mapper代理使用方法詳解

    MyBatis Mapper代理使用方法詳解

    本文是小編日常收集整理的關(guān)于mybatis mapper代理使用方法知識,通過本文還給大家提供有關(guān)開發(fā)規(guī)范方面的知識點,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-08-08
  • Mybatis-Plus字段策略FieldStrategy的使用

    Mybatis-Plus字段策略FieldStrategy的使用

    本文主要介紹了Mybatis-Plus字段策略FieldStrategy的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • spring cloud 之 客戶端負載均衡Ribbon深入理解

    spring cloud 之 客戶端負載均衡Ribbon深入理解

    下面小編就為大家?guī)硪黄猻pring cloud 之 客戶端負載均衡Ribbon深入理解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java 整合模板徹底解決ssm配置難題

    Java 整合模板徹底解決ssm配置難題

    SSM框架是spring MVC ,spring和mybatis框架的整合,是標準的MVC模式,將整個系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring MVC負責請求的轉(zhuǎn)發(fā)和視圖管理,spring實現(xiàn)業(yè)務(wù)對象管理,mybatis作為數(shù)據(jù)對象的持久化引擎
    2021-10-10
  • 詳解全局事務(wù)注解@GlobalTransactional的識別

    詳解全局事務(wù)注解@GlobalTransactional的識別

    這篇文章主要為大家介紹了詳解全局事務(wù)注解@GlobalTransactional的識別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • SpringBoot實現(xiàn)連接nacos并支持多環(huán)境部署

    SpringBoot實現(xiàn)連接nacos并支持多環(huán)境部署

    這篇文章主要介紹了SpringBoot實現(xiàn)連接nacos并支持多環(huán)境部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java實現(xiàn)快速排序的方法

    java實現(xiàn)快速排序的方法

    這篇文章主要介紹了java實現(xiàn)快速排序的方法,涉及java排序的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • JavaWeb實現(xiàn)學生信息管理系統(tǒng)(3)

    JavaWeb實現(xiàn)學生信息管理系統(tǒng)(3)

    這篇文章主要為大家詳細介紹了JavaWeb實現(xiàn)學生信息管理系統(tǒng)第三篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

龙门县| 江安县| 海盐县| 清丰县| 花莲县| 南京市| 安阳县| 开封县| 临颍县| 瑞安市| 新余市| 漠河县| 斗六市| 延川县| 榆林市| 商洛市| 札达县| 甘肃省| 罗定市| 东阳市| 木里| 泸水县| 平果县| 梨树县| 乌鲁木齐市| 普定县| 郸城县| 隆林| 江孜县| 安丘市| 伽师县| 云霄县| 昆山市| 绥阳县| 天镇县| 宾阳县| 临洮县| 林西县| 象山县| 竹溪县| 剑阁县|