java高級筆試面試題(java高級面試題目)

本文目錄一覽:

java中一些常見的面試比較題

JAVA 面試題匯總

一、 JAVA 基礎知識

1、面向對象的特徵有哪些方面

1.抽象:

抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

2.繼承:

繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。

3.封裝:

封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。

4. 多態性:

多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

2、String 是最基本的數據類型嗎?

基本數據類型包括byte、int、char、long、float、double、boolean 和short。

java.lang.String 類是final 類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer 類

3、int 和 Integer 有什麼區別

Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int 是java 的原始數據類型,Integer是java 為int 提供的封裝類。Java 為每個原始類型提供了封裝類。

原始類型封裝類

booleanBoolean

charCharacter

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的預設值。對象引用實例變數的預設值為 null,而原始類型實例變數的預設值與它們的類型有關。

4、String 和StringBuffer 的區別

JAVA 平台提供了兩個類:String 和StringBuffer,它們可以儲存和操作字元串,即包含多個字元的字元數據。這個String 類提供了數值不可改變的字元串。而這個StringBuffer 類提供的字元串進行修改。當你知道字元數據要改變的時候你就可以使用StringBuffer 。典型地,你可以使用

StringBuffers 來動態構造字元數據。

5、運行時異常與一般異常有何異同?

異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

6、說出Servlet 的生命周期,並說出Servlet 和CGI 的區別。

Servlet 被伺服器實例化後,容器運行其init 方法,請求到達時運行其service 方法,service 方法自動派遣運行與請求對應的doXXX 方法(doGet,doPost)等,當伺服器決定將實例銷毀的時候調用其destroy 方法。與cgi 的區別在於servlet 處於伺服器進程中,它通過多線程方式運行其service 方法,一個實例可以服務於多個請求,並且其實例一般不會銷毀,而CGI 對每個請求都產生新的進程,服務完成後就銷毀,所以效率上低於servlet。

7、說出ArrayList,Vector, LinkedList 的存儲性能和特性

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

8、EJB 是基於哪些技術實現的?並說出SessionBean 和EntityBean 的區別,StatefulBean 和 StatelessBean 的區別。

EJB 包括Session Bean、Entity Bean、Message Driven Bean,基於JNDI、RMI、JAT 等技術實現。SessionBean 在J2EE 應用程序中被用來完成一些伺服器端的業務操作,例如訪問資料庫、調用其他EJB 組件。EntityBean 被用來代表應用系統中用到的數據。

對於客戶機,SessionBean 是一種非持久性對象,它實現某些在伺服器上運行的業務邏輯。對於客戶機,EntityBean 是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業應用程序實現的實體。

Session Bean 還可以再細分為 Stateful Session Bean 與 Stateless Session Bean ,這兩種的 Session Bean 都可以將系統邏輯放在 method 之中執行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態,因此通常來說,一個使用者會有一個相對應的 Stateful Session Bean 的實體。Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候, EJB Container 並不會找尋特定的 Stateless Session Bean 的實體來執行這個 method。換言之,很可能數個使用者在執行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執行。從內存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優勢卻在於他可以維持使用者的狀態。

9、Collection 和 Collections 的區別。

Collection 是集合類的上級介面,繼承與他的介面主要有Set 和List.

Collections 是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。

10、和的區別。

是位運算符,表示按位與運算,是邏輯運算符,表示邏輯與(and)。

11、HashMap 和Hashtable 的區別。

HashMap 是Hashtable 的輕量級實現(非線程安全的實現),他們都完成了Map 介面,主要區別在於 HashMap 允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。

HashMap 允許將null 作為一個entry 的key 或者value,而Hashtable 不允許。

HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因為contains方法容易讓人引起誤解。Hashtable 繼承自Dictionary 類,而HashMap 是Java1.2 引進的Map interface 的一個實現。最大的不同是,Hashtable 的方法是Synchronize 的,而HashMap 不是,在多個線程訪問Hashtable,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。Hashtable 和HashMap 採用的hash/rehash 演算法都大概一樣,所以性能不會有很大的差異。

12、final, finally, finalize 的區別。

final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally 是異常處理語句結構的一部分,表示總是執行。

