分類題集
Java基礎:
面向對象和面向過程的差別
Java的四個基本特性(抽象、封裝、繼承,多态)
Overload和Override的差別
構造器Constructor是否可被override
通路控制符public,protected,private,以及預設的差別
是否可以繼承String類
String和StringBuffer、StringBuilder的差別
hashCode和equals方法的關系
抽象類和接口的差別
自動裝箱與拆箱
什麼是泛型、為什麼要使用以及泛型擦除
Java中的集合類及關系圖
HashMap實作原理(看源代碼)
HashTable實作原理(看源代碼)
HashMap和HashTable差別
HashTable如何實作線程安全(看源代碼)
ArrayList和vector差別(看源代碼)
ArrayList和LinkedList差別及使用場景
Collection和Collections的差別
Concurrenthashmap實作原理(看源代碼)
Error、Exception差別
Unchecked Exception和Checked Exception,各列舉幾個
Java中如何實作代理機制(JDK、CGLIB)
多線程的實作方式
線程的狀态轉換
如何停止一個線程
什麼是線程安全
如何保證線程安全
Synchronized如何使用
synchronized和Lock的差別
多線程如何進行資訊互動
sleep和wait的差別(考察的方向是是否會釋放鎖)
多線程與死鎖
如何才能産生死鎖
什麼叫守護線程,用什麼方法實作守護線程
Java線程池技術及原理
java并發包concurrent及常用的類
volatile關鍵字
Java中的NIO,BIO,AIO分别是什麼
IO和NIO差別
序列化與反序列化
常見的序列化協定有哪些
記憶體溢出和記憶體洩漏的差別
Java記憶體模型及各個區域的OOM,如何重制OOM
出現OOM如何解決
用什麼工具可以查出記憶體洩漏
Java記憶體管理及回收算法
Java類加載器及如何加載類(雙親委派)
xml解析方式
Statement和PreparedStatement之間的差別
JavaEE:
servlet生命周期及各個方法
servlet中如何自定義filter
JSP原理
JSP和Servlet的差別
JSP的動态include和靜态include
Struts中請求處理過程
MVC概念
Spring mvc與Struts差別
Hibernate/Ibatis兩者的差別
Hibernate一級和二級緩存
Hibernate實作叢集部署
Hibernate如何實作聲明式事務
簡述Hibernate常見優化政策
Spring bean的加載過程(推薦看Spring的源碼)
Spring如何實作AOP和IOC
Spring bean注入方式
Spring的事務管理(推薦看Spring的源碼)
Spring事務的傳播特性
springmvc原理
springmvc用過哪些注解
Restful有幾種請求
Restful好處
Tomcat,Apache,JBoss的差別
memcached和redis的差別
有沒有遇到中文亂碼問題,如何解決的
如何了解分布式鎖
你知道的開源協定有哪些
json和xml差別
設計模式:
設計模式的六大原則
常用的設計模式
用一個設計模式寫一段代碼或畫出一個設計模式的UML
如何了解MVC
高内聚,低耦合方面的了解
算法:
深度優先、廣度優先算法
排序算法及對應的時間複雜度和空間複雜度
寫一個排序算法
查找算法
B+樹和二叉樹查找時間複雜度
KMP算法、hash算法
常用的hash算法有哪些
如何判斷一個單連結清單是否有環?
給你一萬個數,如何找出裡面所有重複的數?用所有你能想到的方法,時間複雜度和空間複雜度分别是多少?
給你一個數組,如何裡面找到和為K的兩個數?
100000個數找出最小或最大的10個?
一堆數字裡面繼續去重,要怎麼處理?
資料結構:
隊列、棧、連結清單、樹、堆、圖
編碼實作隊列、棧
Linux:
linux常用指令
如何檢視記憶體使用情況
Linux下如何進行程序排程
作業系統:
作業系統什麼情況下會死鎖
産生死鎖的必要條件
死鎖預防
資料庫:
範式
資料庫事務隔離級别
資料庫連接配接池的原理
樂觀鎖和悲觀鎖
如何實作不同資料庫的資料查詢分頁
SQL注入的原理,如何預防
資料庫索引的實作(B+樹介紹、和B樹、R樹差別)
SQL性能優化
資料庫索引的優缺點以及什麼時候資料庫索引失效
Redis的存儲結構
網絡:
OSI七層模型以及TCP/IP四層模型
HTTP和HTTPS差別
HTTP封包内容
get送出和post送出的差別
get送出是否有位元組限制,如果有是在哪限制的
TCP的三次握手和四次揮手
session和cookie的差別
HTTP請求中Session實作原理
redirect與forward差別
DNS
TCP和UDP差別
安全:
如果用戶端不斷的發送請求連接配接會怎樣
DDos攻擊
DDos預防
那怎麼知道連接配接是惡意的呢?可能是正常連接配接
其它:
說一個你參與的項目、其中作為什麼角色
遇到最困的問題是什麼,怎麼解決的
你認為自己有那些方面不足
平常如何學習的
如何評價自己
智力題:
給你50個紅球和50個黑球,有兩個一模一樣的桶,往桶裡放球,讓朋友去随機抽,采用什麼政策可以讓朋友抽到紅球的機率更高?
從100個硬币中找出最輕的那個假币?
【 BAT面試經驗總結】
【 BAT面試經驗總結】
總結下來,面試題目主要集中在:
1.進階Java,譬如虛拟機、并發線程、分布式、NIO等。
2.中間件方面,譬如Redis的實作原理、叢集、資料存儲、持久化等。
3.後端部分,譬如候選人的MySQL資料庫的掌握情況,從索引、sql慢查詢、長事務等性能優化方面。
4.自己實操過的項目,是面試中的重點,從容從設計到編碼,以及後續環境部署等等。
5.大資料相關的算法題目必問。
6.秒殺、高并發項目也是必問的,主要考查候選人對高并發場景的技術知識點掌握程度。
7.面試過程中自信很重要,即便遇到不會的問題,也坦然回答,在面試結束虛心請教面試官,可以給面試官留下謙遜愛學習的印象。
面試題目涉及範圍比較廣泛,從技術基礎到項目經驗,從技術廣度到技術深度,全方位深度挖掘候選人的技能水準。建議大家在參加任何一家公司的面試之前,都要多花時間溫故而知新,準備充分,這樣在面試過程中會從容很多,也能提高拿到offer的機率。