大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年Java面試題解惑系列

2020年Java面試題解惑系列

更新時間:2019-12-18 16:23:22 來源:動力節(jié)點 瀏覽2418次

 

2020年Java面試題解惑系列

面向對象的特征有哪些方面?

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

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

- 封裝:通常認為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來,對數(shù)據(jù)的訪問只能通過已定義的接口。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口(可以想想普通洗衣機和全自動洗衣機的差別,明顯全自動洗衣機封裝更好因此操作起來更簡單;我們現(xiàn)在使用的智能手機也是封裝得足夠好的,因為幾個按鍵就搞定了所有的事情)。

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

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

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

float f=3.4;是否正確?

  答:不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點型(float)屬于下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換float f =(float)3.4; 或者寫成float f =3.4F;。

short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?

  答:對于short s1 = 1; s1 = s1 + 1;由于1是int類型,因此s1+1運算結果也是int 型,需要強制轉換類型才能賦值給short型。而short s1 = 1; s1 += 1;可以正確編譯,因為s1+= 1;相當于s1 = (short)(s1 + 1);其中有隱含的強制類型轉換。

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

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

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

expr可以是byte、short、char、int、enum、String類型,但是long類型不能

用最有效率的方法計算2乘以8?

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

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

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

構造器(constructor)是否可被重寫(override)?

  答:構造器不能被繼承,因此不能被重寫,但可以被重載。

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

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

  是否可以繼承String類?

  答:String 類是final類,不可以被繼承。

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

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

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

  答:Java平臺提供了兩種類型的字符串:String和StringBuffer/StringBuilder,它們可以儲存和操作字符串。其中String是只讀字符串,也就意味著String引用的字符串內(nèi)容是不能被改變的。而StringBuffer/StringBuilder類表示的字符串對象可以直接進行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,區(qū)別在于它是在單線程環(huán)境下使用的,因為它的所有方面都沒有被synchronized修飾,因此它的效率也比StringBuffer要高。

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

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

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

  答:

① sleep()方法給其他線程運行機會時不考慮線程的優(yōu)先級,因此會給低優(yōu)先級的線程以運行的機會;yield()方法只會給相同優(yōu)先級或更高優(yōu)先級的線程以運行的機會;

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

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

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

 當一個線程進入一個對象的synchronized方法A之后,其它線程是否可進入此對象的synchronized方法B?

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

  請說出與線程同步以及線程調(diào)度相關的方法。

  答:

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

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

- notify():喚醒一個處于等待狀態(tài)的線程,當然在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且與優(yōu)先級無關;

- notityAll():喚醒所有處于等待狀態(tài)的線程,該方法并不是將對象的鎖給所有線程,而是讓它們競爭,只有獲得鎖的線程才能進入就緒狀態(tài);

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

  答:一種是繼承Thread類;另一種是實現(xiàn)Runnable接口。兩種方式都要通過重寫run()方法來定義線程的行為,推薦使用后者,因為Java中的繼承是單繼承,一個類有一個父類,如果繼承了Thread類就無法再繼承其他類了,顯然使用Runnable接口更為靈活。

synchronized關鍵字的用法?

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

舉例說明同步和異步。

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

 簡述synchronized 和java.util.concurrent.locks.Lock的異同?

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

 

2020年Java面試題解惑系列

 以上就是動力節(jié)點Java培訓機構小編介紹的“2020年Java面試題解惑系列”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

相關推薦

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

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

Java高級開發(fā)工程師面試題

2019史上最全java面試題題庫大全800題

哪有資深java工程師面試題

    

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩欧美视频在线播放 | 久久精品一区二区 | 久久亚洲精品人成综合网 | 国产日韩精品一区在线观看播放 | 99色视频 | 日韩麻豆国产精品欧美 | 性做久久久久久久久25的美女 | 亚洲免费视频一区二区三区 | 亚洲另类视频在线观看 | 一区二区在线不卡 | 久久久国产精品网站 | 亚洲国产精品激情在线观看 | 99精品小视频 | 色中文字幕| 国产成人精品免费久久久久 | 久久中文字幕综合不卡一二区 | 亚洲精品在线视频观看 | 久章草在线视频 | 爱爱爱免费视频 | 韩国理论片在线看2828dy | 成人免费草草视频 | 综合图区亚洲白拍在线 | 亚洲国产韩国一区二区 | 欧美成人免费xxx大片 | 亚洲精品综合一区在线 | 中文字幕日韩一区二区 | 九九这里只精品视在线99 | 香蕉免费一区二区三区在线观看 | 国产麻豆精品aⅴ免费观看 国产麻豆精品hdvideoss | 奇米第四色888 | 久操久热 | 国产精品日本一区二区在线看 | 日日干夜夜骑 | 天天干天天操 | 精品成人一区二区三区免费视频 | www成人在线观看 | 亚洲综合中文网 | 国产精品视频免费一区二区三区 | 亚洲尹人香蕉网在线视颅 | 4htv影院永久免费在线地址 | 免费观看四虎精品国产永久 |