1. 程式人生 > >百度"Java面試題"前200頁都在這裡了

百度"Java面試題"前200頁都在這裡了

歡迎關注java技術學習之道,本公眾號長期分享各種技術文章。

基本概念

  • 作業系統中 heap 和 stack 的區別

  • 什麼是基於註解的切面實現

  • 什麼是 物件/關係 對映整合模組

  • 什麼是 Java 的反射機制

  • 什麼是 ACID

  • BS與CS的聯絡與區別

  • Cookie 和 Session的區別

  • fail-fast 與 fail-safe 機制有什麼區別

  • get 和 post請求的區別

  • Interface 與 abstract 類的區別

  • IOC的優點是什麼

  • IO 和 NIO的區別,NIO優點

  • Java 8 / Java 7 為我們提供了什麼新功能

  • 什麼是競態條件? 舉個例子說明。

  • JRE、JDK、JVM 及 JIT 之間有什麼不同

  • MVC的各個部分都有那些技術來實現?如何實現?

  • RPC 通訊和 RMI 區別

  • 什麼是 Web Service(Web服務)

  • JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。

  • WEB容器主要有哪些功能? 並請列出一些常見的WEB容器名字。

  • 一個”.java”原始檔中是否可以包含多個類(不是內部類)?有什麼限制

  • 簡單說說你瞭解的類載入器。是否實現過類載入器

  • 解釋一下什麼叫AOP(面向切面程式設計)

  • 請簡述 Servlet 的生命週期及其相關的方法

  • 請簡述一下 Ajax 的原理及實現步驟

  • 簡單描述Struts的主要功能

  • 什麼是 N 層架構

  • 什麼是CORBA?用途是什麼

  • 什麼是Java虛擬機器?為什麼Java被稱作是“平臺無關的程式語言”

  • 什麼是正則表示式?用途是什麼?哪個包使用正則表示式來實現模式匹配

  • 什麼是懶載入(Lazy Loading)

  • 什麼是尾遞迴,為什麼需要尾遞迴

  • 什麼是控制反轉(Inversion of Control)與依賴注入(Dependency Injection)

關鍵字

  • finalize

    • 使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變

    • 一個類被宣告為final型別,表示了什麼意思

    • throws, throw, try, catch, finally分別代表什麼意義

    • final 與 static 關鍵字可以用於哪裡?它們的作用是什麼

    • final, finally, finalize的區別

    • final、finalize 和 finally 的不同之處?

    • finalize()方法什麼時候被呼叫

    • 解構函式(finalization)的目的是什麼

    • final 和 finalize 的區別

    • final

    • 什麼是finalize()方法

    • final關鍵字有哪些用法

    • 能否在執行時向 static final 型別的賦值

  • Java 有幾種修飾符?分別用來修飾什麼

  • volatile

    • volatile 修飾符的有過什麼實踐

    • volatile 變數是什麼?volatile 變數和 atomic 變數有什麼不同

    • volatile 型別變數提供什麼保證?能使得一個非原子操作變成原子操作嗎

    • 能建立 volatile 陣列嗎?

  • transient變數有什麼特點

  • super什麼時候使用

  • public static void 寫成 static public void會怎樣

  • 說明一下public static void main(String args[])這段聲明裡每個關鍵字的作用

  • 請說出作用域public, private, protected, 以及不寫時的區別

  • sizeof 是Java 的關鍵字嗎

  • static

    • static class 與 non static class的區別

    • static 關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法

    • 靜態型別有什麼特點

    • main() 方法為什麼必須是靜態的?能不能宣告 main() 方法為非靜態

    • 是否可以從一個靜態(static)方法內部發出對非靜態(non-static)方法的呼叫

    • 靜態變數在什麼時候載入?編譯期還是執行期?靜態程式碼塊載入的時機呢

    • 成員方法是否可以訪問靜態變數?為什麼靜態方法不能訪問成員變數

  • switch

    • switch 語句中的表示式可以是什麼型別資料

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

  • while 迴圈和 do 迴圈有什麼不同

