java interview
1.0.0
維多利亞‧德米多娃 (Victoria Demidova) 問答整理
由 cmmttd 提供的 Telegram 機器人
到內容
到內容
final
關鍵字是什麼意思?main()
函數了解多少?abstract
修飾符在哪裡使用以及用於什麼目的?final
修飾符宣告介面方法?private
類別變數嗎?如果是,那麼如何?static
修飾符適用於哪些 Java 構造?throws
部分中元素的順序?assert
語句有什麼用?finalize()
?為什麼需要它?finalize()
方法需要相當長的時間才能完成,或者在執行過程中拋出異常,垃圾收集器會發生什麼情況?final
、 finally
和finalize()
之間有什麼不同?ClassCastException
?String
類別有什麼特色?String
一個不可變且終結的類別?char[]
比String
更適合儲存密碼?HashMap
中流行的鍵?String
類別中的intern()
方法有什麼作用?switch
結構中使用字串?String
、 StringBuffer
、 StringBuilder
之間的主要差異是什麼?Object
類別?它有哪些方法呢?clone()
方法是在Object
類別中宣告的,而不是在Cloneable
介面中宣告的?equals()
?它與==
操作有何不同?equals()
產生等價關係。這種態度有什麼特色呢?equals()
,重寫的方法必須滿足什麼條件?Object.equals()
方法的規則。hashCode()
和equals()
之間有什麼關係?equals()
被重寫,是否有其他方法應該被重寫?equals()
而不重寫hashCode()
會發生什麼?可能會出現什麼問題?Object
類別中的hashCode()
和equals()
方法是如何實現的?hashCode()
方法的用途是什麼?Object.hashCode()
方法的規則。hashCode()
時應使用哪些欄位有什麼建議嗎?hashCode()
嗎?Point{int x, y;}
實作equals(Object that) {(return this.x == that.x && this.y == that.y)}
方法,但使雜湊碼採取下列形式int hashCode() {return x;}
,那麼這些點是否會被正確地放置並從HashSet
中檢索?(ref0 != ref1)
可以有ref0.equals(ref1) == true
嗎?(ref0 == ref1)
是否可以有ref0.equals(ref1) == false
?equals(Object that) {return this.hashCode() == that.hashCode()}
方法?equals()
需要檢查參數equals(Object that)
是否與物件本身類型相同。 this.getClass() == that.getClass()
和that instanceof MyClass
之間有什麼差別?MyClass
類別的equals()
方法: class MyClass {public boolean equals(MyClass that) {return this == that;}}
?Point{int x, y;}
。為什麼哈希碼31 * x + y
優於x + y
?throws
關鍵字是什麼意思?Error
?OutOfMemoryError
了解多少?catch
)?catch
區塊可以同時捕捉多個異常嗎?finally
區塊總是被執行嗎?finally
區塊不會被執行的情況?IOException
和FileNotFoundException
catch
區塊應該要用什麼順序運行?將執行多少個catch
區塊?到內容
List
、 Set
、 Map
、 SortedSet
、 SortedMap
、 Collection
、 Iterable
、 Iterator
、 NavigableSet
、 NavigableMap
。Map
不是Collection
而List
和Set
是Collection
?java.util.Collection
和java.util.Collections
類別之間有什麼區別?Enumeration
和Iterator
有什麼差別。Iterable
和Iterator
有何關係?Iterable
、 Iterator
和「for-each」如何相互關聯?Iterator
和ListIterator
。Iterator.next()
的情況下呼叫Iterator.hasNext()
時會發生什麼?Iterator.next()
後呼叫Iterator.hasNext()
),將跳過多少個元素?iterator.remove()
集合將如何表現?collection.remove()
,已實例化的collection
迭代器會如何表現?ConcurrentModificationException
?ArrayList
和Vector
有什麼差別?Vector
為什麼還要加入ArrayList
?ArrayList
和LinkedList
有什麼差別?在什麼情況下最好使用第一個,在什麼情況下使用第二個?ArrayList
和LinkedList
哪個比較快?LinkedList
中的元素, contains()
方法的最差運行時間是多少?ArrayList
中的元素, contains()
方法的最差運行時間是多少?LinkedList
上add()
方法的最差運行時間是多少?ArrayList
上的add()
方法的最差運行時間是多少?ArrayList
中刪除元素?在這種情況下, ArrayList
的大小如何變化?ArrayList
實作的清單中間刪除多個相鄰元素。ArrayList.add()
時需要多少額外記憶體?LinkedList.add()
時會分配多少額外記憶體?LinkedList
中儲存一個byte
原語所需的記憶體量?ArrayList
中儲存一個byte
基元所需的記憶體量?ArrayList
或LinkedList
向中間新增元素( list.add(list.size()/2, newElement)
)的操作是否較慢?ArrayList
類別的實作有以下欄位: Object[] elementData
、 int size
。如果您始終可以獲得elementData.length
,請解釋為什麼您應該單獨儲存size
?Queue
和Deque
介面。Queue
擴充Deque
,還是Deque
擴充Queue
?LinkedList
同時實作List
和Deque
?LinkedList
是單鍊錶、雙鍊錶還是四鍊錶?get(index)
情況下以相反順序迭代LinkedList
元素?PriorityQueue
允許您做什麼?Stack
被認為是“過時的”。建議用什麼來代替?為什麼?Hashtable
為什麼還需要HashMap
?HashMap
和IdentityHashMap
有什麼不同? IdentityHashMap
的用途是什麼?HashMap
和WeakHashMap
有什麼不同? WeakHashMap
的用途是什麼?WeakHashMap
使用 WealReferences。為什麼不在 SoftReferences 上建立SoftHashMap
?WeakHashMap
使用 WealReferences。為什麼不在 PhantomReferences 上創建PhantomHashMap
?LinkedHashMap
- 什麼是來自LinkedList
和什麼是來自HashMap
?toString()
依序顯示所有元素之外, SortedMap
是如何「排序」的?HashMap
是如何運作的?HashMap
是如何實現的?您認為為什麼選擇這個特定的實作?每種方法的優點和缺點是什麼?hashCode()
鍵將兩個元素儲存到 HashMap 中,但equals() == false
時, HashMap
是如何運作的?HashMap
中的初始桶數是多少?HashMap
中的元素進行操作的時間複雜度估計是多少? HashMap
是否保證指定的元素取得複雜度?hashCode()
HashMap
是否有可能退化為列表?HashMap
中的元素在什麼情況下會遺失?byte[]
不能用作HashMap
中的鍵?HashMap
中equals()
和hashCode()
的作用是什麼?hashCode()
最大數量是多少?HashMap
中的鍵, get(key) 方法的最差運行時間是多少?HashMap
中的鍵, get(key) 方法的最差運行時間是多少?HashMap
中的鍵不需要實作Comparable
接口,雙向鍊錶總能轉換為紅黑樹?HashMap.get(key)
時會發生多少次轉換?HashMap
新增元素時,會建立多少個新物件?HashMap
中的桶數如何以及何時增加?HashMap(int initialCapacity, float loadFactor)
建構子中參數的意義。hashCode()
HashMap
會運作嗎?Map
所有鍵?Map
值?Map
中的所有鍵值對?TreeSet
和HashSet
有什麼差別?TreeSet
會發生什麼事?LinkedHashSet
與HashSet
有何不同?Enum
有一個特殊的類java.util.EnumSet
。為了什麼?為什麼作者對HashSet
或TreeSet
不滿意?ConcurrentModificationException
。UnsupportedOperationException
的範例。Collection
方法( addAll(...)
、 removeAll(...)
、 retainAll(...)
)實現兩個集合的對稱差異。collection
的元素複製到數組中?List
的一次呼叫來取得包含第一個和最後 3 個元素之外的所有元素的List
?HashSet
轉換為ArrayList
?ArrayList
轉換為HashSet
?HashMap
鍵創建HashSet
。HashSet<Map.Entry<K, V>>
建立HashMap
。到內容
System.out::println
。Function<T,R>
、 DoubleFunction<R>
、 IntFunction<R>
和LongFunction<R>
的用途是什麼?UnaryOperator<T>
、 DoubleUnaryOperator
、 IntUnaryOperator
和LongUnaryOperator
的用途是什麼?BinaryOperator<T>
、 DoubleBinaryOperator
、 IntBinaryOperator
和LongBinaryOperator
的用途是什麼?Predicate<T>
、 DoublePredicate
、 IntPredicate
和LongPredicate
函數介面的用途是什麼?Consumer<T>
、 DoubleConsumer
、 IntConsumer
和LongConsumer
的用途是什麼?Supplier<T>
、 BooleanSupplier
、 DoubleSupplier
、 IntSupplier
和LongSupplier
函數介面的用途是什麼?BiConsumer<T,U>
函數介面的用途是什麼?BiFunction<T,U,R>
?BiPredicate<T,U>
函數介面的用途是什麼?_To_Function
這樣的函數式介面做什麼?ToDoubleBiFunction<T,U>
、 ToIntBiFunction<T,U>
和ToLongBiFunction<T,U>
?ToDoubleFunction<T>
、 ToIntFunction<T>
和ToLongFunction<T>
的用途是什麼?ObjDoubleConsumer<T>
、 ObjIntConsumer<T>
和ObjLongConsumer<T>
的用途是什麼?StringJoiner
?default
介面方法有哪些?default
方法?static
介面方法?static
介面方法?Optional
?Stream
?Collection
和Stream
有什麼差別?collect()
方法有什麼用?forEach()
和forEachOrdered()
方法?map()
和mapToInt()
、 mapToDouble()
、 mapToLong()
方法是什麼?filter()
方法的用途是什麼?limit()
方法在流中的用途是什麼?sorted()
方法的用途是什麼?flatMap()
、 flatMapToInt()
、 flatMapToDouble()
、 flatMapToLong()
方法是什麼?forEach()
將 10 個隨機數字列印到螢幕上?map()
方法顯示唯一的數字平方?filter()
方法顯示空行數?LocalDateTime
?ZonedDateTime
?Nashorn
?jjs
是什麼?到內容
InputStream
類別的哪些子類別以及它們的用途是什麼?PushbackInputStream
用途是什麼?SequenceInputStream
用途是什麼?OutputStream
類別的哪些子類別以及它們的用途是什麼?Reader
類別的哪些子類別以及它們的用途是什麼?Writer
類別的哪些子類別以及它們的用途是什麼?PrintWriter
類別和PrintStream
有什麼差別?InputStream
、 OutputStream
、 Reader
、 Writer
有什麼區別和共同點?File
類別的哪些方法?FileFilter
介面了解多少?RandomAccessFile
了解多少?RandomAccessFile
有哪些檔案存取模式?到內容
Serializable
描述序列化/反序列化過程。transient
關鍵字是什麼意思?static
和final
字段修飾符對可串列性有什麼影響?serialVersionUID
欄位的作用是什麼?serialVersionUID
欄位的值?到內容
Thread
和Runnable
有什麼差別?start()
和run()
方法有什麼差別?static synchronized
方法運行時建立類別的新實例?private
互斥體?wait()
和notify()
/ notifyAll()
方法如何運作?notify()
和notifyAll()
有什麼差別?wait()
和notify()
方法只在同步區塊中呼叫?wait()
方法有什麼差別?Thread.sleep()
和Thread.yield()
方法有什麼不同?Thread.join()
方法如何運作?static synchronized
方法時,同步發生在什麼物件上?volatile
、 synchronized
、 transient
、 native
的用途是什麼?volatile
變數和原子變數有什麼區別?java.util.concurrent.Atomic*.compareAndSwap()
和java.util.concurrent.Atomic*.weakCompareAndSwap()
之間有什麼不同?Runnable
和Callable
這兩個介面有什麼差別?FutureTask
?CyclicBarrier
和CountDownLatch
之間有什麼區別?Thread.stop()
方法?interrupted()
和isInterrupted()
之間有什麼不同?submit()
和execute()
方法有什麼差別?synchronized
和ReentrantLock
有什麼差別?ReadWriteLock
?Semaphore
?push()
和pop()
)。Semaphore
編寫一個最小的非阻塞堆疊(只有兩個方法 - push()
和pop()
)。add()
、 get()
、 remove()
、 size()
)。BigInteger next()
方法編寫一個類別的線程安全實現,該方法傳回序列的元素: [1, 2, 4, 8, 16, ...]
。synchronized
編寫一個簡單的多執行緒有界緩衝區。ReentrantLock
編寫一個簡單的多執行緒有界緩衝區。到內容
到內容
service()
方法?init()
方法?ServletConfig
?ServletContext
?ServletContext
和ServletConfig
有什麼不同?ServletResponse
介面有什麼用?ServletRequest
介面有什麼用?Request Dispatcher
?sendRedirect()
和forward()
有什麼差別?GenericServlet
和HttpServlet
之間有什麼區別?HttpServlet
類別被宣告為抽象類別?HttpServlet
類別中有哪些主要方法?GET
和POST
方法有什麼差別?PrintWriter
和ServletOutputStream
有什麼差別?PrintWriter
和ServletOutputStream
?SingleThreadModel
介面的資訊。encodeURL()
和encodeRedirectURL()
方法以及它們有什麼不同?PageContext
了解多少?<c:set>
和<jsp:useBean>
之間有什麼差別?<c:import>
和<jsp:include>
以及<%@include %>
指令有什麼不同?web.xml
中配置標準 JSP 標籤?JSPWriter
和 servlet PrintWriter
之間有什麼區別?到內容
到內容
NULL
是什麼意思?SELECT
語句的一般語法是什麼?JOIN
?JOIN
有哪些類型?JOIN
還是子查詢更好?HAVING
運算子的用途是什麼?HAVING
和WHERE
語句有什麼不同?ORDER BY
語句的用途是什麼?GROUP BY
運算子的用途是什麼?GROUP BY
如何處理NULL
值?GROUP BY
和DISTINCT
語句有什麼不同?COUNT(*)
和COUNT({column})
之間有什麼不同?EXISTS
語句有什麼作用?IN
、 BETWEEN
、 LIKE
運算子的用途是什麼?UNION
關鍵字的用途是什麼?PRIMARY
和UNIQUE
約束之間有什麼區別?FOREIGN KEY
約束的欄位可以是NULL
嗎?MERGE
語句有什麼作用?DELETE
和TRUNCATE
語句有什麼差別?DATETIME
和TIMESTAMP
資料類型之間的差異。PIVOT
和UNPIVOT
運算子的用途是什麼?INTERSECT
和EXCEPT
運算子有何用途?到內容
到內容
@Ignore
註解的用途是什麼?到內容
到內容
到內容
到內容
到內容
DOCTYPE
?<head>
標籤的用途是什麼?<div>
和<span>
之間有什麼差別?<em>
標籤的用途是什麼?<ol>
、 <ul>
、 <li>
標籤有什麼用?<dl>
、 <dt>
、 <dd>
標籤的用途是什麼?<tr>
、 <th>
、 <td>
標籤的用途是什麼?<img>
標籤中是否需要寫alt
屬性?到內容
#my
和.my
有什麼差別?margin
和padding
有什麼差別?margin
屬性中的值0
和auto
有什麼差別?clear
屬性是用來做什麼的?<p>
元素中的文字變成粗體?red
類別的元素設定紅色?到內容
到內容
元件架構
卡夫卡API
卡夫卡消費者
其他問題
與其他組件和系統的比較
到內容
到內容