黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 2020年Java面試題解惑系列

2020年Java面試題解惑系列

更新時(shí)間:2019-12-18 16:23:22 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2488次

 

2020年Java面試題解惑系列

面向?qū)ο蟮奶卣饔心男┓矫?

- 抽象:抽象是將一類(lèi)對(duì)象的共同特征總結(jié)出來(lái)構(gòu)造類(lèi)的過(guò)程,包括數(shù)據(jù)抽象和行為抽象兩方面。抽象只關(guān)注對(duì)象有哪些屬性和行為,并不關(guān)注這些行為的細(xì)節(jié)是什么。

- 繼承:繼承是從已有類(lèi)得到繼承信息創(chuàng)建新類(lèi)的過(guò)程。提供繼承的類(lèi)叫父類(lèi)(超類(lèi)、基類(lèi))、得到繼承的類(lèi)叫子類(lèi)(派生類(lèi))。

- 封裝:通常認(rèn)為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來(lái),對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)只能通過(guò)已定義的接口。可以說(shuō),封裝就是隱藏一切可隱藏的東西,只向外界提供最簡(jiǎn)單的編程接口(可以想想普通洗衣機(jī)和全自動(dòng)洗衣機(jī)的差別,明顯全自動(dòng)洗衣機(jī)封裝更好因此操作起來(lái)更簡(jiǎn)單;我們現(xiàn)在使用的智能手機(jī)也是封裝得足夠好的,因?yàn)閹讉€(gè)按鍵就搞定了所有的事情)。

- 多態(tài)性:多態(tài)性是指允許不同子類(lèi)型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。簡(jiǎn)單的說(shuō)就是用同樣的對(duì)象引用調(diào)用同樣的方法但是做了不同的事情。實(shí)現(xiàn)多態(tài)需要做兩件事:1). 方法重寫(xiě)(子類(lèi)繼承父類(lèi)并重寫(xiě)父類(lèi)中的方法);2). 對(duì)象造型(用父類(lèi)型引用引用子類(lèi)型對(duì)象,這樣同樣的引用調(diào)用同樣的方法就會(huì)根據(jù)子類(lèi)對(duì)象的不同而表現(xiàn)出不同的行為)

String 是最基本的數(shù)據(jù)類(lèi)型嗎?

  答:不是。Java中的基本數(shù)據(jù)類(lèi)型只有8個(gè):byte、short、int、long、float、double、char、boolean;除了基本類(lèi)型(primitive type)和枚舉類(lèi)型(enumeration type),剩下的都是引用類(lèi)型(reference type)。

float f=3.4;是否正確?

  答:不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點(diǎn)型(float)屬于下轉(zhuǎn)型(down-casting,也稱(chēng)為窄化)會(huì)造成精度損失,因此需要強(qiáng)制類(lèi)型轉(zhuǎn)換float f =(float)3.4; 或者寫(xiě)成float f =3.4F;。

short s1 = 1; s1 = s1 + 1;有錯(cuò)嗎?short s1 = 1; s1 += 1;有錯(cuò)嗎?

  答:對(duì)于short s1 = 1; s1 = s1 + 1;由于1是int類(lèi)型,因此s1+1運(yùn)算結(jié)果也是int 型,需要強(qiáng)制轉(zhuǎn)換類(lèi)型才能賦值給short型。而short s1 = 1; s1 += 1;可以正確編譯,因?yàn)閟1+= 1;相當(dāng)于s1 = (short)(s1 + 1);其中有隱含的強(qiáng)制類(lèi)型轉(zhuǎn)換。

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

  答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整。

switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

expr可以是byte、short、char、int、enum、String類(lèi)型,但是long類(lèi)型不能

用最有效率的方法計(jì)算2乘以8?

  答: 2 << 3(左移3位相當(dāng)于乘以2的3次方,右移3位相當(dāng)于除以2的3次方)。

數(shù)組有沒(méi)有l(wèi)ength()方法?String有沒(méi)有l(wèi)ength()方法?

  答:數(shù)組沒(méi)有l(wèi)ength()方法,有l(wèi)ength 的屬性。String 有l(wèi)ength()方法。JavaScript中,獲得字符串的長(zhǎng)度是通過(guò)length屬性得到的,這一點(diǎn)容易和Java混淆。

構(gòu)造器(constructor)是否可被重寫(xiě)(override)?

  答:構(gòu)造器不能被繼承,因此不能被重寫(xiě),但可以被重載。

兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話(huà)對(duì)不對(duì)?

  答:不對(duì),如果兩個(gè)對(duì)象x和y滿(mǎn)足x.equals(y) == true,它們的哈希碼(hash code)應(yīng)當(dāng)相同。Java對(duì)于eqauls方法和hashCode方法是這樣規(guī)定的:(1)如果兩個(gè)對(duì)象相同(equals方法返回true),那么它們的hashCode值一定要相同;(2)如果兩個(gè)對(duì)象的hashCode相同,它們并不一定相同

  是否可以繼承String類(lèi)?

  答:String 類(lèi)是final類(lèi),不可以被繼承。

當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

  答:是值傳遞。Java語(yǔ)言的方法調(diào)用只支持參數(shù)的值傳遞。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的屬性可以在被調(diào)用過(guò)程中被改變,但對(duì)對(duì)象引用的改變是不會(huì)影響到調(diào)用者的

String和StringBuilder、StringBuffer的區(qū)別?

  答:Java平臺(tái)提供了兩種類(lèi)型的字符串:String和StringBuffer/StringBuilder,它們可以?xún)?chǔ)存和操作字符串。其中String是只讀字符串,也就意味著String引用的字符串內(nèi)容是不能被改變的。而StringBuffer/StringBuilder類(lèi)表示的字符串對(duì)象可以直接進(jìn)行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,區(qū)別在于它是在單線(xiàn)程環(huán)境下使用的,因?yàn)樗乃蟹矫娑紱](méi)有被synchronized修飾,因此它的效率也比StringBuffer要高。

Thread類(lèi)的sleep()方法和對(duì)象的wait()方法都可以讓線(xiàn)程暫停執(zhí)行,它們有什么區(qū)別?

  答:sleep()方法(休眠)是線(xiàn)程類(lèi)(Thread)的靜態(tài)方法,調(diào)用此方法會(huì)讓當(dāng)前線(xiàn)程暫停執(zhí)行指定的時(shí)間,將執(zhí)行機(jī)會(huì)(CPU)讓給其他線(xiàn)程,但是對(duì)象的鎖依然保持,因此休眠時(shí)間結(jié)束后會(huì)自動(dòng)恢復(fù)。wait()是Object類(lèi)的方法,調(diào)用對(duì)象的wait()方法導(dǎo)致當(dāng)前線(xiàn)程放棄對(duì)象的鎖(線(xiàn)程暫停執(zhí)行),進(jìn)入對(duì)象的等待池(wait pool),只有調(diào)用對(duì)象的notify()方法(或notifyAll()方法)時(shí)才能喚醒等待池中的線(xiàn)程進(jìn)入等鎖池(lock pool),如果線(xiàn)程重新獲得對(duì)象的鎖就可以進(jìn)入就緒狀態(tài)。

 線(xiàn)程的sleep()方法和yield()方法有什么區(qū)別?

  答:

① sleep()方法給其他線(xiàn)程運(yùn)行機(jī)會(huì)時(shí)不考慮線(xiàn)程的優(yōu)先級(jí),因此會(huì)給低優(yōu)先級(jí)的線(xiàn)程以運(yùn)行的機(jī)會(huì);yield()方法只會(huì)給相同優(yōu)先級(jí)或更高優(yōu)先級(jí)的線(xiàn)程以運(yùn)行的機(jī)會(huì);

② 線(xiàn)程執(zhí)行sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài),而執(zhí)行yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài);

③ sleep()方法聲明拋出InterruptedException,而yield()方法沒(méi)有聲明任何異常;

④ sleep()方法比yield()方法(跟操作系統(tǒng)CPU調(diào)度相關(guān))具有更好的可移植性。

 當(dāng)一個(gè)線(xiàn)程進(jìn)入一個(gè)對(duì)象的synchronized方法A之后,其它線(xiàn)程是否可進(jìn)入此對(duì)象的synchronized方法B?

  答:不能。其它線(xiàn)程只能訪(fǎng)問(wèn)該對(duì)象的非同步方法,同步方法則不能進(jìn)入。因?yàn)榉庆o態(tài)方法上的synchronized修飾符要求執(zhí)行方法時(shí)要獲得對(duì)象的鎖,如果已經(jīng)進(jìn)入A方法說(shuō)明對(duì)象鎖已經(jīng)被取走,那么試圖進(jìn)入B方法的線(xiàn)程就只能在等鎖池(注意不是等待池哦)中等待對(duì)象的鎖

  請(qǐng)說(shuō)出與線(xiàn)程同步以及線(xiàn)程調(diào)度相關(guān)的方法。

  答:

- wait():使一個(gè)線(xiàn)程處于等待(阻塞)狀態(tài),并且釋放所持有的對(duì)象的鎖;

- sleep():使一個(gè)正在運(yùn)行的線(xiàn)程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要處理InterruptedException異常;

