導航:首頁 > 編程語言 > java面試題選擇題

java面試題選擇題

發布時間:2024-04-12 14:34:56

Ⅰ 有幾個java網路編程基礎的選擇題 哪位大神給下答案

、Applet為一種特殊的Panel,它可作為Java Applet程序的最外層容器。 ( )
2、Java的源碼中定義多少個類,編譯後結果就生成多少個以.class為後綴的位元組碼文 ( )
3、Java程序中,使用關鍵字new創建新的類對象,使用關鍵字free回收無用的類對象。 ( )
4、Java有垃圾回收機制,可在指定的時間使用內存回收程序釋放內存對象。 ( )
5、構造函數用於創建類的實例對象,返回類型為void,構造函數名應與類名相同。 ( )
6、在異常處理中,假設try中的代碼可能產生多種異常則可以對應多個catch語句,若catch中的參數類型有父子關系,此時應該將子類放在前面,父類放在後面。 ( )
7、含有abstract方法的類是抽象類,而抽象類中可以沒有abstract方法。 ( )
8、Java的屏幕坐標以像素為單位,容器的左下角被確定為坐標的起點。 ( )
9、靜態初始化器是在其所屬的類載入內存時由系統自動調用執行。 ( )
10、在Java中可使用賦值號( )對對象賦值,相當於生成了一個各屬性與賦值對象相同的新對象。 ( )
11、MVC是Model-View-Controller的簡寫。"View" 是應用的表示面(由JSP頁面產生)。( )
12、MVC是Model-View-Controller的簡寫。"Controller" 是提供應用的處理過程式控制制(一般是一個Servlet),通過這種設計模型控制應用邏輯。( )
13、Tomcat是支持JSP引擎的一種伺服器軟體,可以通過server.xml文件修改伺服器的配置信息。( )
14、通過Request.getParameterValues()可以獲得某個參數的多個值( )
15、運行JSP需要有JSP引擎,Tomcat是支持JSP的Web伺服器的一種。( )
16、Jsp使用的是Java腳本代碼,可跨平台運行,運行開銷小,具有速度快,可擴展性好及支持分布式處理等特點。 ( )
17、在定義了Bean的屬性後,可不創建屬性方法。( )
18、if語句是Java的條件分支語句,它控製程序以兩條路徑執行。( )
19、包是類的容器,用於保證類名空間的一致性。( )
20、JSP中不能使用HTML中的「<!-- -->」注釋方式,只能使用JSP的「<!-- -->」的注釋方式。
答案:僅供參考
T T F T T T T F T F T T T F F F T T T F

21.Java application中的主類必須包含方法main,以下哪項是main方法的正確參數?( )
A、 String args B、String ar[] C、Char arg D、StringBuffer args[]

22.以下對繼承的正確描述是( )。
A、在Java中類只允許單一繼承
B、在Java中一個類只能實現一個介面
C、在Java中一個類不能同時繼承一個類和實現一個介面
D、在Java中介面只允許單一繼承

23.paint()方法中的參數可使用哪種類型? ( )
A、Graphics B、Graphics2D C、String D、Color

24.以下不屬於Java基本數據類型的是( )
A、int B、Boolean C、float D、char

25.以下哪項可能包含菜單條( )。
A、Panel B、Frame C、Applet D、Dialog

26.應使用哪種修飾符定義一個類域或類方法?( )
A、static B、package C、private D、public

27.在瀏覽器中執行applet 程序,以下選項中的哪個方法將被最先執行( )。
A、init() B、start() C、destroy() D、stop()

28.參考以下代碼,關於該程序以下哪個說法是正確的?( )
public class Person{
static int arr[] = new int[3];
public static void main(String a[])
{
System.out.println(arr[0]);}
}
A、編譯時將產生錯誤 B、編譯時正確,運行時將產生錯誤
C、輸出零 D、輸出空

29.下列語句中,哪些關於Java內存回收的說明是正確的? ( )
A、程序員必須創建一個線程來釋放內存
B、內存回收程序負責釋放無用內存
C、內存回收程序允許程序員直接釋放內存
D、內存回收程序可以在指定的時間釋放內存對象

30.以下關鍵字中,可以用來對對象加互斥鎖的是?( )
A、transient B、synchronized C、 serialize D、static

31.以下代碼段執行後的輸出結果為( )
int x=-3; int y=-10;
System.out.println(y%x);
A、 -1 B、2 C、1 D、3

32.有以下程序片段,下列哪個選項不能插入到行1。( )
1.
2.public class Interesting{
3.//do sth
4. }
A、import java.awt.*; B、package mypackage;
C、class OtherClass{ } D、public class MyClass{ }

33.假設有如下兩個賦值語句:
a = Integer.parseInt(「5」);
b = Integer.valueOf(「5」).intValue();
下述說法正確的是( )。
A、a是整數類型變數,b是整數類對象。 B、a是整數類對象,b是整數類型變數。
C、a和b都是整數類對象並且值相等。 D、a和b都是整數類型變數並且值相等。

