- Java高級工程師面試題及答案 推薦度:
- 相關(guān)推薦
Java工程師面試題及答案
在學習和工作的日常里,我們最不陌生的就是試題了,試題可以幫助參考者清楚地認識自己的知識掌握程度。一份什么樣的試題才能稱之為好試題呢?下面是小編整理的Java工程師面試題及答案,歡迎大家借鑒與參考,希望對大家有所幫助。
Java工程師面試題及答案 1
1. 如何判斷一個數(shù)是2的冪。
個人認為,數(shù)字轉(zhuǎn)化為二進制,符號位為0,余下部分有且只有最左邊一位是1,其余位都是0,才是2的冪。原理是 乘二則向左進一位。
2.陷阱面試題:
在Java中,Throwable是一個接口還是抽象類?
3.Javascript 題目
4. 二進制算法以及思維陷阱題
現(xiàn)有一千瓶藥水,其中九百九十九瓶是完全一樣的,只有一瓶里面是毒藥,但是外觀上分辨不出來。毒藥如果給小白鼠喝一點,一星期后這只小白鼠會突然死亡,但之前一點癥狀也沒有,F(xiàn)需要在一星期內(nèi)找出哪瓶是毒藥,問至少需要幾只小白鼠?
5.Java數(shù)據(jù)范圍
在Java中, 有一個數(shù)字,比如100億,可以使用 int 來存儲嗎?
100億 * 100億呢,可以用什么類型來存儲?
這樣計算, int 類型是32位,4個字節(jié),2的10次方是 1024,大約是1K,2^20 = 1M,約100萬, 2^30= 1G,大約是10億,所以整數(shù)只能存大約40億個數(shù)字,正數(shù)22E個,所以 100億可以使用long來存儲,但不能使用 int來存儲。
long是64位,因為 32位存放不下100億,所以64位也存放不下 100億 * 100億,只能使用特殊的類型啦,比如K神所說的 BigInteger,或者 BigDecimal來存放。
一個測試程序:
6. Java面試題: 如何在一個interface 中執(zhí)行一些操作
7.MySQL中UUID做主鍵如何變得有序呢?
返回的.結(jié)果如下所示:
8.為什么JSON定義的標準中,屬性名需要用引號引起來呢,像下面的name一樣?
應該考慮到各種系統(tǒng),各種關(guān)鍵字以及標識符的組成不同,而且會有Map等情況
9.關(guān)于JVM
有個萬(wu)能(lai) 的面試技巧,你可以問求職者,這個背后的思想是什么,你理解他的原理嗎,為什么要這樣實現(xiàn),如果讓你自己寫,多長時間做一個基礎(chǔ)版本出來?
GC 有哪幾種, 每個JDK版本中有什么區(qū)別, 哪幾種算法比較好, 適合什么情況, 其回收的思想是什么,怎么實現(xiàn)的,優(yōu)缺點是什么,你要如何調(diào)優(yōu)。。
10.面試題: Java 中, 下面的這種用法有什么問題?
Date nextMonth = new Date(newDate().getTime() + 30*24*60*60*1000);
當然,這種用法是很不好的,加一個月應該使用的是Calendar 類,Calendar是Java的標準工具類,在 java.util 包下面.
Date today = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(today);
cal.add(Calendar.MONTH, 1); // 加一個月
cal.add(Calendar.DATE, -1); // 減一天
//
Date nextM = cal.getTime();
System.out.println(nextM);
更坑的在這里:
long n = 30*24*60*60*1000;
long nl = 30*24*60*60*1000L;
System.out.println("n="+n);
System.out.println("nl="+nl);
可以參考下面的輸出結(jié)果:
n=-1702967296
nl=2592000000
提示: int 值可以放下多大的值?
Java工程師面試題及答案 2
第一,談談final, finally, finalize的區(qū)別。
final?修飾符(關(guān)鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally?再異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進入 finally 塊(如果有的話)。
finalize?方法名。Java 技術(shù)允許使用 finalize 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在 Object類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize 方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。
第二,HashMap和Hashtable的區(qū)別。
都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
第三,String s = new String("xyz");創(chuàng)建了幾個String Object?
兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。
第四,sleep 和 wait 有什么區(qū)別? 搞線程的最愛
sleep方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執(zhí)行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調(diào)度為放棄執(zhí)行,除非(a)“醒來”的線程具有更高的優(yōu)先級
(b)正在運行的線程因為其它原因而阻塞。
wait是線程交互時,如果線程對一個同步對象x 發(fā)出一個wait調(diào)用,該線程會暫停執(zhí)行,被調(diào)對象進入等待狀態(tài),直到被喚醒或等待時間到。
第五,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型?尚薷臑閟1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
第六,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的`方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
第七,Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢? 是用==還是equals? 它們有何區(qū)別?
Set里的元素是不能重復的,那么用iterator方法來區(qū)分重復與否。equals是判讀兩個Set是否相等。
equals和==方法決定引用值是否指向同一對象equals在類中被覆蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的話,返回真值。
第八,error和exception有什么區(qū)別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。
第九,給我一個你最常見到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十,Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢? 是用==還是equals? 它們有何區(qū)別?
Set里的元素是不能重復的,那么用iterator方法來區(qū)分重復與否。equals是判讀兩個Set是否相等。
equals和==方法決定引用值是否指向同一對象equals在類中被覆蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的話,返回真值。
【Java工程師面試題及答案】相關(guān)文章:
java面試題2017及答案03-06
Java高級工程師面試題及答案03-24
Java工程師面試題03-29
Java main方法面試題及答案03-14
2017年java面試題及答案03-09
高級Java面試題及答案201602-26
NIIT認證Java面試題及答案03-30
2017年最新java面試題及答案03-09