當前位置:首頁 » 編程語言 » java常見筆試題

java常見筆試題

發布時間: 2023-08-20 12:15:04

java 筆試題目

1,s1=s1+1,左邊是short型,右邊是int型,需強制轉換,而第二個可以
2,jsp是由servlet發展過來的,jsp顯示頁面的,servlet是控制頁面的
3,通過所謂的數據高速緩存來實現對數據的高速運算與操作的
4,delete from table 是dml,truncate table 是ddl,兩者都是刪除表的,前者可以帶條件刪除某一個屬性,而後者則是刪除整個表結構的
5,function ShowFile(filepath)
{
var str="c:\files\abc.pdf",
ActiveXObject ax = new ActiveXObject("Scripting.FileSystemObject");
ax= fso.GetFileName(str);
return(ax);
}
6,obj
7,1)increment:
用途: 適用於int, short, long類型的主鍵, 每次主鍵自增1
缺點: 並發操作資料庫時, 多個實例各自維護自己的主鍵狀態, 會發生沖突

2)identity:
用途: 適用於內部支持標識欄位的資料庫(db2, mysql, sybase, mssql)

3)sequence:
用途: 適用於內部支持序列的資料庫(db2, oracle, postgre)
用法: 必須在資料庫中先創建一個序列, 並且在hibernate配置文件中對param進行配置
4)native:
用途: 根據使用的資料庫自行判斷使用identity, sequence, hi/lo

9,null,null,10,數組只有length而string才是length()
10,不可以,string不可變,stringbuffer可變
11,不是,byte,short,int,long,char,float,double,boolean
12,MVC是一種編程的思想,也是一種框架模式。
M (Model) 是指數據層(持久層),V (View) 是指表現層,C (Controller) 是指控制層.
MVC模式是由這三層構成。而且這三層是相互獨立。
控制層是連接數據層與表現層的橋梁。它是用來處理用戶應用邏輯的。
同時,也利用控制層將View層與Model層分離。
View層是不能調用Model層中的任何代碼。
13,模式的本質
在任何時間內只有一個類實例存在的模式
需要有一個從中進行全局訪問和維護某種類型數據的區域的環境下使用單例模式
解決方案就是保證一個類只有一個類實例存在
本質就是實例共用同一塊內存區域
public class Singleton{
private static fial Singleton intance=new Singleton();
private Singleton(){}
public void getInstance(){
return intance;
}
}

② 開發人員筆試題

開發人員筆試題

開發人員筆試題大家去面試的時候相信都會做過一些。下面是我整理的開發人員筆試題,歡迎大家閱讀。

開發人員筆試題一

一、填空禪巧姿題(本大題10小題,每空1分,共20分)

1.Java語言的三大特性即是、寬肢、

2.在Java中,char 型採用____unicode_______編碼方案,這樣,無論是中文字元還是英文字元,都是佔用__2___個位元組的內存空間。

3. 形式參數指的是方法被__定義____ 時的參數行,實際參數是方法被__調用___ 時所傳遞進去的變數或值。

4.JSP

對象則是每個客戶專用的。

介面 。

6.程序中實現多線程的方法有兩種:繼承Thread類和實現

介面。

對優先順序。

8.面向對象編程的五大設計原則,分別是、 、、

9.通過Ajax,客戶端獲取的數據主要有兩種類型:文本型和 10. Socket通常也稱為套接字 ,用於描述 和

二、選擇題(本大題 20 小題,每小題2分.共40分)。

1.在JAVA中,如果父類中某些方法不包含任何邏輯,並且需要由子類重寫.應該使用( )關鍵字來聲明父類的這些方法:

A) final B) static C) abstract D) void

2.在JAVA中,已定義兩個介面B和C,要定義一個實現這兩個介面的類,以下語句正確的是( )。

賀絕A) interface A extend B,C B) interface A implements B,C

C) class A implements B,C D) class A implements B, implements C

