首頁>技術>

前言

基於我個人對面試的認知和招聘經驗,在此我總結一下Java開發者的基礎知識掌握要求,及應聘者面試的需要準備的內容。

首先,Java基礎是每個面試官都會問到的,可能只是針對工作經驗的多少,對問題追蹤深度有所差異。基本對初中級開發者來說,基礎理論和應用不可缺少。對中高階,面試官會基於基礎理論問一些底層的原理甚至對原始碼的理解。

一、填空題

1、Java的三大體系分別是_JavaSE_____、_JavaEE_____、_JavaME_____。

2、Java程式的執行環境簡稱之為JRE_____。

3、編譯Java程式需要使用_javac_____命令。

4、javac.exe和java.exe兩個可執行程式存放在JDK安裝目錄的bin______目錄下。 5、path______環境變數用來儲存Java的編譯和執行工具所在的路徑,而_classpath_____環境變數則用來儲存儲存Java虛擬機器要執行的“.class”檔案路徑。

二、選擇題

1、以下選項中,哪些屬於JDK工具?(多選)ABCD

A、Java編譯器 B、Java執行工具 C、Java文件生成工具 D、Java打包工具

2、Java屬於以下哪種語言?C A、機器語言 B、 組合語言 C、高階語言

3、下面哪種型別的檔案可以在Java虛擬機器中執行?D D、.class

4、安裝好JDK後,在其bin目錄下有許多exe可執行檔案,其中java.exe命令的作用是以下哪一種? B A、Java文件製作工具 B、Java直譯器 C、Java編譯器

5、 5、如果jdk的安裝路徑為:d:jdk,若想在命令視窗中任何當前路徑下,都可以直接

使用javac和java命令,需要將環境變數path設定為以下哪個選項?B A.d:jdk;

B.d :jdkin; C.d:jrein; D.d:jre;

三、問答題

1、簡述Java的特點。面向物件、跨平臺性、健壯性、安全性、可移植性、多執行緒性、動態性等。

2、簡述JRE與JDK的區別JRE(Java Runtime Environment,Java執行時環境),它相當於作業系統部分,提供了Java程式運 行時所需要的基本條件和許多Java基礎類,例如,IO類、GUI控制元件類、網路類等。JRE是提供給普通使用者使用的,如果你只想執行別人開發好的Java程式,那麼,你的計算機上必須且只需安裝JRE。 JDK(Java Development Kit,Java開發工具包),它包含編譯工具、解釋工具、文件製作工具、打包工具多種與開發相關的工具,是提供給Java開發人員使用的。初學者學習和使用Java語言時,首先必須下載和安裝JDK。JDK中已經包含了JRE部分,初學者安裝JDK後不必再去下載和安裝JRE了。

第二章

Java語言的八種基本資料型別有:byte位元組型,佔一個位元組。short短整型,佔兩個位元組。int整型,佔4個位元組。long長整型,佔8個位元組。float單精度浮點型,佔4個位元組。double雙精度浮點型,佔8個位元組。char字元型,佔兩個位元組。boolean型,表示邏輯值,有true和false兩個值,分別佔一個位元組。

2、如果使用“&”在表示式之間進行連線,那麼無論任何情況,“&”兩邊的表示式都會參與計算。如果使用“&&”進行連線,當“&&”左邊的表示式為false,則不會執行其右邊的表示式。例如定義int x = 2,y = 0; boolean b = x < y & x / 2 > 0表達是會發生被0除異常,因為x / y的表示式執行了。而boolean b = x < y & x / 2 > 0是不會出現這種異常的,因為x < y為false,表示式x / y不會執行。

3、方法過載指的是在一個類中可以宣告多個同名的方法,而方法中引數的個數或者資料型別不一致。呼叫這些同名的方法時,JVM會根據實際引數的不同繫結到不同的方法

