㈠ java三大框架面試題
SSH:
spring 初始化組件----分層理念(就類似與中央管理省,省管理市等等)里,你想用下一層某個類的實例,但又不想自己new,好了,spring做的就是這個工作----初始化你需要的實例對象(通常是在xml文件中進行配置,希望簡化配置可以用註解)。(再通俗點說,某個省的代表在駐京辦,這時中央如果想了解某個省的情況的話,就直接問駐京辦的該省代表,而不用再派專人到該省詢問了。此時,可以近似理解為,中央為一個類,該省為一個類,駐京辦為spring容器,該省代表為該省的一個實例(但未初始化,因為不在駐京辦他的價值也就沒了),如果他在駐京辦而且告訴駐京辦他是該省的代表,那就代表中央可以使用他了---此時可以說,駐京辦實例化了該省類的對象。)
struts 控制跳轉-----比如說,你用SSH寫了一個登陸的邏輯,如果輸入信息正確跳轉到成功界面,如果不正確就跳轉到錯誤提示界面,那跳轉的方向由誰指定呢,對就是struts.xml文件(裡面對應的跳轉邏輯名)。
hibernate 將對象型的數據類型保存到關系型資料庫中的工具。比如說,Java是面向對象的開發語言,而現在的資料庫(Oracle、MySQL、sqlserver等等)基本上都是關系型的,如何把面向對象的數據類型保存在關系型的資料庫中呢?hibernate就是干這行的。
㈡ java面試中redis,mongodb類的,會問哪些問題,怎麼回答
1、可能會問nosql和關系型資料庫的區別:
優點:
1)成本:nosql資料庫簡單易部署,基本都是開源軟體,不需要像使用Oracle那樣花費大量成本購買使用,相比關系型資料庫價格便宜
2)查詢速度:nosql資料庫將數據存儲於緩存之中,關系型資料庫將數據存儲在硬碟中,自然查詢速度遠不及nosql資料庫
3)存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎類型以及對象或者是集合等各種格式,而資料庫則只支持基礎類型
4)擴展性:關系型資料庫有類似join這樣的多表查詢機制的限制導致擴展很艱難
缺點:
1)維護的工具和資料有限,因為nosql是屬於新的技術,不能和關系型資料庫10幾年的技術同日而語。
2)不提供對sql的支持,如果不支持sql這樣的工業標准,將產生一定用戶的學習和使用成本
3)不提供關系型資料庫對事物的處理
2、介紹下redis和mongodb:
自行google。
3、應用場景:
redis:
a.主要是做熱點數據緩存。
b.數據過期處理。
c.消息隊列等功能。
d.計數,例如投票等。
mongodb:
mongodb的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢於一身。mongo適用於以下場景:
a.網站數據:mongo非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。
b.緩存:由於性能很高,mongo也適合作為信息基礎設施的緩存層。在系統重啟之後,由mongo搭建的持久化緩存可以避免下層的數據源過載。
c.大尺寸、低價值的數據:使用傳統的關系資料庫存儲一些數據時可能會比較貴,在此之前,很多程序員往往會選擇傳統的文件進行存儲。
d.高伸縮性的場景:mongo非常適合由數十或者數百台伺服器組成的資料庫。
e.用於對象及JSON數據的存儲:mongo的BSON數據格式非常適合文檔格式化的存儲及查詢。
4、支持的數據類型:
內容比較多,自行將網上的信息整理一下。
㈢ java 二面一般會面試什麼內容
Java程序員應聘一般要經過筆試和面試。作為一個技術人員,特別是剛出道的,筆試的成績是比較重要。以下是我經過幾次筆試總結的一些經驗教訓。
一般來說,試題會分為三個部分,Java基礎、資料庫基礎和綜合題。
首先是Java基礎,這個很簡單,也就是考考你對Java語言本身的理解,包括語法,類庫的使用等。有選擇題,也會有寫代碼題。寫代碼的時候認真仔細就是了。基礎題答案一般都比較死,所以盡量不要錯。在這,出一道我遇到的題考考大家,Java編程:把American,Japan,China,France,Brazil按英文字母排序。說說思路就行了:)
其次是資料庫。准確的說,考的不是資料庫,而是SQL語句。一般題型是,給兩三個表,然後讓你根據需求寫SQL。最普通的就是學生表、選課表和成績表。要掌握的就是連接查詢,還有就是一些函數(建表、表操作等就不說了哈)。其實這些都相當簡單,但是往往被新手忽略。我就遭過,因為有半年沒寫過SQL了,連接查詢搞忘完了,有兩次筆試都空起,結果可想而知。這些是必備技術,千萬不能空起啊!
然後是綜合題。之所以說是綜合題,是因為包含的內容比較多,一般都是主觀題。這里,人家是想看看你對Java高級技術以及周邊技術的了解程度和運用能力,說白了,就是考概念和考應用題。這里說的Java高級技術,也就是J2EE架構中的技術,這些不會的話,人家是不得要你的。如果你會一些流行的技術框架,那就更好了。所謂Java周邊技術,包括HTTP,HTML,XML,UML,JavaScript,CSS等,要求一般不是很高,要了解,比如讓你用HTML寫個表單你要會。關於剛才提到的技術或者框架,希望要了解其工作的原理和機制,一般要考,比如讓你說說Struts的MVC。關於應用題,可能出一道網路應用來考。
以上就是我筆試的經驗,一般是這樣,不過我也遇到過變態的。一次筆試,就被徹底甩翻,C/C++、資料庫、Java技術、Shell編程、網路協議、Unix、軟體工程全部上了。
如果筆試做的好,那就成功大半了,不過不要輕視面試哦!
㈣ java常用api面試題有哪些
Java常用API的面試題包括Java面向對象的基礎知識,重點和易考點是關於Java集合、Java IO,比如:
Java集合分成哪幾類?
HashSet和TreeSet有什麼區別?
IO流怎麼分類?緩沖流有什麼用?
Buffer是干什麼的?
這些是Java最常用的內容,另外Java資料庫編程(JDBC)也是常考的內容。你看一下瘋狂java講義的內容,這些知識都有系統的講解。
㈤ Java都需要那些技術
Java工程師需要學習的技術還是比較多的。
尤其是現在技術更新迭代比較快,需要不斷學習掌握新的技術,給自身鍍金才能在IT行業發展的較好。
下面列舉出來一些需要掌握的技術:
1、理解Java面向對象思想
2、掌握開發中常用基礎API
3、熟練使用集合框架、IO流、異常
4、能夠基於JDK8開發
5、掌握流行關系型數據MySQL常見操作
6、熟練增刪改查數據處理
7、掌握Java JDBC、連接池操作
8、掌握基本的JavaWeb基礎知識JSP/Servlet/Vue等
9、具備基本的B/S結構軟體開發能力
10、可以動手開發一個B/S架構的Web項目
11、掌握SSM框架技術
12、掌握使用Maven進行模塊的開發
13、熟悉基本的Linux命令以及Linux伺服器的使用
14、掌握高級緩存技術Redis的原理,並熟練使用
15、掌握Git、Nginx、Docker、Elasticsearch、SpringBoot、SpringCloud、RabbitMQ、分布式事務、JVM、JUC、Zookeeper、Dubbo、Nacos等技術
16、企業級開發項目
雖然需要學習掌握的技術比較多,但是堅信「只要功夫深鐵杵磨成針」,加油!
㈥ 求:JAVA程序員面試題
Java
1. 關於Java的描述哪一個是錯誤的()
A. Java是一種解釋性語言
B. B.Java是想對象的語言
C .Java通過不同硬體平台安裝同一個JVM實現來實現的可移植性
D.Java可以通過API通用編譯語言(如C或C++)編寫的函數。
2.哪個不是Java關鍵字()
A.sizeof B.void C.const D. super
3. 哪個不是Java基本數據類型()
A.short B.Boolean C int D long
4.哪個方法名稱滿足JavaBean命名規范()
A. addData B deleItems C.getName D hasSetTitle
5.關於JVM,錯誤的是()
A.運行時要裝載PC寄存器,堆,棧,方法區,運行時常量池等數據區。
B.類的裝載有ClassLoader和它的子類來實現的。
C.Java啟動,會生成JVM的一個實例。程序運行結束後該實例消失。
D.通過JDK提供的java指令可以讓JVM直接執行.java文件。
6.下列哪些生命非法()
A.short x[] B. int[] a[][] C. long[] z D int y[]
7.執行Example.java正確的結果是()
public class Example{
public static void main(String number[]){
for(int i=1;i<number.length;i++)
{
System.out.printLn(number[i]+」」);
}
}
}
Java Example 1 2 34 5<CR>
A. 1 2 3 B. 2 34 5 C. 2 34 D. 1 2 34 5 E.都不是
8.說出下列編譯結果( )
Example .java
public class Example{
static int intArray[]=new int[15];
public ststaic void main(String args[]){
System.out.println(intArray[5]);
}
}
A.編譯錯誤 B。運行時錯誤 C. 成功編譯,輸出為null D.成功編譯,輸出為0
9.說出下列編譯結果( )
Example .java
public class Example{
public ststaic void main(String args[])
{
String s=new String[6];
printString(s[0]);
}
public void printString (String str)
{
System.out.println(str);
}
}
A.編譯錯誤 B。運行時錯誤 C. 成功編譯,輸出為null D.成功編譯,輸出為0
10.說出下列編譯結果( )
public class Example{
public ststaic void main(String args[])
{ string $=」」;
for(int x=0;++x<args.length;){$+=args[x];}
System.out.println($);
}
}
輸入java Example -A B<CR>
A. AB B.-AB C. B D.編譯錯誤
11.下列關於垃圾回收正確的是()
A.開發者必須創建一個線程進行釋放
B.垃圾收集將檢查並釋放不再使用的內存
C.垃圾收集允許程序開發者明確制定並立即釋放該內存
D.垃圾回收能在期望時間釋放被Java對象使用的內存
12.說出下列結果( )
public class NumberOperation{
public ststaic void main(String args[])
{
int var1=10;
int var2=20;
System.out.println(var1++ + var2++ +」」+ ++var2);
}
}
A.10 20 B. 54 C. 30 22 D 11 21 22 E.編譯錯誤
13.說出下列結果( )
public class DivisionTest{
public ststaic void main(String args[])
{
byte varA=-64;
byte varB=-4;
System.out.println(varA/varB+」」+varA%varB);
}
}
A. 10 -4 B. 10 4 C 16 4 D 16 -4 E.編譯錯誤
14. 說出下列運行結果( )
public class LogicOperation{
public ststaic void main(String args[])
{
boolean b1=true;
boolean b2=false;
boolean b3=true;
if((b1&b2)|(b2&b3)&b3)
{
System.out.println(「alpha」);
}
if((b1=false)|(b1&b3)|(b1|b2))
{
System.out.println(「beta」);
}
}
}
A.beta B. alpha C. alpha beta D 沒有任何輸出 E.編譯錯誤
15.經過下面位移運算後,y值()
Int x=-32;
Int y>>>2;
A -4 B -8 C -16 D 以上都不是
16.哪些關鍵字用來對對象的枷鎖,該標記使得對對象的訪問是排他的()
A.transient B. serialize C synchronized D static
17.哪個修飾符不能添加在構造函數前面()
A.final B. protected C public D.private
18.數據類型轉換下列是錯誤的是()
A.布爾類型和其他基本類型不能相互轉換
B.字元型(char)可轉換雙精度(double)
C.從取值范圍寬的類型向取值范圍窄的類型轉換時不會發生編譯錯誤 ,但運行時數據會溢出。
D.基本類型的轉換在賦值,方法調用或算術運算時都會發生且由系統自動完成。
19.經過強轉換向,a,b為()
Short a=128;
byte b=(byte)a;
A.128 127 B. 128 -128 C -128 128 D 編譯錯誤
20.說出下列運行結果( )
public class Example{
public ststaic void main(String args[])
{ int i=1;
int j=2;
if(j=i++)
{
System.out.println(i+」,」+j);
}else{
System.out.println(j+」,」+i);
}
}
}
A. 1,2 B.2,1 C. 2,3 D.2,2
21.關於繼承哪個正確( )
A.再java中只允許單一繼承
B.在java中以各類只能實現一個介面。
C.在java中不能同時繼承一個類和一個介面
D.Java種類都可以繼承並進行擴展。
簡答題:
1. MVC中的M,V,C 分別指的是什麼?
2. 常用的5個java設計模式
3. final,finally,fianalize有什麼區別?
㈦ java常見的面試題和面試技巧 誰能告訴我 謝謝
如果說是一個企業急需招人,我想那就得多准備一些框架方面的知識,畢竟做項目是用的框架!下面進入主題:大概的流程是這樣吧 框架——》Java基礎——》資料庫相關點——》頁面注意技巧
一:框架——》
1,)Struts2是如何實現MVC的?M(模型):這個一般不由Struts來做V (視圖):視圖也不算struts的強項,但是struts提供優秀的標簽來支持視圖的展示,利用標簽,可以將數據合理的展示給用戶控制器:struts的重要功能,提供struts的過濾器,攔截用戶的請求,查找struts配置文件,為其匹配一個對應的Action,這個Action負責調用模型,獲得數據,然後對數據做部分處理,接著Action再將處理後的數據,為其選擇一個視圖進行輸出。
2) Struts工作機制?為什麼要使用Struts? 工作機制: Struts的工作流程: 在web應用啟動時就會載入初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象當ActionServlet接收到一個客戶請求時,將執行如下流程. (1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息; (2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中; (3)根據配置信息決定是否需要表單驗證.如果需要驗證,就調用ActionForm的validate()方法; (4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象, 就表示表單驗證成功; (5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的Action實例不存在,就先創建這個實例,然後調用Action的execute()方法; (6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向的JSP組件; (7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;為什麼要用: JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。基於Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件 Struts的validate框架是如何驗證的? 在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。
3)spring工作機制及為什麼要用? 1.spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責負責對請求進行真正的處理工作。 2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller. 3.DispatcherServlet請請求提交到目標Controller 4.Controller進行業務邏輯處理後,會返回一個ModelAndView 5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象 6.視圖對象負責渲染返回給客戶端。為什麼用: AOP 讓開發人員可以創建非行為性的關注點,稱為橫切關注點,並將它們插入到應用程序代碼中。使用 AOP 後,公共服務 (比 如日誌、持久性、事務等)就可以分解成方面並應用到域對象上,同時不會增加域對象的對象模型的復雜性。
IOC 允許創建一個可以構造對象的應用環境,然後向這些對象傳遞它們的協作對象。正如單詞 倒置 所表明的,IOC 就像反 過來的 JNDI。沒有使用一堆抽象工廠、服務定位器、單元素(singleton)和直接構造(straight construction),每一個對象都是用 其協作對象構造的。因此是由容器管理協作對象(collaborator)。
4)Hibernate工作原理及為什麼要用? 原理: 1.讀取並解析配置文件 2.讀取並解析映射信息,創建SessionFactory 3.打開Sesssion 4.創建事務Transation 5.持久化操作 6.提交事務 7.關閉Session 8.關閉SesstionFactory為什麼要用: 1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。2. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作3. hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。2. Hibernate是如何延遲載入? 1. Hibernate2延遲載入實現:a)實體對象 b)集合(Collection)2. Hibernate3 提供了屬性的延遲載入功能當Hibernate在查詢數據的時候,數據並沒有存在與內存中,當程序真正對數據的操作時,對象才存在與內存中,就實現了延遲載入,他節省了伺服器的內存開銷,從而提高了伺服器的性能。3.Hibernate中怎樣實現類之間的關系?(如:一對多、多對多的關系)類與類之間的關系主要體現在表與表之間的關系進行操作,它們都市對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many。
5)Hibernate的一級緩存與二級緩存的區別?
一級緩存就是Session級別的緩存,一個Session做了一個查詢操作,它會把這個操作的結果放在一級緩存中,如果短時間內這個session(一定要同一個session)又做了同一個操作,那麼hibernate直接從一級緩存中拿,而不會再去連資料庫,取數據。二級緩存就是SessionFactory級別的緩存,顧名思義,就是查詢的時候會把查詢結果緩存到二級緩存中,如果同一個sessionFactory創建的某個session執行了相同的操作,hibernate就會從二級緩存中拿結果,而不會再去連接資料庫。(這個題想簡答就可以了,但是如果想深入去多問幾個問什麼這里提供一個連接,寫得較為詳細:1)
另外一個關鍵點是:你要知道什麼信息和什麼操作,該調用什麼級別的緩存!
6)如何優化Hibernate?(這個問題有些觸及到這個框架的弱點了,那就得想辦法應付)
1.使用雙向一對多關聯,不使用單向一對多 2.靈活使用單向一對多關聯 3.不用一對一,用多對一取代 4.配置對象緩存,不使用集合緩存 5.一對多集合使用Bag,多對多集合使用Set 6. 繼承類使用顯式多態 7. 表欄位要少,表關聯不要怕多,自己再補充一點,上面說到的都是關於資料庫設計 帶來的優勢,從而起到優化框架的效果,但是真正在實際操作中,我們只有盡量控制不使用懶載入「lazy
=true」,如果在涉及的盡量使用Hql語句
7)struts的核心是什麼?(參考了這個回答:2)
FilterDispatcher也是Struts2的核心技術。FilterDispatcher核心控制器執行以下操作:(1)讀取靜態數據信息(2)決定需要轉發或者導航的Action配置(3)創建Action的Context(4)創建Action代理(5)內存清理和性能優化攔截器:Interceptor 攔截器本身是一個普通的Java對象,它能動態攔截Action調用,在Action執行前後執行攔截器本身提供的各種個樣的Web項目需求。 也可以阻止Action的執行,同時也可以提取Action中可以復用的部分。(1)在Action調用之前提供系統處理流程邏輯控制(2)和Action交互時,提供Ation執行時的一些初始信息(3)在Action結束後,一些事後的處理流程邏輯(4)修改Action中返回的Result信息(5)捕獲異常棧是用ognl表達式存值的最初地方,即一個存值的棧 自己再補充一點:struts的標簽庫也算一個。
8)ssh 的工作流程(這個問題留作作業,它們之間的相互實現,相互調用從原理上理解就行了)