3.在JAVA介面中可以定義( )。

A) 靜態方法 B) 常量 C) 構造方法 D) 抽象方法

4.假設A有構造方法A (int a),則在類A的其他構造方法中調用該構造方法和語句格式應為( )。

A) A(X) B) this.A(x) C) this(x) D) super(x)

5.設 x = 1 ,y = 2 , z = 3, 則表達式 y+=z--/++x 的值是( )。

A) 3 B) 3.5 C) 4 D) 5

6.下列關於繼承的說法哪個正確?( )。

A)子類只繼承父類public方法和屬性:

B)子類繼承父類的非私有屬性和方法:

C)子類繼承父類的方法,而不繼承父類的屬性:

D) 子類將繼承的所有的屬性和方法.

7.在java中.在使用JDBC時。對於多次調用同一條SQL語句的情況, 使用( )通常會提高效。

A) Statement B) CallableStatement

C) PreparedStatement D) PrarmeterStatement

8.下列不能控制一個Servlet的生命周期方的法是:

A) service B) destroy C) doPost D) init

9.能夠給一個byte型變數賦值的范圍是( )。

A) 0~65535 B) (-128)~127

C)(-32, 768)~32, 767 D) (-256)~255

10.java語言中int類型數據佔用多少位?( )。

A) 32 B) 64 C) 16 D) 20

11. ServletContext對象是如何創建的?( )。

A) 由 Servlet容器創建,對於每個HTTP請求.Servlet容器都會創建 一個ServletContext對象

B)由JavaWeb 應用本身為自己創建一個ServletContext對象

C)由Servlet容器創建,對於每個JaveWeb應用,在啟動時,Servlet容器都會創建一個ServletContext對象

12.在JSP中不能在不同用戶之間共享數據的方法是( )。

A) 通過cookie B) 利用文件系統

C) 利用資料庫 D) 通過ServletContext對象

13.以下哪個不是Collection的子介面?( )。

A) List B) Set C) Map D) SortedSet

14. 下面正確的創建 Socket 的語句是( )。

A) Socket a = new Soeket(80):

B) Socket b = new Socket("130. 3. 4. 5", 80):

C) ServerSocket c = new Socket(80)

D) ServerSocket d = new Socket ("130. 3. 4, 5", 80)

15.下面的說法正確的是( )。

A)帶有頁作用域的對象在一個web應用程序的每個JSP中都存在.

B)指令指定與一個特定的JSP 請求不相關的全局信息。

C)當JSP容器遇到開始定製標簽和結束定製標簽時,分別調用 doInitBody方法和doAfterBody方法。

D) 動作只在翻譯時處理一次。

16.為了區分重載多態中同名的不同方法,要求:( )。

A)參數名不同 B) 採用不同的形式參數列表

C)返回值類型不同 D) 選項A, B, C都對

17.下面是有關子類調用父類構造函數的描述正確的是:( )。

A)子類定義了自己的構造函數.就不會調用父類的構造函數

B)子類必須通過Super關鍵字調用父類有參數的構造函數

C)如果子類的構造沒有通過super調用父類構造函數,那麼子類會 先調用子類自己的構造函數,再調用父類不含參數的構造函數。

D)創建子類的對象時,先調用子類自己的構造函數,然後調用父 類的構造函數

18.在Java中,負責對位元組代碼解釋執行的是( )。

A) 垃圾回收器 B) 虛擬機 C) 編譯器 D) 多線程機制

19.一個java程序運行從上到下的環境次序是( )。

A) 操作系統、Java程序、jre/jvm、硬體

B) jre/jvm、Java程序、硬體、操作系統

C) java程序、jre/jvm、操作系統、硬體

D) java程序、操作系統、jre/jvm、硬體

20.對於從Employee表中選擇記錄的'以下代碼片段,識別其遺漏的代碼行。( ) Connection con = null:

