亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 Java Java面試題 java面試題最容易犯錯的8道

java面試題最容易犯錯的8道

Nov 11, 2019 pm 02:21 PM
java

java面試題最容易犯錯的8道

1. static 與final 的用法

#static 的作用從三個面向來談,分別是靜態(tài)變數(shù)、靜態(tài)方法、靜態(tài)類。

靜態(tài)變數(shù):宣告為static 的靜態(tài)變數(shù)實(shí)質(zhì)上就是全域變量,當(dāng)宣告一個物件時,並不會產(chǎn)生static 變數(shù)的拷貝,而是該類別所有實(shí)例變數(shù)共用同一個static 變數(shù)。也就是說這個靜態(tài)變數(shù)只載入一次,只分配一塊儲存空間。

靜態(tài)方法: 宣告為static的靜態(tài)方法有以下幾個特點(diǎn):

(1)靜態(tài)方法只能呼叫靜態(tài)方法;

# (2)靜態(tài)方法只能存取靜態(tài)資料;

(3)靜態(tài)方法不能以任何方式引用this或super;

靜態(tài)類別:通常一個普通類別不允許宣告為靜態(tài),只有一個內(nèi)部類別才可以(main方法就是一個典型),這時這個宣告的靜態(tài)類別可以直接當(dāng)作一個普通類別來使用,而不需要實(shí)例一個外部類別。

final 的作用從變數(shù)、方法、類別三個面向來理解:

final修飾的變數(shù)的值不能被修改,是一個常數(shù);

final修飾的方法不能被重寫;

final修飾的類別不能被繼承;

#2. 抽象類別和介面的區(qū)別,類別可以繼承多個類別嗎,介面可以繼承多個介面嗎,類別可以實(shí)作多個介面嗎?

抽象類別和介面都不能直接實(shí)例化,如果要實(shí)例化,抽象類別變數(shù)必須指向?qū)嵶魉谐橄蠓椒ǖ淖宇悇e對象,介面變數(shù)必須指向?qū)嵶魉薪槊娣椒ǖ念悇e物件。

抽象類別要被子類別繼承,介面要被類別實(shí)作。

介面只能做方法聲明,抽象類別中可以做方法聲明,也可以做方法實(shí)作

介面裡定義的變數(shù)只能是公共的靜態(tài)的常數(shù),抽象類別中的變數(shù)是普通變數(shù)。

抽象類別裡的抽象方法必須全部被子類別所實(shí)現(xiàn),如果子類別不能全部實(shí)作父類別抽象方法,那麼該子類別只能是抽象類別。同樣,一個實(shí)作介面的時候,如不能全部實(shí)作介面方法,那麼該類別也只能為抽象類別。

抽象方法只能申明,不能實(shí)現(xiàn)。 abstract void abc();不能寫成abstract void abc(){}。

抽象類別裡可以沒有抽象方法 。

如果一個類別裡有抽象方法,那麼這個類別只能是抽象類別 。

抽象方法要實(shí)現(xiàn),所以不能是靜態(tài)的,也不能是私有的。

介面可繼承接口,並可多繼承接口,但類別只能單根繼承。

3. this和super的功能和用法

#this :

(1) 能存取建構(gòu)方法以外所有的屬性、方法,透過this.來呼叫方法和屬性

(2) 不可以在靜態(tài)方法中使用

(3) 在建構(gòu)方法中使用this(參數(shù)列表) 調(diào)用本類的其它構(gòu)造方法,必須放在構(gòu)造方法的第一句。

super :存取父類別的方法和屬性

(1) 存取父類別的方法和屬性;

(2) 在建構(gòu)方法中透過super(參數(shù)列表) 來呼叫父類別的建構(gòu)方法,必須放在子類別建構(gòu)方法裡的第一行。

4. final, finally, finalize 的差異?

#final:修飾符(關(guān)鍵字)有三種用法:如果一個類別被宣告為final,則意味著它不能再派生出新的子類,即不能被繼承。將變數(shù)宣告為final,可以保證它們在使用中不被改變,被宣告為final 的變數(shù)在初始化以後的參考中只能讀取不可修改。被宣告為 final 的方法也同樣只能使用,不能在子類別中被重寫。

finally:通常放在try…catch的後面構(gòu)造總是執(zhí)行程式碼區(qū)塊,這就意味著程式無論正常執(zhí)行或發(fā)生異常,這裡的程式碼只要JVM不關(guān)閉都能執(zhí)行,可以將釋放外部資源的程式碼寫在finally區(qū)塊中。

finalize:Object類別中定義的方法,Java中允許使用finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在銷毀物件時呼叫的,透過重寫finalize() 方法可以整理系統(tǒng)資源或執(zhí)行其他清理工作。

5. Error 和Exception 有什麼區(qū)別?

Error 表示系統(tǒng)級的錯誤和程式不必處理的異常,是恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題;例如記憶體溢出,不可能指望程式能處理這樣的情況;

Exception 表示需要捕捉或需要程式處理的異常,是一種設(shè)計(jì)或?qū)嵶鲉栴};也就是說,它表示如果程式運(yùn)作正常,從不會發(fā)生的情況。

6. 說出Servlet的生命週期,並說出Servlet和CGI的差異。

