java后端實習生面試題目


1、編程題:java從10000到99999找到AABB類型

public class Test1 {
 public static void main(String[] args) {
 String str;
 for (int i = 10000; i < 100000; i++) {
 str = String.valueOf(i);
 if (str.charAt(0) == str.charAt(1)
 && str.charAt(2) != str.charAt(1)
 && str.charAt(3) != str.charAt(2)
 && str.charAt(3) == str.charAt(4)) {
 System.out.println(str);
 }
 }
 }
 }


轉換成字符串,然后直接根據要求進行判斷即可

2、數據庫的基本特點是。
A.(1)數據可以共享(或數據結構化) (2)數據獨立性
(3)數據冗余大,易移植(4)統一管理和控制
B.(1)數據可以共享(或數據結構化) (2)數據獨立性
(3)數據冗余小,易擴充(4)統一管理和控制
C.(1)數據可以共享(或數據結構化) (2)數據互換性
(3)數據冗余小,易擴充 (4)統一管理和控制
D.(1)數據非結構化(2)數據獨立性
(3)數據冗余小,易擴充(4)統一管理和控制

answer:B吧
 1.數據結構化  數據之間具有聯系,面向整個系統。 2.數據的共享性高,冗余度低,易擴充 3.數據獨立性高 4.數據由DBMS統一管理和控制

3Java 中的構造器鏈是什么?

當你從一個構造器中調用另一個構造器,就是Java 中的構造器鏈。這種情況只在重載了類的構造器的時候才會出現。

4、JRE、JDK、JVM 及 JIT 之間有什么不同?

JRE 代表 Java 運行時(Java run-time),是運行 Java 引用所必須的。JDK 代表 Java 開發工具(Java development kit),是 Java 程序的開發工具,如 Java 編譯器,它也包含 JRE。JVM 代表 Java 虛擬機(Java virtual machine),它的責任是運行 Java 應用。JIT 代表即時編譯(Just In Time compilation),當代碼執行的次數超過一定的閾值時,會將 Java 字節碼轉換為本地代碼,如,主要的熱點代碼會被准換為本地代碼,這樣有利大幅度提高 Java 應用的性能。

5、數據庫有時候會產生數據不一致的原因是:

  answer:數據不一致性是指數據的矛盾性、不相容性。
產生數據不一致的原因主要有以下三種:一是由於數據冗余造成的;二是由於並發控制不當造成的;三是由於各種故障、錯誤造成的。
根本原因:數據冗余

6、3*0.1 == 0.3 將會返回什么?true 還是 false?

false,因為有些浮點數不能完全精確的表示出來。

7、使用SQL語句進行分組檢索時,為了去掉不滿足條件的分組,應當 ______。
A.使用WHERE子句
B.在GROUP BY后面使用HAVING子句
C.先使用WHERE子句,再使用HAVING子句。
D.先使用HAVING子句,再使用WHERE子句

answer:在SQL SELECT語句中,GROUPBY短語用作數據分組的條件,HAVING子句緊跟GROUP BY語句之后,作為進一步的分組條件,且不能單獨存在。

8、什么是數據庫的完整性約束條件

 answer:儲在數據庫中的所有數據值均正確的狀態。

如果數據庫中存儲有不正確的數據值,

則該數據庫稱為已喪失數據完整性。 數據完整性

(Data Integrity)是指數據的精確性(Accuracy) 和可靠性(Reliability)。它是應防止數據庫中存在不符合語義規定的...

9、外鍵必須是另一個表的主鍵嗎?

  answer:

不一定是主鍵,但必須是唯一性索引。

主鍵約束和唯一性約束都是唯一性索引。

10、在WHERE語句中,以下哪個操作符可以取代OR?

SELECT stu_no,stu_name  FROM student  WHERE stu_no =1001 OR stu_no =1009;  在WHERE語句中,以下哪個操作符可以取代OR?  A. IN  B. BETWEEN ……  C. LIKE  D. <=  E. >=

answer:在sql里面 or可以取代in in也可以取代or 但是or消耗的資源要小於in 所以一般情況下面 推薦使用or

11、32 位和 64 位的 JVM,int 類型變量的長度是多數?

32 位和 64 位的 JVM 中,int 類型變量的長度是相同的,都是 32 位或者 4 個字節。

12、我們能將 int 強制轉換為 byte 類型的變量嗎?如果該值大於 byte 類型的范圍,將會出現什么現象?

是的,我們可以做強制轉換,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果強制轉化是,int 類型的高 24 位將會被丟棄,byte 類型的范圍是從 -128 到 128。