操作符

  • &操作符和&&操作符有什麼區別?

  • a = a + b 與 a += b 的區別?

  • 邏輯操作符 (&,|,^)與條件操作符(&&,||)的區別

  • 3*0.1 == 0.3 將會返回什麼?true 還是 false?

  • float f=3.4; 是否正確?

  • short s1 = 1; s1 = s1 + 1;有什麼錯?

資料結構

  • 基礎型別(Primitives)

    • 基礎型別(Primitives)與封裝型別(Wrappers)的區別在哪裡

    • 簡述九種基本資料型別的大小,以及他們的封裝類

    • int 和 Integer 哪個會佔用更多的記憶體? int 和 Integer 有什麼區別?parseInt()函式在什麼時候使用到

    • float和double的預設值是多少

    • 如何去小數四捨五入保留小數點後兩位

    • char 型變數中能不能存貯一箇中文漢字,為什麼

  • 型別轉換

    • 怎樣將 bytes 轉換為 long 型別

    • 怎麼將 byte 轉換為 String

    • 如何將數值型字元轉換為數字

    • 我們能將 int 強制轉換為 byte 型別的變數嗎?如果該值大於 byte 型別的範圍,將會出現什麼現象

    • 能在不進行強制轉換的情況下將一個 double 值賦值給 long 型別的變數嗎

    • 型別向下轉換是什麼

  • 陣列

    • 如何權衡是使用無序的陣列還是有序的陣列

    • 怎麼判斷陣列是 null 還是為空

    • 怎麼列印陣列? 怎樣列印陣列中的重複元素

    • Array 和 ArrayList有什麼區別?什麼時候應該使用Array而不是ArrayList

    • 陣列和連結串列資料結構描述,各自的時間複雜度

    • 陣列有沒有length()這個方法? String有沒有length()這個方法

  • 佇列

    • 佇列和棧是什麼,列出它們的區別

    • BlockingQueue是什麼

    • 簡述 ConcurrentLinkedQueue LinkedBlockingQueue 的用處和不同之處。

  • ArrayList、Vector、LinkedList的儲存效能和特性

  • String

  • StringBuffer

    • ByteBuffer 與 StringBuffer有什麼區別

  • HashMap

    • HashMap的工作原理是什麼

    • 內部的資料結構是什麼

    • HashMap 的 table的容量如何確定?loadFactor 是什麼? 該容量如何變化?這種變化會帶來什麼問題?

    • HashMap 實現的資料結構是什麼?如何實現

    • HashMap 和 HashTable、ConcurrentHashMap 的區別

    • HashMap的遍歷方式及效率

    • HashMap、LinkedMap、TreeMap的區別

    • 如何決定選用HashMap還是TreeMap

    • 如果HashMap的大小超過了負載因子(load factor)定義的容量,怎麼辦

    • HashMap 是執行緒安全的嗎?併發下使用的 Map 是什麼,它們內部原理分別是什麼,比如儲存方式、 hashcode、擴容、 預設容量等

  • HashSet

    • HashSet和TreeSet有什麼區別

    • HashSet 內部是如何工作的

    • WeakHashMap 是怎麼工作的?

  • Set

    • Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用 == 還是 equals()? 它們有何區別?

    • TreeMap:TreeMap 是採用什麼樹實現的?TreeMap、HashMap、LindedHashMap的區別。TreeMap和TreeSet在排序時如何比較元素?Collections工具類中的sort()方法如何比較元素?

    • TreeSet:一個已經構建好的 TreeSet,怎麼完成倒排序。

    • EnumSet 是什麼

  • Hash演算法

    • Hashcode 的作用

    • 簡述一致性 Hash 演算法

    • 有沒有可能 兩個不相等的物件有相同的 hashcode?當兩個物件 hashcode 相同怎麼辦?如何獲取值物件

    • 為什麼在重寫 equals 方法的時候需要重寫 hashCode 方法?equals與 hashCode 的異同點在哪裡

    • a.hashCode() 有什麼用?與 a.equals(b) 有什麼關係

    • hashCode() 和 equals() 方法的重要性體現在什麼地方

    • Object:Object有哪些公用方法?Object類hashcode,equals 設計原則? sun為什麼這麼設計?Object類的概述

    • 如何在父類中為子類自動完成所有的 hashcode 和 equals 實現?這麼做有何優劣。

    • 可以在 hashcode() 中使用隨機數字嗎?

  • LinkedHashMap

    • LinkedHashMap 和 PriorityQueue 的區別是什麼

  • List

    • ArrayList 和 HashMap 的預設大小是多數

    • ArrayList 和 LinkedList 的區別,什麼時候用 ArrayList?

    • ArrayList 和 Set 的區別?

    • ArrayList, LinkedList, Vector的區別

    • ArrayList是如何實現的,ArrayList 和 LinkedList 的區別

    • ArrayList如何實現擴容

    • Array 和 ArrayList 有何區別?什麼時候更適合用Array

    • 說出ArraList,Vector, LinkedList的儲存效能和特性

    • LinkedList 是單向連結串列還是雙向連結串列

    • LinkedList 與 ArrayList 有什麼區別

    • 描述下 Java 中集合(Collections),介面(Interfaces),實現(Implementations)的概念。LinkedList 與 ArrayList 的區別是什麼?

    • 插入資料時,ArrayList, LinkedList, Vector誰速度較快?

    • List, Set, Map三個介面,存取元素時各有什麼特點

    • List, Set, Map 是否繼承自 Collection 介面

    • 遍歷一個 List 有哪些不同的方式

    • LinkedList

    • ArrayList

  • Map

    • Map, Set, List, Queue, Stack

    • Map 介面提供了哪些不同的集合檢視

    • 為什麼 Map 介面不繼承 Collection 介面

  • Collections

    • 介紹Java中的Collection FrameWork。集合類框架的基本介面有哪些

    • Collections類是什麼?Collection 和 Collections的區別?Collection、Map的實現

    • 集合類框架的最佳實踐有哪些

    • 為什麼 Collection 不從 Cloneable 和 Serializable 介面繼承

    • 說出幾點 Java 中使用 Collections 的最佳實踐?

    • Collections 中 遺留類 (HashTable、Vector) 和 現有類的區別

  • 什麼是 B+樹,B-樹,列出實際的使用場景。