Class. forName("sun.jdbc.odbc.JdbcOdbcDriver"):

con=DriverManager.getConnection("jdbc:odbc:ss" , "sa" , "");

ResultSet rs=stat.executeQuery("select * from Employee");

A) Statement stat=createStatement();

B) Statement stat=con.createStatement ();

C) PreparedStatement stat=con.createStatement():

D) PreparedStatement stat=createPreparedStatement();

三、問答題(本大題6小題,共40分)。

1.請說出 ArrayList , Vector , LinkedList 的存儲性能和特性。(6分)

2.什麼是單例模式(Singleton) ? 請在下面寫出一個單例模式類,並支持多線程調用。(6分)

3.請描述一下JVM載入class文件的原理機制?(6分)

4.請談談對SQL注入的理解,請給出你知道的防止SQL注入的方法。(6分)

5.請談談對hibernate的理解,並簡要敘述Hibernate的一級緩存和二級緩存(8分)。

6.請寫出你知道的排序方法,並使用Java語言寫出其中一種。(8分)

三、簡答題(參考答案)

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

2. 創建某類對象時,無論創建多少次該類對象只有一份在內存中,這就是單例模式。支持多線程調用,考慮線程安全,只需要加鎖即可。

public class Singleton{

private static Singleton instance = null;

private Singleton(){}

private static synchronized void syncInit(){

if(instance == null){

instance = new Singleton();

}

}

public static Singleton getInstance(){

if(instance == null){

syncInit();

}

return instance;

}

}

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

4.解決辦法:a. 利用JavaScript,在客戶端進行校驗。

b.程序判斷 c.使用PreparedStatement連接資料庫。(參數化) d.利用框架技術

5. Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用。

一級緩存就是Session級別的緩存,一個Session做了一個查詢操作,它會把這個操作的結果放在一級緩存中,如果短時間內這個

session(一定要同一個session)又做了同一個操作,那麼hibernate直接從一級緩存中拿,而不會再去連資料庫,取數據;

二級緩存就是SessionFactory級別的緩存,顧名思義,就是查詢的時候會把查詢結果緩存到二級緩存中,如果同一個sessionFactory

創建的某個session執行了相同的操作,hibernate就會從二級緩存中拿結果,而不會再去連接資料庫;

6.插入排序、希爾排序、冒泡排序、快速排序、直接排序、歸並排序 下面以快速排序為例:

public class quickSort {

inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};

public quickSort(){

quick(a);

for(int i=0;i

System.out.println(a[i]);

}

}

public int getMiddle(int[] list, int low, int high) {

int tmp =list[low]; //數組的第一個作為中軸

while (low < high){

while (low < high&& list[high] >= tmp) {

high--;

}

list[low] =list[high]; //比中軸小的記錄移到低端

while (low < high&& list[low] <= tmp) {

low++;

. }

list[high] =list[low]; //比中軸大的記錄移到高端

}

list[low] = tmp; //中軸記錄到尾

return low; //返回中軸的位置

}

public void _quickSort(int[] list, int low, int high) {

if (low < high){

int middle =getMiddle(list, low, high); //將list 數組進行一分為二

_quickSort(list, low, middle - 1); //對低字表進行遞歸排序

_quickSort(list,middle + 1, high); //對高字表進行遞歸排序

}

}

public void quick(int[] a2) {

if (a2.length > 0) { //查看數組是否為空

_quickSort(a2,0, a2.length - 1);

}

}

}

開發人員筆試題二

1、簡述 private、 protected、 public、 internal 修飾符的訪問許可權。

2、列舉ASP.NET 頁面之間傳遞值的幾種方式。

5、如果在一個B/S結構的系統中需要傳遞變數值,但是又不能使用Session、

Cookie、Application,您有幾種方法進行處理?

6、什麼是裝箱和拆箱?

8、ASP.net的身份驗證方式有哪些?分別是什麼原理?

