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