寫在前面:這篇文章裡面總結了很多
Java
相關的知識,基本上應該算是每個Java
程序員必須會的一些知識,所以,也就是很多面試官喜歡拿來考的一些東西。總結他們第一個目的是自己能夠經常拿出來看一看,第二個也是可以給別人一些借鑒。為了方便,我把他們分了類,有一些是必看的,我用!標注,有一些進階型的我用%標注,有一些需要了解的,我用?標注。
void
byte
int
long
char
short
float
double
String
StringBuffer
StringBuilder
Array
Collection
Collections
List
ArrayList
LinkedList
Vector
Set
HashMap
TreeMap
LinkedHashMap
ConcerrentHashMap
Set
TreeMap
HashMap
synchronized
volatile
transient
implements
extends
public
private
protected
this
super
static
final
const
null
run
start
thread
enmu
quicksort
mergesort
heapsort
bubblesort
selectsort
insertsort
stack
queue
list
heap
tree
avlTree
Btree
B+Tree
RTree
throw
throws
try
catch
finally
break
continue
instanceof
%1、隊列、棧、鏈表、樹、堆、圖
!2、棧和隊列的相同和不同之處
?3、棧通常采用的兩種存儲結構
!4、ArrayList
,Vector
,LinkedList
的存儲性能和特性
%5、各種樹(平衡樹
,排序樹
,B樹
,B+樹
,R樹
,多路樹
,紅黑樹
)
?1、實現鏈表排序的一種算法。說明為什麼你會選擇用這樣的方法?
!2、排序
都有哪幾種方法?請列舉。
!3、各種排序算法的時間復雜度
和穩定性
%4、字符串(單鏈表)逆序
!5、深度優先搜索
和廣度優先搜索
%6、使用棧實現鏈表/使用鏈表實現棧
%7、全排列、貪心算法、KMP算法、hash算法、海量數據處理
?1、虛擬內存管理
?2、換頁算法
?3、進程間通信
%1、Linux 一些基本命令,如看load,查看文件內容
%2、列出幾個比較常見的命令,並解釋下命令的用法
!1、tcp,udp區別
!2、HTTP請求和響應的全過程
!3、osi
七層模型以及tcp/ip
四層模型(每一層主要功能,傳輸的內容,主要協議,主要應用)
!4、三次握手,四次關閉,丟包,粘包,容量控制,擁塞控制
?5、子網劃分
!1、
范式
?2、rownum
和rowid
的區別與使用
%1、
Transaction
有哪幾種隔離級別?(Isolation Level)
?2、Global transaction
的原理是什麼?
!3、事務
是什麼?
%1、
樂觀鎖
,悲觀鎖
!1、
分頁
如何實現(Oracle
,MySql
)
!2、Mysql引擎
%1、數據庫操作的性能瓶頸通常在哪裡, 1000萬級別訪問,在數據庫和java程序上考慮哪些來進行性能優化
%2、性能方面。多數結合多線程、同步來問,以提取一張大表數據來作為例子 解決性能的方法
!3、表關聯時,內連接
,左連接
,右連接
怎麼理解?
!4、Statement
和PreparedStatement
之間的區別
!5、用JDBC怎樣從數據庫中查詢一條記錄
%6、索引
以及索引的實現
(B+樹介紹、和B樹、R樹區別
%1、為什麼不要在構造器中調用虛函數
%2、為什麼不要在析構函數中拋出異常
!1、面向對象的三大基本特征,五大基本原則
%2、C++繼承的內存布局
%3、C++多態的實現機制
!4、new、delete、malloc、free
!1、為什麼使用補碼
%2、C語言中的內存洩漏
!3、進制轉換
!4、自己編寫strlen/strcpy/strcmp
!1、
interface
和abstrat class
的區別
!2、是否可以繼承多個接口,是否可以繼承多個抽象類
%3、Static Nested Class
和Inner Class
的不同
!4、Overload
和Override
的區別。Overloaded
的方法是否可以改變返回值的類型?
!5、abstract
的method是否可同時是static
,是否可同時是native
,是否可同時是synchronized
!6、是否可以繼承String
類
!7、構造器Constructor
是否可被override
?
!8、作用域public
,protected
,private
,以及不寫
時的區別?
!1、列舉幾個
Java Collection
類庫中的常用類
!2、List
、Set
、Map
是否都繼承自Collection
接口?
!3、HashMap
和Hashtable
的區別
%4、HashMap
中是否任何對象都可以做為key,用戶自定義對象做為key有沒有什麼要求?
!5、Collection
和Collections
的區別
%6、其他的集合類:concurrenthashmap
,treemap
,treeset
,linkedhashmap
等。
!1、
Error
、Exception
和RuntimeException
的區別,作用又是什麼?列舉3個以上的RuntimeException
!2、Java中的異常處理機制的簡單原理和應用
!3、內存溢出和內存洩露
!1、
String
和StringBuffer
、StringBuilder
的區別
!2、String s = “123”;這個語句有幾個對象產生
!3、reader
和inputstream
區別
!4、==
和equals
的區別
%5、hashCode
的作用
%6、hashCode
和equals
方法的關系
?7、Object類中有哪些方法,列舉3個以上(可以引導)
!8、char
型變量中能不能存貯一個中文漢字?為什麼?
%9、了解過哪些JDK8的新特性,舉例描述下相應的特性?
!10、Input/OutputStream
和Reader/Writer
有何區別?何為字符,何為字節?
!11、如何在字符流和字節流之間轉換?
!12、啟動一個線程是用run()
還是start()
?
%13、海量數據查詢、存儲
!14、switch
可以使用那些數據類型
!15、多線程與死鎖
%16、Java的四種引用
!17、序列化與反序列化
!18、自動裝箱與拆箱
!19、正則表達式
IDE、maven、svn/git、Linux、Firebug
!1、多線程的實現方式,有什麼區別
%2、同步
和並發
是如何解決的
3、什麼叫守護線程
,用什麼方法實現守護線程(Thread.setDeamon()
的含義)
%4、如何停止一個線程?
!5、解釋是一下什麼是線程安全
?舉例說明一個線程不安全的例子。解釋Synchronized
關鍵字的作用。
!6、當一個線程進入一個對象的一個synchronized
方法後,其它線程是否可進入此對象的其它方法?
!1、
gc
的概念,如果A和B對象循環引用,是否可以被GC?
%2、Java
中的內存溢出是如何造成的
%3、jvm gc如何判斷對象是否需要回收,有哪幾種方式?
?4、Java中的內存溢出
和C++中的內存溢出
,是一個概念嗎?
!5、引用計數,對象引用遍歷;jvm有哪幾種垃圾回收機制
?講講分代回收機制
!1、
ClassLoader
的功能和工作模式
?1、
IO
和NIO
本質不同在實際項目使用場景及如何使用
?1、
hashcode
有哪些算法
%2、反射
,是否可以調用私有方法,在框架中的運用
?3、知道范型
的實現機制嗎?
?4、Socket編程
通常出現的異常有哪些,什麼情況下會出現
?5、了解JVM啟動參數嗎?-verbose -Xms -Xmx
的意思是什麼?
%6、StringBuffer
的實現方式,容量如何擴充
%7、代理機制
的實現
!1、
Servelt
的概念。常問http request
能獲得的參數
%2、servlet中,如何定制session
的過期時間?
!3、Servlet中的session
工作原理 (禁用cookie如何使用session
)
!4、servlet中,filter
的應用場景有哪些?
!5、描述JSP和Servlet的區別、共同點(JSP的工作原理)。
?6、JSP的動態include
和靜態include
!7、Servlet的生命周期
!1、
Struts
中請求的實現過程
!2、MVC
概念
%3、談一下自己最熟悉的web框架?然後就了解的web框架再深入下去
%4、Spring mvc
與Struts mvc
的區別 (什麼是Mvc框架)
?5、Service
嵌套事務處理,如何回滾
!1、
session
和cookie
的區別
!2、HTTP請求中Session
實現原理?
%3、如果客戶端禁止Cookie能實現Session嗎?
!4、httpget
和post
區別
!5、在web開發中,用redirect
與forward
做跳轉有什麼區別?web應用服務器對用戶請求通常返回一些狀態碼,請描述下分別以4和5開頭的狀態碼
?1、
Hibernate
/Ibatis
兩者的區別
?2、OR Mapping
的概念
%3、hibernate
一級和二級緩存是否知道
?4、使用hibernate
實現集群部署,需要注意些什麼
!5、Spring如何實現AOP
和IOC
的?
!6、Spring的核心理念是什麼?是否了解IOC和AOP
!7、Spring的事務管理
,Spring bean注入
的幾種方式
!8、SpringAOP
解決了什麼問題
?1、
Tomcat
和weblogic
的最根本的區別
?2、Jboss
端口在哪個配置文件中修改
%1、
SQL注入
SQL安全
?1、
AJAX
感受,有什麼缺點?
%2、你使用的是Ajax
的那種框架?
?3、Ajax
如何解決跨域問題
?1、簡述
WebService
是怎麼實現的
?1、
JMS
的模式兩種模式
?1、
Js:confirm()
方法
?2、Iframe
的優缺點
%3、我們在web應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1
等,如何輸出一個某種編碼的字符串?(主要是考量有沒有碰到過編碼問題,問題是如何解決的)
?4、怎麼獲取到客戶端的真實IP?
?5、名詞解釋:jndi,rmi,jms,事務
,如果有了解的話可以深入
?6、WEB層如何實現Cluster
?1、在項目中是否采用分層的結構,是怎樣劃分的,各層之間采用了哪些相關技術? 對哪些設計模式比較熟悉?
%2、什麼是低耦合
和高聚合
?封裝原則
又是什麼意思?
%3、類A依賴類B,會產生什麼問題?怎樣解除這種耦合
?
%1、談一下自己了解或者熟悉的
設計模式
!2、Singleton
的幾種實現方式
?3、工廠模式
和抽象工廠模式
之間的區別
!4、簡述M-V-C
模式解決了什麼問題?
%1、說說你所知道的
UML
圖,在項目中是如何運用的
參考問題
你知道設計模式嗎?你用過哪些設計模式?在什麼場合下用的?
你怎樣保證你的代碼可以處理各種錯誤事件? 判斷依據是一定要有自己的思考和分析以及總結
簡述一個你最有成就的項目(包括團隊,自己在團隊中的角色)
有沒有比較棘手的問題
如何發現的問題(是否找問題的根源)
問題是否已經解決,是如何解決的
如果已解決,是否是你自己通過努力解決的,做了什麼樣的努力
如果未解決,原因是什麼,你覺得怎麼樣可以比較好的解決掉這個問題
描述完畢以後針對未描述點詢問,是否考慮的性能問題,是否考慮部署結構,有沒有比較得意的設計之處
項目過程中的文檔情況,你覺得那些還有那些文檔沒有建立,是有必要建立的。
作為負責人如何保證項目的質量,有了那些措施
估計一下杭州有多少軟件工程師,如果允許,你還需要那些調研工作?並給出你的推導過程。
估算下淘寶的商品數,給出推導過程
如果讓你做一個網站,如何估算網站的最大並發數
 程序員面試筆試寶典
Java編程思想
Effective Java
深入理解Java虛擬機