Ⅱ 求:JAVA程序員面試題

哎 我應聘了N家公司 給你一些題好了
華為的
第一部分:選擇題
QUESTION NO: 1
1、public class Test {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
Please write the output result :
QUESTION NO:2
1. public class Test {
2. static boolean foo(char c) {
3. System.out.print(c);
4. return true;
5. }
6. public static void main( String[] argv ) {
7. int i =0;
8. for ( foo('A'); foo('B')&&(i<2); foo('C')){
9. i++ ;
10. foo('D');
12. }
13. }
14. }
What is the result?
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }
QUESTION NO: 4
1. public class Outer{
2. public void someOuterMethod() {
3. // Line 3
4. }
5. public class Inner{}
6. public static void main( String[]argv ) {
7. Outer o = new Outer();
8. // Line 8
9. }
10. }
Which instantiates an instance of Inner?
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()
QUESTION NO: 5
Which method is used by a servlet to place its session ID in a URL that is written to the servlet』s response output stream?
A. The encodeURL method of the HttpServletRequest interface.
B. The encodeURL method of the HttpServletResponse interface.
C. The rewriteURL method of the HttpServletRequest interface.
D. The rewriteURL method of the HttpServletResponse interface.
QUESTION NO: 6
Which two are equivalent? (Choose two)
A. <%= YoshiBean.size%>
B. <%= YoshiBean.getSize()%>
C. <%= YoshiBean.getProperty("size")%>
D.
E.
F.
G.
QUESTION NO: 7
Which of the following statements regarding the lifecycle of a session bean are correct?
1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.
2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.
3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.
4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.
5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.
第二部分:概念題
1. 描述Struts體系結構?對應各個部分的開發工作主要包括哪些?
3. JSP有哪些內置對象和動作?它們的作用分別是什麼?
4、SQL問答題
SELECT * FROM TABLE

SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
的檢索結果為何不同?
5、SQL問答題
表結構:
1、 表名:g_cardapply
欄位(欄位名/類型/長度):
g_applyno varchar 8;//申請單號(關鍵字)
g_applydate bigint 8;//申請日期
g_state varchar 2;//申請狀態
2、 表名:g_cardapplydetail
欄位(欄位名/類型/長度):
g_applyno varchar 8;//申請單號(關鍵字)
g_name varchar 30;//申請人姓名
g_idcard varchar 18;//申請人身份證號
g_state varchar 2;//申請狀態
其中,兩個表的關聯欄位為申請單號。
題目:
1、 查詢身份證號碼為440401430103082的申請日期
2、 查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數
3、 將身份證號碼為440401430103082的記錄在兩個表中的申請狀態均改為07
4、 刪除g_cardapplydetail表中所有姓李的記錄
");

Ⅲ java基礎面試題有哪些

下面是10道java基礎面試題,後附答案

1.什麼是 Java 虛擬機?為什麼 Java 被稱作是「平台無關的編程語言」?

Java 虛擬機是一個可以執行 Java 位元組碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執行的位元組碼文件。

Java 被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java 虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。

2.「static」關鍵字是什麼意思?Java 中是否可以覆蓋(override)一個 private 或者是static 的方法?

「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。

Java 中 static 方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而 static 方法是編譯時靜態綁定的。static 方法跟類的任何實例都不相關,所以概念上不適用。

3.JDK 和 JRE 的區別是什麼?

Java 運行時環境(JRE)是將要執行 Java 程序的 Java 虛擬機。它同時也包含了執行 applet 需要的瀏覽器插件。Java 開發工具包 (JDK)是完整的 Java 軟體開發包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調試器),可以讓開發者開發、編譯、執行 Java 應用程序。

4.是否可以在 static 環境中訪問非 static 變數?

static 變數在 Java 中是屬於類的,它在所有的實例中的值是一樣的。當類被 Java 虛擬機載入的時候,會對 static 變數進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。

5.Java 支持的數據類型有哪些?什麼是自動拆裝箱?

Java 語言支持的 8 中基本數據類型是:

byte

short

int

long

float

double

boolean

char

自動裝箱是 Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。反之就是自動拆箱。

6.Java 支持多繼承么?

不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個介面。

7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是復制構造函數?

當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java 編譯器會為這個類創建一個默認的構造函數。

Java 中構造函數重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數必須有它自己唯一的參數列表。

Java 不支持像 C++中那樣的復制構造函數,這個不同點是因為如果你不自己寫構造函數的情況下,Java 不會創建默認的復制構造函數。

8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什麼意思?

Java 中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。

9.介面和抽象類的區別是什麼?

Java 提供和支持創建抽象類和介面。它們的實現有共同點,不同點在於:

介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。

類可以實現很多個介面,但是只能繼承一個抽象類