9、在C#中,string str = null 與 string str = “” 請盡量使用文字或圖

象說明其中的區別。

10、SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,

ID表示更新的事務號, LastUpdateDate表示更新時的伺服器時間,請使用一句 SQL語句獲得最後更新的事務號

11、寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續的。

12、能用foreach遍歷訪問的對象需要實現 ________________介面或聲明

________________方法的類型。

14、介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可

繼承實體類(concrete class)?

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

16、如何處理幾十萬條並發數據?

17、Session有什麼重大BUG,微軟提出了什麼方法加以解決?

18、向伺服器發送請求有幾種方式?

19、DataReader與Dataset有什麼區別?

20、需要實現對一個字元串的處理,首先將該字元串首尾的空格去掉,如果字元串中

間還有連續空格的話,僅保留一個空格,即允許字元串中間有多個空格,但連續的空 格數不可超過一個.

21、什麼叫做SQL注入,如何防止?請舉例說明。

22、ADO.net中常用的對象有哪些?分別描述一下。

23、什麼是SOAP,有哪些應用?

25、float f=-123.567F; int i=(int)f;i的值現在是_____?

26、使用過那幾種框架?數據持久層框架,業務層框架。


③ jJava方向綜合筆試題1

1.A
2.正確答案:A
解析:原型不同於最終系統,它只實現所選擇的部分功能,僅是為了試驗或是演示而用,部分功能需求可以忽略或者模擬實現,因此適用於需求不確定性高的系統。
3.正確答案:A
解析:本題考查變更控制的相關知識。變更控制是指在軟體開發生命周期的整個過程中對變更的識別、評價和管理等工作。變更控制的目的並不是控制變更的發生,而是對變更進行管理,確保變更有序進行。對於軟體開發項目來說,發生變更的環節比較多,變更控制顯得格外重要。在變更控制中,檢出和登入實現了存取控制和同步控制這兩個重要的變更控制要素。
4.正確答案:B
解析:UML 提供了4種結構圖用於對系統的靜態方面進行可視化、詳述、構造和文檔化,它們分別是:
.類圖。類圖顯示了一組類、介面、協作以及它們之間的關系。在面向對象系統建模中類圖是最常用的圖,用於說明系統的靜態設計視圖。
.對象圖。對象圖顯示了一組對象以及它們之間的關系。用對象圖說明在類圖中所發現的事物實例的數據結構和靜態快照。
.構件圖。構件圖顯示了一組構件以及它們之間的關系。用構件圖說明系統的靜態實現視圖。
.部署圖。部署圖顯示了一組節點以及它們之間的關系。用部署圖說明體系結構的靜態實施視圖。
5.正確答案:C
解析:設計模式是對被用來在特定場景下,解決一般設計問題的類和相互通信的對象的描述。通常,一個設計模式有4個基本要素:模式名稱、問題(模式的使用場合)、解決方案和效果。每一個設計模式系統地命名、解釋和評價了面向對象系統中一個重要的和重復出現的設計。設計模式使人們可以更加簡單方便地復用成功的設計和體系結構;將己證實的技術表述成設計模式,也會使新系統的開發者更加容易理解其設計思路。設計模式可以幫助開發者做出有利於復用的選擇,避免設計時損害系統復用性。綜合以上分析,本試題的正確答案是選項C。

④ java面試/筆試題

1.JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。
經過長達五年的發展,Struts已經逐漸成長為一個穩定、成熟的框架,並且佔有了MVC框架中最大的市場份額。但是Struts某些技術特性上已經落後於新興的MVC框架。面對Spring MVC、Webwork2 這些設計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。
Struts2.0為其它框架提供了更好的集成。
使得與Spring的集成非常的容易。

2.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組件生成動態網頁,返回給客戶;

3.在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。

4.(1) 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。

(2) Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

(3)hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。

(4)hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。

5.原理:

(1).讀取並解析配置文件

