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