類如果要實現一個介面,它必須要實現介面聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。

抽象類可以在不提供介面方法實現的情況下實現介面。

Java 介面中聲明的變數默認都是 final 的。抽象類可以包含非 final 的變數。

Java 介面中的成員函數默認是 public 的。抽象類的成員函數可以是 private, protected 或者是 public。

介面是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調用的。

10.什麼是值傳遞和引用傳遞?

對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。

對象被引用傳遞,意味著傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。

最後祝你面試順利!

Ⅳ Java面試中都會遇到哪些問題

JAVA面試精選題

各位準程序猿們,能不能找到一份好工作,就看你知不知道這,66道最基本的JAVA面試題,請耐心看完,說不定這10分鍾,會影響你一輩子

面試題NO.01-NO.05

問題:如果main方法被聲明為private會怎樣?

答案:能正常編譯,但運行的時候會提示」main方法不是public的」。

問題:Java里的傳引用和傳值的區別是什麼?

答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。

問題:如果要重寫一個對象的equals方法,還要考慮什麼?

答案:hashCode。

問題:Java的」一次編寫,處處運行」是如何實現的?

答案:Java程序會被編譯成位元組碼組成的class文件,這些位元組碼可以運行在任何平台,因此Java是平台獨立的。

問題:說明一下public static void main(String args[])這段聲明裡每個關鍵字的作用

答案:public: main方法是Java程序運行時調用的第一個方法,因此它必須對Java環境可見。所以可見性設置為pulic.

static: Java平台調用這個方法時不會創建這個類的一個實例,因此這個方法必須聲明為static。

void: main方法沒有返回值。

String是命令行傳進參數的類型,args是指命令行傳進的字元串數組。

面試題NO.06-NO.10

問題:==與equals的區別

答案:==比較兩個對象在內存里是不是同一個對象,就是說在內存里的存儲位置一致。兩個String對象存儲的值是一樣的,但有可能在內存里存儲在不同的地方 .

==比較的是引用而equals方法比較的是內容。public boolean equals(Object obj) 這個方法是由Object對象提供的,可以由子類進行重寫。默認的實現只有當對象和自身進行比較時才會返回true,這個時候和==是等價的。String, BitSet, Date, 和File都對equals方法進行了重寫,對兩個String對象 而言,值相等意味著它們包含同樣的字元序列。對於基本類型的包裝類來說,值相等意味著對應的基本類型的值一樣。


問題:如果去掉了main方法的static修飾符會怎樣?

答案:程序能正常編譯。運行時會拋NoSuchMethodError異常。

問題:為什麼oracle type4驅動被稱作瘦驅動?

答案:oracle提供了一個type 4 JDBC驅動,被稱為瘦驅動。這個驅動包含了一個oracle自己完全用Java實現的一個TCP/IP的Net8的實現,因此它是平台獨立的,可以在運行時由瀏覽器下載,不依賴任何客戶端 的oracle實現。客戶端連接字元串用的是TCP/IP的地址埠,而不是資料庫名的tnsname。

問題:介紹一下finalize方法

答案: final: 常量聲明。 finally: 處理異常。 finalize: 幫助進行垃圾回收。

介面里聲明的變數默認是final的。final類無法繼承,也就是沒有子類。這么做是出於基礎類型的安全考慮,比如String和Integer。這樣也使得編譯器進行一些優化,更容易保證線程的安全性。final方法無法重寫。final變數的值不能改變。finalize()方法在一個對象被銷毀和回收前會被調用。finally,通常用於異常處理,不管有沒有異常被拋出都會執行到。比如,關閉連接通常放到finally塊中完成。

問題:什麼是Java API?

答案:Java API是大量軟體組件的集合,它們提供了大量有用的功能,比如GUI組件。

面試題NO.11-NO.15

問題:GregorianCalendar類是什麼東西?

答案:GregorianCalendar提供了西方傳統日歷的支持。

問題:ResourceBundle類是什麼?

答案:ResourceBundle用來存儲指定語言環境的資源,應用程序可以根據運行時的語言環境來載入這些資源,從而提供不同語言的展示。

問題:為什麼Java里沒有全局變數?

答案:全局變數是全局可見的,Java不支持全局可見的變數,因為:全局變數破壞了引用透明性原則。全局變數導致了命名空間的沖突。

問題:如何將String類型轉化成Number類型?

答案:Integer類的valueOf方法可以將String轉成Number。下面是代碼示例:


問題:SimpleTimeZone類是什麼?

答案:SimpleTimeZone提供公歷日期支持。


面試題NO.16-NO.20

問題:while循環和do循環有什麼不同?

答案:while結構在循環的開始判斷下一個迭代是否應該繼續。do/while結構在循環的結尾來判斷是否將繼續下一輪迭代。do結構至少會執行一次循環體。

問題:Locale類是什麼?

答案:Locale類用來根據語言環境來動態調整程序的輸出。