氣泡排序:
public class Test03 { public static void main(String[] args) { int[] arr = { 25, 24, 12, 76, 101, 96, 28 }; for (int i = 0; i < arr.length - 1; i++) { // 定義內層迴圈 for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 比較相鄰元素 // 下面的三行程式碼用於交換兩個元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + ""); // 列印元素和空格 } }
第三章

1、構造方法是類的一個特殊成員,它會在類例項化物件時被自動呼叫。而普通方法只有在使用的時 候才會被呼叫。在定義構造方法時要求方法名與類名相同、在方法名的前面沒有返回值型別的聲 明、在方法中不能使用return語句返回一個值

2、單例模式可以保證在整個程式執行期間針對該類只存在一個例項物件。

Java中的變數可分為兩種資料型別,分別是_基本資料型別_____和_引用資料型別_____。 5、在Java中,byte型別資料佔____1__個位元組,short型別資料佔__2____個位元組,int型別資料佔___4___個位元組,long型別資料佔____8__個位元組。

面向物件的三大特徵是封裝性__繼承性_____和__多型性____。

2、 在Java中,可以使用關鍵字__new____來建立類的例項物件。

3、 定義在類中的變數被稱為__成員變數____,定義在方法中的變數被稱為區域性變數______

4、 面向物件程式設計的重點是_類___的設計,__類____是用來建立物件的模板。

5、 在非靜態成員方法中,可以使用關鍵字_this__訪問類的其它非靜態成員。

6、 當一個物件被當成垃圾從記憶體中釋放時,它的__finalize()____方法會被自動呼叫。

7、 被static關鍵字修飾的成員變數被稱為_靜態變數_,它可以被該類所有的例項物件共享。

8、 在一個類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為_內部類_____。

9、在Java中,提供了一個_javadoc_____命令,用於將程式中的文件註釋提取出來,生成HTML格式 的幫助文件。

10、所謂類的封裝是指在定義一個類時,將類中的屬性私有化,即使用_private_____關鍵字來修飾。

第四章:

在Java語言中,允許使用已存在的類作為基礎建立新的類,這種技術我們稱為繼承______。

2、一個類如果實現一個介面,那麼它就需要實現介面中定義的全部_方法_____,否則該類就必須定義成_抽象類_____。

3、在程式開發中,要想將一個包中的類匯入到當前程式中,可以使用_import_____關鍵字。

4、一個類可以從其它的類派生出來,派生出來的類稱為_子類_____,用於派生的類稱為_基類_____或者__父類____。

5、 JDK中定義了大量的異常類,這些類都是_Exception_____類的子類或者間接子類。

6、定義一個Java類時,如果前面加使用_final_____關鍵字修飾,那麼該類不可以被繼承。 7、如果子類想使用父類中的成員,可以透過關鍵字__super____引用父類的成員。

8、在Java語言中,所有的類都直接或間接繼承自_Object_____類。 9、異常的捕獲通常由try、catch兩部分組成,_try_____程式碼塊用來存放可能發生異常,_catch_____ 程式碼塊用 來處理產生的異常。 10、在Java語言中,要想是將一個已編譯的類打包成jar檔案,可以使用的命令是_jar-cvf_____,要 想在命令列視窗執行jar檔案,可以使用的命令是__java-jar___。

1、什麼是方法重寫? 在繼承關係中,子類的方法與父類的某一方法具有相同的方法名、返回型別和引數列表,則稱子類的該方法重寫(覆蓋)父類的方法。

2、什麼是多型? 多型意味著一個物件有著多種形態,可以在特定的情況下,表現不同的狀態,從而對應著不同的屬性和方法。簡單的說,多型就是使用父類型別的變數引用子類物件,根據被引用子類物件的特性,程式會得到不同的執行效果。

3、抽象類和介面的區別? 在Java中,使用abstract關鍵字修飾的類稱之為抽象類。抽象類是不能被例項化的,通常需要寫一個子類來繼承抽象類,同時例項化子類來獲得該類的物件。抽象類通常用於表示一種抽象的概念。 介面可以說是一種特殊的抽象類,介面中只能定義常量和抽象方法。由於介面的特殊性,在定義時需要使用interface關鍵字。

第六章:

1、在Java中定義了兩個類來封裝對字串的操作,它們分別是String_和_StringBuffer____。

2、Java中的操作日期的類有_Date___、_Calendar___、DateFormat____等。

3、在程式中若想取得一個Runtime例項,則可以呼叫Runtime類的靜態方法getRnutime()_____。 4、Math類中用於計算所傳遞引數平方根的方法是_sqrt()____。

5、Java中專門用於將日期格式化為字串的類是_DateFormat____。

6、Math類中有兩個靜態常量PI和E,分別代表數學常量_π___和_e___。

7、Java中的用於產生隨機數的類是_Random___,它位於java.util____包中。

8、String類中用於返回字串字元個數的方法是_length()____。

9、System類中所提供的屬性和方法都是_靜態___的,想要引用這些屬性和方法,直接使用System類呼叫即可。

10、已知 sb 為 StringBuffer 的一個例項,且 sb.toString() 的值為 "abcde ", 則執行sb. reverse()後,sb.toString()的值為_”edcba_”___。

1、String和StringBuffer有什麼區別? String類是不可變類,即字串值一旦初始化後就不可能改變。StringBuffer是可變字串類,類似String的緩衝區,可以修改字串的值。

2、Date和Calender類有什麼區別和聯絡? Date類用來表示某個特定的瞬間,能夠精確到毫秒。而在實際應用中,往往需要把一個日期中的年、月、日等資訊單獨返回進行顯示或處理,這個類中的大部分方法都已被標記過時。Calender類基本取代了Date類,該類中定義了一系列用於完成日期和時間欄位操作的方法。 Calendar的getTime()方法,getTime()返回一個表示Calendar時間值的Date物件,同時Calendar有一個setTime(Date date)方法,setTime()方法接收一個Date物件,將Date物件表示的時間值設定給Calendar物件,透過這兩個方法就可以完成Date和Calendar物件之間的轉換。

I/O

1、Java中的IO流,按照傳輸資料不同,可分為____和____。

2、在Java中,____類用於操作磁碟中檔案和目錄,位於____包中。

3、在Java中,___類用來把兩個或更多的InputStream輸入流物件合併為單個InputStream輸入流物件 使用。

4、Java中提供了一個類____,它不但具有讀寫檔案的功能,並且可以隨機地從檔案的任何位置開始執行讀寫資料的操作。

5、在Java中,能實現執行緒間通訊的流是____。

6、Java中提供了一個可以在讀檔案的同時記錄行號的類,這個類是____,它是____的直接子類,它透過____和 ____方法設定和獲取當前行號。

7、InputStreamReader類是用於將____轉換為____。

8、System.out是____類的物件,稱為標準輸出流,呼叫System類的____方法可以實現標準輸出流的重定向。

9、Java中一個字元佔用兩個位元組,所有字符采用的都是____碼錶。

10、BufferedWriter的____方法可以寫入一個換行符。

第8章 IO(輸入輸出)

一、填空題

1、 位元組流、字元流

2、 File、java.io

3、 SequenceInputStream

4、 RandomAccessFile

5、 管道流

6、 LineNumberReader、BufferedReader、setLineNumber(int)、getLineNumber()

7、 位元組流、字元流

8、 PrintStream、setOut(PrintStream out)

9、 Unicode

10、newLine()

1、簡述流的概念。

2、Java流被分為位元組流、字元流兩大流類,兩者有什麼區別?

3、簡要說明管道流。

1、Java程式透過流來完成輸入和輸出,流是輸入或輸出資訊的抽象。流透過Java的輸入/輸出系統與外設連線進行資料通訊。流是抽象的物件,具體實現程式碼在java.io包中。

2、位元組流的兩個基類是InputStream和OutputStream,字元流的兩個基類是Reader和Writer,它們都是Object類的直接子類,位元組流是處理以8位位元組為基本單位的位元組流類;Reader和Writer類是專門處理16位位元組的字元流類。

3、管道流分為管道輸入流(PipedInputStream)和管道輸出流(PipedOutputStream),通常由一個PipedInputStream例項物件和一個PipedOutputStream例項物件相互連線而實現管道通訊, PipedOutputStream向管道寫入資料,PipedInputStream從管道中讀取PipedOutputStream寫入的資料,管道流主要用來完成執行緒之間的通訊。

GU1、

1、 在Java中,圖形使用者介面簡稱______,它的元件包含在______和______這兩個包中。

2、 為了避免實現監聽器中定義的所有方法,造成程式碼的臃腫,在JDK中提供了一些______類,這些 類實現了介面所有的方法,但是方法中沒有任何程式碼,屬於一種空實現。

3、 在Java中,______類相當於一個抽象的畫筆物件,使用它可以在元件上繪製圖形。

4、 ______負責監聽事件源上發生的事件,並對各種事件做出響應處理。

5、 大部分的Swing元件都是______類的直接或者間接子類,其名稱都是在原來AWT元件名稱前加 上字母J。

6、 AWT事件有多種多樣,大致可以分為______、______、______、______等。

8、 對話方塊可以分為______和______兩種。

9、 每一個容器都有一個預設的佈局管理器,如果不希望透過佈局管理器對容器進行佈局,可以呼叫 容器的______方法將其取消。

10、建立下拉式選單需要使用三個元件,分別是______、______和______。

1,java.awt、javax.swing

2、 介面卡

3、 Graphics

4、 事件監聽器

5、 JComponent

6、 窗體事件、鍵盤事件、滑鼠事件、動作事件

7、 WindowListener、windowClosing(WindowEvent e)

8、 模態對話方塊、非模態對話方塊

9、 setLayout(null)

10、JMenuBar、JMenu、JMenuItem

I1、實現時間監聽的步驟

