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

首頁(yè) Java Java面試題 Java的基礎(chǔ)面試題目(4)

Java的基礎(chǔ)面試題目(4)

Dec 04, 2019 pm 03:04 PM
java

Java的基礎(chǔ)面試題目(4)

a.hashCode() 有什麼用?與 a.equals(b) 有什麼關(guān)係?

hashCode() 方法對(duì)應(yīng)物件整數(shù)的 hash 值。它常用於基於 hash 的集合類,如 Hashtable、HashMap、LinkedHashMap等等。它與 equals() 方法關(guān)係特別緊密。根據(jù) Java 規(guī)範(fàn),兩個(gè)使用 equal() 方法來(lái)判斷相等的對(duì)象,必須具有相同的 hash code。

位元組流與字元流的差異 ? ?(推薦學(xué)習(xí):java面試題目

要把一段二進(jìn)位資料資料逐一輸出到某個(gè)設(shè)備中,或從某個(gè)設(shè)備中逐一讀取一段二進(jìn)位數(shù)據(jù),不管輸入輸出設(shè)備是什麼,我們要用統(tǒng)一的方式來(lái)完成這些操作。

用一種抽象的方式來(lái)描述,這個(gè)抽象描述方式起名為IO流,對(duì)應(yīng)的抽象類別為OutputStream和InputStream,不同的實(shí)作類別就代表不同的輸入和輸出設(shè)備,它們都是針對(duì)位元組進(jìn)行操作的。

計(jì)算機(jī)中的一切最終都是二進(jìn)位的位元組形式存在。對(duì)於常用到的中文字符,首先要得到其對(duì)應(yīng)的字節(jié),然後將位元組寫(xiě)入到輸出流。

讀取時(shí),首先讀到的是字節(jié),可是我們要把它顯示為字符,我們需要將字節(jié)轉(zhuǎn)換成字符。由於這樣的需求很廣泛,Java專門(mén)提供了字元流包裝類別。

底層設(shè)備永遠(yuǎn)只接受位元組數(shù)據(jù),有時(shí)候要寫(xiě)字串到底層設(shè)備,需要將字串轉(zhuǎn)成位元組再寫(xiě)入。字元流是位元組流的包裝,字元流則是直接接受字串,它內(nèi)部將串轉(zhuǎn)成字節(jié),再寫(xiě)入底層設(shè)備,這為我們向IO設(shè)備寫(xiě)入或讀取字串提供了一點(diǎn)方便。

字元轉(zhuǎn)換成位元組時(shí),要注意編碼的問(wèn)題,因?yàn)樽执D(zhuǎn)成位元組數(shù)組,其實(shí)是轉(zhuǎn)成該字元的某種編碼的位元組形式,讀取也是反之的道理。

什麼是java序列化,如何實(shí)現(xiàn)java序列化?或者請(qǐng)解釋Serializable介面的作用。

我們有時(shí)候?qū)⒁粋€(gè)java物件變成位元組流的形式傳出去或從一個(gè)位元組流中恢復(fù)成一個(gè)java對(duì)象,例如,要將java物件儲(chǔ)存到硬碟或傳送給網(wǎng)路上的其他計(jì)算機(jī),這個(gè)過(guò)程我們可以自己寫(xiě)程式碼去把一個(gè)java物件變成某個(gè)格式的位元組流再傳輸。

但是,jre本身就提供了這種支持,我們可以呼叫OutputStream的writeObject方法來(lái)做,如果要讓java幫我們做,要被傳輸?shù)奈锛仨殞?shí)作serializable接口,這樣,javac編譯時(shí)就會(huì)進(jìn)行特殊處理,編譯的類別才可以被writeObject方法操作,這就是所謂的序列化。

需要被序列化的類別必須實(shí)現(xiàn)Serializable接口,該接口是一個(gè)mini接口,其中沒(méi)有需要實(shí)現(xiàn)方法,implements Serializable只是為了標(biāo)註該對(duì)像是可被序列化的。

例如,在web開(kāi)發(fā)中,如果物件被保存在了Session中,tomcat在重啟時(shí)要把Session物件序列化到硬碟,這個(gè)物件就必須實(shí)作Serializable介面。如果物件要經(jīng)過(guò)分散式系統(tǒng)進(jìn)行網(wǎng)路傳輸,被傳輸?shù)奈锛捅仨殞?shí)作Serializable介面。

描述JVM載入class檔案的原理機(jī)制?

JVM中類別的裝載是由ClassLoader和它的子類別來(lái)實(shí)現(xiàn)的,Java ClassLoader是一個(gè)重要的Java執(zhí)行時(shí)間系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類別文件的類別。

heap和stack有什麼差別。

java的記憶體分為兩類,一類是堆疊內(nèi)存,一類是堆疊記憶體。棧記憶體是指程式進(jìn)入一個(gè)方法時(shí),會(huì)為這個(gè)方法單獨(dú)分配一塊私屬儲(chǔ)存空間,用於儲(chǔ)存這個(gè)方法內(nèi)部的局部變量,當(dāng)這個(gè)方法結(jié)束時(shí),分配給這個(gè)方法的棧會(huì)釋放,這個(gè)棧中的變數(shù)也會(huì)隨之釋放。

堆是與堆疊作用不同的內(nèi)存,一般用於存放不在目前方法堆疊中的那些資料。