問題:面向對象編程的原則是什麼?

答案:主要有三點,多態,繼承和封裝。

問題:介紹下繼承的原則

答案:繼承使得一個對象可以獲取另一個對象的屬性。使用繼承可以讓已經測試完備的功能得以復用,並且可以一次修改,所有繼承的地方都同時生效。

問題:什麼是隱式的類型轉化?

答案:隱式的類型轉化就是簡單的一個類型賦值給另一個類型,沒有顯式的告訴編譯器發生了轉化。並不是所有的類型都支持隱式的類型轉化。

代碼示例:


面試題NO.21-NO.25

問題:sizeof是Java的關鍵字嗎?

答案:不是。

問題:native方法是什麼?

答案:native方法是非Java代碼實現的方法。

問題:在System.out.println()裡面,System, out, println分別是什麼?

答案:System是系統提供的預定義的final類,out是一個PrintStream對象,println是out對象裡面一個重載的方法。

問題:封裝,繼承和多態是什麼?

答案:簡單來說,多態是指一個名字多種實現。多態使得一個實體通過一個通用的方式來實現不同的操作。具體的操作是由實際的實現來決定的。

多態在Java里有三種表現方式:方法重載通過繼承實現方法重寫通過Java介面進行方法重寫。

問題:顯式的類型轉化是什麼?

答案:顯式的類型轉化是明確告訴了編譯器來進行對象的轉化。

代碼示例:


面試題NO.26-NO.30

問題:什麼是Java虛擬機?

答案:Java虛擬機是能移植到不同硬體平台上的軟體系統。

問題:類型向下轉換是什麼?

答案:向下轉換是指由一個通用類型轉換成一個具體的類型,在繼承結構上向下進行。

問題:Java的訪問修飾符是什麼?

答案:訪問許可權修飾符是表明類成員的訪問許可權類型的關鍵字。使用這些關鍵字來限定程序的方法或者變數的訪問許可權。它們包含:

public: 所有類都可以訪問 protected: 同一個包內以及所有子類都可以訪問 private: 只有歸屬的類才能訪問默認: 歸屬類及相同包下的子類可以訪問。

問題:所有類的父類是什麼?

答案:Object.

問題:Java的基本類型有哪些?

答案:byte,char, short, int, long, float, double, boolean。

面試題NO.31-NO.40

問題:靜態類型有什麼特點?

答案:靜態變數是和類綁定到一起的,而不是類的實例對象。每一個實例對象都共享同樣一份靜態變數。也就是說,一個類的靜態變數只有一份,不管它有多少個對象。類變數或者說靜態變數是通過static這個關鍵字來聲明的。類變數通常被用作常量。靜態變數通常通過類名字來進行訪問。當程序運行的時候這個變數就會創建直到程序結束後才會被銷毀。類變數的作用域和實例變數是一樣的。它的初始值和成員變數也是一樣的,當變數沒被初始化的時候根據它的數據類型,會有一個默認值。類似的,靜態方法是屬於類的方法,而不是類對象,它的調用並不作用於類對象,也不需要創建任何的類實例。靜態方法本身就是final的,因為重寫只會發生在類實例上,靜態方法是和類綁定在一起的,不是對象。父類的靜態方法會被子類的靜態方法屏蔽,只要原來方法沒有聲明為final。非靜態方法不能重寫靜態方法,也就是說,你不能在子類中把一個靜態方法改成實例方法。

非靜態變數在每一個對象實例上都有單獨的一份值。

問題:&操作符和&&操作符有什麼區別?

答案:當一個&表達式在求值的時候,兩個操作數都會被求值,&&更像是一個操作符的快捷方式。當一個&&表達式求值的時候,先計算第一個操作數,如果它返回true才會計算第二個操作數。如果第一個操作數取值為fale,第二個操作數就不會被求值。

問題:Java是如何處理整型的溢出和下溢的?

答案:Java根據類型的大小,將計算結果中的對應低階位元組存儲到對應的值裡面。

問題:public static void寫成static public void會怎樣?

答案:程序正常編譯及運行。

問題,聲明變數和定義變數有什麼不同?

答案:聲明變數我們只提供變數的類型和名字,並沒有進行初始化。定義包括聲明和初始化兩個階段String s;只是變數聲明,String s = new String(「bob」); 或者String s = 「bob」;是變數定義。

面試題NO.41-NO.45

問題:Java支持哪種參數傳遞類型?

答案:Java參數都是進行傳值。對於對象而言,傳遞的值是對象的引用,也就是說原始引用和參數引用的那個拷貝,都是指向同一個對象。

問題:對象封裝的原則是什麼?

答案:封裝是將數據及操作數據的代碼綁定到一個獨立的單元。這樣保障了數據的安全,防止外部代碼的錯誤使用。對象允許程序和數據進行封裝,以減少潛在的干涉。對封裝的另一個理解是作為數據及代碼的保護層,防止保護層外代碼的隨意訪問。