(2).讀取並解析映射信息,創建SessionFactory

(3).打開Sesssion

(4).創建事務Transation

(5).持久化操作

(6).提交事務

(7).關陪攜閉Session

(8).關閉SesstionFactory

6.

Hibernate的最大的好處就是簡化資料庫的操作,允許你的代碼以對象模式來訪問資料庫內容,
比如通常我們找一個User的資料需要select出所需要的資料,而通過hibnate我們可以把這個User的資料作為一個對象來看待
,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統一了上層JAVA或者C#等OO語言中對於資料庫的非OO操作的不和諧了.
另外對於復雜的表和表之間的關聯我們也不用去使用復雜的Select等SQL來操作,而使用對象可以方便獲得,
比如多對多關系某用戶屬於的部門的名稱,雖然底層資料庫使用了3個表的主鍵關聯操作,
但是我們可以通過User.getDep().getName()來簡單的獲得,這個就是持久化對象的好處了

7.
(1)、spring能簡化企業級開發, spring可以用簡單的java bean來代替實現復雜的EJB。(大部分情況下)
(2)、spring是一個輕量級的IOC和AOP框架,可以spring的IOC實現松耦合,而作為一個AOP框架他又能分離系統服務,實現內聚開發
(3)、spring是非侵入式,基於spring的系統可以不依賴於spring的類。

良好的spring運用可以使程序代碼清晰,容易維護,容易測試。

8.
Spring是個很不錯的框架。內部最核心的就是IOC了,
動態注入,讓一個對象的創建不用new了,可以自動的生產,這其實就是利用java里的反射
反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml Spring的配置
文件來動態的創建對象,和調用對象里的方法的 。
Spring還有一個核心就是AOP這個就是面向切面編程,可以為某一類對象 進行監督和控制(也就是
在調用這類對象的具體方法的前後去調用你指定的 模塊)從而達到對一個模塊擴充的功能。這些都是通過
配置類達到的。
Spring目的:就是讓對象與對象(模塊與模塊)之間的關系沒有通過代碼來關聯,都是通過配置類說明
管理的(Spring根據這些配置 內部通過反射去動態的組裝對象)
要記住:Spring是一個容器,凡是在容器里的對象才會有Spring所提供的這些服務和功能。
Spring里用的最經典的一個設計模式就是:模板方法模式。(這里我都不介紹了,是一個很常用的設計模式)
Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點,把以上兩點跟理解了
也就基本上掌握了Spring.

9.
(1).spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責負責對請求進行真正的處理工作。

(2).DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.

(3).DispatcherServlet請請求提交到目標Controller

(4).Controller進行業務邏輯處理後,會返回一個ModelAndView

(5).Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象

(6).視圖對象負責渲染返回給客戶端。

⑤ 解答JAVA筆試題