介面

  • Comparator 與 Comparable 介面是幹什麼的?列出它們的區別

物件

  • 拷貝(clone)

    • 如何實現物件克隆

    • 深拷貝和淺拷貝區別

    • 深拷貝和淺拷貝如何實現啟用機制

    • 寫clone()方法時,通常都有一行程式碼,是什麼

  • 比較

    • 在比較物件時,”==” 運算子和 equals 運算有何區別

    • 如果要重寫一個物件的equals方法,還要考慮什麼

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

  • 構造器

    • 構造器鏈是什麼

    • 建立物件時構造器的呼叫順序

  • 不可變物件

    • 什麼是不可變象(immutable object)

    • 為什麼 Java 中的 String 是不可變的(Immutable)

    • 如何構建不可變的類結構?關鍵點在哪裡

    • 能建立一個包含可變物件的不可變物件嗎

  • 如何對一組物件進行排序

方法

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

  • 方法可以同時即是 static 又是 synchronized 的嗎

  • abstract 的 method是否可同時是 static,是否可同時是 native,是否可同時是synchronized

  • Java支援哪種引數傳遞型別

  • 一個物件被當作引數傳遞到一個方法,是值傳遞還是引用傳遞

  • 當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞

  • 我們能否過載main()方法

  • 如果main方法被宣告為private會怎樣