問題:你怎麼理解變數?

答案:變數是一塊命名的內存區域,以便程序進行訪問。變數用來存儲數據,隨著程序的執行,存儲的數據也可能跟著改變。

問題:數值提升是什麼?

答案:數值提升是指數據從一個較小的數據類型轉換成為一個更大的數據類型,以便進行整型或者浮點型運算。在數值提升的過程中,byte,char,short值會被轉化成int類型。需要的時候int類型也可能被提升成long。long和float則有可能會被轉換成double類型。

問題:Java的類型轉化是什麼?

答案:從一個數據類型轉換成另一個數據類型叫做類型轉換。Java有兩種類型轉換的方式,一個是顯式的類型轉換,一個是隱式的。

面試題NO.46-NO.50

問題:main方法的參數裡面,字元串數組的第一個參數是什麼?

答案:數組是空的,沒有任何元素。不像C或者C++,第一個元素默認是程序名。如果命令行沒有提供任何參數的話,main方法中的String數組為空,但不是null。

問題:怎麼判斷數組是null還是為空?

答案:輸出array.length的值,如果是0,說明數組為空。如果是null的話,會拋出空指針異常。

問題:程序中可以允許多個類同時擁有都有main方法嗎?

答案:可以。當程序運行的時候,我們會指定運行的類名。JVM只會在你指定的類中查找main方法。因此多個類擁有main方法並不存在命名沖突的問題。

問題:靜態變數在什麼時候載入?編譯期還是運行期?靜態代碼塊載入的時機呢?

答案:當類載入器將類載入到JVM中的時候就會創建靜態變數,這跟對象是否創建無關。靜態變數載入的時候就會分配內存空間。靜態代碼塊的代碼只會在類第一次初始化的時候執行一次。一個類可以有多個靜態代碼塊,它並不是類的成員,也沒有返回值,並且不能直接調用。靜態代碼塊不能包含this或者super,它們通常被用初始化靜態變數。

問題:一個類能擁有多個main方法嗎?

答案:可以,但只能有一個main方法擁有以下簽名:


否則程序將無法通過編譯。編譯器會警告你main方法已經存在。

面試題NO.51-NO.60

問題:簡單的介紹下JVM是如何工作的?

答案:JVM是一台抽象的計算機,就像真實的計算機那樣,它們會先將.java文件編譯成.class文件(.class文件就是位元組碼文件),然後用它的解釋器來載入位元組碼。

問題:如果原地交換兩個變數的值?

答案:先把兩個值相加賦值給第一個變數,然後用得到的結果減去第二個變數,賦值給第二個變數。再用第一個變數減去第二個變數,同時賦值給第一個變數。代碼如下:


使用異或操作也可以交換。第一個方法還可能會引起溢出。異或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;


問題:什麼是數據的封裝?

答案:數據封裝的一種方式是在類中創建set和get方法來訪問對象的數據變數。一般來說變數是private的,而get和set方法是public的。封裝還可以用來在存儲數據時進行數據驗證,或者對數據進行計算,或者用作自省(比如在struts中使用javabean)。把數據和功能封裝到一個獨立的結構中稱為數據封裝。封裝其實就是把數據和關聯的操作方法封裝到一個獨立的單元中,這樣使用關聯的這些方法才能對數據進行訪問操作。封裝提供的是數據安全性,它其實就是一種隱藏數據的方式。

問題:什麼是反射API?它是如何實現的?

答案:反射是指在運行時能查看一個類的狀態及特徵,並能進行動態管理的功能。這些功能是通過一些內建類的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以獲取到類名。

問題:JVM自身會維護緩存嗎,是不是在堆中進行對象分配,操作系統的堆還是JVM自己管理的堆?為什麼?

答案:是的,JVM自身會管理緩存,它在堆中創建對象,然後在棧中引用這些對象。

面試題NO.61-NO.66

問題:虛擬內存是什麼?

答案:虛擬內存又叫延伸內存,實際上並不存在真實的物理內存。

問題:方法可以同時即是static又是synchronized的嗎?

答案:可以。如果這樣做的話,JVM會獲取和這個對象關聯的java.lang.Class實例上的鎖。這樣做等於:


問題:String和StringTokenizer的區別是什麼?

答案:StringTokenizer是一個用來分割字元串的工具類。


問題:transient變數有什麼特點?

答案:transient變數不會進行序列化。例如一個實現Serializable介面的類在序列化到ObjectStream的時候,transient類型的變數不會被寫入流中,同時,反序列化回來的時候,對應變數的值為null。

問題:哪些容器使用Border布局作為它們的默認布局?

答案:Window, Frame, Dialog。

問題:怎麼理解什麼是同步?

