目錄
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
公衆号:【明金同學】