第一,談談final, finally, finalize的區別。 final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載finally?再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。 finalize?方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。 第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)? 匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現。 第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。 Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。具體可見http: //www.frontfree.net/articles/services/view.asp?id=704&page=1 註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象 第四,&和&&的區別。 &是位運算符。&&是布爾邏輯運算符。 第五,HashMap和Hashtable的區別。 都屬於Map介面的類,實現了將惟一鍵映射到特定的值上。 HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。 Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。 第六,Collection 和 Collections的區別。 Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。 Collection是個java.util下的介面,它是各種集合結構的父介面。 第七,什麼時候用assert。 斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那麼系統會報告一個 AssertionError。它用於調試目的: assert(a > 0); // throws an AssertionError if a <= 0 斷言可以有兩種形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1 應該總是產生一個布爾值。 Expression2 可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的 String 消息。 斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記: javac -source 1.4 Test.java 要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。 要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。 要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。 可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。 第八,GC是什麼? 為什麼要有GC? (基礎)。 GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一: System.gc() Runtime.getRuntime().gc() 第九,String s = new String( "xyz ");創建了幾個String Object? 兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11; 第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。 第十二,sleep() 和 wait() 有什麼區別? 搞線程的最愛 sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)「醒來」的線程具有更高的優先順序,(b)正在運行的線程因為其它原因而阻塞。 wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。 第十三,Java有沒有goto? Goto?java中的保留字,現在沒有在java中使用。 第十四,數組有沒有length()這個方法? String有沒有length()這個方法? 數組沒有length()這個方法,有length的屬性。 String有有length()這個方法。 第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型? 方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被「屏蔽」了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。 第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別? Set里的元素是不能重復的,那麼用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。 equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。 第十七,給我一個你最常見到的runtime exception。 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 第十八,error和exception有什麼區別? error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。 exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。 第十九,List, Set, Map是否繼承自Collection介面? List,Set是 Map不是 第二十,abstract class和interface有什麼區別? 聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。 介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面。 第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized? 都不能 第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)? 介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。 第二十三,啟動一個線程是用run()還是start()? 啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。 第二十四,構造器Constructor是否可被override? 構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。 第二十五,是否可以繼承String類? String類是final類故不可以繼承。 第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法? 不能,一個對象的一個synchronized方法只能由一個線程訪問。 第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後? 會執行,在return前執行。 第二十八,編程題: 用最有效率的方法算出2乘以8等於幾? 有C背景的程序員特別喜歡問這種問題。 2 < < 3 第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對? 不對,有相同的hash code。 第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞? 是值傳遞。Java 編程語言只由值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。 第三十二,編程題: 寫一個Singleton出來。 Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。 一般Singleton模式通常有幾種種形式: 第一種形式: 定義一個類,它的構造函數為private的,它有一個static的private的該類變數,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。 public class Singleton { private Singleton(){} //在自己內部定義自己一個實例,是不是很奇怪? //注意這是private 只供內部調用 private static Singleton instance = new Singleton(); //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問 public static Singleton getInstance() { return instance; } } 第二種形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次 //使用時生成實例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 其他形式: 定義一個類,它的構造函數為private的,所有方法為static的。 一般認為第一種形式要更加安全些 第三十三 Hashtable和HashMap Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現 HashMap允許將null作為一個entry的key或者value,而Hashtable不允許 還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap就必須為之提供外同步。 Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。

⑥ 求java考題,筆試題

