1. 程式人生 > >阿里、騰訊、百度、華為、京東、搜狗、滴滴 上10家試題彙總(史上最全)

阿里、騰訊、百度、華為、京東、搜狗、滴滴 上10家試題彙總(史上最全)


瘋狂創客圈整理了數百道面試題, 不光是為了面試,如果能全部解答, JAVA的技術水平也是傲視群雄了。

後續還會不斷更新。有些題目挺難的,歡迎大家來交流答案。


[第一部分] JAVA基礎

[第一篇] 面向物件

[第1題] 面向物件是什麼?

[第2題] 類載入的過程

[第3題] 類載入器有哪些

[第4題] 雙親委派模式

[第5題] 編寫自己的類載入器

[第6題] 物件的建立

[第7題] jvm的優化

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

[第9題] JDK和JRE的區別是什麼?

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

[第11題] 是否可以在static環境中訪問非static變數?

[第12題] Java支援的資料型別有哪些?什麼是自動拆裝箱?

[第13題] Java中的方法覆蓋(Overriding)和方法過載(Overloading)是什麼意思?

[第14題] Java中,什麼是建構函式?什麼是建構函式過載?什麼是複製建構函式?

[第15題] Java支援多繼承麼?

[第16題] 介面和抽象類的區別是什麼?

[第17題] 10.什麼是值傳遞和引用傳遞?

[第18題] 我們能在 Switch 中使用 String 嗎?

[第19題] 20.Java 中的構造器鏈是什麼?

[第20題] 64 位 JVM 中,int 的長度是多數?

[第21題] 32 位和 64 位的 JVM,int 型別變數的長度是多數?

[第22題] “a==b”和”a.equals(b)”有什麼區別?

[第23題] a.hashCode() 有什麼用?與 a.equals(b) 有什麼關係?

[第24題] final、finalize 和 finally 的不同之處?

[第25題] Java 中的編譯期常量是什麼?使用它又什麼風險?

[第26題] 用最有效率的方法計算2乘以8?

[第二篇] 異常處理

[第1題] Java中的兩種異常型別是什麼?他們有什麼區別?

[第2題] Java中Exception和Error有什麼區別?

[第3題] throw和throws有什麼區別?

[第4題] 異常處理的時候,finally程式碼塊的重要性是什麼?(譯者注:作者標題的序號弄錯了)

[第5題] 異常處理完成以後,Exception物件會發生什麼變化?

[第6題] finally程式碼塊和finalize()方法有什麼區別?

[第7題] .Java記憶體洩露的問題調查定位:

[第8題] String StringBuilder StringBuffer對比;

[第8題] Java如何呼叫c、c++語言;

[第10題] 介面與回撥;回撥的原理;寫一個回撥demo;

[第11題] 泛型原理,舉例說明;解析與分派;

[第12題] 抽象類與介面的區別;應用場景;抽象類是否可以沒有方法和屬性;

[第13題] 靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?

[第14題] 修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法;

[第15題] 說說你對泛型的瞭解;

[第16題] Java的異常體系;

[第17題] 如何控制某個方法允許併發訪問執行緒的個數;

[第18題] 動態代理的區別,什麼場景使用;

[第三篇] 不可變物件

[第1題] 什麼是不可變物件(immutable object)?Java 中怎麼建立一個不可變物件?

[第2題] 我們能建立一個包含可變物件的不可變物件嗎?

[第四篇] 資料型別

[第1題] 請寫出下面幾個表示式的結果,答案可以用10進位制或16進制書寫

[第2題] &和&&的區別?

[第3題] Java 中應該使用什麼資料型別來代表價格?

[第4題] 怎麼將 byte 轉換為 String?

[第5題] Java 中 bytes 與其他型別的轉換?

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

[第7題] 存在兩個類,B 繼承 A,C 繼承 B,我們能將 B 轉換為 C 麼?如 C = (C) B;

[第8題] 哪個類包含 clone 方法?是 Cloneable 還是 Object?

