程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java面試題整理大全

Java面試題整理大全

編輯:關於JAVA
 

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

 

  1. 計算機基礎知識
  2. 數據庫相關
  3. C語言基礎
  4. Java基礎
  5. Java高級
  6. J2EE相關
  7. 面向對象
  8. 思維清晰水平考察
  9. 推薦閱讀

必會關鍵字

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、進程間通信

LINUX相關命令及操作

%1、Linux 一些基本命令,如看load,查看文件內容
%2、列出幾個比較常見的命令,並解釋下命令的用法

計算機網絡

1、tcp,udp區別
2、HTTP請求和響應的全過程
3、osi七層模型以及tcp/ip四層模型(每一層主要功能,傳輸的內容,主要協議,主要應用)
4、三次握手,四次關閉,丟包,粘包,容量控制,擁塞控制
5、子網劃分


 

數據庫相關

關系模型理論:

1、范式
2、rownumrowid的區別與使用

事務相關

%1、Transaction有哪幾種隔離級別?(Isolation Level)
2、Global transaction的原理是什麼?
3、事務是什麼?

並發控制

%1、樂觀鎖悲觀鎖

ORACLE或MYSQL題目

1、分頁如何實現(OracleMySql
2、Mysql引擎

其它

%1、數據庫操作的性能瓶頸通常在哪裡, 1000萬級別訪問,在數據庫和java程序上考慮哪些來進行性能優化
%2、性能方面。多數結合多線程、同步來問,以提取一張大表數據來作為例子 解決性能的方法
3、表關聯時,內連接左連接右連接怎麼理解?
4、StatementPreparedStatement之間的區別
5、用JDBC怎樣從數據庫中查詢一條記錄
%6、索引以及索引的實現(B+樹介紹、和B樹、R樹區別


 

C語言基礎

構造函數、析構函數

%1、為什麼不要在構造器中調用虛函數
%2、為什麼不要在析構函數中拋出異常

c++相關

1、面向對象的三大基本特征,五大基本原則
%2、C++繼承的內存布局
%3、C++多態的實現機制
4、new、delete、malloc、free

其他

1、為什麼使用補碼
%2、C語言中的內存洩漏
3、進制轉換
4、自己編寫strlen/strcpy/strcmp


 

一、Java基礎

繼承、抽象類與接口區別、訪問控制(private, public, protected,默認)、多態相關

1、interfaceabstrat class的區別
2、是否可以繼承多個接口,是否可以繼承多個抽象類
%3、Static Nested ClassInner Class的不同
4、OverloadOverride的區別。Overloaded的方法是否可以改變返回值的類型?
5、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
6、是否可以繼承String
7、構造器Constructor是否可被override?
8、作用域public,protected,private,以及不寫時的區別?

collections相關的數據結構及API

1、列舉幾個Java Collection類庫中的常用類
2、ListSetMap是否都繼承自Collection接口?
3、HashMapHashtable的區別
%4、HashMap中是否任何對象都可以做為key,用戶自定義對象做為key有沒有什麼要求?
5、CollectionCollections的區別
%6、其他的集合類:concurrenthashmap,treemap,treeset,linkedhashmap等。

異常體系

1、ErrorExceptionRuntimeException的區別,作用又是什麼?列舉3個以上的RuntimeException
2、Java中的異常處理機制的簡單原理和應用
3、內存溢出和內存洩露

其它

1、StringStringBufferStringBuilder的區別
2、String s = “123”;這個語句有幾個對象產生
3、readerinputstream區別
4、==equals的區別
%5、hashCode的作用
%6、hashCodeequals方法的關系
7、Object類中有哪些方法,列舉3個以上(可以引導)
8、char型變量中能不能存貯一個中文漢字?為什麼?
%9、了解過哪些JDK8的新特性,舉例描述下相應的特性?
10、Input/OutputStreamReader/Writer有何區別?何為字符,何為字節?
11、如何在字符流和字節流之間轉換?
12、啟動一個線程是用run()還是start()?
%13、海量數據查詢、存儲
14、switch可以使用那些數據類型
15、多線程與死鎖
%16、Java的四種引用
17、序列化與反序列化
18、自動裝箱與拆箱
19、正則表達式

JAVA開發工具、環境的使用

IDE、maven、svn/git、Linux、Firebug


 

二、 Java高級

多線程

1、多線程的實現方式,有什麼區別
%2、同步並發是如何解決的
3、什麼叫守護線程,用什麼方法實現守護線程(Thread.setDeamon()的含義)
%4、如何停止一個線程?
5、解釋是一下什麼是線程安全?舉例說明一個線程不安全的例子。解釋Synchronized關鍵字的作用。
6、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?

內存結構,GC

1、gc的概念,如果A和B對象循環引用,是否可以被GC?
%2、Java中的內存溢出是如何造成的
%3、jvm gc如何判斷對象是否需要回收,有哪幾種方式?
4、Java中的內存溢出和C++中的內存溢出,是一個概念嗎?
5、引用計數,對象引用遍歷;jvm有哪幾種垃圾回收機制?講講分代回收機制

CLASSLOADER

1、ClassLoader的功能和工作模式

NIO

1、IONIO本質不同在實際項目使用場景及如何使用

其它

1、hashcode 有哪些算法
%2、反射,是否可以調用私有方法,在框架中的運用
3、知道范型的實現機制嗎?
4、Socket編程通常出現的異常有哪些,什麼情況下會出現
5、了解JVM啟動參數嗎?-verbose -Xms -Xmx的意思是什麼?
%6、StringBuffer的實現方式,容量如何擴充
%7、代理機制的實現


 

三、J2EE相關

Servlet的掌握,包括新的異步Servlet

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的生命周期

WEB框架的掌握(挑其掌握的一種)

1、Struts中請求的實現過程
2、MVC概念
%3、談一下自己最熟悉的web框架?然後就了解的web框架再深入下去
%4、Spring mvcStruts mvc的區別 (什麼是Mvc框架)
5、Service嵌套事務處理,如何回滾

http相關(內部重定向,外部重定向),http返回碼

1、sessioncookie的區別
2、HTTP請求中Session實現原理?
%3、如果客戶端禁止Cookie能實現Session嗎
4、http getpost區別
5、在web開發中,用redirectforward做跳轉有什麼區別?web應用服務器對用戶請求通常返回一些狀態碼,請描述下分別以4和5開頭的狀態碼

spring,ibatis,hibernate相關

1、Hibernate/Ibatis兩者的區別
2、OR Mapping的概念
%3、hibernate一級和二級緩存是否知道
4、使用hibernate實現集群部署,需要注意些什麼
5、Spring如何實現AOPIOC的?
6、Spring的核心理念是什麼?是否了解IOC和AOP
7、Spring的事務管理Spring bean注入的幾種方式
8、Spring AOP解決了什麼問題

jboss,tomcat等容器相關

1、Tomcatweblogic的最根本的區別
2、Jboss端口在哪個配置文件中修改

web安全,SQL注入,XSS, CSRF等

%1、SQL注入 SQL安全

AJAX相關

1、AJAX感受,有什麼缺點?
%2、你使用的是Ajax的那種框架?
3、Ajax如何解決跨域問題

Web services

1、簡述WebService是怎麼實現的

JMS

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虛擬機

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved