<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java程序員面試寶典

    時間:2022-12-14 14:16:28 面試問題 我要投稿
    • 相關推薦

    Java程序員面試寶典

      面試例題1:對象與實例有什么區別?

    Java程序員面試寶典

      解析:在Java的內存分配中,對象和實例是不同的,前者分配在內存堆里,后者分配在堆棧里,至于為什么要這樣分,參考一下其他的資料。對象是不變的東西,它是對客觀事物的抽象,實例是對操作對象的引用,你不能直接操作對象。

      答案:對象和實例從宏觀的角度看,區別是:對象是同類事物的一種抽象表現形式,而實例是對象的具體化,一個對象可以實例化很多實例,對象就是一個模型,實例是照著這個模型生產的最終產品。實際上就是這樣,一個對象可以實例化N個實例。就像根據一個模型可以制造多個實際的產品一樣。

      從內存分配的角度來看,對象是保存在堆中的,而實例是存儲在棧中的,實例其實只是對象的一個引用,也就是指向對象的指針。

      面試例題2:Java中所有的類都繼承了java.lang.Object類,而在C++中沒有像java.lang.Object這樣的類,這是為什么呢?都是面向對象,Java這樣做有什么好處呢?

      解析:Java采用的是單根結構,所有的類都繼承了java.lang.Object類。對于Java這種純面向對象的語言來說,這種設計具有很好的靈活性,比如對垃圾收集來說很有利,所有的類都具有java.lang.Object類具有的方法等。C++沒有更多這樣的方法,大概是為了向后兼容。向C兼容,滿足它設計上最大的靈活性。

      答案:C++的特點是指針,一個指針可以指向任何的對象、結構、基本類型、函數。

      Java沒有指針類型,所以Java用Object基礎類的共同特征來實現所有對象類型之間的轉換。

      面試例題3:聲明與定義之間的區別是什么?在Java里聲明和定義能否分開?

      解析:

      聲明:一種把一個名稱引入或者重新引入到某個作用域的構造。 定義:它也是一種聲明,但該聲明必須給出被聲明實體的細節。 對于變量而言,這里的細節是指:為被聲明實體保留存儲空間。 對于class類型和函數定義而言,指的是包含有一對花括號內容的聲明。 對于外部變量而言,指的是前面沒有關鍵字extern或者在聲明時就進行初始化。 變量的聲明有以下兩種情況:

      一種是需要建立存儲空間的。例如,int a 在聲明的時候就已經建立了存儲空間。

      另一種是不需要建立存儲空間的,例如,extern int a。其中,變量a是在別的文件中定義的。前者是“定義性聲明(defining declaration)”,或者稱為“定義(definition)”,而后者是“引用性聲明(referencing declaration)”。從廣義的角度來講,聲明中包含著定義,但是并非所有的聲明都是定義,例如int a,它既是聲明,同時又是定義。然而對于 extern a來講,它只是聲明不是定義。在一般的情況下我們常常這樣敘述,把建立空間的聲明稱為“定義”,而把不需要建立存儲空間的聲明稱為“聲明”。很明顯在這里指的聲明的范圍是比較窄的,也就是說非定義性質的聲明。

      面試例題4:Object是所有類的父類,任何類都默認繼承Object。Object類到底實現了哪些方法?

      答案:

      1.clone方法

      保護方法,實現對象的淺復制,只有實現了Cloneable接口才可以調用該方法,否則拋出CloneNotSupportedException異常。

      2.getClass方法

      final方法,獲得運行時類型。

      3.toString方法

      該方法用得比較多,一般子類都有覆蓋。

      4.finalize方法

      該方法用于釋放資源。因為無法確定該方法什么時候被調用,很少使用。

      5.equals方法

      該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。

      6.hashCode方法

      該方法用于哈希查找,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有哈希功能的Collection中用到。

      一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應該盡量使上面兩個條件接近等價。

      7.wait方法

      wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。

      調用該方法后當前線程進入睡眠狀態,直到以下事件發生。 (1)其他線程調用了該對象的notify方法。 (2)其他線程調用了該對象的notifyAll方法。 (3)其他線程調用了interrupt中斷該線程。 (4)時間間隔到了。

      此時該線程就可以被調度了,如果是被中斷的話就拋出一個InterruptedException異常。

      8.notify方法

      該方法喚醒在該對象上等待的某個線程。

      9.notifyAll方法

      該方法喚醒在該對象上等待的所有線程。

    【Java程序員面試寶典】相關文章:

    java程序員面試題08-15

    初級java程序員面試要求06-20

    java程序員面試自我介紹04-09

    面試寶潔寶典07-31

    變態級JAVA程序員面試32問08-09

    java程序員面試考試題及答案08-30

    面試寶典:換位思考談面試07-31

    面試英語:面試寶典在校表現11-30

    面試自我介紹寶典07-14

    主管級人才的面試寶典07-31

    主站蜘蛛池模板: 人人妻人人澡人人爽人人精品| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品| 热久久这里只有精品| 亚洲国产精品碰碰| 91精品国产综合久久四虎久久无码一级 | 精品国产亚洲一区二区在线观看| 国产一精品一AV一免费| 日韩经典精品无码一区| 国产精品毛片无码| 日韩精品国产自在久久现线拍| 精品国产一区二区三区无码 | 久久狠狠一本精品综合网| 四虎国产精品永久地址99新强 | 国产精品亚洲玖玖玖在线观看| 国产成人亚洲合集青青草原精品| 久久精品国产亚洲AV香蕉| 亚洲中文久久精品无码| 日韩精品欧美国产在线| 久久精品中文字幕一区| 国产精品永久久久久久久久久| 99精品在线免费| 91大神精品全国在线观看| 久久精品免费观看| 国产精品成人观看视频国产| 97精品人妻系列无码人妻| 国产精品区免费视频| 精品久久久久久亚洲精品| 日韩精品久久久久久久电影蜜臀 | 欧美精品亚洲精品日韩专区| 精品国产欧美一区二区三区成人| 国产精品女人呻吟在线观看| 99久久99久久精品国产片果冻| 久久精品免费一区二区三区| 国产亚洲综合成人91精品| 99精品国产高清一区二区麻豆| 国产精品亚洲精品日韩已满| 精品视频无码一区二区三区| 国精品无码一区二区三区在线 | 日韩精品少妇无码受不了| 久久精品天天中文字幕人妻| 精品国际久久久久999波多野 |