答案:同步用來控制共享資源在多個線程間的訪問,以保證同一時間內只有一個線程能訪問到這個資源。在非同步保護的多線程程序裡面,一個線程正在修改一個共享變數的時候,可能有另一個線程也在使用或者更新它的值。同步避免了臟數據的產生。

以上回答轉載自求職類公眾號圈裡求職,裡面還有更多求職面試經,程序猿也要學起來~

Ⅳ 誰有JAVA程序員面試的程序題啊

一、 選擇題:(每題1分,共30分)
1. Which statement about the garbage collection mechanism are true? (B)
A.Garbage collection require additional program code in cases where multiple threads are running.
B.The programmer can indicate that a reference through a local variable is no longer of interest.
C.The programmer has a mechanism that explicit and immediately frees the memory used by Java objects.
D.The garbage collection mechanism can free the memory used by Java Object at expectable time.
E.The garbage collection system never reclaims memory from objects while are still accessible to running user threads.
2. Give the following method: D
1)public void method( ){
2) String a,b;
3) a=new String(「hello world」);
4) b=new String(「game over」);
5) System.out.println(a+b+」ok」);
6) a=null;
7) a=b;
8)System.out.println(a);
9) }
In the absence of compiler optimization, which is the earliest point the object a referred is definitely hand to be garbage collection. ()
A. before line 3 B.before line 5 C. before line 6 D.before line 7 E. Before line 9
3. Give the following code:
public class Example{
public static void main(String args[] ){
int l=0;
do{
System.out.println(「Doing it for l is:」+l);
}while(l>0)
System.out.println(「Finish」);
}
}
Which well be output: D
A. Doing it for l is 3 B. Doing it for l is 1C Doing it for l is 2
D. Doing it for l is 0 E. Doing it for l is –1F. Finish
4. 以下(C)是JAVA的保留字。(選擇一項)
A.Java B.Hello C.class D.Class
5. 下面程序運行之後,變數x的值是(B). (選擇一項)
......
//swap方法的聲明
public static void swap(int a,int b){
int t=a;
a=b;
b=t;
}
//main方法
public static void main(String args[]){
int x=2;
int y=3;
swap(x,y);
}
A、2 B、3 C、4 D、6
6. 下面變數var的作用域范圍是(D)。(選擇一項)
1. //....
2. int x;
3. switch(x){
4. case 0:
5. {
6. int var;
7. //process
8. }
9. break;
10. case 1:
11. {
12. int var1;
13. //process
14. }
15. break;
16. }
A、1和16行之間 B、4和8行之間 C、6和8行之間 D、6和14行之間
7. 以下的類(介面)定義中正確的是(A)。(選擇一項)
A.
public class a {
private int x;
public getX(){
return x;
}
}
B.
public abstract class a {
private int x;
public abstract int getX();
public int aMethod(){
return 0;
}
}
C.
public class a {
private int x;
public abstract int getX();
}
D.
public interface interfaceA{
private int x;
public int getX(){
return x;
}
}
8. 已知A類被打包在packageA , B類被打包在packageB ,且B類被聲明為public ,且有一個成員變數x被聲明為protected控制方式 。C類也位於packageA包,且繼承了B類 。則以下說話正確的是(C)(選擇一項)
A. A類的實例不能訪問到B類的實例
B. A類的實例能夠訪問到B類一個實例的x成員
C. C類的實例可以訪問到B類一個實例的x成員
D. C類的實例不能訪問到B類的實例
9. 編譯並運行下面的Java代碼段:
char c='a';
switch (c) {
case 'a':
System.out.println("a");
default:
System.out.println("default");
}