finalize 是Object 類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。

final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract 的,又被聲明為final 的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final 的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final 的方法也同樣只能使用,不能重載。finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。

finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

13、sleep() 和 wait() 有什麼區別?

sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動恢復。調用sleep 不會釋放對象鎖。

wait 是Object 類的方法,對此對象調用wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify 方法(或notifyAll)後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)「醒來」的線程具有更高的優先順序 (b)正在運行的線程因為其它原因而阻塞。wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。

14、Overload 和Override 的區別。Overloaded 的方法是否可以改變返回值的類型?

方法的重寫Overriding 和重載Overloading 是Java 多態性的不同表現。重寫Overriding 是父類與子類之間多態性的一種表現,重載Overloading 是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被「屏蔽」了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded 的方法是可以改變返回值的類型。

15、error 和exception 有什麼區別?

error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

16、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。

如果數據將在線程間共享。例如正在寫的數據以後可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那麼這些數據就是共享數據,必須進行同步存取。

當應用程序在對象上調用了一個需要花費很長時間來執行的方法,並且不希望讓程序等待方法的返回時,就應該使用非同步編程,在很多情況下採用非同步途徑往往更有效率。

17、abstract class 和interface 有什麼區別?

聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final 成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類 型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面。

18、heap 和stack 有什麼區別。

棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。堆是棧的一個組成元素

19、forward 和redirect 的區別

forward 是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL 的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。

redirect 就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request 參數都可以獲取。

20、EJB 與JAVA BEAN 的區別?

Java Bean 是可復用的組件,對Java Bean 並沒有嚴格的規範,理論上講,任何一個Java 類都可以是一個Bean。但通常情況下,由於Java Bean 是被容器所創建(如Tomcat)的,所以Java Bean 應具有一個無參的構造器,另外,通常Java Bean 還要實現Serializable 介面用於實現Bean 的持久性。Java Bean 實際上相當於微軟COM 模型中的本地進程內COM 組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當於DCOM,即分散式組件。它是基於Java 的遠程方法調用(RMI)技術的,所以EJB 可以被遠程訪問(跨進程、跨計算機)。但EJB 必須被布署在諸如Webspere、WebLogic 這樣的容器中,EJB 客戶從不直接訪問真正的EJB 組件,而是通過其容器訪問。EJB 容器是EJB 組件的代理,EJB 組件由容 器所創建和管理。客戶通過容器來訪問真正的EJB 組件。

21、Static Nested Class 和 Inner Class 的不同。

Static Nested Class 是被聲明為靜態(static)的內部類,它可以不依賴於外部類實例被實例化。而通常的內部類需要在外部類實例化後才能實例化。

22、JSP 中動態INCLUDE 與靜態INCLUDE 的區別?

動態INCLUDE 用jsp:include 動作實現 jsp:include page=”included.jsp” flush=”true”/它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數。

靜態INCLUDE 用include 偽碼實現, 定不會檢查所含文件的變化, 適用於包含靜態頁面

%@ include file=”included.htm” %

23、什麼時候用assert。

assertion(斷言)在軟體開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion 就是在程序中的一條語句,它對一個boolean 表達式進行檢查,一個正確程序必須保證這個boolean 表達式的值為true;如果該值為false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion 用於保證程序最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高性能,在軟體發布後,assertion 檢查通常是關閉的。斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 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 標記。還可以在包的基礎上啟用或者禁用斷言。可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管 是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序 的狀態。

24、GC 是什麼? 為什麼要有GC?

GC 是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java 提供的GC 功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java 語言沒有提供釋放已分配內存的顯示操作方法。

25、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是int 型,需要強制轉換類型)

short s1 = 1; s1 += 1;(可以正確編譯)

26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)==12

Math.round(-11.5)==-11

round 方法返回與參數最接近的長整數,參數加1/2 後求其floor.

27、String s = new String(“xyz” ;創建了幾個String Object?

兩個對象,一個是「xyx」,一個是指向「xyz」的引用對象s。

28、如果系統要使用超大整數(超過long 長度範圍),請你設計一個數據結構來存儲這種超大型數字

以及設計一種演算法來實現超大整數加法運算)。