GC

  • 概念

    • GC是什麼?為什麼要有GC

    • 什麼時候會導致垃圾回收

    • GC是怎麼樣執行的

    • 新老以及永久區是什麼

    • GC 有幾種方式?怎麼配置

    • 什麼時候一個物件會被GC? 如何判斷一個物件是否存活

    • System.gc()  Runtime.gc()會做什麼事情?  能保證 GC 執行嗎

    • 垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?

    • Minor GC 、Major GC、Young GC 與 Full GC分別在什麼時候發生

    • 垃圾回收演算法的實現原理

    • 如果物件的引用被置為null,垃圾收集器是否會立即釋放物件佔用的記憶體?

    • 垃圾回收的最佳做法是什麼

  • GC收集器有哪些

    • Serial 與 Parallel GC之間的不同之處

    • CMS 收集器 與 G1 收集器的特點與區別

    • CMS垃圾回收器的工作過程

    • JVM 中一次完整的 GC 流程是怎樣的? 物件如何晉升到老年代

    • 吞吐量優先和響應優先的垃圾收集器選擇

    • 垃圾回收器的基本原理是什麼?

    • 序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼

  • GC策略

    • 舉個實際的場景,選擇一個GC策略

    • JVM的永久代中會發生垃圾回收嗎

  • 收集方法

    • 標記清除、標記整理、複製演算法的原理與特點?分別用在什麼地方

    • 如果讓你優化收集方法,有什麼思路

JVM

  • 引數

    • 說說你知道的幾種主要的jvm 引數

    • -XX:+UseCompressedOops 有什麼作用

  • 類載入器(ClassLoader)

    • Java 類載入器都有哪些

    • JVM如何載入位元組碼檔案

  • 記憶體管理

    • JVM記憶體分哪幾個區,每個區的作用是什麼

    • 一個物件從建立到銷燬都是怎麼在這些部分裡存活和轉移的

    • 解釋記憶體中的棧(stack)、堆(heap)和方法區(method area)的用法

    • JVM中哪個引數是用來控制執行緒的棧堆疊小

    • 簡述記憶體分配與回收策略

    • 簡述重排序,記憶體屏障,happen-before,主記憶體,工作記憶體

    • Java中存在記憶體洩漏問題嗎?請舉例說明

    • 簡述 Java 中軟引用(SoftReferenc)、弱引用(WeakReference)和虛引用

    • 記憶體對映快取區是什麼

  • jstack,jstat,jmap,jconsole怎麼用

  • 32 位 JVM 和 64 位 JVM 的最大堆記憶體分別是多數?32 位和 64 位的 JVM,int 型別變數的長度是多數?

  • 怎樣通過 Java 程式來判斷 JVM 是 32 位 還是 64 位

  • JVM自身會維護快取嗎?是不是在堆中進行物件分配,作業系統的堆還是JVM自己管理堆

  • 什麼情況下會發生棧記憶體溢位

  • 雙親委派模型是什麼

