天天看點

Java實習生正常技術面試題每日十題Java基礎(六)

目錄

1.在Java語言,怎麼了解goto。

2.請描述一下Java 5有哪些新特性? 

3.Java 6新特性有哪些。

4.Java 7 新特性有哪些。

5.Java 8 新特性有哪些。

6.描述Java 動态代理。

7.為什麼要使用單例模式?

8.Java中有哪些常用排序方式,使用Java實作冒泡排序。 

9.Java中垃圾回收有什麼目的?什麼時候進行垃圾回收?

10.如何實作對象克隆。

goto這個詞是C語言中的,goto語句通常與條件語句配合使用,可用來實作條件轉移,構成循環,跳出循環體等功能。而在結構化程式語言中一般不主張使用goto語句, 以免造成程式流程的混亂,使了解和調試程式都産生困難。但是在java語言中,goto這個詞隻是作為了保留字,不推薦使用,因為java語言講究簡單,友善。

1、泛型  

2、For-Each循環    

3、自動裝包/拆包  

4、枚舉

5、靜态導入

6、Annotation(架構配置,代碼生成 的裡程

7、可變參數  

8、字元串格式化器(java.util.Formatter) 

9、新的線程模型和并發庫 Thread Frameword

1、引入了一個支援腳本引擎的新架構

2、UI的增強

3、對WebService支援的增強(JAX-WS2.0和JAXB2.0)

4、一系列新的安全相關的增強

5、JDBC4.0

6、Compiler API

7、通用的Annotations支援

1.switch中可以使用字串了

2.運用List<String> tempList = new ArrayList<>(); 即泛型執行個體化類型自動推斷

3.文法上支援集合,而不一定是數組  

4.新增一些讀取環境資訊的工具方法

5.Boolean類型反轉,空指針安全,參與位運算

6.兩個char間的equals 

7.安全的加減乘除 

8.map集合支援并發請求,且可以寫成 Map map = {name:"xxx",age:18};

1.Lambda 表達式 − Lambda允許把函數作為一個方法的參數,用更簡潔的文法實作以前複雜的功能代碼

2.方法引用提供了非常有用的文法,可以直接引用已有Java類或對象(執行個體)的方法或構造器。與lambda聯合使用,方法引用可以使語言的構造更緊湊簡潔,減少備援代碼。

3.接口中可以使用default關鍵字聲明一個預設實作方法。

4.新的編譯工具,如:Nashorn引擎 jjs、 類依賴分析器jdeps。

5.新添加的Stream API(java.util.stream) 把真正的函數式程式設計風格引入到Java中。

6.加強對日期與時間的處理。

7.Optional 類用來解決空指針異常。

8.Java 8提供了一個新的Nashorn javascript引擎,它允許我們在JVM上運作特定的javascript應用。

代理模式是常用的java設計模式之一,java中的代理實作主要有基于接口的jdk動态代理和基于類的cglib動态代理,代理的特點就是會為目标對象産生代理對象,進而在調用實際目标對象方法時實作無侵入式的代碼擴充,比如一些架構中的攔截器機制、springAOP面向切面機制都是基于動态代理模式實作的,其次也可以更安全的保護目标對象。動态代理的目的主要就是為了解決一些安全性問題(不讓客戶直接調用目标對象的功能,而是相當于通過中介),其次就是可以在調用目标功能方法之前、之後額外添加一些功能,比如日志、事務等,并且還能阻止調用功目标功能,進而實作權限控制等。

1、避免在開發程式的時候,建立出一個類的多個執行個體(占用空間,性能問題),是以使用單例模式,保證該類隻建立一個對象;

2、一般單例模式通常有兩種形式:它的構造函數為private的,必須有一個靜态方法,靜态方法傳回自己的執行個體;實行形式有兩種,懶漢式和餓漢式;所謂的餓漢式就是在聲明執行個體的時候直接初始化對象,而懶漢式是先聲明一個空對象,在靜态方法中執行個體化該對象并傳回。

//構造方法私有化,讓外界無法建立對象

private Test() {

    }
    //在目前類中聲明靜态對象,并提供公共靜态方法讓外界調用擷取對象
    private static Test t;


    public static Test getInstance(){
        if(t==null){
            t=new Test();
        }
        return t;
    }           

排序主要用于将一組無需資料進行升序/降序排列,Java中有很多種排序方法,如:冒泡排序,選擇排序,插入排序,快速排序等,其中在大量資料無需資料中效率最高的屬于快速排序,比如實際工作中如果需要對資料排序,我們可以借助JDK中自帶的Arrays.sort方法,它内部采用了快速排序,效率非常高,當然也可以自己實作。

冒泡排序代碼如下:

import java.util.Arrays;

public class BubbleSort {

    public static void BubbleSort(int[] arr) {
        int temp;//定義一個臨時變量
        for(int i=0;i<arr.length-1;i++){        //循環的輪數
            for(int j=0;j<arr.length-i-1;j++){    //從前往後循環比較,從第1個數往後依次比較
                if(arr[j+1]<arr[j]){            //如果後面的數字小于前面的則交換
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int arr[] = new int[]{1,6,2,2,5};
        BubbleSort.BubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }

}           

Java語言中一個顯著的特點就是引入了垃圾回收機制(簡稱GC),使c語言程式員最頭疼的記憶體管理的問題迎刃而解,它使得Java程式員在編寫程式的時候不再需要考慮記憶體管理。由于有個垃圾回收機制,Java中的對象不再有“作用域”的概念,隻有對象的引用才有“作用域”。垃圾回收可以有效的防止記憶體洩露,有效的使用空閑的記憶體。簡單的了解,就是當對象失去引用後,系統會在排程的時間對它所占用的記憶體進行回收。

實作對象克隆有兩種方式:

1). 實作Cloneable接口并重寫Object類中的clone()方法;  

2). 實作Serializable接口,通過對象的序列化和反序列化實作克隆,可以實作真正的深度克隆。

其他面試題:

Java實習生正常技術面試題每日十題Java基礎(八)

Java實習生正常技術面試題每日十題Java基礎(七)

Java實習生正常技術面試題每日十題Java基礎(六)

Java實習生正常技術面試題每日十題Java基礎(五)

Java實習生正常技術面試題每日十題Java基礎(四)

Java實習生正常技術面試題每日十題Java基礎(三)

Java實習生正常技術面試題每日十題Java基礎(二)

Java實習生正常技術面試題每日十題Java基礎(一)

本文來自部落格園,作者:明金同學,轉載請注明原文連結:https://www.cnblogs.com/vmuu/p/15663293.html

公衆号:【明金同學】