2018常见的java面试题_2018新版Java常见面试题
千鋒西安Java編程培訓班的老師總結了2018新版Java常見面試題,一起來看!
1.1、java基礎
●面向對象的特征:繼承、封裝、多態
繼承【構造器、protected關鍵字、向上轉型Java實現多態有三個必要條件:繼承、重寫、向上轉型。
●final、finaly、finalize的區別
Final:用于類(zui終類,不能被繼承)、方法(能調用,不能重寫,可以重載)、變量(變常量)前。
Finaly:try-catch異常時一定被執行,后于try或catch執行
Finalize:來自于java.lang.Object,用于回收資源,可為任何類添加finalize方法,在GC清除前調用。
●Exception、Error、運行時異常與一般異常有何異同
Throwable是所有Java程序中錯誤處理的父類 ,有兩種資類: Error 和 Exception 。
Error :表示由 JVM 所偵測到的無法預期的錯誤,由于這是屬于 JVM層次的嚴重錯誤 ,導致 JVM 無法繼續執行,因此,這是不可捕捉的,無法采取任何恢復的操作,頂多只能顯示錯誤信息。
Exception:表示可回復的例外,這是可捕捉到的。
●請寫出五種常見的runtime Exception:
NullPointerException:當應用程序試圖在需要對象的地方使用null時,拋出該異常
ClassCastException:當試圖將對象強制轉換為不是實例的子類時,拋出該異常
ArrayIndexOutOfBoundsException:使用數組下標超出數組允許范圍時,拋出該異常
NumberFormatException:應用程序試圖將字符串轉換成一種數值類型,但該字符串不能轉換為適當格式時拋出該異常。
IllegalArgumentException:此異常表明向方法傳遞了一個不合法或不正確的參數
●int和Integer有什么區別,Integer的值緩存范圍
數值類型和對象
歸結于java對于Integer與int的自動裝箱與拆箱的設計,是一種模式:叫享元模式。
Integer的值緩存范圍-128到127之間時始終只存在一個對象,超過范圍對象不會被重用,即每次都是一個新的Integer對象
●包裝類、裝箱、拆箱
裝箱:基本類型變為相應包裝類{int a=100; Integer b=new Integer(a);或Integer a=Integer.valueOf(100)}
拆箱:拆箱就是裝箱的逆過程,Integer a=new Integer(100);int b=a.intValue();
優先使用基本類型的論點是有道理的。
●String、StringBuilder、StringBuffer區別;
String、StringBuffer、StringBuilder類的常用方法:
●重載和重寫的區別
重載:以統一的方式處理不同類型數據的一種手段
重載:overload 重寫:override
●抽象類和接口有什么區別
相同點:都不能被實例化;接口的實現類或者抽象類的子類都只有實現了接口或抽象類中的方法才能被實例化
不同點:1.接口只能定義方法,抽象類中可以定義和實現
2.接口需要實現,抽象類需要繼承,一個類可以實現多個接口但只能繼承一個類
3.接口中成員變量是public static final,只能有靜態的不能被修改的數據,必須賦值,所有的方法都是public abstract,而且只能被這兩個修飾。抽象類可以有自己的成員變量,抽象類中的成員變量默認default、private、protected和public。可以再子類中重新定義、賦值。抽象類中的方法不能用private、static、synchronized、native修飾符。
●反射的用途及實現反射機制:在運行狀態下,對任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態獲取信息以及動態調用對象的方法功能稱為java語言的反射機制。
實現方式:1.Class string = Class.forName(“java.lang.String”); //空號中必須是類的全名,即包名+類名。Struts配置文件
2.依靠類名調用class屬性得到該類:Class str = String.class;
3.調用實例的getClass()方法:Date date = new Date(); Class d = date.getClass();
4.如果是基本的包裝類,則可以用調用包裝類的Type屬性來獲得Class:
Class i = Integer.TYPE;
應用:Struts配置action ;Spring中的Bean的注入
●說說自定義注解的場景及實現
●HTTP請求的GET與POST方法的區別
●session與cookie區別
●列出自己常用的JDK包:
1. java.lang:語言包,java語言的核心包,系統將這個包引入到用戶程序,主要類:
Object類:所有類的父類,其中定義的方法其他類都可以使用
數據類型的包裝類:Integer、Fioat、Double、Boolean等。
Math類:數學類,提供常量和數學函數,包括E常數PI及abs()、sin()、min()、random()等方法,都是靜態
String和StringBuffer類
System類:提供一個獨立于具體計算機系統的編程界面;Runtime類可以直接訪問運行時資源
Classr類:Class類提供了對象運行時的若干信息,
ClassLoader類:ClassLoader是一個抽象類,它提供了將類名轉換成文件名并在文件系統中查找并裝載該文件的方法
線程類:Thread(線程建立)、ThreadDeath(線程結束后的清理操作)、ThreadGroup(組織一組線程)和Runnable(建立線程的交互工具)等類
Throwable(所有錯誤和異常處理的父類)、Exception、Error
2. java.util:實用包
Date(獲取日期和時間)、Calender(抽象類、日歷類)、GregorianCalendar(Calender的子類)
所有集合類、Random(封裝了Math類中的random方法,并提供了更多的輔助功能)
3.java.io:輸入輸出包
4.java.swing:輕量級的窗口工具包,目前使用極為廣泛
5.Java.awt:抽象窗口工具包
6.java.net:網絡函數包,Socket,還提供了便于處理URL的類
●MVC設計思想
●equals與==的區別
●hashCode和equals方法的區別與聯系
這次就是千鋒老師分享的全部內容了,朋友們你們學會了嗎?
總結
以上是生活随笔為你收集整理的2018常见的java面试题_2018新版Java常见面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql与mimic安装_MIMIC专
- 下一篇: java poi 如何合并多个sheet