[第9題] a = a + b 與 a += b 的區別

[第10題] 我能在不進行強制轉換的情況下將一個 double 值賦值給 long 型別的變數嗎?

[第11題] 3*0.1 == 0.3 將會返回什麼?true 還是 false?

[第12題] int 和 Integer 哪個會佔用更多的記憶體?

[第13題] 為什麼 Java 中的 String 是不可變的(Immutable)?

[第14題] String和StringBuilder、StringBuffer的區別?

[第五篇] 集合類

[第15題] Java集合類框架的基本介面有哪些?

[第16題] 為什麼集合類沒有實現Cloneable和Serializable介面?

[第17題] 什麼是迭代器(Iterator)?

[第18題] Iterator和ListIterator的區別是什麼?

[第19題] 快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麼?

[第20題] Java中的HashMap的工作原理是什麼?

[第21題] 當兩個物件的hashcode相同會發生什麼?

[第22題] hashCode()和equals()方法的重要性體現在什麼地方?

[第23題] HashMap的擴容機制以及預設大小為何是2次冪 原

[第24題] HashMap的長度為什麼設定為2的n次方?

[第25題] HashMap和Hashtable有什麼區別?

[第26題] 如何決定選用HashMap還是TreeMap?

[第27題] HashMap,HashTable,ConcurrentHashMap的區別

[第28題] 極高併發下HashTable和ConcurrentHashMap哪個效能更好,為什麼,如何實現的。

[第29題] ArrayList和陣列(Array)和有什麼區別?什麼時候應該使用Array而不是ArrayList?

[第30題] ArrayList和LinkedList有什麼區別?

[第31題] ArrayList和Vector有何異同點?

[第32題] Comparable和Comparator介面是幹什麼的?列出它們的區別。

[第33題] 什麼是Java優先順序佇列(Priority Queue)?

[第34題] 30.你瞭解大O符號(big-O notation)麼?你能給出不同資料結構的例子麼?

[第35題] 如何權衡是使用無序的陣列還是有序的陣列?

[第36題] Java集合類框架的最佳實踐有哪些?

[第37題] Enumeration介面和Iterator介面的區別有哪些?

[第38題] HashSet和TreeSet有什麼區別?

[第39題] List、Set、Map 和 Queue 之間的區別

[第40題] poll() 方法和 remove() 方法的區別?

[第41題] Java 中 LinkedHashMap 和 PriorityQueue 的區別是什麼?

[第42題] ArrayList 與 LinkedList 的不區別?

[第43題] 用哪兩種方式來實現集合的排序?