Java面向對象
1. super()與this()的區別?
This():當前類的對象,super父類對象。
Super():在子類訪問父類的成員和行為,必須受類繼承規則的約束
而this他代表當前對象,當然所有的資源都可以訪問.
在構造函數中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶參數的構造函數,或這個函數被私有化了(用private修飾).此時你必須加入對父類的實例化構造.而this就沒有這個要求,因為它本身就進行實例化的構造.
而在方法中super和this使用的方法就差不多了.只不過super 要考慮是否能訪問其父類的資源.
2. 作用域public,protected,private,以及不寫時的區別?
Public:不同包、 同一包、 類內都可用
Private: 類內
Protected:不同包的子類、同一包、 類內都可用
不寫時: 同一包內、類內
3. 編程輸出如下圖形。
* * * * *
* * * *
* * *
* *
*
代碼如下:
public class Print {
publicstatic void main(String[] args) {
for(int i = 0; i < 5; i++) {
for(int j = 5; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
4. JAVA的事件委託機制和垃圾回收機制
Java事件委託機制的概念,一個源產生一個事件並將它送到一個或多個監聽器那裡。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。
垃圾回收機制垃圾收集是將分配給對象但不再使用的內存回收或釋放的過程。如果一個對象沒有指向它的引用或者其賦值為null,則次對象適合進行垃圾回收
5. 在JAVA中,如何跳出當前的多重嵌套循環?
用break; return 方法。
6. 什麼是java序列化,如何實現java序列化?(寫一個實例)
序列化:處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implementsSerializable只是為了標注該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
7. 一個".java"源文件中是否可以包括多個類(不是內部類)?有什麼限制?
可以。如果這個類的修飾符是public,其類名與文件名必須相同。
8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序?
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸並排序,分配排序(箱排序、基數排序)
快速排序的偽代碼。
9. Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
重寫Override,子類覆蓋父類的方法,將子類傳與父類的引用調用的還是子類的方法。
重載Overloading 一個類多個方法,名稱相同,參數個數類型不同。
兩者都是Java多態性的不同表現。
Overloaded的方法是可以改變返回值的類型。
1, public class Ctest(){
Public static void main(){
System.out.prinln(8+8+」88」+8+8);
}
} 168888
(方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被「屏蔽」了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。
Overloaded的方法是可以改變返回值的類型。)
10. Final類有什麼特點?
屬性常量 方法不可以overridding 類不可以繼承
11. 繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼?
答:父類:
package test;
public class FatherClass {
public FatherClass() {
System.out.println("FatherClassCreate");
}
}
子類:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass() {
System.out.println("ChildClassCreate");
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
輸出結果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
12. 內部類的實現方式?
package test;
public class OuterClass {
private class InterClass {
Public Interlass(){
System.out.println("InterClassCreate");
}
}
public OuterClass(){
InterClass ic = new InterClass();
System.out.println("OuterClassCreate");
}
public static void main(String[] args){
OuterClass oc = new OuterClass();
}
}
輸出結果:
C:>java test/OuterClass InterClass Create OuterClass Create
13. 用JAVA實現一種排序,JAVA類實現序列化的方法(二種)?
14. 如在COLLECTION框架中,實現比較要實現什麼樣的介面?
15. 用插入法進行排序代碼如下
package test;
import java.util.*;
class InsertSort {
ArrayList al;
public InsertSort(int num,int mod) {
al = new ArrayList(num);
Random rand = new Random();
System.out.println("The ArrayList SortBefore:");
for (int i=0;i<num ;i++ ){
al.add(new Integer(Math.abs(rand.nextInt())% mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt(){
Integer tempInt;
int MaxSize=1;
for(int i=1;i<al.size();i++){
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()){
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++ ){
if(((Integer)al.get(j)).intValue()>=tempInt.intValue()){
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList SortAfter:");
for(int i=0;i<al.size();i++) {
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args) {
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVA類實現序例化的方法是實現java.io.Serializable介面
Collection框架中實現比較要實現Comparable 介面和 Comparator 介面
16. 編程:編寫一個截取字元串的函數,輸入為一個字元串和位元組數,輸出為按位元組截取的字元串。但是要保證漢字不被截半個,如"我ABC"4,應該截為"我AB",輸入"我ABC漢DEF",6,應該輸出為"我ABC"而不是"我ABC+漢的半個"。
public static void split(String source,intnum) throws Exception{
intk=0;
Stringtemp="";
for(int i = 0; i <source.length(); i++){
byte[]b=(source.charAt(i)+"").getBytes();
k=k+b.length;
if(k>num){
break;
}
temp=temp+source.charAt(i);
}
System.out.println(temp);
}
15、Java編程,列印昨天的當前時刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
16、文件讀寫,實現一個計數器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(newFileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(newBufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //可能是編碼的原因,如果直接寫入int的話,將出現java編碼和windows編碼的混亂,因此此處寫入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
17、指出下面程序的運行結果。
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //執行到此處,結果: 1a2b
ab = new B(); //執行到此處,結果: 1a2b2b
}
}注:類的static 代碼段,可以看作是類首次載入(被虛擬機載入)執行的代碼,而對於類的載入,首先要執行其基類的構造,再執行其本身的構造
18、抽象類和介面的區別?
(1)介面可以被多重implements,抽象類只能被單一extends(2)介面只有定義,抽象類可以有定義和實現(3)介面的欄位定義默認為:publicstatic final, 抽象類欄位默認是"friendly"(本包可見)
當功能需要累積時用抽象類,不需要累積時用介面。
19、什麼是類的反射機制?
通過類(Class對象),可以得出當前類的fields、method、construtor、interface、superClass、modified等,同是可以通過類實例化一個實例、設置屬性、喚醒方法。Spring中一切都是返射、struts、hibernate都是通過類的返射進行開發的。
20、類的返射機制中的包及核心類?
①java.lang.Class②java.lang.refrection.Method③java.lang.refrection.Field
④java.lang.refrection.Constructor⑤java.lang.refrection.Modifier⑥java.lang.refrection.Interface
21、得到Class的三個過程是什麼?
①對象.getClass()②類.class或Integer.type(int) Integer.class(java.lang.Integer)③Class.forName();
22、如何喚起類中的一個方法?
①產生一個Class數組,說明方法的參數②通過Class對象及方法參數得到Method③通過method.invoke(實例,參數值數組)喚醒方法
23、如何將數值型字元轉換為數字(Integer,Double)?
Integer.parseInt(「1234」) Double.parseDouble(「123.2」)
24、如何將數字轉換為字元?
1+」」 1.0+」」
25、如何去小數點前兩位,並四捨五入。
double d=1256.22d; d=d/100; System.out.println(Math.round(d)*100);
26、如何取得年月日,小時分秒?
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,31);
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));
27、如何取得從1970年到現在的毫秒數
Java.util.Date dat=new Date(); long now=dat.getTime();
或System.currentTimeMillis()
28、如何獲取某個日期是當月的最後一天?
當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。
取下一個月的第一天,下一個月的第一天-1
public static void main(String[] args){
Calendarc=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,30);
Calendarc1=(Calendar)c.clone();
System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,1);
if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH)){
System.out.println("是最後一天");
}else{
System.out.println("不是取後一天");
}
}
29、如何格式化日期?
Import java.text. SimpleDateFormat;
SimpleDateFormat sdf=newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dat=new Date();
String str=sdf.format(dat); //把日期轉化為字元串
System.out.println(str);
Java.util.Date d1=sdf.parse(「yyyy-mm-dd」); //將字元串轉化為日期
30、編碼轉換,怎樣實現將GB2312編碼的字元串轉換為ISO-8859-1編碼的字元串。
String a=new String("中".getBytes("gb2312"),"iso-8859-1");
String a=new String("中".getBytes("iso-8859-1"));
應該是String a=new String("中".getBytes("gb2312"),"iso-8859-1");
String a1=newString(a.getBytes("iso-8859-1"));

⑦ 簡單的Java筆試題

A的錯誤錯在:調用本類的類方法應該用 類名.類方法 來調用
C的錯誤錯在:不僅僅能調用本類的,如果是子類的話父類的類方法也能調用
我對於D的理解是這樣的:靜態的只能訪問靜態的,非靜態的可以訪問靜態的,也就是說類方法中不能調用實例方法。非要說他錯,是不是加了絕對二字。
以上是我的理解,有不足的地方希望大家交流~

熱點內容
企業的伺服器滿了如何備份 發布:2025-03-16 17:04:00 瀏覽:901
促銷演算法模型 發布:2025-03-16 16:56:55 瀏覽:93
線程非同步java 發布:2025-03-16 16:51:52 瀏覽:259
軟體編程有哪些 發布:2025-03-16 16:46:07 瀏覽:480
最近上傳91 發布:2025-03-16 16:46:03 瀏覽:705
珍珠台編程 發布:2025-03-16 16:40:25 瀏覽:900
伺服器如何連接寬頻 發布:2025-03-16 16:31:19 瀏覽:657
電腦硬體消息查詢腳本 發布:2025-03-16 16:22:39 瀏覽:867
寶馬五系降價取消了哪些配置 發布:2025-03-16 16:09:41 瀏覽:241
學班java 發布:2025-03-16 16:09:00 瀏覽:599