輸出結果是(B)。(選擇一項)
A.代碼無法編譯,因為switch語句沒有一個合法的表達式
B.a Default
C.a
D.default
10. 在Java中,關於final關鍵字的說法正確的是(AC)。(選擇兩項)
A.如果修飾變數,則一旦賦了值,就等同一個常量
B.如果修飾類,則該類只能被一個子類繼承
C.如果修飾方法,則該方法不能在子類中被覆蓋
D.如果修飾方法,則該方法所在的類不能被繼承
11. 在Java中,要想使只有定義該類所在的包內的類可以訪問該類,應該用(A)關鍵字。(選擇一項)
A.不需要任何關鍵字
B.private
C.final
D.protected
12. 在Java中,下面關於包的陳述中正確的是(AD)。(選擇兩項)
A.包的聲明必須是源文件的第一句代碼
B.包的聲明必須緊跟在import語句的後面
C.只有公共類才能放在包中
D.可以將多個源文件中的類放在同一個包中
13. public static void main方法的參數描述是:AB(請選擇2個正確答案)
A.String args[]
B.String[] args
C.Strings args[]z
D.String args
14. 編譯並運行下面的Java程序:B
class A{
int var1=1;
int var2;
public static void main(String[] args){
int var3=3;
A a=new A();
System.out.println(a.var1+a.var2+var3);
}
}
將產生()結果。(選擇一項)
A.0
B.4
C.3
D.代碼無法編譯,因為var2根本沒有被初始化
15. 編譯,運行下列代碼後的結果是:D(選擇一項)
public class Test {
public static void main (String args []) {
int age;
age = age + 1;
System.out.println("The age is " + age);
}
}
A.編譯,運行後沒有輸出
B.編譯,運行後輸出:The age is 1
C.能通過編譯,但運行時產生錯誤
D.不能通過編譯
16. 下列哪些表達式返回true:AB(請選擇2個正確答案 )
A."john" == "john"
B."john".equals("john")
C."john" = "john"
D."john".equals(new Button("john"))
17. Give the code fragment:B
1)switch(x){
2) case 1: System.out.println(「Test 1」);break;
3) case 2:
4) case 3: System.out.println(「Test 2」);break;
5) default: System.out.println(「end」);
6) }
which value of x would cause 「Test 2」 to the output:
A. 1B. 2C. 3D. default
18. Given the following class definition: A
class A{
protected int i;
A(int i){
this.i=i;
}
}
which of the following would be a valid inner class for this class?
Select all valid answers:
A. class B{
}
B.class B extends A{
}
C.class B extends A{
B(){System.out.println(「i=」+i);}
}
D.class B{
class A{}
}
E.class A{}
19. The following code is entire contents of a file called Example.java,causes precisely one error ring compilation: D
1) class SubClass extends BaseClass{
2) }
3) class BaseClass(){
4) String str;
5) public BaseClass(){
6) System.out.println(「ok」);}
7) public BaseClass(String s){
str=s;}
9) }
10) public class Example{
11) public void method(){
12) SubClass s=new SubClass(「hello」);
13) BaseClass b=new BaseClass(「world」);
14) }
15) }

Which line would be cause the error?
A. 9 B. 10 C. 11 D.12
20. Float s=new Float(0.9F);
Float t=new Float(0.9F);
Double u=new Double(0.9);
Which expression』s result is true? B
A. s= =t B. s.equals(t) C. s= =u D. t.equals(u)
21. What happens when you try to compile and run the following program? A
class Mystery{
String s;
public static void main(String[] args){
Mystery m=new Mystery();
m.go();
}
void Mystery(){
s=」constructor」;
}
void go(){
System.out.println(s);
}
}
A.this code will not compile
B.this code compile but throws an exception at runtime
C.this code runs but nothing appears in the standard output
D.this code runs and 「constructor」 in the standard output
E.this code runs and writes 」null」 in the standard output
22. Give the following class: B
public class Example{
String str=new String(「good」);
char ch[]={『a』,』b』,』c』};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+」and」+ex.ch[0] +ex.ch[1] +ex.ch[2]);
}
public void change(String str,char ch[]){
str=」test ok」;ch[0]=』g』;
}
}
Which is the output:
A. good and abc B. good and gbc C. test ok and abc D. test ok and gbc
23. Which correctly create a two dimensional array of integers? CD
A.int a[][] = new int[][];
B.int a[10][10] = new int[][];
C.int a[][] = new int[10][10];
D.int [][]a = new int[10][10];
E.int []a[] = new int[10][10];
24. Examine the following code which includes an inner class: B
public final class Test4 implements A{
class Inner{
void test(){
if (Test4.this.flag);{
sample();
}
}
private boolean flag=false;
}
public void sample(){
System.out.println(「Sample」);
}
public Test4(){
(new Inner()).test();
}
public static void main(String args[]){
new Test4();
}
}
What is the result:
A.Print out 「Sample」
B.Program proces no output but terminates correctly.
C. Program does not terminate.
E.The program will not compile
25. Which statement is true about an inner class? D
A.It must be anonymous
B.It can not implement an interface
C.It is only accessible in the enclosing class
D.It can access any final variables in any enclosing scope
26. public class Test{ A
public int aMethod(){
static int i=0;
i++;
return i;
}
public static void main(String args[]){
Test test = new Test();
test.aMethod();
int j=test.aMethod();
System.out.println(j);
}
}

What is the result?
A.Compilation will fail
B.Compilation will succeed and the program will print」0」.
C.Compilation will succeed and the program will print」1」.
D.Compilation will succeed and the program will print」2」
27. class Super{ D
public int i=0;

public Super(String text){
i=1;}
}

public class Sub extends Super{
public Sub(String text){
i=2;
}
public static void main(String ag[]){
Sub sub=new Sub(「Hello」);
System.out.println(sub.i);
}
}

What is the result?
A.Compilation will fail
B.Compilation will succeed and the program will print」0」.
C.Compilation will succeed and the program will print」1」
D.Compilation will succeed and the program will print」2」
28. Given A
Package foo;