[第44題] Java 中怎麼列印陣列?(answe

[第45題] Java 中的 LinkedList 是單向連結串列還是雙向連結串列?

[第46題] Java 中的 TreeMap 是採用什麼樹實現的?

[第47題] Hashtable 與 HashMap 有什麼不同之處?

[第48題] Java 中的 HashSet,內部是如何工作的?

[第49題] 寫一段程式碼在遍歷 ArrayList 時移除一個元素?

[第50題] 我們能自己寫一個容器類,然後使用 for-each 迴圈碼?

[第51題] ArrayList 和 HashMap 的預設大小是多數?

[第52題] 集合框架中的泛型有什麼優點?

[第53題] 為何Collection不從Cloneable和Serializable介面繼承?

[第54題] 為何Map介面不繼承Collection介面?

[第二部分] JVM

[第1題]  string分析1000次迴圈subString用了多少記憶體;

[第2題]  JVM的記憶體結構

[第3題] .Java的記憶體模型以及GC演算法

[第4題] Java中垃圾回收有什麼目的?什麼時候進行垃圾回收?

[第5題] System.gc()和Runtime.gc()會做什麼事情?

[第6題] finalize()方法什麼時候被呼叫?解構函式(finalization)的目的是什麼?

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

[第8題] Java堆的結構是什麼樣子的?什麼是堆中的永久代(Perm Gen space)?

[第9題] 序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?

[第10題] 在Java中,物件什麼時候可以被垃圾回收?

[第11題] JVM的永久代中會發生垃圾回收麼?

[第12題] Serial 與 Parallel GC之間的不同之處?

[第13題] Java 中 WeakReference 與 SoftReference的區別?

[第14題] JVM 選項 -XX:+UseCompressedOops 有什麼作用?為什麼要使用?

[第15題] 怎樣通過 Java 程式來判斷 JVM 是 32 位 還是 64 位?

[第16題] 32 位 JVM 和 64 位 JVM 的最大堆記憶體分別是多數?

[第17題] JRE、JDK、JVM 及 JIT 之間有什麼不同?

[第18題] 解釋 Java 堆空間及 GC?

[第19題] 你能保證 GC 執行嗎?

[第20題] 怎麼獲取 Java 程式使用的記憶體?堆使用的百分比?

[第21題] Java 中堆和棧有什麼區別?(答案)

[第22題] 解釋記憶體中的棧(stack)、堆(heap)和方法區(method area)的用法。

[第23題] 動態代理的兩種方式,以及區別

[第24題]簡述class載入各階段過程;class;loader有哪些模型;

[第25題]jvm執行時資料區域有哪幾部分組成,各自作用;

[第26題]gc演算法有哪些;gc收集器有哪些;

[第27題]簡述常用的JDK命令列工具;

[第28題]簡述位元組碼檔案組成;

[第29題]gc:記憶體模型;

[第三部分]

[第55題] 給定一個txt檔案,如何得到某字串出現的次數

[第56題] 講講IO裡面的常見類,位元組流,字元流、介面、實現類、方法阻塞

[第57題] 什麼是流,按照傳輸單位,分成哪兩種流,並且他們的父類叫什麼流是指資料的傳輸

[第58題] 什麼是節點流,什麼是處理流,它們各有什麼用處,處理流的建立有什麼特徵

[第59題] String編碼UTF-8和GBK的區別

[第60題] 什麼時候使用位元組流,什麼時候    使用字元流

[第61題] 遞迴讀取資料夾的檔案,程式碼怎麼實現

[第62題] 什麼是位元(Bit),什麼是位元組(Byte),什麼是字元(Char),它們長度是多少,各有什麼區別

[第63題] BufferedReader屬於哪種流,它主要是用來做什麼的,它裡面有那些經典的方法

[第64題] 如果我要對位元組流進行大量的從硬碟讀取,要用那個流,為什麼

[第65題] 如果我要打印出不同型別的資料到資料來源,那麼最適合的流是那個流,為什麼

[第66題] 怎麼樣把我們控制檯的輸出改成輸出到一個檔案裡面,這個技術叫什麼

[第67題] 怎麼樣把輸出位元組流轉換成輸出字元流,說出它的步驟

[第68題] 把包括基本型別在內的資料和字串按順序輸出到資料來源,或者按照順序從資料來源讀入,一般用哪兩個流

[第69題] 把一個物件寫入資料來源或者從一個數據源讀出來,用哪兩個流

[第70題] 什麼叫物件序列化,什麼是反序列化,實現物件序列化需要做哪些工作

[第71題] 在實現序列化介面是時候一般要生成一個serialVersionUID欄位,它叫做什麼,一般有什麼用

[第72題] OutputStream裡面的write()是什麼意思,write(byte b[], int off, int len)這個方法裡面的三個引數分別是什麼意思

[第73題] IO流一般需要不需要關閉,如果關閉的話在用什麼方法,一般要在那個程式碼塊裡面關閉比較好,處理流是怎麼關閉的,如果有多個流互相呼叫傳入是怎麼關閉的?

[第74題] 寫一段程式碼讀取一個序列化的物件一般使用哪種Stream?

[第75題] io流怎樣讀取檔案的?

[第76題] FileInputStream 建立詳情,就是怎樣的建立不報錯,它列出了幾種形式!

[第77題] 用io流中的技術,指定一個資料夾的目錄,獲取此目錄下的所有子資料夾路徑

[第78題] 請問你在什麼情況下會在你得java程式碼中使用可序列化? 如何實現java序列化?

[第79題] 問:簡單說說你平時使用的 Java IO 流中涉及到了哪些設計策略和設計模式?

[第80題] 問:什麼是緩衝區?有什麼作用?

[第81題] 問:位元組流和字元流哪個好?怎麼選擇?

[第82題] 說說對IO流的理解

[第四部分] 設計模式

[第1題] 手寫單例模式(餓漢和飽漢模式)和工廠模式?

[第2題] 策略模式

[第3題] 工廠模式

[第4題] AOP與IOC的概念(即spring的核心)

[第5題] 你所知道的設計模式有哪些;

[第6題] 單例模式

[第五部分] 演算法

[第1題] 氣泡排序

[第2題] 二分查詢

[第3題] 資料結構必知必會

[第4題] 你知道索引使用的是哪種資料結構實現嗎?

[第5題] 堆和棧在記憶體中的區別是什麼(資料結構方面以及實際實現方面);

[第6題] 最快的排序演算法是哪個?

[第7題] 給阿里2萬多名員工按年齡排序應該選擇哪個演算法?

[第8題] 堆和樹的區別;

[第9題] 寫出快排程式碼;

[第10題] 連結串列逆序程式碼;

[第11題] 求1000以內的水仙花數以及40億以內的水仙花數;

[第12題] 子串包含問題(KMP 演算法)寫程式碼實現;

[第13題] 萬億級別的兩個URL檔案A和B,如何求出A和B的差集C,(Bit對映->hash分組->多檔案讀寫效率->磁碟定址以及應用層面對定址的優化)

[第14題] 蟻群演算法與蒙特卡洛演算法;

[第15題] 寫出你所知道的排序演算法及時空複雜度,穩定性;

[第16題] 百度POI中如何試下查詢最近的商家功能(座標映象+R樹)。

[第六部分] 多執行緒

[第9題] 說說對多執行緒的理解

[第10題] 程序和執行緒的區別是什麼?

[第11題] 建立執行緒有幾種不同的方式?你喜歡哪一種?為什麼?

[第12題] 概括的解釋下執行緒的幾種可用狀態。

[第13題] 同步方法和同步程式碼塊的區別是什麼?

[第14題] synchronized關鍵字的用法,優缺點

[第15題] Lock介面有哪些實現類,使用場景是什麼

[第16題] ABC三個執行緒如何保證順序執行

[第17題] 在監視器(Monitor)內部,是如何做執行緒同步的?程式應該做哪種級別的同步?

[第18題] 悲觀鎖、樂觀鎖的優缺點,CAS有什麼缺陷,該如何解決

[第19題] ABC三個執行緒如何保證順序執行

[第20題] 假如有Thread1、Thread2、Thread3、Thread4四條執行緒分別統計C、D、E、F四個盤的大小,所有執行緒都統計完畢交給Thread5執行緒去做彙總,應當如何實現?

[第21題] 執行緒池的問題

[第22題] 執行緒的狀態都有哪些(五大狀態)

[第23題] 什麼是死鎖(deadlock)? 死鎖的四個必要條件?

[第24題] 如何確保N個執行緒可以訪問N個資源同時又不導致死鎖?

[第25題] 什麼是執行緒區域性變數?

[第26題] 用 wait-notify 寫一段程式碼來解決生產者-消費者問題?

[第27題] 用 Java 寫一個執行緒安全的單例模式(Singleton)?

[第28題] Java 中 sleep 方法和 wait 方法的區別?

[第29題] notify()和notifyAll()的區別

[第30題] ThreadLocal的瞭解,實現原理。

[第31題] Java 中 ++ 操作符是執行緒安全的嗎?

[第32題]簡述synchronized?  Object;Monitor機制

[第七部分] 高併發

[第1題] 簡述AQS原理;

[第2題] CAS又是怎麼保證原子性的;

[第3題] 簡述nio原理;

[第4題] 簡述Reactor模式;

[第5題] Atomic包的實現原理是什麼;

[第6題] 如何實現一個定時排程和迴圈排程的工具類。但提交任務處理不過來的時候,拒絕機制應該如何處理;執行緒池預設有哪幾種拒絕機制;

[第7題] 如何實現一個ThreadLocal;

[第8題] 說說你瞭解的一個執行緒安全佇列;

[第9題] 同步的方法;多程序開發以及多程序應用場景;

[第10題] 在Java中wait和seelp方法的不同;

[第11題] synchronized 和volatile 關鍵字的作用

[第12題] 伺服器只提供資料接收介面,在多執行緒或多程序條件下,如何保證資料的有序到達;

[第13題] ThreadLocal原理,實現及如何保證Local屬性;

[第八部分] 作業系統

[第32題] 簡述你所知道的Linux:

[第九部分] web 開發

[第33題] servlet執行流程

[第34題] springMVC的執行流程

[第35題] Struts工作流程

[第36題] 對ajax的理解

[第37題] Tomcat伺服器優化

[第38題] HTTP協議

[第39題] TCP/UDP協議

[第40題] Spring使用了哪些設計模式

[第41題] session和cookie的區別和聯絡,session的生命週期,多個服務部署時session管理。

[第42題] struts1和struts2的區別

[第43題] struts2和springMVC的區別

[第44題] spring框架中需要引用哪些jar包,以及這些jar包的用途

[第45題] srpingMVC的原理

[第46題] springMVC註解的意思

[第47題] spring中beanFactory和ApplicationContext的聯絡和區別

[第48題] spring注入的幾種方式

[第49題] spring如何實現事物管理的

[第50題] springIOC和AOP的原理

[第51題] hibernate中的1級和2級快取的使用方式以及區別原理

[第52題] spring中迴圈注入的方式

[第53題] 常見編碼方式;utf-8編碼中的中文佔幾個位元組;int型幾個位元組;

[第54題] 實現一個Json解析器(可以通過正則提高速度);

[第55題] MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的程式碼;

[第56題] TCP的3次握手和四次揮手;TCP與UDP的區別;

[第57題] HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構;

[第58題] HTTP與HTTPS的區別以及如何實現安全性;

[第59題] 都使用過哪些框架、平臺;

[第60題] 都使用過哪些自定義控制元件;

[第61題] 介紹你做過的哪些專案;

[第十部分] 資料庫

[第1題] 說一說高併發處理

[第2題] 說一說事物的理解

[第3題] 說一說索引的分類

[第4題] 儲存引擎的 InnoDB 與 MyISAM

[第5題] 說一說常見的資料庫優化手段

[第6題] 索引的優缺點,什麼欄位上建立索引

[第7題] 說一說資料庫連線池

[第8題] 說一說你平常是如何針對具體的SQL做優化;

[第9題]  mysql的儲存引擎有哪些,區別;




無程式設計不創客,無案例不學習。瘋狂創客圈,一大波高手正在交流、學習中!

瘋狂創客圈 Java 死磕系列: 【CSDN 總入口】 【部落格園 總入口

JAVA NIO  死磕系列:NIO簡介、NIO  Buffer、 NIO channel、 NIO Selector

reactor 模式 死磕系列: Reactor模式

Netty 原始碼 死磕系列: 環境搭建 、  EventLoop、 ChannelHandler 、 Pipeline模式、Pipeline inbound、 Pipeline outbound

Java 類載入器 死磕系列:雙親委託、 檔案系統類載入器、 網路類載入器、 加密類載入器、 AOP 類載入器

面試題死磕系列:Java面試必知必會200題 |   阿里、騰訊、百度、華為、京東、搜狗和滴滴最新面試題彙集

免費資源: 數百G免費視訊資源,請參見共享《瘋狂創客圈》QQ群檔案