 透過實現XxxListener介面或者繼承XxxAdapter類實現一個事件監聽器類,並對處理監聽動作的 方法進行重寫  建立事件源物件和事件監聽器物件  呼叫事件源的addXxxLisntener()方法,為事件源註冊事件監聽器物件

2、awt和swing的區別

AWT 是Abstract Window ToolKit (抽象視窗工具包)的縮寫,這個工具包提供了一套與本地圖形介面進行互動的介面。AWT 中的圖形函式與作業系統所提供的圖形函式之間有著一一對應的關係,當我們利用 AWT 來構件圖形使用者介面的時候,我們實際上是在利用作業系統所提供的圖形庫。由於不同作業系統的圖形庫所提供的功能是不一樣的,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現Java語言所宣稱的"一次編譯,到處執行"的概念,AWT 不得不透過犧牲功能來實現其平臺無關性,也就是說,AWT 所提供的圖形功能是各種通用型作業系統所提供的圖形功能的交集。由於AWT 是依靠本地方法來實現其功能的,我們通常把AWT控制元件稱為重量級控制元件。 Swing 是在AWT的基礎上構建的一套新的圖形介面系統,它提供了AWT 所能夠提供的所有功能,並且用純粹的Java程式碼對AWT 的功能進行了大幅度的擴充。由於在Swing 中沒有使用本地方法來實現圖形功能,我們通常把Swing控制元件稱為輕量級控制元件。 AWT和Swing之間的基本區別:AWT 是基於本地方法的C/C++程式,其執行速度比較快;Swing是基於AWT 的Java程式,其執行速度比較慢。對於一個嵌入式應用來說,目標平臺的硬體資源往往非常有限,而應用程式的執行速度又是專案中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT 當然成了嵌入式Java的第一選擇。而在普通的基於PC或者是工作站的標準Java應用中,硬體資源對應用程式所造成的限制往往不是專案中的關鍵因素,所以在標準版的Java中則提倡使用Swing,也就是透過犧牲速度來實現應用程式的功能。

簡述java.awt包中提供了哪些佈局管理器。

在java.awt包中提供了五種佈局管理器,分別是FlowLayout(流式佈局管理器)、BorderLayout(邊界佈局管理器)、GridLayout(網格佈局管理器)、GridBagLayout(網格包佈局管理器)和CardLayout(卡片佈局管理器)。

簡述在事件處理機制中所涉及到的概念

1、事件物件(Event):封裝了GUI元件上發生的特定事件(通常就是使用者的一次操作)。

2、事件源(元件):事件發生的場所,通常就是產生事件的元件。

3、監聽器(Listener):負責監聽事件源上發生的事件,並對各種事件做出響應處理的物件(物件中包含事件處理器)。

4、事件處理器:監聽器物件對接收的事件物件進行相應處理的方法。

TCP協議的特點是 ,即在傳輸資料前先在 和 建立邏輯連線。

2、在計算機中,埠號是用 位元組,也就是16位的二進位制數表示,它的取值範圍是

。 3、TCP/IP協議被分為四個層,分別是

4、在JDK中,IP地址用 類來表示的,該類提供了許多和 IP地址相關的操作。。

5、使用UDP協議開發網路程式時,需要使用兩個類,分別是 和 。

答案:

1、面向連線、客戶端、伺服器端

2、2、0-65535

3、鏈路層、網路層、運輸層、應用層

4、InetAddress

5、DatagramPacket、DatagramSocket

1、網路通訊協議是什麼?

2、TCP協議和UDP協議有什麼區別?

3、Socket類和ServerSocket類各有什麼作用?

1、在Internet中傳輸資料都需要遵守一定的規則,這種規則通常被稱作網路通訊協議。網路通訊協議對資料傳輸格式、傳輸速率、傳輸步驟等作了統一規定,通訊雙方必須共同遵守這個規定才能完成資料的互動。到目前為止,網路通訊協議已經有很多種,其中TCP/IP協議在世界範圍內應用最為廣泛。

2、UDP協議是無連線通訊協議,所謂的無連線就是指資料的傳送端和接收端不建立邏輯連線。由於UDP協議消耗資源小,通訊效率高,通常都會用於音訊、影片和普通資料的傳輸。UDP協議在傳輸資料時不能保證資料的完整性,因此在傳輸重要資料時不建議使用UDP協議。 TCP協議是面向連線的通訊協議,即在傳輸資料前先在傳送端和接收端建立邏輯連線,然後再傳輸資料,它提供了兩臺計算機之間可靠無差錯的資料傳輸。在TCP連線中必須要明確客戶端與伺服器端,由客戶端向服務端發出連線請求,每次連線的建立都需要經過“三次握手”。

3、ServerSocket類用於建立服務端程式,透過呼叫ServerSocket物件的accept()方法,接收來自客戶端的請求。 Socket類用於建立客戶端程式,當客戶端和服務端的兩個Socket建立了專線連線後,連線的一端既能向另一端連續寫入位元組,也能從另一端讀取位元組。Socket類中定義了getInputStream()方法返回Socket的輸入流物件,定義了getOutputStream()

方法返回Socket的輸出流物件。只要連線的一端向該輸出流物件寫入了資料,連線的另一端就能從其輸入流物件中讀取到。

文章到這裡就結束了!

總結

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 程式設計師架構修煉:架構設計,可伸縮設計與可擴充套件性設計