public class Outer{
public static class Inner{
}
}
Which statement is true?
A.An instance of the Inner class can be constructed with 「new Outer.Inner():
B.An instance of the Inner class cannot be constructed outside of package foo;
C.An instance of the Inner class can only be constructed from within the Outer class.
D.From within the package bar, an instance of the Inner class can be constructed with 「new Inner()」
29. What is the result? E
public class Test{
static String s=」Hello」;
public static void main(String args[]){
Test t=new Test();
t.methodA(s);
System.out.println(s);
}
void methodA(String s){
s+=」World」;
}
}
A.print 「Hello」
B.print 「World」
C.print 「Hello World」
D.It does not compile
30. what is the result? C
public class Test{
public static void main(String args[]){
String s=new String(」true」);
Boolean b=new Boolean(true);
If(s.equals(b))
{ System.out.println(「hello」);}
}
}
A.print 「hello」
B.compile error at line 6
C.compile succeed but print nothing
D.compile succeed but throw exception at runtime

1、 B
2、 D
3、 D
4、 C
5、 B
6、 D
7、 A
8、 C
9、 B
10、 AC
11、 A
12、 AD
13、 AB
14、 B
15、 D
16、 AB
17、 B
18、 A
19、 D
20、 B
21、 A
22、 B
23、 CD
24、 B
25、 D
26、 A
27、 D
28、 A
29、 E
30、 C

補充一下:真正的面試時的筆試題,很少是選擇題的,大多都是些問答題或者直接讓你寫程序的。如有你需要正規大公司的面試題,我這有一些word文檔,可以給你發郵件。

Ⅵ Java常見的面試問題(帶答案),自己答出來多少

1、在java中如果聲明一個類為final,表示什麼意思?
答:final是最終的意思,final可用於定義變數、方法和類但含義不同,聲明為final的類不能被繼承。
父類的構造方法是否可以被子類覆蓋(重寫)?
答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。
2、請講述String 和StringBuffer的區別。
答:String 類所定義的對象是用於存放」長度固定」的字元串。
StringBuffer類所定義的對象是用於存放」長度可變動」的字元串。
3、如果有兩個類A、B(注意不是介面),你想同時使用這兩個類的功能,那麼你會如何編寫這個C類呢?
答:因為類A、B不是介面,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那麼C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。
4、談談你對抽象類和介面的理解。
答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。
介面:一個介面允許一個類從幾個介面繼承而來,Java 程序一次只能繼承一個類但可以實現幾個介面,介面不能有任何具體的方法,介面也可用來定義可由類使用的一組常量。其實現方式是interface來實現。
5、Java中什麼是競態條件?
答:競態條件會導致程序在並發情況下出現一些bugs。多線程對一些資源的競爭的時候就會產生競態條件,如果首先要執行的程序競爭失敗排到後面執行了,那麼整個程序就會出現一些不確定的bugs。這種bugs很難發現而且會重復出現,因為線程間的隨機競爭。
6、Java中如何停止一個線程?
答:Java提供了很豐富的API但沒有為停止線程提供API。JDK 1.0本來有一些像stop(), suspend() 和 resume()的控制方法但是由於潛在的死鎖威脅因此在後續的JDK版本中他們被棄用了,之後Java API的設計者就沒有提供一個兼容且線程安全的方法來停止一個線程。當run() 或者 call() 方法執行完的時候線程會自動結束,如果要手動結束一個線程,你可以用volatile 布爾變數來退出run()方法的循環或者是取消任務來中斷線程。點擊這里查看示例代碼。
7、 一個線程運行時發生異常會怎樣?
答: 簡單的說,如果異常沒有被捕獲該線程將會停止執行。Thread.UncaughtExceptionHandler是用於處理未捕獲異常造成線程突然中斷情況的一個內嵌介面。當一個未捕獲異常將造成線程中斷的時候JVM會使用Thread.getUncaughtExceptionHandler()來查詢線程的UncaughtExceptionHandler並將線程和異常作為參數傳遞給handler的uncaughtException()方法進行處理。

閱讀全文

與java面試題選擇題相關的資料

熱點內容
delphi入門pdf 瀏覽:417
島國片app 瀏覽:955
電影院維語版。 瀏覽:298
php訂單代碼 瀏覽:35
區域卷積神經網路Python 瀏覽:298
重生井岡山參加紅軍的小說 瀏覽:589
linux文件系統編程 瀏覽:876
懷孕神片 瀏覽:815
8排影院哪個位置好 瀏覽:906
程序員對鏈底端的影響 瀏覽:470
html5socketphp 瀏覽:86
excel怎樣編程 瀏覽:977
php正則不匹配 瀏覽:138
垃圾桶怎麼連接伺服器 瀏覽:665
21號染色體值演算法公式 瀏覽:248
傳入傳出的linux命令 瀏覽:535
罌粟電影劇情 瀏覽:840
龍口設計圖紙加密聯系方式 瀏覽:141
怎麼看加密狗是否到期 瀏覽:239
楚雄用什麼app做公交劃算 瀏覽:751