Servlet被伺服器實(shí)例化後,容器運(yùn)行其init方法,請求到達(dá)時運(yùn)行其service方法,service方法自動派遣運(yùn)行與請求對應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)伺服器決定將實(shí)例銷毀的時候呼叫其destroy()方法。

與CGI的區(qū)別在於Servlet處於伺服器進(jìn)程中,它透過多執(zhí)行緒方式運(yùn)行其service方法,一個實(shí)例可以服務(wù)於多個請求,且其實(shí)例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進(jìn)程,服務(wù)完成後就會銷毀,所以效率上低於Servlet。

7. 如何防止快取雪崩?

原因:

快取雪崩可能是因?yàn)橘Y料未載入到快取中,或是快取同一時間大面積的失效,從而導(dǎo)致所有請求都去查資料庫,導(dǎo)致資料庫CPU和記憶體負(fù)載過高,甚至宕機(jī)。

對應(yīng)解決:

採用加鎖計(jì)數(shù),或使用合理的佇列數(shù)量來避免快取失效時對資料庫造成太大的壓力。這種辦法雖然能緩解資料庫的壓力,但是同時又降低了系統(tǒng)的吞吐量。

分析使用者行為,盡量讓失效時間點(diǎn)均勻分佈。避免緩存雪崩的出現(xiàn)。

如果是因?yàn)槟撑_快取伺服器宕機(jī),可以考慮做主備,例如:redis主備,但是雙重快取涉及到更新交易的問題,update可能讀到髒數(shù)據(jù),需要好好解決。

8. 談?wù)勀銓VC的理解

MVC是Model—View—Controler的簡稱。即模型—視圖—控制器。 MVC是一種設(shè)計(jì)模式,它強(qiáng)制性的把應(yīng)用程式的輸入、處理和輸出分開。

MVC中的模型、視圖、控制器它們分別擔(dān)負(fù)著不同的任務(wù)。

視圖: 視圖是使用者看到並與之互動的介面。視圖向使用者顯示相關(guān)的數(shù)據(jù),並接受使用者的輸入。視圖不進(jìn)行任何業(yè)務(wù)邏輯處理。

模型: 模型表示業(yè)務(wù)資料和業(yè)務(wù)處理,相當(dāng)於JavaBean。一個模型能為多個視圖提供資料。這提高了應(yīng)用程式的重用性。

控制器: 當(dāng)使用者點(diǎn)擊Web頁面中的提交按鈕時,控制器接受請求並呼叫對應(yīng)的模型去處理請求,然後根據(jù)處理的結(jié)果呼叫對應(yīng)的視圖來顯示處理的結(jié)果。

MVC的處理過程:首先控制器接受使用者的請求,呼叫對應(yīng)的模型來進(jìn)行業(yè)務(wù)處理,並傳回資料給控制器。控制器呼叫對應(yīng)的視圖來顯示處理的結(jié)果。並透過視圖呈現(xiàn)給使用者。

以上是java面試題最容易犯錯的8道的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設(shè)置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項(xiàng)目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

Python Itertools組合示例 Python Itertools組合示例 Jul 31, 2025 am 09:53 AM

itertools.combinations用於生成從可迭代對像中選取指定數(shù)量元素的所有不重複組合(順序無關(guān)),其用法包括:1.從列表中選2個元素組合,如('A','B')、('A','C')等,避免重複順序;2.對字符串取3個字符組合,如"abc"、"abd",適用於子序列生成;3.求兩數(shù)之和等於目標(biāo)值的組合,如1 5=6,簡化雙重循環(huán)邏輯;組合與排列的區(qū)別在於順序是否重要,combinations視AB與BA為相同,而permutations視為不同;

故障排除常見的java`ofmemoryError`場景'' 故障排除常見的java`ofmemoryError`場景'' Jul 31, 2025 am 09:07 AM

java.lang.OutOfMemoryError:Javaheapspace表示堆內(nèi)存不足,需檢查大對象處理、內(nèi)存洩漏及堆設(shè)置,通過堆轉(zhuǎn)儲分析工具定位並優(yōu)化代碼;2.Metaspace錯誤因類元數(shù)據(jù)過多,常見於動態(tài)類生成或熱部署,應(yīng)限制MaxMetaspaceSize並優(yōu)化類加載;3.Unabletocreatenewnativethread因係統(tǒng)線程資源耗盡,需檢查線程數(shù)限制、使用線程池、調(diào)整棧大?。?.GCoverheadlimitexceeded指GC頻繁但回收少,應(yīng)分析GC日誌,優(yōu)化

Python Pytest夾具示例 Python Pytest夾具示例 Jul 31, 2025 am 09:35 AM

fixture是用於為測試提供預(yù)設(shè)環(huán)境或數(shù)據(jù)的函數(shù),1.使用@pytest.fixture裝飾器定義fixture;2.在測試函數(shù)中以參數(shù)形式註入fixture;3.yield之前執(zhí)行setup,之後執(zhí)行teardown;4.通過scope參數(shù)控製作用域,如function、module等;5.將共用fixture放在conftest.py中實(shí)現(xiàn)跨文件共享,從而提升測試的可維護(hù)性和復(fù)用性。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

See all articles