多執行緒

  • 基本概念

    • Vector, SimpleDateFormat 是執行緒安全類嗎

    • 什麼 Java 原型不是執行緒安全的

    • 哪些集合類是執行緒安全的

    • 用 Runnable 還是 Thread

    • 什麼是執行緒

    • 多執行緒的優點

    • 多執行緒的幾種實現方式

    • 什麼是執行緒安全

    • 多執行緒中的忙迴圈是什麼

    • 如何建立一個執行緒

    • 編寫多執行緒程式有幾種實現方式

    • 什麼是執行緒區域性變數

    • 執行緒和程序有什麼區別?程序間如何通訊,執行緒間如何通訊

    • 什麼是多執行緒環境下的偽共享(false sharing)

    • 同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明

  • Current

    • ConcurrentHashMap 和 Hashtable的區別

    • ArrayBlockingQueue, CountDownLatch的用法

    • ConcurrentHashMap的併發度是什麼

  • CyclicBarrier 和 CountDownLatch有什麼不同?各自的內部原理和用法是什麼

  • Semaphore的用法

  • Thread

    • 啟動一個執行緒是呼叫 run() 還是 start() 方法?start() 和 run() 方法有什麼區別

    • 呼叫start()方法時會執行run()方法,為什麼不能直接呼叫run()方法

    • sleep() 方法和物件的 wait() 方法都可以讓執行緒暫停執行,它們有什麼區別

    • yield方法有什麼作用?sleep() 方法和 yield() 方法有什麼區別

    • Java 中如何停止一個執行緒

    • stop() 和 suspend() 方法為何不推薦使用

    • 如何在兩個執行緒間共享資料

    • 如何強制啟動一個執行緒

    • 如何讓正在執行的執行緒暫停一段時間

    • 什麼是執行緒組,為什麼在Java中不推薦使用

    • 相關推薦

      "Java試題"200這裡

      歡迎關注java技術學習之道,本公眾號長期分享各種技術文章。基本概念作業系統中 heap 和 stack 的區別什麼是基於註解的切面實現什麼是 物件/關係 對映整合模組什麼是 Java 的反射機制什麼是 ACIDBS與CS的聯絡與區別Cookie 和 Session的區別fa

      Java試題200和答案這裡

      1.BlockingQueue佇列和平常佇列一樣都可以用來作為儲存資料的容器,但有時候線上程當中涉及到資料儲存的時候就會出現問題,而BlockingQueue是空的話,如果一個執行緒要從BlockingQueue裡取資料的時候,該執行緒將會被阻斷,並進入等待狀態,直到BlockingQueue裡面有資料存入了

      搜索 “Java試題200(面試必看)

      前言本文中的題目來源於網上的一篇文章《百度搜索 “Java面試題” 前200頁》,但該文章裡面只有題目,沒有答案。因此,我整理了一些答案發佈於本文。本文整理答案的原則是儘量做到精簡、點到即止(因為一般面試題的試卷裡面的作答區域有限)。如果你有更好的答案,歡迎在評

      阿里Java試題200和答案

      有興趣可以加入我QQ 981713155 1.關鍵字transient 1)一旦變數被transient修飾,變數將不再是物件持久化的一部分,該變數內容在序列化後無法獲得訪問。 2)transient關鍵字只能修飾變數,而不能修飾方法和類。注意,本地變數是不能被transient關鍵字修飾的

      一道java試題的多種解法

      close catch 一個人 count 一個 oid 試題 color 問題 下面是我在2018年10月11日二面百度的時候的一個問題: java程序,主進程需要等待多個子進程結束之後再執行後續的代碼,有哪些方案可以實現? 這個需求其實我們在工作中經常會用到,比如用戶下

      Java 試題200在這裏

      serializa 負載 第三方 lin 目的 safe 並排 原理 java虛擬機 基本概念 操作系統中 heap 和 stack 的區別 什麽是基於註解的切面實現 什麽是 對象/關系 映射集成模塊 什麽是 Java 的反射機制 什麽是 ACID BS與CS的聯系與區別

      Java 試題 200 這裡

      基本概念作業系統中 heap 和 stack 的區別什麼是基於註解的切面實現什麼是 物件/關係 對映整合模組什麼是 Java 的反射機制什麼是 ACIDBS與CS的聯絡與區別Cookie 和 Session的區別fail-fast 與 fail-safe 機制有什麼區別get

      Java經)網際網路公司校招Java試題總結及答案——(目前只是部分總結)

      1.關鍵字transient 1)一旦變數被transient修飾,變數將不再是物件持久化的一部分,該變數內容在序列化後無法獲得訪問。 2)transient關鍵字只能修飾變數,而不能修飾方法和類。注意,本地變數是不能被transient關鍵字修飾的。變數如果是使用者自定

      Python爬蟲 - 爬取html代碼200

      http src mage bsp bubuko str 百度 爬蟲 圖片 Python爬蟲 - 爬取百度html代碼前200行 - 改進版, 增加了對字符串的.strip()處理 Python爬蟲 - 爬取百度html代碼前200行

      2017年測試試題

      一面(基礎) 1. 寫程式碼(從陣列中找出兩個相加等於n的下標) 2.測試三邊能不能組成三角形(考測試思維全面性和邏輯是否清晰) 等價劃分類   三角形測試用例類別 輸入條件 有效等價類

      一面 試題 移動端 2015

      上午面完我大TX 。。腦子一熱報了個遊戲策劃 ...lz是搞技術的...  群面被虐的爽歪歪 然後 累得半死趕到了百度 所在的酒店面試。。 百度這次沒有hr... 貌似面試官也就幾個人 正題: 1、不使用額外的空間 交換2個數   a = a+b   b = a-b  

      js試題

      該題的難度係數: ★★★★(3~5顆星之間) 涉及的相關技術點: 1). 記憶體分析 2). 原型鏈 3). 運算子的優先順序 題目如下: var a = {n: 1} var b = a a.x = a = {n: 2} 問:console.log(a.n, b.n)和

      2012實習生試題一道,打亂100個數的順序,越亂越好 .

      題目如下: 一個數組中有0-99共100個數,要求在在O(n)的時間內打亂這個陣列的順序,越亂越好。 我的思路如下: 設定一個bound值(最初bound值為99),每次迴圈,隨機生成一個數組下標tmpIndex=rand()%bound,交換a[bound

      php試題

      php的錯誤日誌在哪裡可以看到?一些框架是如何將所有的錯誤日誌打到某個指定的檔案?名詞解釋CGI 、 fastcgi 、php-cgi、php-fpmRequire 與 require_once的區別 、require 與 include的區別empty 返回未true的情

      C++試題

      2012年10月18號百度PC客戶端崗位一面電話面試面試題: 前奏:因為阿里巴巴的面試不能由大連調北京,我就風塵撲撲的從北京回到大連去面阿里巴巴,儘管知道在就業形勢很不好的今年進阿里巴巴的機會很渺茫,但是還是想試一把,所以就回去了,正好在回去的時候收到的百度的面試,由

      Android試題之如何停止一個執行緒

      前段時間去面試了百度android職位,雖然沒有通過,但是發現了很多自己的不足,回來痛定思痛,決定將所有的面試題整理到CSDN上,查漏補缺。問:如何停止一個執行緒?由於平時不怎麼寫多執行緒,所以直接說了個interrupt()顯然是不對的。那麼接下來我們探討一下java中如何

      關於淘汰85%面試者的開發者試題的看法

      剛在網上看到一篇文章,標題為 一道淘汰85%面試者的百度開發者面試題,感覺好難的樣子,就默默的進去看了一下,首先來看一下原題吧。 題目描述: 依序遍歷0到100閉區間內所有的正整數,如果該數字能被3整除,則輸出該數字及‘*’標記;如果該數字能被5整除,則輸出該數字及

      這些棘手的Java試題,答案你知道嗎?

      棘手的Java面試問題是那些有一些驚喜元素的問題。如果你試圖用常識回答一個棘手的問題,你很可能會因為需要一些特定的知識而失敗。大多數棘手的Java問題來自於令人困惑的概念,如函式過載和覆蓋,多執行緒,掌握非常棘手,字元編碼,檢查與未檢查的異常和Integer溢位等微妙的J

      java試題總結(三)--本文是筆試題,很值得學習一下

      來自:https://www.cnblogs.com/lanxuezaipiao/p/3371224.html 下面是我在原文中選擇了我比較容易犯錯的題   1. 下面哪些是Thread類的方法() A start()       B run(

      「面試必備」常見Java試題大綜合 馬雲見點贊

      一、Java基礎 1、Arrays.sort實現原理和Collections.sort實現原理 答:Collections.sort方法底層會呼叫Arrays.sort方法,底層實現都是TimeSort實現的。TimSort演算法就是找到已經排好序資料的子序列,然後對剩餘部分排序,然後合併起來. 2、f