13、你能保證 GC 執行嗎?

不能,雖然你可以調用 System.gc() 或者 Runtime.gc(),但是沒有辦法保證 GC 的執行。

14、Java 中堆和棧有什么區別?

JVM 中堆和棧屬於不同的內存區域,使用目的也不同。棧常用於保存方法幀和局部變量,而對象總是在堆上分配。棧通常都比堆小,也不會在多個線程之間共享,而堆被整個 JVM 的所有線程共享。

15、“a==b”和”a.equals(b)”有什么區別?

如果 a 和 b 都是對象,則 a==b 是比較兩個對象的引用,只有當 a 和 b 指向的是堆中的同一個對象才會返回 true,而 a.equals(b) 是進行邏輯比較,所以通常需要重寫該方法來提供邏輯一致性的比較。例如,String 類重寫 equals() 方法,所以可以用於兩個不同對象,但是包含的字母相同的比較。

16、ArrayList 與 LinkedList 的不區別?

最明顯的區別是 ArrrayList 底層的數據結構是數組,支持隨機訪問,而 LinkedList 的底層數據結構書鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復雜度是 O(1),而 LinkedList 是 O(n)。

17、java 中怎么打印數組?

你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法來打印數組。由於數組沒有實現 toString() 方法,所以如果將數組傳遞給 System.out.println() 方法,將無法打印出數組的內容,但是 Arrays.toString() 可以打印每個元素。

18、Java 中的 TreeMap 是采用什么樹實現的

Java 中的 TreeMap 是使用紅黑樹實現的。

19、手寫一個除餓漢式,懶漢式的單例模式。

(這個自己寫吧)

20、解釋一下hibernate的延遲加載機制。

最直觀的認識:在hibernate方法中,直接涉及到延遲加載的方法有get和load,使用get時,不會延遲加載,load則反之。另外,在many-to-one等關系配置中,我們也可以通過lazy屬性設置是否延遲加載。(詳細的自行百度。)

21、Java 中 ++ 操作符是線程安全的嗎?

不是線程安全的操作。它涉及到多個指令,如讀取變量值,增加,然后存儲回內存,這個過程可能會出現多個線程交差。

22、3*0.1 == 0.3 將會返回什么?true 還是 false?

false,因為有些浮點數不能完全精確的表示出來

 

23、構造方法不能有返回值

 

24、Java 中的 LinkedList 是單向鏈表還是雙向鏈表?

是雙向鏈表,你可以檢查 JDK 的源碼。在 Eclipse,你可以使用快捷鍵 Ctrl + T,直接在編輯器中打開該類。

 

25、Java 中的 TreeMap 是采用什么樹實現的?

Java 中的 TreeMap 是使用紅黑樹實現的。

 

26、wait()和sleep()的區別

 

sleep來自Thread類,和wait來自Object類

調用sleep()方法的過程中,線程不會釋放對象鎖。而 調用 wait 方法線程會釋放對象鎖

sleep睡眠后不出讓系統資源,wait讓出系統資源其他線程可以占用CPU

sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒

 

27、JAVA 中堆和棧的區別,說下java 的內存機制

a.基本數據類型比變量和對象的引用都是在棧分配的

b.堆內存用來存放由new創建的對象和數組

c.類變量(static修飾的變量),程序在一加載的時候就在堆中為類變量分配內存,堆中的內存地址存放在棧中

d.實例變量:當你使用java關鍵字new的時候,系統在堆中開辟並不一定是連續的空間分配給變量,是根據零散的堆內存地址,通過哈希算法換算為一長串數字以表征這個變量在堆中的”物理位置”,實例變量的生命周期–當實例變量的引用丟失后,將被GC(垃圾回收器)列入可回收“名單”中,但並不是馬上就釋放堆中內存

e.局部變量: 由聲明在某方法,或某代碼段里(比如for循環),執行到它的時候在棧中開辟內存,當局部變量一但脫離作用域,內存立即釋放

 

28、JAVA多態的實現原理

a.抽象的來講,多態的意思就是同一消息可以根據發送對象的不同而采用多種不同的行為方式。(發送消息就是函數調用)

b.實現的原理是動態綁定,程序調用的方法在運行期才動態綁定,追溯源碼可以發現,JVM 通過參數的自動轉型來找到合適的辦法。

 

29、CAS(Compare And Swap) 無鎖算法:

CAS是樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知這次競爭中失敗,並可以再次嘗試。CAS有3個操作數,內存值V,舊的預期值A,要修改的新值B。當且僅當預期值A和內存值V相同時,將內存值V修改為B,否則什么都不做。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM