導航:首頁 > 編程語言 > java設計模式的面試題

java設計模式的面試題

發布時間:2023-01-08 23:57:23

java基礎面試題都有哪些

一般面試官都會讓面試者回答哪些Java基礎面試題啊?難不難啊? 針對這一系列的疑問,廣州增城Java培訓學校收集了部分Java基礎面試題與大家分享,希望對各位參加了廣州專業Java培訓的學生,有一定的幫助! 一、Java基礎知識 1.Java有那些基本數據類型,String是不是基本數據類型,他們有何區別。 2.字元串的操作: 寫一個方法,實現字元串的反轉,如:輸入abc,輸出cba 寫一個方法,實現字元串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 3.數據類型之間的轉換 如何將數值型字元轉換為數字(Integer,Double) 如何將數字轉換為字元 如何取小數點前兩位,並四捨五入。 4.日期和時間 如何取得年月日,小時分秒 如何取得從1970年到現在的毫秒數 如何獲取某個日期是當月的最後一天 如何格式化日期 5.數組和集合 6.文件和目錄(I/O)操作 如何列出某個目錄下的所有文件 如何列出某個目錄下的所有子目錄 判斷一個文件或目錄是否存在 如何讀寫文件 7.Java多態的實現(繼承、重載、覆蓋) 8.編碼轉換,怎樣實現將GB2312編碼的字元串轉換為ISO-8859-1編碼的字元串。 9.Java中訪問資料庫的步驟,Statement和PreparedStatement之間的區別。 10.找出下列代碼可能存在的錯誤,並說明原因: 二、JSP&Servlet技術 1.描述JSP和Servlet的區別、共同點、各自應用的范圍 2.在Web開發中需要處理HTML標記時,應做什麼樣的處理,要篩選那些字元(< > & 「」) 3.在JSP中如何讀取客戶端的請求,如何訪問CGI變數,如何確定某個Jsp文件的真實路徑。 4.描述Cookie和Session的作用,區別和各自的應用范圍,Session工作原理。 5.列出Jsp中包含外部文件的方式,兩者有何區別。 6.說明Jsp中errorPage的作用,應用范圍。 7.介紹在Jsp中如何使用JavaBeans。 8.簡單介紹JSP的標記庫 9.Jsp和Servlet中的請求轉發分別如何實現。 三、J2EE相關知識 1.介紹J2EE、J2SE、J2SE的區別。 2.J2EE是一種技術還是一種平台,他提供了那些技術。 3.什麼是Application Server,它有什麼功能和優點。 4.簡單介紹連接池的優點和原理。 5.Web.xml的作用 四、其他 1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮) 2.簡單介紹您所了解的MVC。 3.簡單介紹所了解的XML。 4.文檔和編碼規范 5.Java中的分頁、效率考慮。 6.簡單介紹您所了解的structs。 Java面試題收藏: 1.xml在項目中的作用 2.s-EJB 與 e-EJB的區別 3.會話面的作用 4.cmp與bmp的優缺點 5.j2me程序的必需的幾個部分 6.c/s與b/s的區別 7.構建一個connect pool然後再調用它, 8.j2ee平台與dotnet平台的區別 9.ejb的life cycle 10.session bean 和 entity bean的區別 11.ejb中的transaction機制 12.synchronized (生產者和消費) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什麼是MDA 17.tcp與udp的區別 18.鏈表與散列表和數組的區別 19.堆和棧的區別 20.ejb的分類及區別 21.你對現在軟體業以及國內軟體業的看法 22.談談java多線程 23.談談文件加密技術 24.軟體開發生命周期 25.路由協議種類及特點 26.java的awt和swing組件的GUI設計的關鍵 27.對於java流的認識 28.簡單描述一下awt與swing區別。 29.簡述java編程中事件處理模式。 30.你編寫過applet嗎?applet的安全許可權如何?試列舉java application或者applet中與servlet/jsp通信可以採用的方式。 31.簡述邏輯操作(如&|)與條件操作(如&&||)的區別。

Ⅱ 《Java面試全解析核心知識點與典型面試題》pdf下載在線閱讀全文,求百度網盤雲資源

《Java面試全解析核心知識點與典型面試題》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1rSXCHbL9j9w6RKjT9Hq9ZA

?pwd=gesc 提取碼:gesc
簡介:500道Java常見面試題+10萬字核心知識解析豐富的Java技術棧:基礎和框架,線程池和鎖優化,SpringBoot和分布式消息隊列,數據結構和常用演算法,設計模式和JVM等。

Ⅲ 懇請高手給小弟出一份java軟體工程師的面試題

java軟體工程師面試題集

EJB方面

1、EJB2.0有哪些內容?分別用在什麼場合? EJB2.0和EJB1.1的區別?

答:規范內容包括Bean提供者,應用程序裝配者,EJB容器,EJB配置工具,EJB服務提供者,系統管理員。這裡面,EJB容器是EJB之所以能夠運行的核心。EJB容器管理著EJB的創建,撤消,激活,去活,與資料庫的連接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

2、EJB與JAVA BEAN的區別?

答:Java Bean 是可復用的組件,對Java Bean並沒有嚴格的規范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由於Java Bean是被容器所創建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現Serializable介面用於實現Bean的持久性。Java Bean實際上相當於微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當於DCOM,即分布式組件。它是基於Java的遠程方法調用(RMI)技術的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創建和管理。客戶通過容器來訪問真正的EJB組件。

3、EJB的基本架構

答:一個EJB包括三個部分:

Remote Interface 介面的代碼

package Beans;

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

public interface Add extends EJBObject

{

//some method declare

}

Home Interface 介面的代碼

package Beans;

import java.rmi.RemoteException;

import jaax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface AddHome extends EJBHome

{

//some method declare

}

EJB類的代碼

package Beans;

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javx.ejb.SessionContext;

public class AddBean Implements SessionBean

{

//some method declare

}

J2EE,MVC方面

1、MVC的各個部分都有那些技術來實現?如何實現?

答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。

2、應用伺服器與WEB SERVER的區別?

希望大家補上,謝謝

3、J2EE是什麼?

答:Je22是Sun公司提出的多層(multi-diered),分布式(distributed),基於組件(component-base)的企業級應用模型(enterpriese application model).在這樣的一個應用系統中,可按照功能劃分為不同的組件,這些組件又可在不同計算機上,並且處於相應的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業信息系統(EIS)層。

4、WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。

答:Web Service描述語言WSDL

SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用於交換XML編碼信息的輕量級協議。

UDDI 的目的是為電子商務建立標准;UDDI是一套基於Web的、分布式的、為Web Service提供的、信息注冊中心的實現標准規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標准。

5、BS與CS的聯系與區別。

希望大家補上,謝謝

6、STRUTS的應用(如STRUTS架構)

答:Struts是採用Java Servlet/JavaServer Pages技術,開發Web應用程序的開放源碼的framework。 採用Struts能開發出基於MVC(Model-View-Controller)設計模式的應用構架。 Struts有如下的主要功能:

一.包含一個controller servlet,能將用戶的請求發送到相應的Action對象。

二.JSP自由tag庫,並且在controller servlet中提供關聯支持,幫助開發員創建互動式表單應用。

三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

設計模式方面

1、開發中都用到了那些設計模式?用在什麼場合?

答:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重復相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。

2、UML方面

答:標准建模語言UML。用例圖,靜態圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實現圖,

JavaScript方面

1、如何校驗數字型?

var re=/^d{1,8}$|.d{1,2}$/;

var str=document.form1.all(i).value;

var r=str.match(re);

if (r==null)

{

sign=-4;

break;

}

else{

document.form1.all(i).value=parseFloat(str);

}

CORBA方面

1、CORBA是什麼?用途是什麼?

答:CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標准化。它的組成是介面定義語言(IDL), 語言綁定(binding:也譯為聯編)和允許應用程序間互操作的協議。 其目的為:

用不同的程序設計語言書寫

在不同的進程中運行

為不同的操作系統開發

linux方面

1、LINUX下線程,GDI類的解釋。

答:LINUX實現的就是基於核心輕量級進程的"一對一"線程模型,一個線程實體對應一個核心輕量級進程,而線程之間的管理在核外函數庫中實現。

GDI類為圖像設備編程介面類庫。

1、面向對象的三個基本特徵

2、方法重載和方法重寫的概念和區別

3、介面和內部類、抽象類的特性

4、文件讀寫的基本類

**5、串列化的注意事項以及如何實現串列化

6、線程的基本概念、線程的基本狀態以及狀態之間的關系

7、線程的同步、如何實現線程的同步

8、幾種常用的數據結構及內部實現原理。

9、Socket通信(TCP、UDP區別及Java實現方式)

**10、Java的事件委託機制和垃圾回收機制

11、JDBC調用資料庫的基本步驟

**12、解析XML文件的幾種方式和區別

13、Java四種基本許可權的定義

14、Java的國際化

二、JSP
1、至少要能說出7個隱含對象以及他們的區別

** 2、forward 和redirect的區別

3、JSP的常用指令

三、servlet
1、什麼情況下調用doGet()和doPost()?

2、servlet的init()方法和service()方法的區別

3、servlet的生命周期

4、如何現實servlet的單線程模式

5、servlet的配置

6、四種會話跟蹤技術

四、EJB
**1、EJB容器提供的服務

主要提供聲明周期管理、代碼產生、持續性管理、安全、事務管理、鎖和並發行管理等服務。

2、EJB的角色和三個對象

EJB角色主要包括Bean開發者 應用組裝者 部署者 系統管理員 EJB容器提供者 EJB伺服器提供者

三個對象是Remote(Local)介面、Home(LocalHome)介面,Bean類

2、EJB的幾種類型

會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean

會話Bean又可分為有狀態(Stateful)和無狀態(Stateless)兩種

實體Bean可分為Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種

3、bean 實例的生命周期

對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,通常包含創建實例,設置上下文、創建EJB Object(create)、業務方法調用、remove等過程,對於存在緩沖池管理的Bean,在create之後實例並不從內存清除,而是採用緩沖池調度機制不斷重用實例,而對於存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態並限制內存中實例數量。

4、激活機制

以Statefull Session Bean 為例:其Cache大小決定了內存中可以同時存在的Bean實例的數量,根據MRU或NRU演算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調用某個EJB實例業務方法時,如果對應EJB Object發現自己沒有綁定對應的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回復(激活)此實例。狀態變遷前會調用對應的ejbActive和ejbPassivate方法。

5、remote介面和home介面主要作用

remote介面定義了業務方法,用於EJB客戶端調用業務方法

home介面是EJB工廠用於創建和移除查找EJB實例

6、客服端調用EJB對象的幾個基本步驟

一、 設置JNDI服務工廠以及JNDI服務地址系統屬性

二、 查找Home介面

三、 從Home介面調用Create方法創建Remote介面

四、 通過Remote介面調用其業務方法

五、資料庫
1、存儲過程的編寫

2、基本的SQL語句

六、weblogic
1、 如何給weblogic指定大小的內存?

在啟動Weblogic的腳本中(位於所在Domian對應伺服器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小內存為32M,最大200M

2、 如何設定的weblogic的熱啟動模式(開發模式)與產品發布模式?

可以在管理控制台中修改對應伺服器的啟動模式為開發或產品模式之一。或者修改服務的啟動文件或者commenv文件,增加set PRODUCTION_MODE=true。

3、 如何啟動時不需輸入用戶名與密碼?

修改服務啟動文件,增加 WLS_USER和WLS_PW項。也可以在boot.properties文件中增加加密過的用戶名和密碼.

4、 在weblogic管理制台中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或連接池等相關信息進行配置後,實際保存在什麼文件中?

保存在此Domain的config.xml文件中,它是伺服器的核心配置文件。

5、 說說weblogic中一個Domain的預設目錄結構?比如要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入http://主機:埠號//helloword.jsp就可以看到運行結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?

Domain目錄\伺服器目錄\applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp文件可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設置伺服器的預設應用將可以實現在瀏覽器上無需輸入應用名。

6、 如何查看在weblogic中已經發布的EJB?

可以使用管理控制台,在它的Deployment中可以查看所有已發布的EJB

7、 如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標准)進行ssl的配置

預設安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實現SSL,需要配置伺服器使用Enable SSL,配置其埠,在產品模式下需要從CA獲取私有密鑰和數字證書,創建identity和trust keystore,裝載獲得的密鑰和數字證書。可以配置此SSL連接是單向還是雙向的。

8、在weblogic中發布ejb需涉及到哪些配置文件

不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP實體Bean一般還需要weblogic-cmp-rdbms-jar.xml

9、EJB需直接實現它的業務介面或Home介面嗎,請簡述理由.

遠程介面和Home介面不需要直接實現,他們的實現代碼是由伺服器產生的,程序運行中對應實現類會作為對應介面類型的實例被使用。

10、說說在weblogic中開發消息Bean時的persistent與non-persisten的差別

persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現問題而JMS伺服器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄。

11、說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設計模式的一些看法

Session Facade Pattern:使用SessionBean訪問EntityBean

Message Facade Pattern:實現非同步調用

EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現輕量級訪問

Data Transfer Object Factory:通過DTO Factory簡化EntityBean數據提供特性

Generic Attribute Access:通過AttibuteAccess介面簡化EntityBean數據提供特性

Business Interface:通過遠程(本地)介面和Bean類實現相同介面規范業務邏輯一致性

EJB架構的設計好壞將直接影響系統的性能、可擴展性、可維護性、組件可重用性及開發效率。項目越復雜,項目隊伍越龐大則越能體現良好設計的重要性
from java-cn

Ⅳ 求: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 一共有23 中設計模式,例如單例模式、工廠模式、代理模式、適配器模式等,面試被問到你就說出幾個對應的設計模式,不能只知道名字啊,得了解這些設計模式是原理。如果你記憶力好都記下來也可以

Ⅵ 一般java面試都會問些什麼問題

1、請你自我介紹一下你自己?

回答提示:一般人回答這個問題過於平常,只說姓名、年齡、愛好、工作經驗,這些在簡歷上都有。其實,企業最希望知道的是求職者能否勝任工作,包括:最強的技能、最深入研究的知識領域、個性中最積極的部分、做過的最成功的事,主要的成就等,這些都可以和學習無關,也可以和學習有關,但要突出積極的個性和做事的能力,說得合情合理企業才會相信。

企業很重視一個人的禮貌,求職者要尊重考官,在回答每個問題之後都說一句「謝謝」,企業喜歡有禮貌的求職者。

2、你覺得你個性上最大的優點是什麼?

回答提示:沉著冷靜、條理清楚、立場堅定、頑強向上、樂於助人和關心他人、適應能力和幽默感、樂觀和友愛。我在北大青鳥經過一到兩年的培訓及項目實戰,加上實習工作,使我適合這份工作。

3、說說你最大的缺點?

回答提示:這個問題企業問的概率很大,通常不希望聽到直接回答的缺點是什麼等,如果求職者說自己小心眼、愛忌妒人、非常懶、脾氣大、工作效率低,企業肯定不會錄用你。絕對不要自作聰明地回答「我最大的缺點是過於追求完美」,有的人以為這樣回答會顯得自己比較出色,但事實上,他已經岌岌可危了。

企業喜歡求職者從自己的優點說起,中間加一些小缺點,最後再把問題轉回到優點上,突出優點的部分,企業喜歡聰明的求職者。

4、你對加班的看法?

回答提示:實際上好多公司問這個問題,並不證明一定要加班,只是想測試你是否願意為公司奉獻。

回答樣本:如果是工作需要我會義不容辭加班,我現在單身,沒有任何家庭負擔,可以全身心的投入工作。但同時,我也會提高工作效率,減少不必要的加班。

5、你對薪資的要求?

回答提示:如果你對薪酬的要求太低,那顯然貶低自己的能力;如果你對薪酬的要求太高,那又會顯得你分量過重,公司受用不起。

一些僱主通常都事先對求聘的職位定下開支預算,因而他們第一次提出的價錢往往是他們所能給予的最高價錢,他們問你只不過想證實一下這筆錢是否足以引起你對該工作的興趣。

Ⅶ java的面試題有哪些

正如圈內的大佬所說的那樣,基礎很重要。浙江優就業的老師幫你總結一下。

常見的面試題有:

望採納!

Ⅷ java兩年經驗面試都會問什麼問題

個人介紹:
首先介紹下我面試時的自身條件情況,我把自己的情況分為優勢和劣勢來說可能更有利於你們比較自身情況。
劣勢:
1.15年7月畢業後開始到上海工作,面試的時候是17年3月到4月,一年多的經驗,勉強算兩年經驗。分析:一年多經驗我認為是比較尷尬的,處於一個不上不下的位置,很多公司比較喜歡招三年經驗的,或者直接招應屆生來培養。
2.畢業於一個非985/211,勉強上一本的高校。分析:這個相對影響較小,因為有工作經驗後,公司對學校的要求就沒那麼高了,只要是本科就基本沒問題,但是還是有個別叼毛公司只要985/211。
3.前一家公司是傳統電信行業,加入項目組時,項目已經上線有段時間了,我們的任務就是有需求就開發,有bug就優化,其他時間就聊騷,各干各的,工作一年多跟在養老一樣,用一句話說就是編程5分鍾,扯淡2小時,項目經驗嚴重不足,沒開發過很難的需求。分析:這一點是最傷的,公司招有經驗的就想看你都幹了些什麼牛批的東西,結果你告訴面試官我寫的需求都是垃圾。
優勢:
1.大學時拿過比較多的獎,每年都是校級優秀學生,畢業時是市級優秀畢業生,拿過省級ACM二等獎等。分析:大學的榮譽對一個有工作經驗的人來說,公司不一定會看重,但是可能會對面試官產生微妙的影響,特別是ACM獎,我碰到過有的面試官也是搞過ACM的,有共同的話題聊起來總是比較容易的,但是也要注意不能把這一欄篇幅寫的過於多,只能當作點綴用,我當時是放在簡歷最後一欄,簡要的寫了最主要的幾個獎。
2.良好的溝通交流能力。分析:這個能力不會是關鍵性的,但是可以加分。
3.較強的學習能力和邏輯思維能力。分析:有些公司和面試官還是比較看重一個人的學習能力的,經驗代表著你現在在什麼級別,而學習能力則代表著你將來能到達什麼級別。
學習過程:
看了我的優劣勢介紹,你會發現我的優勢相對於我的劣勢來說,簡直不值一提。我自己對此也有清晰的認識,因此從過完年之後,我就開始抓緊空閑時間學習。學習的過程如下:
1.看面試題
正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發現有些文章寫的不錯,對我幫助不小值得推薦,如下:
Java面試題全集(上)很多基礎的東西,建議先看。
各大公司Java後端開發面試題總結
面試心得與總結—BAT、網易、蘑菇街
關於Java面試,你應該准備這些知識點
2.深入學習
在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內部實現原理,這就促使你得開始去看jdk的源碼或者是學習一些新的東西。看源碼是很重要的一步,起步很難,但是會讓你收益良多,看源碼的過程如果碰到無法理解的地方,可以網路看下別人的理解。我學習源碼的過程中,看過幾個人的關於源碼的文章寫的很不錯,如下:
五月的倉頡
佔小狼
zhangshixi的Core java系列
3.熟悉項目
找出自己工作以來開發過的最叼的功能,將整個功能的流程和涉及的東西吃透。項目是面試中必問的環節,一般是以一個功能點為基礎展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。
4.做面試題
有不少公司是有面試的,如果你沒有準備過,很容易在各種小地方犯錯,建議去一些面試題網站多做些題目,我自己是用的牛客網。
5.學習記錄
把自己每天的學習時間和學習內容記錄下來,可以讓自己更有動力的學習,學習是一個枯燥的過程,你必須讓自己時刻保持有動力。
投簡歷、約面試環節
1.在哪些網站投?
拉勾網、BOSS直聘、獵聘網。
2.是否該海投?
投簡歷分為兩個情況。
1)沒有社招面試經驗:建議採取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經驗。這個環節可以把投簡歷的網站增加兩家:智聯和無憂。
2)自認為社招面試經驗已經足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看準網、網路、知乎等查詢。
3.一天約幾家面試合適?
最理想的情況為2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因為下午的時間比較充足,可以讓公司更充分的了解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。
4.投簡歷經常沒下文?
我當初也沒想到簡歷篩選這關有這么難,可能是我的簡歷確實亮點不多,再者HR很多都不是行內人,因此他們看得最直接的就是你上家的公司和你畢業的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。
5.是否該裸辭?
我一開始是邊上班邊投,然後利用調休時間,或者請假去面試。後來,面試機會越來越多,請假太頻繁了,自己都不好意思了,並且自己也已經有足夠的信心,這個時候我選擇了裸辭。裸辭還有一個原因是,在面試過程中你會發現,有的公司要人要的緊,如果你的辭職流程過長可能會導致你錯過這個公司。
6.注意事項
1)面試前一天把路線和時間算好,最好別遲到。
2)背個書包,帶好簡歷、充電寶、紙巾、雨傘。
面試環節
1.筆試常見的問題?
面試常見的問題上面給的面試題鏈接基本都有。我只提幾點:1)寫SQL:寫SQL很常考察group by、內連接和外連接。2)手寫代碼:手寫代碼一般考單例、排序、線程、消費者生產者。我建議排序演算法除了冒泡排序,最好還能手寫一種其他的排序代碼。試想:如果一般面試者都寫的冒泡排序,而你寫的是快速排序/堆排序,肯定能給面試官留下不錯的印象。
2.面試流程?
1)讓你自我介紹
2)問Java基礎知識
3)問項目
4)情景問題,例如:你的一個功能上了生產環境後,伺服器壓力驟增,該怎麼排查。
5)你有什麼想問面試官的
3.面試常問的知識點?
1)集合相關問題(必問):
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現。
HashMap和Hashtable的區別。
ArrayList、LinkedList、Vector的區別。
HashMap和ConcurrentHashMap的區別。
HashMap和LinkedHashMap的區別。
HashMap是線程安全的嗎。
ConcurrentHashMap是怎麼實現線程安全的。
2)線程相關問題(必問):
創建線程的3種方式。
什麼是線程安全。
Runnable介面和Callable介面的區別。
wait方法和sleep方法的區別。
synchronized、Lock、ReentrantLock、ReadWriteLock。
介紹下CAS(無鎖技術)。
什麼是ThreadLocal。
創建線程池的4種方式。
ThreadPoolExecutor的內部工作原理。
分布式環境下,怎麼保證線程安全。
3)JVM相關問題:
介紹下垃圾收集機制(在什麼時候,對什麼,做了什麼)。
垃圾收集有哪些演算法,各自的特點。
類載入的過程。
雙親委派模型。
有哪些類載入器。
能不能自己寫一個類叫java.lang.String。
4)設計模式相關問題(必問):
先問你熟悉哪些設計模式,然後再具體問你某個設計模式具體實現和相關擴展問題。
5)資料庫相關問題,針對Mysql(必問):
給題目讓你手寫SQL。
有沒有SQL優化經驗。
Mysql索引的數據結構。
SQL怎麼進行優化。
SQL關鍵字的執行順序。
有哪幾種索引。
什麼時候該(不該)建索引。
Explain包含哪些列。
Explain的Type列有哪幾種值。
6)框架相關問題:
Hibernate和Mybatis的區別。
Spring MVC和Struts2的區別。
Spring用了哪些設計模式。
Spring中AOP主要用來做什麼。
Spring注入bean的方式。
什麼是IOC,什麼是依賴注入。
Spring是單例還是多例,怎麼修改。
Spring事務隔離級別和傳播性。
介紹下Mybatis/Hibernate的緩存機制。
Mybatis的mapper文件中#和$的區別。
Mybatis的mapper文件中resultType和resultMap的區別。
Mybatis中DAO層介面沒有寫實現類,Mapper中的方法和DAO介面方法是怎麼綁定到一起的,其內部是怎麼實現的。
7)其他遇到問題:
介紹下棧和隊列。
IO和NIO的區別。
介面和抽象類的區別。
int和Integer的自動拆箱/裝箱相關問題。
常量池相關問題。
==和equals的區別。
重載和重寫的區別。
String和StringBuilder、StringBuffer的區別。
靜態變數、實例變數、局部變數線程安全嗎,為什麼。
try、catch、finally都有return語句時執行哪個。
介紹下B樹、二叉樹。
ajax的4個字母分別是什麼意思。
xml全稱是什麼。
分布式鎖的實現。
分布式session存儲解決方案。
常用的linux命令。
一些經驗:
1.先投一些普通公司,等面出了心得再去投理想的公司。
2.不熟悉的技術不要主動提。
3.對於那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
4.小公司喜歡在薪水上壓你,開的時候適當提高。
5.不要去參加招聘會,純粹是浪費時間。
6.把面試當作一次技術的交流,不要太在意是否能被錄取。
7.公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,無論你自己覺得面的有多好。
8.盡量少通過電話面試,效果不好。
9.在面試的日子裡,要保持每天學習,無論是學習新東西還是復習舊東西。
10.拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續努力找更好的。
11.通過面試官可以大概判斷這家公司的情況。
12.拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
13.理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經驗。
14.問到自己有深入研究過的知識,抓住機會好好表現,不要輕易放過。

Ⅸ JAVA面試題---設計一個類,該類只能生成一個實例

單實例Singleton設計模式可能是被討論和使用的最廣泛的一個設計模式了,這可能也是面試中問得最多的一個設計模式了。這個設計模式主要目的是想在整個系統中只能出現一個類的實例。這樣做當然是有必然的,比如你的軟體的全局配置信息,或者是一個Factory,或是一個主控類,等等。你希望這個類在整個系統中只能出現一個實例。當然,作為一個技術負責人的你,你當然有權利通過使用非技術的手段來達到你的目的。比如:你在團隊內部明文規定,「XX類只能有一個全局實例,如果某人使用兩次以上,那麼該人將被處於2000元的罰款!」(呵呵),你當然有權這么做。但是如果你的設計的是東西是一個類庫,或是一個需要提供給用戶使用的API,恐怕你的這項規定將會失效。因為,你無權要求別人會那麼做。所以,這就是為什麼,我們希望通過使用技術的手段來達成這樣一個目的的原因。
本文會帶著你深入整個Singleton的世界,當然,我會放棄使用C++語言而改用Java語言,因為使用Java這個語言可能更容易讓我說明一些事情。
Singleton的教學版本
這里,我將直接給出一個Singleton的簡單實現,因為我相信你已經有這方面的一些基礎了。我們姑且把這具版本叫做1.0版
// version 1.0
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if (singleton== null)
{
singleton= new Singleton();
}
return singleton;
}
}
在上面的實例中,我想說明下面幾個Singleton的特點:(下面這些東西可能是盡人皆知的,沒有什麼新鮮的)
私有(private)的構造函數,表明這個類是不可能形成實例了。這主要是怕這個類會有多個實例。
即然這個類是不可能形成實例,那麼,我們需要一個靜態的方式讓其形成實例:getInstance()。注意這個方法是在new自己,因為其可以訪問私有的構造函數,所以他是可以保證實例被創建出來的。
在getInstance()中,先做判斷是否已形成實例,如果已形成則直接返回,否則創建實例。
所形成的實例保存在自己類中的私有成員中。
我們取實例時,只需要使用Singleton.getInstance()就行了。
當然,如果你覺得知道了上面這些事情後就學成了,那我給你當頭棒喝一下了,事情遠遠沒有那麼簡單。
Singleton的實際版本
上面的這個程序存在比較嚴重的問題,因為是全局性的實例,所以,在多線程情況下,所有的全局共享的東西都會變得非常的危險,這個也一樣,在多線程情況下,如果多個線程同時調用getInstance()的話,那麼,可能會有多個進程同時通過 (singleton== null)的條件檢查,於是,多個實例就創建出來,並且很可能造成內存泄露問題。嗯,熟悉多線程的你一定會說——「我們需要線程互斥或同步」,沒錯,我們需要這個事情,於是我們的Singleton升級成1.1版,如下所示:
// version 1.1
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if (singleton== null)
{
synchronized (Singleton.class) {
singleton= new Singleton();
}
}
return singleton;
}
}
嗯,使用了Java的synchronized方法,看起來不錯哦。應該沒有問題了吧?!錯!這還是有問題!為什麼呢?前面已經說過,如果有多個線程同時通過(singleton== null)的條件檢查(因為他們並行運行),雖然我們的synchronized方法會幫助我們同步所有的線程,讓我們並行線程變成串列的一個一個去 new,那不還是一樣的嗎?同樣會出現很多實例。嗯,確實如此!看來,還得把那個判斷(singleton== null)條件也同步起來。於是,我們的Singleton再次升級成1.2版本,如下所示: // version 1.2
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
synchronized (Singleton.class)
{
if (singleton== null)
{
singleton= new Singleton();
}
}
return singleton;
}
}
不錯不錯,看似很不錯了。在多線程下應該沒有什麼問題了,不是嗎?的確是這樣的,1.2版的Singleton在多線程下的確沒有問題了,因為我們同步了所有的線程。只不過嘛……,什麼?!還不行?!是的,還是有點小問題,我們本來只是想讓new這個操作並行就可以了,現在,只要是進入 getInstance()的線程都得同步啊,注意,創建對象的動作只有一次,後面的動作全是讀取那個成員變數,這些讀取的動作不需要線程同步啊。這樣的作法感覺非常極端啊,為了一個初始化的創建動作,居然讓我們達上了所有的讀操作,嚴重影響後續的性能啊!
還得改!嗯,看來,在線程同步前還得加一個(singleton== null)的條件判斷,如果對象已經創建了,那麼就不需要線程的同步了。OK,下面是1.3版的Singleton.
// version 1.3
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if (singleton== null)
{
synchronized (Singleton.class)
{
if (singleton== null)
{
singleton= new Singleton();
}
}
}
return singleton;
}
}
感覺代碼開始變得有點羅嗦和復雜了,不過,這可能是最不錯的一個版本了,這個版本又叫「雙重檢查」Double-Check.下面是說明:
第一個條件是說,如果實例創建了,那就不需要同步了,直接返回就好了。
不然,我們就開始同步線程。
第二個條件是說,如果被同步的線程中,有一個線程創建了對象,那麼別的線程就不用再創建了。
相當不錯啊,幹得非常漂亮!請大家為我們的1.3版起立鼓掌!
Singleton的其它問題
怎麼?還有問題?!當然還有,請記住下面這條規則——「無論你的代碼寫得有多好,其只能在特定的范圍內工作,超出這個范圍就要出Bug了」,這是「陳式第一定理」,呵呵。你能想一想還有什麼情況會讓這個我們上面的代碼出問題嗎?
在C++下,我不是很好舉例,但是在Java的環境下,嘿嘿,還是讓我們來看看下面的一些反例和一些別的事情的討論(當然,有些反例可能屬於鑽牛角尖,可能有點學院派,不過也不排除其實際可能性,就算是提個醒吧):
其一、Class Loader.不知道你對Java的Class Loader熟悉嗎?「類裝載器」?!C++可沒有這個東西啊。這是Java動態性的核心。顧名思義,類裝載器是用來把類(class)裝載進JVM的。 JVM規范定義了兩種類型的類裝載器:啟動內裝載器(bootstrap)和用戶自定義裝載器(user-defined class loader)。在一個JVM中可能存在多個ClassLoader,每個ClassLoader擁有自己的NameSpace.一個ClassLoader只能擁有一個 class對象類型的實例,但是不同的ClassLoader可能擁有相同的class對象實例,這時可能產生致命的問題。如ClassLoaderA,裝載了類A的類型實例A1,而ClassLoaderB,也裝載了類A的對象實例A2.邏輯上講A1=A2,但是由於A1和A2來自於不同的 ClassLoader,它們實際上是完全不同的,如果A中定義了一個靜態變數c,則c在不同的ClassLoader中的值是不同的。
於是,如果咱們的Singleton 1.3版本如果面對著多個Class Loader會怎麼樣?呵呵,多個實例同樣會被多個Class Loader創建出來,當然,這個有點牽強,不過他確實存在。難道我們還要整出個1.4版嗎?可是,我們怎麼可能在我的Singleton類中操作 Class Loader啊?是的,你根本不可能。在這種情況下,你能做的只有是——「保證多個Class Loader不會裝載同一個Singleton」。
其二、序例化。如果我們的這個Singleton類是一個關於我們程序配置信息的類。我們需要它有序列化的功能,那麼,當反序列化的時候,我們將無法控制別人不多次反序列化。不過,我們可以利用一下Serializable介面的readResolve()方法,比如:
public class Singleton implements Serializable
{
......
......
protected Object readResolve()
{
return getInstance();
}
}
其三、多個Java虛擬機。如果我們的程序運行在多個Java的虛擬機中。什麼?多個虛擬機?這是一種什麼樣的情況啊。嗯,這種情況是有點極端,不過還是可能出現,比如EJB或RMI之流的東西。要在這種環境下避免多實例,看來只能通過良好的設計或非技術來解決了。
其四,volatile變數。關於volatile這個關鍵字所聲明的變數可以被看作是一種 「程度較輕的同步synchronized」;與 synchronized 塊相比,volatile 變數所需的編碼較少,並且運行時開銷也較少,但是它所能實現的功能也僅是synchronized的一部分。當然,如前面所述,我們需要的 Singleton只是在創建的時候線程同步,而後面的讀取則不需要同步。所以,volatile變數並不能幫助我們即能解決問題,又有好的性能。而且,這種變數只能在JDK 1.5+版後才能使用。
其五、關於繼承。是的,繼承於Singleton後的子類也有可能造成多實例的問題。不過,因為我們早把Singleton的構造函數聲明成了私有的,所以也就杜絕了繼承這種事情。
其六,關於代碼重用。也話我們的系統中有很多個類需要用到這個模式,如果我們在每一個類都中有這樣的代碼,那麼就顯得有點傻了。那麼,我們是否可以使用一種方法,把這具模式抽象出去?在C++下這是很容易的,因為有模板和友元,還支持棧上分配內存,所以比較容易一些(程序如下所示),Java下可能比較復雜一些,聰明的你知道怎麼做嗎?
template<CLASS T> class Singleton
{
public:
static T& Instance()
{
static T theSingleInstance; //假設T有一個protected默認構造函數
return theSingleInstance;
}
};
class OnlyOne : public Singleton<ONLYONE>
{
friend class Singleton<ONLYONE>;
int example_data;
public:
int GetExampleData() const {return example_data;}
protected:
OnlyOne(): example_data(42) {} // 默認構造函數
OnlyOne(OnlyOne&) {}
};
int main( )
{
cout << OnlyOne::Instance().GetExampleData()<< endl;
return 0;

Ⅹ java基礎面試題

1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

2.繼承:
繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼 承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增 加新的方法使之更適合特殊的需要。

3.封裝:
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。

4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

5、String 和StringBuffer的區別

JAVA平台提供了兩個類:String和 StringBuffer,它們可以儲存和操作字元串,即包含多個字元的字元數據。這個String類提供了數值不可改變的字元串。而這個 StringBuffer類提供的字元串進行修改。當你知道字元數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers來動態構造字元數據。

6、運行時異常與一般異常有何異同?

異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

7、說出Servlet的生命周期,並說出Servlet和CGI的區別。

Servlet被伺服器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將實例銷毀的時候調用其destroy方法。
與cgi的區別在於servlet處於伺服器進程中,它通過多線程方式運行其service方法,一個實例可以服務於多個請求,並且其實例一般不會銷毀,而CGI對每個請求都產生新的進程,服務完成後就銷毀,所以效率上低於servlet。

8、說出ArrayList,Vector, LinkedList的存儲性能和特性

ArrayList和 Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素 移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而 LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。

10、&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

11、HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。

12、final, finally, finalize的區別。
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。

13、sleep() 和 wait() 有什麼區別?
sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動恢復。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)後本線程才進入對象鎖定池准備獲得對象鎖進入運行狀態。

14、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?

方法的重寫Override和重載Overload是Java多態性的不同表現。重寫Overrid是父類與子類之間多態性的一種表現,重載 Overload是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overrid)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方 法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overload的方法是可以改變返回值的類型。

15、error和exception有什麼區別?

error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

16、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。

如果數據將在線程間共享。例如正在寫的數據以後可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那麼這些數據就是共享數據,必須進行同步存取。
當應用程序在對象上調用了一個需要花費很長時間來執行的方法,並且不希望讓程序等待方法的返回時,就應該使用非同步編程,在很多情況下採用非同步途徑往往更有效率。

17、try { }里有一個return語句,那麼緊跟在這個try後的finally { }里的code會不會被執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。

18、Java中的異常處理機制的簡單原理和應用。

當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情 況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發 NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,並自由選擇在何時用 throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。

19、垃圾回收的優點和原理。並考慮2種回收機制。

Java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃圾回收機制,Java中的對象不再有 "作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的 線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾 回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。

20、請說出你所知道的線程同步的方法。

wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。

sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。

21、描述一下JVM載入class文件的原理機制

JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。

22、MVC的各個部分都有那些技術來實現?如何實現?

MVC是Model-View-Controller 的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。

23、List、Map、Set三個介面,存取元素時,各有什麼特點?

List以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存key-value值.

119、STRUTS的應用(如STRUTS架構)

Struts是採用Java Servlet/JavaServer Pages技術,開發Web應用程序的開放源碼的framework。 採用Struts能開發出基於MVC(Model-View-Controller)設計模式的應用構架。 Struts有如下的主要功能: 一.包含一個controller servlet,能將用戶的請求發送到相應的Action對象。 二.JSP自由tag庫,並且在controller servlet中提供關聯支持,幫助開發員創建互動式表單應用。 三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

閱讀全文

與java設計模式的面試題相關的資料

熱點內容
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000
saas平台PHP 瀏覽:333
雲伺服器科學計算配置怎麼選 瀏覽:649
jar解壓命令 瀏覽:609
php正則問號 瀏覽:299
無線已加密不可上網是怎麼了 瀏覽:464
什麼app可以免費做手機 瀏覽:375
異性下載什麼app 瀏覽:680
51單片機程序單步視頻 瀏覽:241
家庭寬頻如何連接伺服器 瀏覽:119
汽車高壓泵解壓 瀏覽:772
上門正骨用什麼app 瀏覽:761
安卓為什麼免費使用 瀏覽:399
加密貨幣都有哪些平台 瀏覽:629
python和matlab難度 瀏覽:392
python爬蟲很難學么 瀏覽:575
小米解壓積木可以組成什麼呢 瀏覽:818
為什麼滴滴出行app還能用 瀏覽:568