public class BigInt()

{

int[] ArrOne = new ArrOne[1000];

String intString=””;

public int[] Arr(String s)

{

intString = s;

for(int i=0;iArrOne.leght;i++)

29、Java 有沒有goto?

java 中的保留字,現在沒有在java 中使用。

30、啟動一個線程是用run()還是start()?

啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM

調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標誌來停止一個線程。

java面試題

1. List 以特定次序來持有元素,可有重複元素。 Set 無法擁有重複元素 , 內 部

排序。 Map 保存 key-value 值, value 可多值。

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

3.try 用來指定一塊預防所有 「 異常 」 的程序;

catch 子句緊跟在 try 塊後面,用來指定你想要捕捉的 「 異常 」 的類型;

throw 語句用來明確地拋出一個 「 異常 」 ;

throws 用來標明一個成員函數可能拋出的各種 「 異常 」 ;

Finally 為確保一段代碼不管發生什麼 「 異常 」 都被執行一段代碼;

可以在一個成員函數調用的外面寫一個 try 語句,在這個成員函數內部寫另 一

個 try 語句保護其他代碼。每當遇到一個 try 語句, 「 異常 」 的框架就放到堆 棧

上面,直到所有的 try 語句都完成。如果下一級的 try 語句沒有對某種 「 異常 」

進行處理,堆棧就會展開,直到遇到有處理這種 「 異常 」 的 try 語句。

4. Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在 Java 中,每個異常都是一個對象,它是 Throwable 類或其它子類的實例。當一個方法出現異常後便拋出一個異常對象,該對象中包含 有異常信息,調用這個對象的方法可以捕獲到這個異常並進行處理。 Java 的異常處理是通過 5 個關鍵詞來實現的: try 、 catch 、 throw 、 throws 和 finally 。一般情況下是用 try 來執行一段程序,如果出現異常,系統會拋出( throws )一 個異常,這時候你可以通過它的類型來捕捉( catch )它,或最後( finally )由 預設處理器來處理。

求最新JAVA面試題目,越全越好!!!

Java面試不光有面試也會有筆試,為了讓java應聘筆試題能順利通過,中公優就業·浙江IT培訓的小U老師整理了一些java筆試題及答案分享給大家,準備或將要參加java面試的朋友可以仔細閱讀,爭取一次通過,進去自己心儀的企業工作。

一、九道選擇題

1.Java程序的種類有(BCD )

A.類(Class) B.Applet C.Application D.Servlet

2.下列說法正確的有( BCD)

A. 環境變數可在編譯source code時指定

B. 在編譯程序時,所能指定的環境變數不包括class path

C. javac一次可同時編譯數個Java源文件

D. javac.exe能指定編譯結果要置於哪個目錄(directory)

3.下列標識符不合法的有( ACD)

A.new B.$Usdollars C.1234 D.car.taxi

4.下列說法錯誤的有( BCD)

A. 數組是一種對象

B. 數組屬於一種原生類

C. int number=={31,23,33,43,35,63}

D. 數組的大小可以任意改變

5.不能用來修飾interface的有(ACD )

A.private B.public C.protected D.static

6.下列正確的有(ACD )

A. call by value不會改變實際參數的數值

B. call by reference能改變實際參數的參考地址

C. call by reference不能改變實際參數的參考地址

D. call by reference能改變實際參數的內容

7.下列說法錯誤的有( ACD)

A. 在類方法中可用this來調用本類的類方法

B. 在類方法中調用本類的類方法時可直接調用

C. 在類方法中只能調用本類中的類方法

D. 在類方法中絕對不能調用實例方法

8.下列說法錯誤的有(ABC )

A. Java面向對象語言容許單獨的過程與函數存在

B. Java面向對象語言容許單獨的方法存在

C. Java語言中的方法屬於類中的成員(member)

D. Java語言中的方法必定隸屬於某一類(對象),調用方法與過程或函數相同

9.下列說法錯誤的有(BCD )

A. 能被java.exe成功運行的java class文件必須有main方法

B. J2SDK就是Java API

C. Appletviewer.exe可利用jar選項運行.jar文件

D. 能被Appletviewer成功運行的java class文件必須有main方法

二、六道簡答題

1、在java中如果聲明一個類為final,表示什麼意思?

答:final是最終的意思,final可用於定義變數、方法和類但含義不同,聲明為final的類不能被繼承。

2、父類的構造方法是否可以被子類覆蓋(重寫)?

答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。

3、請講述String 和StringBuffer的區別。

答:String 類所定義的對象是用於存放「長度固定」的字元串。

StringBuffer類所定義的對象是用於存放「長度可變動」的字元串。

4、如果有兩個類A、B(注意不是介面),你想同時使用這兩個類的功能,那麼你會如何編寫這個C類呢?

答:因為類A、B不是介面,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那麼C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。

5、結合Java視頻Lesson5(多線程),分析sleep()和wait()方法的區別。

答: Sleeping睡眠的意思 : sleep() 方法用來暫時中止執行的線程。在睡眠後,線程將進入就緒狀態。

waiting等待的意思: 如果調用了 wait() 方法,線程將處於等待狀態。用於在兩個或多個線程並發運行時。

6、談談你對抽象類和介面的理解。

答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。

介面:一個介面允許一個類從幾個介面繼承而來,Java

程序一次只能繼承一個類但可以實現幾個介面,介面不能有任何具體的方法,介面也可用來定義可由類使用的一組常量。其實現方式是interface來實現。

以上就是小U老師整理的2018java筆試題及答案,關於java應聘筆試題還有很多,後期小編會及時整理更新更多java應聘筆試題,準備參加java面試的朋友可以仔細研究題目,做好充分的準備參加每一場面試,祝你成功!

JAVA面試題求大神幫忙,給滿分100分

1: D | javac 命令編譯指定類和該類依賴的類。編譯後的文件為二進位文件class

2:C

3:B

4:C | IOException,runtimeException 編譯時不要求強行處理,只在運行期發生。IOException編譯時強行要求處理,繼承自Exception

5:B | Set無序隊列,用get(index)游標無法獲取

6:C

7:A | 不使用關鍵字相當於default

8:D | 二進位演算法 11為 111 | 10 = 111(只要有一個是1就是1) 也就是11

9: C | ”表示位元組char。”/u0020″ 是Unico的空格編碼

10:B

1、    public static Object[] arraySubtract(Object[] array1, Object[] array2) {

        ArrayListObject list = new ArrayListObject();

        //選出屬於數組1但不屬於數組2的元素

        for(int i = 0; i  array1.length; ++i) {

            boolean bContained = false;

            for(int j = 0; j  array2.length; ++j) {

                if (array1[i].equals(array2[j])) {

                    bContained = true;

                    break;

                }

            }

            if (!bContained) {

                list.add(array1[i]);

            }

        }

         

        Object res[] = new Object[list.size()];

        for(int i = 0; i  list.size(); ++i)

            res[i] = list.get(i);

        return res;

    }

    

2、

    int count(int n)

    {

        int result = 0;

        for (int i = 1; i  n; i++)

        {

            result += i;

        }

        return result;

    }

3、select * from A where name in (select name from A group by name having count(name)  1)

JAVA面試題

解決思路: 你可以把每一個任務理解成一個一個的點, 然後把前提條件理解成 每個點之間的連接因素 . 代碼需要實現的功能就是, 用 連接因素 把所有的點 連接在一起, 如果能連接成一個整體 , 那麼就是 可以完成所有任務 , 如果不能連接在一起 , 那麼就不能完成所有任務。

代碼:

import java.util.*;

public class MyTest {

public static void main(String[] args) {

int[] tasks = {1,2,3,4,5,6,7,8}; //任務

String[] terms = {“[1,0]”,”[1,2]”,”[2,3]”,”[5,7]”,”[3,4]”,”[4,5]”,”[0,8]”,”[2,6]”};

parseTerms(terms);

MapInteger,Object taskMap = new HashMap();

int[] is = parseStr(terms[0]);

taskMap.put(is[0],new Object());

taskMap.put(is[1],new Object());

calc(taskMap);

boolean isOk = true;

for(int task : tasks){

if(taskMap.get(task)==null){

isOk = false;

break;

}

}

System.out.println(“可以完成的任務是:”+taskMap.keySet());

System.out.println(“是否可以完成所有任務:”+isOk);

}

public static void calc(MapInteger,Object taskMap){

while(true) {

boolean isHave = false;

for (Integer key : new ArrayList(taskMap.keySet())) {

Iteratorint[] items = terms.iterator();

while (items.hasNext()) {

int[] is = items.next();

if (key == is[0] || key == is[1]) {

taskMap.put(is[1], new Object());

taskMap.put(is[0], new Object());

isHave = true;

items.remove();

}

}

}

if(!isHave){

break;

}

}

}

public static int[] parseStr(String s){

s = s.substring(1,s.length()).substring(0,s.length()-2);

return new int[]{Integer.parseInt(s.split(“,”)[0]),Integer.parseInt(s.split(“,”)[1])};

}

static Listint[] terms = new ArrayList();

public static void parseTerms(String[] terms){

for(String s : terms){

int[] is = parseStr(s);

MyTest.terms.add(is);

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/305260.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:07
下一篇 2025-01-01 11:07

相關推薦

  • Python元祖排序:從基礎知識到高級應用

    Python元祖是一種不可變序列,通常用於將一組數據綁定在一起。元祖之間經常需要排序,本文將從基礎知識到高級應用,為你詳細講解Python元祖排序。 一、排序方法 Python提供…

    編程 2025-04-28
  • Python課程設計題目用法介紹

    Python是一門高級、面向對象的編程語言,廣泛應用於Web應用程序開發、人工智慧、數據科學、自動化測試等領域。Python基礎課程學習是每個Python學習者必須經歷的階段,而P…

    編程 2025-04-27
  • Isodata演算法算高級演算法嗎?

    是的,Isodata演算法算得上是一種高級演算法。 一、Isodata演算法的定義 Isodata演算法是一種基於聚類的圖像分割演算法,廣泛應用於圖像處理領域。 該演算法首先對圖像進行預處理,…

    編程 2025-04-27
  • Python高級用法:re.split函數雙空格

    本文將詳細介紹Python中re模塊中的split函數雙空格的用法及其應用場景。 一、split函數雙空格概述 re.split() 是 Python re(正則表達式) 模塊中的…

    編程 2025-04-27
  • 源碼審計面試題用法介紹

    在進行源碼審計面試時,可能會遇到各種類型的問題,本文將以實例為基礎,從多個方面對源碼審計面試題進行詳細闡述。 一、SQL注入 SQL注入是常見的一種攻擊方式,攻擊者通過在輸入的參數…

    編程 2025-04-27
  • Mybatisplus面試題詳解

    Mybatisplus是在Mybatis的基礎上進行的封裝,它為我們簡化了開發操作,提供了自動生成常用SQL,自動分頁,及其他一些常用操作的功能,大大提高了開發的效率。在本篇文章中…

    編程 2025-04-25
  • uniapp面試題解析

    一、uniapp簡介 uniapp是一種基於vue.js框架的開源跨平台開發框架,可以讓開發者使用vue的語法在多個平台上進行一次編譯即可生成iOS、Android、Web和小程序…

    編程 2025-04-25
  • MySQL常見面試題

    一、基礎知識 1、MySQL的優點和缺點 MySQL是一個開源的關係型資料庫管理系統,擁有以下優點: (1)開源免費,可以節省成本; (2)支持多種操作系統; (3)易於使用和管理…

    編程 2025-04-24
  • Spring Cloud面試題詳解

    一、Spring Cloud簡介 Spring Cloud是基於Spring Boot的一系列框架,用於構建分散式系統的應用程序,可以很方便地提供眾多的微服務開發組件,比如註冊中心…

    編程 2025-04-23
  • axios面試題詳解

    一、axios簡介 axios是一個基於Promise的HTTP客戶端,可以用於瀏覽器和Node.js環境中發送請求。它具有以下幾個特點: 1、支持瀏覽器和Node.js //ax…

    編程 2025-04-23

發表回復

登錄後才能評論