更新時(shí)間:2023-01-14 14:01:39 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1534次
1.JDK和JRE有什么區(qū)別?
JDK是java開(kāi)發(fā)工具包,JRE是java運(yùn)行時(shí)環(huán)境(包括Java基礎(chǔ)類(lèi)庫(kù),java虛擬機(jī))
2.==和equals的區(qū)別是什么?
==比較的是兩者的地址值,equals比較的是兩者的內(nèi)容是否一樣
3.兩個(gè)對(duì)象的hashcode()相同,則equals()也一定為true嗎?
兩個(gè)對(duì)象的equals返回true,那么hashcode一定相等;
兩個(gè)對(duì)象的hashcode相等,那么equals不一定為true;
4.final在java中的作用?
修飾類(lèi):表明該類(lèi)不可被繼承,類(lèi)中的所有成員方法都隱式的被指定為final方法
修飾方法:不可被重寫(xiě),JVM會(huì)嘗試將其內(nèi)聯(lián),以提高運(yùn)行效率
修飾變量:不可被改變,修飾引用變量表示引用不可變,引用指向的內(nèi)容可變
修飾常量:在編譯階段會(huì)存入常量池中
5.java中操作字符串都有哪些類(lèi)?有什么區(qū)別?
String:是只讀字符串,每次對(duì)string的操作都會(huì)產(chǎn)生一個(gè)新的對(duì)象
StringBuilder:可變的字符數(shù)組,線程不安全
StringBuffer:可變的字符數(shù)組,對(duì)方法加了同步鎖,線程安全
6.如何將字符串反轉(zhuǎn)?
1.使用StringBuilder的reverse()方法
2.使用字符串?dāng)?shù)組,實(shí)現(xiàn)從尾部開(kāi)始逐個(gè)逆序放入字符串
3.使用String的CharAt方法,調(diào)用StringBuilder的insert方法進(jìn)行操作
4.使用遞歸的方法
7.string類(lèi)的常用方法有哪些?
1.獲取字符串長(zhǎng)度length()
2.獲取位置上的某個(gè)字符charAt()
3.獲取字符的位置indexOf()
4.判斷是否包含某個(gè)字符contains()
5.判斷字符串中是否有內(nèi)容isEmpty()
6.判斷字符串是否一指定字符開(kāi)頭結(jié)尾startsWith(),endsWith()
7.判斷字符串內(nèi)容是否相同equals()
8.切割split()
8.抽象類(lèi)必須要寫(xiě)抽象方法嗎?
不一定有抽象方法,但抽象方法一定在抽象類(lèi)中,抽象類(lèi)不能實(shí)例化
9.普通類(lèi)和抽象類(lèi)有哪些區(qū)別?
1.抽象類(lèi)不能被實(shí)例化
2.抽象類(lèi)允許普通方法有主體,抽象方法只需要申明不需要實(shí)現(xiàn)
3.抽象類(lèi)一定有abstract關(guān)鍵詞修飾
4.抽象的子類(lèi)必須實(shí)現(xiàn)抽象類(lèi)中的所有抽象方法,否則的話(huà),這個(gè)子類(lèi)也是抽象類(lèi)
10.抽象類(lèi)能使用final修飾嗎?
不能,final是最終類(lèi)不能被繼承,而抽象類(lèi)是必須被繼承才有其意義
11.接口和抽象類(lèi)的區(qū)別?
1.抽象類(lèi)中可以定義構(gòu)造器,接口不能
2.抽象類(lèi)可以有抽象方法和具體方法,接口不能有具體方法
3.抽象類(lèi)中可以定義成員變量,接口中只能是常量
4.抽象類(lèi)中可以包含靜態(tài)方法,接口中不能有靜態(tài)方法
12.IO流分幾種?
按照流的流向:輸入流,輸出流
按照操作單元:字節(jié)流和字符流
按照流的角色:節(jié)點(diǎn)流和處理流
13.java容器有哪些?
ArrayList,LinkedList,HashSet,HashMap
14.List,Set,Map之間的區(qū)別?
list:是個(gè)有序的集合,元素可以重復(fù),可以索引訪問(wèn)
set:元素不能重復(fù),無(wú)序
map:使用鍵值對(duì)KV,不允許重復(fù),無(wú)序
15.HashMap與HashTable的區(qū)別?
1.兩者父類(lèi)不同:map繼承abstractMap類(lèi),table繼承Dictionary類(lèi)
2.對(duì)外提供的接口不同:table比map多提供了elments和contains方法
3.對(duì)null的支持不同:tableK和V都不能為null,mapK可以為null,但必須保證K唯一
4.安全性不同:map不安全,會(huì)產(chǎn)生死鎖,table每個(gè)方法上加了鎖
5.初始容量大小和每次擴(kuò)充容量的大小不同
6.計(jì)算hash值的方法不同
16.HashMap的實(shí)現(xiàn)原理?
基于hash算法實(shí)現(xiàn),通過(guò)put(key,value)儲(chǔ)存,get(key)來(lái)獲取
17.HashSet的實(shí)現(xiàn)原理?
基于hashmap實(shí)現(xiàn),使用hashmap來(lái)保存所有元素,不允許重復(fù)的值
18.ArrayList和LinkedList的區(qū)別?
arraylist:基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),地址連續(xù),查詢(xún)效率高
linkedlist:基于鏈表的數(shù)據(jù)結(jié)構(gòu),地址無(wú)序,新增刪除效率高
19.怎么實(shí)現(xiàn)數(shù)組和list之間的轉(zhuǎn)換?
數(shù)組轉(zhuǎn)list:使用asList方法
list轉(zhuǎn)數(shù)組:使用toArray方法
20.數(shù)組有沒(méi)有l(wèi)ength()方法?String有沒(méi)有l(wèi)ength()方法?
數(shù)組是沒(méi)有l(wèi)ength()這個(gè)方法的,有l(wèi)ength這個(gè)屬性,可以計(jì)算數(shù)組的長(zhǎng)度
String是有l(wèi)ength()這個(gè)方法的,用來(lái)計(jì)算字符串的長(zhǎng)度。
以上就是“程序員面試常被問(wèn)到的Java經(jīng)典筆試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)