例如,使用new建立的物件都放在堆裡,所以,它不會(huì)隨方法的結(jié)束而消失。方法中的局部變數(shù)使用final修飾後,放在堆中,而不是堆疊中。

GC是什麼?為什麼要有GC?

GC是垃圾收集的意思(Gabage Collection),記憶體處理是程式設(shè)計(jì)人員容易出現(xiàn)問(wèn)題的地方,忘記或者錯(cuò)誤的記憶體回收會(huì)導(dǎo)致程式或系統(tǒng)的不穩(wěn)定甚至崩潰。

Java提供的GC功能可以自動(dòng)監(jiān)控物件是否超過(guò)作用域以達(dá)到自動(dòng)回收記憶體的目的,Java語(yǔ)言並沒(méi)有提供釋放已指派記憶體的顯示操作方法。

垃圾回收的優(yōu)點(diǎn)和原則。並考慮2種回收機(jī)制。

Java語(yǔ)言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使c 程序員最頭疼的內(nèi)存管理的問(wèn)題迎刃而解,它使得Java程序員在編寫(xiě)程序的時(shí)候不再需要考慮內(nèi)存管理。由于垃圾回收機(jī)制,Java中的對(duì)象不再有"作用域"的概念,只有對(duì)象的引用才有"作用域"。

垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。

垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別的線程運(yùn)行,不可預(yù)知的情況下對(duì)內(nèi)存堆中已經(jīng)死亡的或者長(zhǎng)時(shí)間沒(méi)有使用的對(duì)象進(jìn)行清除和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對(duì)某個(gè)對(duì)象或所有對(duì)象進(jìn)行垃圾回收。

回收機(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。

垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?

對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象。

通過(guò)這種方式確定哪些對(duì)象是"可達(dá)的",哪些對(duì)象是"不可達(dá)的"。當(dāng)GC確定一些對(duì)象為"不可達(dá)"時(shí),GC就有責(zé)任回收這些內(nèi)存空間。

程序員可以手動(dòng)執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語(yǔ)言規(guī)范并不保證GC一定會(huì)執(zhí)行。

Java 中,throw 和 throws 有什么區(qū)別

throw 用于拋出 java.lang.Throwable 類的一個(gè)實(shí)例化對(duì)象,意思是說(shuō)你可以通過(guò)關(guān)鍵字 throw 拋出一個(gè)Exception,如:

throw new IllegalArgumentException(“XXXXXXXXX″)

而throws 的作用是作為方法聲明和簽名的一部分,方法被拋出相應(yīng)的異常以便調(diào)用者能處理。Java 中,任何未處理的受檢查異常強(qiáng)制在 throws 子句中聲明。

java中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述。

先解釋什么是內(nèi)存泄漏:所謂內(nèi)存泄露就是指一個(gè)不再被程序使用的對(duì)象或變量一直被占據(jù)在內(nèi)存中。java中有垃圾回收機(jī)制,它可以保證當(dāng)對(duì)象不再被引用的時(shí)候,對(duì)象將自動(dòng)被垃圾回收器從內(nèi)存中清除掉。

由于Java使用有向圖的方式進(jìn)行垃圾回收管理,可以消除引用循環(huán)的問(wèn)題,例如有兩個(gè)對(duì)象,相互引用,只要它們和根進(jìn)程不可達(dá),那么GC也是可以回收它們的。

java中的內(nèi)存泄露的情況:長(zhǎng)生命周期的對(duì)象持有短生命周期對(duì)象的引用就很可能發(fā)生內(nèi)存泄露,盡管短生命周期對(duì)象已經(jīng)不再需要,但是因?yàn)殚L(zhǎng)生命周期對(duì)象持有它的引用而導(dǎo)致不能被回收,這就是java中內(nèi)存泄露的發(fā)生場(chǎng)景。

通俗地說(shuō),就是程序員可能創(chuàng)建了一個(gè)對(duì)象,以后一直不再使用這個(gè)對(duì)象,這個(gè)對(duì)象卻一直被引用,即這個(gè)對(duì)象無(wú)用但是卻無(wú)法被垃圾回收器回收的,這就是java中可能出現(xiàn)內(nèi)存泄露的情況。

例如,緩存系統(tǒng),我們加載了一個(gè)對(duì)象放在緩存中(例如放在一個(gè)全局map對(duì)象中),然后一直不再使用它,這個(gè)對(duì)象一直被緩存引用,但卻不再被使用。

以上是Java的基礎(chǔ)面試題目(4)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(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整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門(mén)話題

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

settings.json文件位於用戶級(jí)或工作區(qū)級(jí)路徑,用於自定義VSCode設(shè)置。 1.用戶級(jí)路徑: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ū)級(jí)路徑:項(xiàng)目根目錄下的.vscode/settings

在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

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

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

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

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

了解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

Google Chrome無(wú)法打開(kāi)本地文件 Google Chrome無(wú)法打開(kāi)本地文件 Aug 01, 2025 am 05:24 AM

ChromecanopenlocalfileslikeHTMLandPDFsbyusing"Openfile"ordraggingthemintothebrowser;ensuretheaddressstartswithfile:///;2.SecurityrestrictionsblockAJAX,localStorage,andcross-folderaccessonfile://;usealocalserverlikepython-mhttp.server8000tor

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

See all articles