- 相關(guān)推薦
超經(jīng)典 java 華為筆試題
Java 教程 Java 是由Sun Microsystems公司于1995年5月推出的高級程序設(shè)計語言。 本文將為你提供超經(jīng)典 java 華為筆試題,歡迎閱讀參考。
一、單項選擇題
1.Java是從()語言改進重新設(shè)計。
A.Ada B.C++ C.Pasacal D.BASIC
答案:B
2.下列語句哪一個正確()
A. Java程序經(jīng)編譯后會產(chǎn)生machine code
B. Java程序經(jīng)編譯后會產(chǎn)生byte code
C. Java程序經(jīng)編譯后會產(chǎn)生DLL
D.以上都不正確
答案:B
Java字節(jié)碼是Java源文件編譯產(chǎn)生的中間文件
java虛擬機是可運行java字節(jié)碼的假想計算機 java的跨平臺性也是相對與其他編程語言而言的 先介紹一下c語言的編譯過程吧先是C語言源程序
也就是。c的文件經(jīng)過C編譯程序編譯后生成windows可執(zhí)行文件exe文件然后在windows中執(zhí)行。。再介紹java的編譯過程先是java源程序 擴展名
為。java的文件由java編譯程序?qū)ava字節(jié)碼文件 就是class文件然后在java虛擬機中執(zhí)行。機器碼是由CPU來執(zhí)行的。Java編譯后是字節(jié)碼,
電腦只能運行機器碼。Java在運行的時候把字節(jié)碼變成機器碼。C/C++在編譯的時候直接編譯成機器碼
3.下列說法正確的有()
A. class中的constructor不可省略
B. constructor必須與class同名,但方法不能與class同名
C. constructor在一個對象被new時執(zhí)行
D.一個class只能定義一個constructor
答案:C
4.提供Java存取數(shù)據(jù)庫能力的包是()
A.java.sql B.java.awt C.java.lang D.java.swing
答案:A
5.下列運算符合法的是()
A.&& B.<> C.if D.:=
答案:A
6.執(zhí)行如下程序代碼
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
后,C的值是()
A.0 B.1 C.-1 D.死循環(huán)
答案:C
7.下列哪一種敘述是正確的()
A. abstract修飾符可修飾字段、方法和類
B.抽象方法的body部分必須用一對大括號{ }包住
C.聲明抽象方法,大括號可有可無
D.聲明抽象方法不可寫出大括號
答案:D
abstract修飾符用來修飾類和成員方法
1:用abstract修飾的類表示抽象類,抽象類位于繼承樹的抽象層,抽象類不能被實例化。
2:用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統(tǒng)具有什么功能,但不提供具體的實現(xiàn)。
Abstract是Java中的一個重要關(guān)鍵字,可以用來修飾一個類或者一個方法。
修飾一個方法時,表示該方法只有特征簽名(signature),沒有具體實現(xiàn),而是把具體實現(xiàn)留給繼承該類的子類。一個類中只要有一個abstract
方法,那么這個類就要被聲明為abstract,但是其中可以有非abstract方法。
abstract類可以使得類的設(shè)計者能夠創(chuàng)建方法的原型,而真正的實現(xiàn)留給使用這個類的人。
8.下列語句正確的是()
A.形式參數(shù)可被視為local variable
B.形式參數(shù)可被字段修飾符修飾
C.形式參數(shù)為方法被調(diào)用時,真正被傳遞的參數(shù)
D.形式參數(shù)不可以是對象
答案:A
解答:
? ? 形式參數(shù)是指在函數(shù)名后面的小括號里定義的變量, 用于接受來自調(diào)用函數(shù)的
參數(shù)。形式參數(shù)在函數(shù)內(nèi)部可以象其它局部變量那樣來使用。
? ? 例如:
? ? puthz(int x, int y, int color, char *p)
? ? {
? ? ? ? ? int i, j, k;? /*定義局部變量*/
? ? ? ? ? <程序體>
? ? }
? ? 其中x, y, color, *p為函數(shù)的形式參數(shù), 不需要再進行說明就可在該函數(shù)內(nèi)
直使用。
9.下列哪種說法是正確的()
A.實例方法可直接調(diào)用超類的實例方法
B.實例方法可直接調(diào)用超類的類方法
C.實例方法可直接調(diào)用其他類的實例方法
D.實例方法可直接調(diào)用本類的類方法
答案:D
解答:類方法就是靜態(tài)方法。static? ? 其它的就是實例方法
? ? ? 實例方法可以對當(dāng)前對象的實例變量進行操作,也可以對類變量進行操作,但類方法不能訪問實例變量。實例方法必須由實例對象來調(diào)用,而類方法除了可由實例對象調(diào)用外,還可以由類名直接調(diào)用。另外,在類方法中不能使用 this 或 super。
關(guān)于類方法的使用,有如下一些限制:
1 在類方法中不能引用對象變量。
2 在類方法中不能使用super、this關(guān)鍵字。
3 類方法不能調(diào)用類中的對象方法。
與類方法相比,實例方法幾乎沒有什么限制:
1 實例方法可以引用對象變量(這是顯然的),也可以引用類變量。
2 實例方法中可以使用super、this關(guān)鍵字。
3 實例方法中可以調(diào)用類方法。
二、多項選擇題
1.Java程序的種類有()
A.類(Class) B.Applet C.Application D.Servlet
Java程序的種類有:
(a)內(nèi)嵌于Web文件中,由瀏覽器來觀看的_Applet
(b)可獨立運行的 Application
(c)服務(wù)器端的 Servlets
2.下列說法正確的有()
A.環(huán)境變量可在編譯source code時指定
B.在編譯程序時,所能指定的環(huán)境變量不包括class path
C. javac一次可同時編譯數(shù)個Java源文件
D. javac.exe能指定編譯結(jié)果要置于哪個目錄(directory)
答案:BCD
3.下列標(biāo)識符不合法的有()
A.new B.$Usdollars C.1234 D.car.taxi
答案:ACD
4.下列說法錯誤的有()
A.數(shù)組是一種對象
B.數(shù)組屬于一種原生類
C. int number=[]={31,23,33,43,35,63}
D.數(shù)組的大小可以任意改變
答案:BCD
解答:Java把數(shù)組當(dāng)作一個java類來處理
java是純面向?qū)ο蟮恼Z言,他的數(shù)組也是一個對象。
5.不能用來修飾interface的有()
A.private B.public C.protected D.static
答案:ACD
only public & abstract are permitted
你既然定義了interface(接口),那肯定是要其它的類去實現(xiàn)它的,
不然你定義它干嗎,所以不能用protected去修飾,
而要用public去修飾。接口可以去繼承一個已有的接口。
接口只能被public和默認(rèn)修飾符修飾,protected也不行所以除了public其他的都要選
6.下列正確的有()
A. call by value不會改變實際參數(shù)的數(shù)值
B. call by reference能改變實際參數(shù)的參考地址
C. call by reference不能改變實際參數(shù)的參考地址
D. call by reference能改變實際參數(shù)的內(nèi)容
答案:ACD
解答:
1 基本類型和基本類型變量被當(dāng)作參數(shù)傳遞給方法時,是值傳遞。
在方法實體中,無法給原變量重新賦值,也無法改變它的值。
2 對象和引用型變量被當(dāng)作參數(shù)傳遞給方法時,是引用傳遞。
在方法實體中,無法給原變量重新賦值,但是可以改變它所指向?qū)ο蟮膶傩浴?/p>
7.下列說法錯誤的有()
A.在類方法中可用this來調(diào)用本類的類方法//this只能從實例代碼內(nèi)部使用,也就是說不能用在靜態(tài)代碼內(nèi)
B.在類方法中調(diào)用本類的類方法時可直接調(diào)用
C.在類方法中只能調(diào)用本類中的類方法//錯
D.在類方法中絕對不能調(diào)用實例方法
答案:ACD
D.應(yīng)該說不能直接調(diào)用
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
t.print();
}
public void print(){
System.out.println("1111111111111");
}
}
8.下列說法錯誤的有()
A. Java面向?qū)ο笳Z言容許單獨的過程與函數(shù)存在
B. Java面向?qū)ο笳Z言容許單獨的方法存在
C. Java語言中的方法屬于類中的成員(member)//類成員是靜態(tài)的,成員方法屬于實例
D. Java語言中的方法必定隸屬于某一類(對象),調(diào)用方法與過程或函數(shù)相同
答案:ABC
9.下列說法錯誤的有()
A.能被java.exe成功運行的java class文件必須有main()方法
B.J2SDK就是Java API
C.Appletviewer.exe可利用jar選項運行.jar文件
D.能被Appletviewer成功運行的java class文件必須有main()方法
答案:BCD
三、判斷題
1.Java程序中的起始類名稱必須與存放該類的文件名相同。()
答案:正確
2.Unicode是用16位來表示一個字的。()
答案:正確
3.原生類中的數(shù)據(jù)類型均可任意轉(zhuǎn)換。()
答案:錯誤、排序都有哪幾種方法?請列舉。用JAVA實現(xiàn)一個快速排序。
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,
分配排序(箱排序、基數(shù)排序)
快速排序的偽代碼。
/ /使用快速排序方法對a[ 0 :n- 1 ]排序
從a[ 0 :n- 1 ]中選擇一個元素作為m I d d l e,該元素為支點
把余下的元素分割為兩段left 和r I g h t,使得l e f t中的元素都小于等于支點,而right 中的元素都大于等于支點
遞歸地使用快速排序方法對left 進行排序
遞歸地使用快速排序方法對right 進行排序
所得結(jié)果為l e f t m I d d l e r I g h t
6、請對以下在J2EE中常用的名詞進行解釋(或簡單描述)
web容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個環(huán)境,使 JSP,SERVLET直接更容器中的環(huán)境變量接**互,不必關(guān)注其它系統(tǒng)問
題。主要有WEB服務(wù)器來實現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行業(yè)領(lǐng)域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容
器,馬上就會被容器進行高效率的管理。并且可以通過現(xiàn)成的接口來獲得系統(tǒng)級別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。
JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務(wù)。主要提供的功能是:提供一個目錄系,讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。
JMS:(Java Message Service)JAVA消息服務(wù)。主要實現(xiàn)各個應(yīng)用程序之間的通訊。包括點對點和廣播。
JTA:(Java Transaction API)JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開發(fā)者通過各種部署和自定義實現(xiàn)自己的個性安全控制
策略。
RMI/IIOP:(Remote Method Invocation /internet對象請求中介協(xié)議)他們主要用于通過遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺計算機上運行一個
程序,它提供股票分析服務(wù),我們可以在本地計算機上實現(xiàn)對其直接調(diào)用。當(dāng)然這是要通過一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進行通信。RMI是
JAVA特有的。
7、JAVA語言如何進行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?
Java通過面向?qū)ο蟮姆椒ㄟM行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable
類或其它子類的實例。當(dāng)一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進行
處理。Java的異常處理是通過5個關(guān)鍵詞來實現(xiàn)的:try、catch、throw、throws和 finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異
常,系統(tǒng)會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
用try來指定一塊預(yù)防所有"異常"的程序。緊跟在try程序后面,應(yīng)包含一個catch子句來指定你想要捕捉的"異常"的類型。
Throw語句用來明確地拋出一個"異常"。
Throws用來標(biāo)明一個成員函數(shù)可能拋出的各種"異常"。
Finally為確保一段代碼不管發(fā)生什么"異常"都被執(zhí)行一段代碼。
可以在一個成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)內(nèi)部寫另一個try語句保護其他代碼。每當(dāng)遇到一個try語句,"異常"的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。
1、字符串a(chǎn)bcdefg,要求按逆序輸出為gfedcba
public class Main {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("abcdefg");
buf = buf.reverse();
System.out.println(buf.toString());
}
}
2、使用字符串的正則判斷是否全部由數(shù)字組成
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JAVA {
public static void main(String[] args) {
String regEx = "\\D+";
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
? String str = in.next();
? Pattern p = Pattern.compile(regEx);
? Matcher m = p.matcher(str);
? if (!m.find()) {
? ? System.out.println("輸入的字符串全是數(shù)字");
? } else {
? ? System.out.println("輸入的字符串不全是數(shù)字");
? }
}
}
}
3、把當(dāng)前日期轉(zhuǎn)換成yyyy年MM月dd日
import java.text.SimpleDateFormat;
import java.util.Date;
public class JAVA {
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
Date d = new Date();
String s = sf.format(d);
System.out.println(s);
}
}
4、編一個程序,它能讀入兩個正整數(shù)(第一個:n進制的基數(shù)(2-19)第二個:要轉(zhuǎn)換的十進制數(shù)),,并輸出這個正整數(shù)的2-19進制形式,依
次用A、B、C、D、E、F、G、H、I表示10、11、12、13、14、 15、16、17、18。如輸入為15 56時,輸出為3B。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[] charaters = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
? ? 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
Scanner in = new Scanner(System.in);
StringBuffer ans = new StringBuffer("");
int base = 0;
int digit = 0;
base = in.nextInt();
digit = in.nextInt();
if (2 <= base && base <= 18) {
? while (digit != 0) {
? ? ans.append(charaters[digit % base]);
? ? digit /= base;
? }
? ans = ans.reverse();
? System.out.println(ans.toString());
} else {
? System.out.println("Input Error!");
}
}
}