- notify():?jiǎn)拘岩粋€(gè)處于等待狀態(tài)的線(xiàn)程,當(dāng)然在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線(xiàn)程,而是由JVM確定喚醒哪個(gè)線(xiàn)程,而且與優(yōu)先級(jí)無(wú)關(guān);

- notityAll():?jiǎn)拘阉刑幱诘却隣顟B(tài)的線(xiàn)程,該方法并不是將對(duì)象的鎖給所有線(xiàn)程,而是讓它們競(jìng)爭(zhēng),只有獲得鎖的線(xiàn)程才能進(jìn)入就緒狀態(tài);

 編寫(xiě)多線(xiàn)程程序有幾種實(shí)現(xiàn)方式?

  答:一種是繼承Thread類(lèi);另一種是實(shí)現(xiàn)Runnable接口。兩種方式都要通過(guò)重寫(xiě)run()方法來(lái)定義線(xiàn)程的行為,推薦使用后者,因?yàn)镴ava中的繼承是單繼承,一個(gè)類(lèi)有一個(gè)父類(lèi),如果繼承了Thread類(lèi)就無(wú)法再繼承其他類(lèi)了,顯然使用Runnable接口更為靈活。

synchronized關(guān)鍵字的用法?

  答:synchronized關(guān)鍵字可以將對(duì)象或者方法標(biāo)記為同步,以實(shí)現(xiàn)對(duì)對(duì)象和方法的互斥訪(fǎng)問(wèn),可以用synchronized(對(duì)象) { … }定義同步代碼塊,或者在聲明方法時(shí)將synchronized作為方法的修飾符。

舉例說(shuō)明同步和異步。

  答:如果系統(tǒng)中存在臨界資源(資源數(shù)量少于競(jìng)爭(zhēng)資源的線(xiàn)程數(shù)量的資源),例如正在寫(xiě)的數(shù)據(jù)以后可能被另一個(gè)線(xiàn)程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個(gè)線(xiàn)程寫(xiě)過(guò)了,那么這些數(shù)據(jù)就必須進(jìn)行同步存取(數(shù)據(jù)庫(kù)操作中的排他鎖就是最好的例子)。當(dāng)應(yīng)用程序在對(duì)象上調(diào)用了一個(gè)需要花費(fèi)很長(zhǎng)時(shí)間來(lái)執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。事實(shí)上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。

 簡(jiǎn)述synchronized 和java.util.concurrent.locks.Lock的異同?

  答:Lock是Java 5以后引入的新的API,和關(guān)鍵字synchronized相比主要相同點(diǎn):Lock 能完成synchronized所實(shí)現(xiàn)的所有功能;主要不同點(diǎn):Lock有比synchronized更精確的線(xiàn)程語(yǔ)義和更好的性能,而且不強(qiáng)制性的要求一定要獲得鎖。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且最好在finally 塊中釋放(這是釋放外部資源的最好的地方)

 

2020年Java面試題解惑系列

 以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“2020年Java面試題解惑系列”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。

相關(guān)推薦

最新最全java面試題及答案(初級(jí)到高級(jí))

史上最全的中高級(jí)JAVA工程師面試題及答案匯總

Java高級(jí)開(kāi)發(fā)工程師面試題

2019史上最全java面試題題庫(kù)大全800題

哪有資深java工程師面試題

    

 

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久青草国产精品一区 | 小明永久免费 | 久久91久久91精品免费观看 | 2015小明台湾永久区域免费 | 最近中文字幕版免费 | 天天爽天天操 | 老司机精品影院一区二区三区 | 亚洲欧美日韩另类在线一 | 成人毛片免费观看视频 | 成年人福利视频 | 欧美成人免费做真爱大片 | 国产精品久久久久9999 | 一个人看www在线观看免费视频 | 国产精品欧美激情第一页 | 日日摸夜夜摸人人嗷嗷叫 | 韩国xxxx色视频在线观看 | 日韩一区三区 | 男人下面桶女人视频免费 | www.黄免费| 三级黄色毛片网站 | 黄在线观看网站 | 天天舔天天干天天操 | 成年片免费网址网站 | 成人手机在线观看 | 国产精品久久久久天天影视 | 国产午夜视频在线观看第四页 | 国产亚洲第一伦理第一区 | 日日舔夜夜摸 | 成人在线观看不卡 | 日本不卡二区 | 亚洲第一精品福利 | 国产免费91视频 | xxxx国产片| 免费国产综合视频在线看 | 亚欧成人| 我想看一级毛片免费的 | 美女黄色好大美女黄色 | 国产黑丝美女 | 久久天天躁夜夜躁狠狠85台湾 | 亚洲精品福利网站 | 成人合集大片bd高清在线观看 |