寫在前面:這篇文章裡面總結了很多
Java相關的知識,基本上應該算是每個Java程序員必須會的一些知識,所以,也就是很多面試官喜歡拿來考的一些東西。總結他們第一個目的是自己能夠經常拿出來看一看,第二個也是可以給別人一些借鑒。為了方便,我把他們分了類,有一些是必看的,我用!標注,有一些進階型的我用%標注,有一些需要了解的,我用?標注。
voidbyteintlongcharshortfloatdoubleStringStringBufferStringBuilderArrayCollectionCollectionsListArrayListLinkedListVectorSetHashMapTreeMapLinkedHashMapConcerrentHashMapSetTreeMapHashMapsynchronizedvolatiletransientimplementsextendspublicprivateprotectedthissuperstaticfinalconstnullrunstartthreadenmuquicksortmergesortheapsortbubblesortselectsortinsertsortstackqueuelistheaptreeavlTreeBtreeB+TreeRTreethrowthrowstrycatchfinallybreakcontinueinstanceof
%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虛擬機