導航:首頁 > 編程語言 > java面試資料庫

java面試資料庫

發布時間:2024-07-25 08:44:19

java面試中都會遇到哪些問題

JAVA面試精選題

各位準程序猿們,能不能找到一份好工作,就看你知不知道這,66道最基本的JAVA面試題,請耐心看完,說不定這10分鍾,會影響你一輩子

面試題NO.01-NO.05

問題:如果main方法被聲明為private會怎樣?

答案:能正常編譯,但運行的時候會提示」main方法不是public的」。

問題:Java里的傳引用和傳值的區別是什麼?

答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。

問題:如果要重寫一個對象的equals方法,還要考慮什麼?

答案:hashCode。

問題:Java的」一次編寫,處處運行」是如何實現的?

答案:Java程序會被編譯成位元組碼組成的class文件,這些位元組碼可以運行在任何平台,因此Java是平台獨立的。

問題:說明一下public static void main(String args[])這段聲明裡每個關鍵字的作用

答案:public: main方法是Java程序運行時調用的第一個方法,因此它必須對Java環境可見。所以可見性設置為pulic.

static: Java平台調用這個方法時不會創建這個類的一個實例,因此這個方法必須聲明為static。

void: main方法沒有返回值。

String是命令行傳進參數的類型,args是指命令行傳進的字元串數組。

面試題NO.06-NO.10

問題:==與equals的區別

答案:==比較兩個對象在內存里是不是同一個對象,就是說在內存里的存儲位置一致。兩個String對象存儲的值是一樣的,但有可能在內存里存儲在不同的地方 .

==比較的是引用而equals方法比較的是內容。public boolean equals(Object obj) 這個方法是由Object對象提供的,可以由子類進行重寫。默認的實現只有當對象和自身進行比較時才會返回true,這個時候和==是等價的。String, BitSet, Date, 和File都對equals方法進行了重寫,對兩個String對象 而言,值相等意味著它們包含同樣的字元序列。對於基本類型的包裝類來說,值相等意味著對應的基本類型的值一樣。


問題:如果去掉了main方法的static修飾符會怎樣?

答案:程序能正常編譯。運行時會拋NoSuchMethodError異常。

問題:為什麼oracle type4驅動被稱作瘦驅動?

答案:oracle提供了一個type 4 JDBC驅動,被稱為瘦驅動。這個驅動包含了一個oracle自己完全用Java實現的一個TCP/IP的Net8的實現,因此它是平台獨立的,可以在運行時由瀏覽器下載,不依賴任何客戶端 的oracle實現。客戶端連接字元串用的是TCP/IP的地址埠,而不是資料庫名的tnsname。

問題:介紹一下finalize方法

答案: final: 常量聲明。 finally: 處理異常。 finalize: 幫助進行垃圾回收。

介面里聲明的變數默認是final的。final類無法繼承,也就是沒有子類。這么做是出於基礎類型的安全考慮,比如String和Integer。這樣也使得編譯器進行一些優化,更容易保證線程的安全性。final方法無法重寫。final變數的值不能改變。finalize()方法在一個對象被銷毀和回收前會被調用。finally,通常用於異常處理,不管有沒有異常被拋出都會執行到。比如,關閉連接通常放到finally塊中完成。

問題:什麼是Java API?

答案:Java API是大量軟體組件的集合,它們提供了大量有用的功能,比如GUI組件。

面試題NO.11-NO.15

問題:GregorianCalendar類是什麼東西?

答案:GregorianCalendar提供了西方傳統日歷的支持。

問題:ResourceBundle類是什麼?

答案:ResourceBundle用來存儲指定語言環境的資源,應用程序可以根據運行時的語言環境來載入這些資源,從而提供不同語言的展示。

問題:為什麼Java里沒有全局變數?

答案:全局變數是全局可見的,Java不支持全局可見的變數,因為:全局變數破壞了引用透明性原則。全局變數導致了命名空間的沖突。

問題:如何將String類型轉化成Number類型?

答案:Integer類的valueOf方法可以將String轉成Number。下面是代碼示例:


問題:SimpleTimeZone類是什麼?

答案:SimpleTimeZone提供公歷日期支持。


面試題NO.16-NO.20

問題:while循環和do循環有什麼不同?

答案:while結構在循環的開始判斷下一個迭代是否應該繼續。do/while結構在循環的結尾來判斷是否將繼續下一輪迭代。do結構至少會執行一次循環體。

問題:Locale類是什麼?

答案:Locale類用來根據語言環境來動態調整程序的輸出。

問題:面向對象編程的原則是什麼?

答案:主要有三點,多態,繼承和封裝。

問題:介紹下繼承的原則

答案:繼承使得一個對象可以獲取另一個對象的屬性。使用繼承可以讓已經測試完備的功能得以復用,並且可以一次修改,所有繼承的地方都同時生效。

問題:什麼是隱式的類型轉化?

答案:隱式的類型轉化就是簡單的一個類型賦值給另一個類型,沒有顯式的告訴編譯器發生了轉化。並不是所有的類型都支持隱式的類型轉化。

代碼示例:


面試題NO.21-NO.25

問題:sizeof是Java的關鍵字嗎?

答案:不是。

問題:native方法是什麼?

答案:native方法是非Java代碼實現的方法。

問題:在System.out.println()裡面,System, out, println分別是什麼?

答案:System是系統提供的預定義的final類,out是一個PrintStream對象,println是out對象裡面一個重載的方法。

問題:封裝,繼承和多態是什麼?

答案:簡單來說,多態是指一個名字多種實現。多態使得一個實體通過一個通用的方式來實現不同的操作。具體的操作是由實際的實現來決定的。

多態在Java里有三種表現方式:方法重載通過繼承實現方法重寫通過Java介面進行方法重寫。

問題:顯式的類型轉化是什麼?

答案:顯式的類型轉化是明確告訴了編譯器來進行對象的轉化。

代碼示例:


面試題NO.26-NO.30

問題:什麼是Java虛擬機?

答案:Java虛擬機是能移植到不同硬體平台上的軟體系統。

問題:類型向下轉換是什麼?

答案:向下轉換是指由一個通用類型轉換成一個具體的類型,在繼承結構上向下進行。

問題:Java的訪問修飾符是什麼?

答案:訪問許可權修飾符是表明類成員的訪問許可權類型的關鍵字。使用這些關鍵字來限定程序的方法或者變數的訪問許可權。它們包含:

public: 所有類都可以訪問 protected: 同一個包內以及所有子類都可以訪問 private: 只有歸屬的類才能訪問默認: 歸屬類及相同包下的子類可以訪問。

問題:所有類的父類是什麼?

答案:Object.

問題:Java的基本類型有哪些?

答案:byte,char, short, int, long, float, double, boolean。

面試題NO.31-NO.40

問題:靜態類型有什麼特點?

答案:靜態變數是和類綁定到一起的,而不是類的實例對象。每一個實例對象都共享同樣一份靜態變數。也就是說,一個類的靜態變數只有一份,不管它有多少個對象。類變數或者說靜態變數是通過static這個關鍵字來聲明的。類變數通常被用作常量。靜態變數通常通過類名字來進行訪問。當程序運行的時候這個變數就會創建直到程序結束後才會被銷毀。類變數的作用域和實例變數是一樣的。它的初始值和成員變數也是一樣的,當變數沒被初始化的時候根據它的數據類型,會有一個默認值。類似的,靜態方法是屬於類的方法,而不是類對象,它的調用並不作用於類對象,也不需要創建任何的類實例。靜態方法本身就是final的,因為重寫只會發生在類實例上,靜態方法是和類綁定在一起的,不是對象。父類的靜態方法會被子類的靜態方法屏蔽,只要原來方法沒有聲明為final。非靜態方法不能重寫靜態方法,也就是說,你不能在子類中把一個靜態方法改成實例方法。

非靜態變數在每一個對象實例上都有單獨的一份值。

問題:&操作符和&&操作符有什麼區別?

答案:當一個&表達式在求值的時候,兩個操作數都會被求值,&&更像是一個操作符的快捷方式。當一個&&表達式求值的時候,先計算第一個操作數,如果它返回true才會計算第二個操作數。如果第一個操作數取值為fale,第二個操作數就不會被求值。

問題:Java是如何處理整型的溢出和下溢的?

答案:Java根據類型的大小,將計算結果中的對應低階位元組存儲到對應的值裡面。

問題:public static void寫成static public void會怎樣?

答案:程序正常編譯及運行。

問題,聲明變數和定義變數有什麼不同?

答案:聲明變數我們只提供變數的類型和名字,並沒有進行初始化。定義包括聲明和初始化兩個階段String s;只是變數聲明,String s = new String(「bob」); 或者String s = 「bob」;是變數定義。

面試題NO.41-NO.45

問題:Java支持哪種參數傳遞類型?

答案:Java參數都是進行傳值。對於對象而言,傳遞的值是對象的引用,也就是說原始引用和參數引用的那個拷貝,都是指向同一個對象。

問題:對象封裝的原則是什麼?

答案:封裝是將數據及操作數據的代碼綁定到一個獨立的單元。這樣保障了數據的安全,防止外部代碼的錯誤使用。對象允許程序和數據進行封裝,以減少潛在的干涉。對封裝的另一個理解是作為數據及代碼的保護層,防止保護層外代碼的隨意訪問。

問題:你怎麼理解變數?

答案:變數是一塊命名的內存區域,以便程序進行訪問。變數用來存儲數據,隨著程序的執行,存儲的數據也可能跟著改變。

問題:數值提升是什麼?

答案:數值提升是指數據從一個較小的數據類型轉換成為一個更大的數據類型,以便進行整型或者浮點型運算。在數值提升的過程中,byte,char,short值會被轉化成int類型。需要的時候int類型也可能被提升成long。long和float則有可能會被轉換成double類型。

問題:Java的類型轉化是什麼?

答案:從一個數據類型轉換成另一個數據類型叫做類型轉換。Java有兩種類型轉換的方式,一個是顯式的類型轉換,一個是隱式的。

面試題NO.46-NO.50

問題:main方法的參數裡面,字元串數組的第一個參數是什麼?

答案:數組是空的,沒有任何元素。不像C或者C++,第一個元素默認是程序名。如果命令行沒有提供任何參數的話,main方法中的String數組為空,但不是null。

問題:怎麼判斷數組是null還是為空?

答案:輸出array.length的值,如果是0,說明數組為空。如果是null的話,會拋出空指針異常。

問題:程序中可以允許多個類同時擁有都有main方法嗎?

答案:可以。當程序運行的時候,我們會指定運行的類名。JVM只會在你指定的類中查找main方法。因此多個類擁有main方法並不存在命名沖突的問題。

問題:靜態變數在什麼時候載入?編譯期還是運行期?靜態代碼塊載入的時機呢?

答案:當類載入器將類載入到JVM中的時候就會創建靜態變數,這跟對象是否創建無關。靜態變數載入的時候就會分配內存空間。靜態代碼塊的代碼只會在類第一次初始化的時候執行一次。一個類可以有多個靜態代碼塊,它並不是類的成員,也沒有返回值,並且不能直接調用。靜態代碼塊不能包含this或者super,它們通常被用初始化靜態變數。

問題:一個類能擁有多個main方法嗎?

答案:可以,但只能有一個main方法擁有以下簽名:


否則程序將無法通過編譯。編譯器會警告你main方法已經存在。

面試題NO.51-NO.60

問題:簡單的介紹下JVM是如何工作的?

答案:JVM是一台抽象的計算機,就像真實的計算機那樣,它們會先將.java文件編譯成.class文件(.class文件就是位元組碼文件),然後用它的解釋器來載入位元組碼。

問題:如果原地交換兩個變數的值?

答案:先把兩個值相加賦值給第一個變數,然後用得到的結果減去第二個變數,賦值給第二個變數。再用第一個變數減去第二個變數,同時賦值給第一個變數。代碼如下:


使用異或操作也可以交換。第一個方法還可能會引起溢出。異或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;


問題:什麼是數據的封裝?

答案:數據封裝的一種方式是在類中創建set和get方法來訪問對象的數據變數。一般來說變數是private的,而get和set方法是public的。封裝還可以用來在存儲數據時進行數據驗證,或者對數據進行計算,或者用作自省(比如在struts中使用javabean)。把數據和功能封裝到一個獨立的結構中稱為數據封裝。封裝其實就是把數據和關聯的操作方法封裝到一個獨立的單元中,這樣使用關聯的這些方法才能對數據進行訪問操作。封裝提供的是數據安全性,它其實就是一種隱藏數據的方式。

問題:什麼是反射API?它是如何實現的?

答案:反射是指在運行時能查看一個類的狀態及特徵,並能進行動態管理的功能。這些功能是通過一些內建類的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以獲取到類名。

問題:JVM自身會維護緩存嗎,是不是在堆中進行對象分配,操作系統的堆還是JVM自己管理的堆?為什麼?

答案:是的,JVM自身會管理緩存,它在堆中創建對象,然後在棧中引用這些對象。

面試題NO.61-NO.66

問題:虛擬內存是什麼?

答案:虛擬內存又叫延伸內存,實際上並不存在真實的物理內存。

問題:方法可以同時即是static又是synchronized的嗎?

答案:可以。如果這樣做的話,JVM會獲取和這個對象關聯的java.lang.Class實例上的鎖。這樣做等於:


問題:String和StringTokenizer的區別是什麼?

答案:StringTokenizer是一個用來分割字元串的工具類。


問題:transient變數有什麼特點?

答案:transient變數不會進行序列化。例如一個實現Serializable介面的類在序列化到ObjectStream的時候,transient類型的變數不會被寫入流中,同時,反序列化回來的時候,對應變數的值為null。

問題:哪些容器使用Border布局作為它們的默認布局?

答案:Window, Frame, Dialog。

問題:怎麼理解什麼是同步?

答案:同步用來控制共享資源在多個線程間的訪問,以保證同一時間內只有一個線程能訪問到這個資源。在非同步保護的多線程程序裡面,一個線程正在修改一個共享變數的時候,可能有另一個線程也在使用或者更新它的值。同步避免了臟數據的產生。

以上回答轉載自求職類公眾號圈裡求職,裡面還有更多求職面試經,程序猿也要學起來~

⑵ java面試中redis,mongodb類的,會問哪些問題,怎麼回答

1、可能會問nosql和關系型資料庫的區別:
優點:

1)成本:nosql資料庫簡單易部署,基本都是開源軟體,不需要像使用Oracle那樣花費大量成本購買使用,相比關系型資料庫價格便宜
2)查詢速度:nosql資料庫將數據存儲於緩存之中,關系型資料庫將數據存儲在硬碟中,自然查詢速度遠不及nosql資料庫
3)存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎類型以及對象或者是集合等各種格式,而資料庫則只支持基礎類型
4)擴展性:關系型資料庫有類似join這樣的多表查詢機制的限制導致擴展很艱難
缺點:
1)維護的工具和資料有限,因為nosql是屬於新的技術,不能和關系型資料庫10幾年的技術同日而語。
2)不提供對sql的支持,如果不支持sql這樣的工業標准,將產生一定用戶的學習和使用成本
3)不提供關系型資料庫對事物的處理
2、介紹下redis和mongodb:
自行google。
3、應用場景:
redis:
a.主要是做熱點數據緩存。
b.數據過期處理。
c.消息隊列等功能。

d.計數,例如投票等。
mongodb:
mongodb的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢於一身。mongo適用於以下場景:
a.網站數據:mongo非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。
b.緩存:由於性能很高,mongo也適合作為信息基礎設施的緩存層。在系統重啟之後,由mongo搭建的持久化緩存可以避免下層的數據源過載。
c.大尺寸、低價值的數據:使用傳統的關系資料庫存儲一些數據時可能會比較貴,在此之前,很多程序員往往會選擇傳統的文件進行存儲。
d.高伸縮性的場景:mongo非常適合由數十或者數百台伺服器組成的資料庫。
e.用於對象及JSON數據的存儲:mongo的BSON數據格式非常適合文檔格式化的存儲及查詢。
4、支持的數據類型:
內容比較多,自行將網上的信息整理一下。

⑶ Java中每個資料庫的優勢是什麼

提及資料庫類型,人們先想到的是SQL,不過隨著大規模數據集合多重數據種類帶來的挑戰,NoSQL應運而生。專業人士分析,隨著雲計算、物聯網以及大數據的進一步發展,NewSQL將成為未來資料庫的主角。
SQL
SQL是Structured Query Language(結構化查詢語言)的縮寫,是傳統的關系型資料庫、資料庫領域主流模型,經典應用在金融和電信行業,確保資料庫的數據不會出錯和丟失。而SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持SQL。
NoSQL
NoSQL泛指非關系型的資料庫,它的產生就是為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。NoSQL的強項是特別適合處理大量分布式數據,與傳統的關系型資料庫相比,NoSQL資料庫為軟體開發人員及其他用戶提供了更快的速度和更高的靈活性。目前在市場上有超過24個開源和商業NoSQL資料庫。
NewSQL
NewSQL是指一類新式的關系型資料庫系統,針對OLTP(讀-寫)工作負載,追求提供和NoSQL系統相同的擴展性能,且仍然保持ACID和SQL等特性。對企業而言,使用NewSQL不僅免去傳統數據倉庫的ETL過程,降低存儲成本的同時極大的縮短數據分析的延遲,使得實時分析決策系統成為可能。
MySQL
優點:
體積小、速度快、總體擁有成本低,開源;
支持多種操作系統;
是開源資料庫,提供的介面支持多種語言連接操作 ;
SqlServer
優點:
易用性、適合分布式組織的可伸縮性、用於決策支持的數據倉庫功能、與許多其他伺服器軟體緊密關聯的集成性、良好的性價比等;
Oracle
優點:
開放性: Oracle 能所有主流平台上運行(包括 windows)完全支持所有工業標准採用完全開放策略使客戶選擇適合解決方案對開發商全力支持。
可伸縮性,並行性:oracle 並行伺服器通過使組結點共享同簇工作來擴展windownt能力提供高用性和高伸縮性簇解決方案windowsNT能滿足需要用戶把資料庫移UNIXOracle並行伺服器對各種UNIX平台集群機制都有著相當高集成度。
以上我的回答希望對你有所幫助

⑷ Java涓濡備綍涓庢暟鎹搴撳緩絝嬭繛鎺(java鎬庝箞涓庢暟鎹搴撹繛鎺)

瀵煎叆java.sql鍖

涓銆佸姞杞借佽繛鎺ユ暟鎹搴撶殑椹卞姩紼嬪簭

//Jdbc-Odbc妗ュ拰MicrosoftAess鏁版嵁搴

Class.forName("sun.jdbc.odbc.");

//SQLServer椹卞姩紼嬪簭:

Class.forName("com.microsoft.jdbc.sqlserver.");

娉錛欳lass.forName()鏂規硶灝嗙粰瀹氱殑綾誨姞杞藉埌JVM錛屽傛灉緋葷粺涓涓嶅瓨鍦ㄧ粰瀹氱殑綾伙紝鍒欎細寮曞彂寮傚父

浜屻侀氳繃椹卞姩紼嬪簭綆$悊鍣ㄥ緱鍒拌繛鎺ュ疄渚

Connectionconn=null;

//1.

//1.1寤虹珛鏁版嵁婧

conn=.("jdbc:odbc:");//鏄鏁版嵁婧愬悕縐

//1-2銆佷笉寤虹珛鏁版嵁婧

conn=.("jdbc:odbc:;Driver=MicrosoftAessDriver(*.mdb);DBQ=C:VBTest.mdb");

//2.SQLServer

conn=.("jdbc:microsoft:sqlserver://127.0.0.1:1433;=mydb","sa","");

娉錛氱被璺熻釜宸叉敞鍐岀殑椹卞姩紼嬪簭錛岄氳繃(URL)鏂規硶,鎵懼埌涓涓鑳藉熻繛鎺ヨ嚦URL涓鎸囧畾鐨勬暟鎹搴撻┍鍔ㄧ▼搴

瀹冩帴鏀朵笁涓鍙傛暟,鍒嗗埆琛ㄧず1鏁版嵁婧愮殑鍚嶇О銆佺被鍨2鐢ㄦ埛鍚嶏紙鍙閫夛級3瀵嗙爜錛堝彲閫夛級

涓夈佸熀浜庤繛鎺ュ硅薄寤虹珛澶勭悊鍣ㄥ硅薄

Statementstmt=conn.();

鍥涖佸噯澶噑ql鍛戒護

Stringsql="select*fromStudent";

浜斻佹墽琛屽懡浠よ繑鍥炵粨鏋滈泦

ResultSetrs=stmt.(sql);

鍏銆佹樉紺虹粨鏋滈泦

while(rs.next())//鍙瑕佸悗闈㈡湁璁板綍

{

//瀵瑰綋鍓嶈岀殑鎵鏈夊瓧孌甸亶鍘

for(inti=1;i<=rs.getMetaData().();i)

{

System.out.print(rs.getMetaData().getColumnName(i)":");//鏄劇ず瀛楁靛悕

System.out.println(rs.getString(i));//鏄劇ず瀛楁靛綋鍓嶅

}

System.out.println();

}

涓冦佸叧闂璧勬簮

rs.close();//鍏抽棴璁板綍闆

stmt.close();//鍏抽棴澶勭悊鍣ㄥ硅薄

conn.close();//鍏抽棴榪炴帴瀵硅薄

棰勫勭悊鍣ㄧ殑搴旂敤錛

//3.鍩轟簬榪炴帴瀵硅薄寤虹珛棰勫勭悊鍣ㄥ硅薄

PreparedStatementpstmt=conn.prepareStatement("insertintostudentvalues(?,?,?,?)");

//4.緇欓勫勭悊瀵硅薄鐨勫弬鏁拌祴鍊

pstmt.setString(1,"8888");

pstmt.setString(2,"nemo");

pstmt.setString(3,"ap");

pstmt.setString(4,"sanxianglu");

//5.鎵ц岄勫勭悊鍛戒護

inti=pstmt.executeUpdate();

System.out.println(i"鏉¤板綍宸叉垚鍔熸彃鍏ワ紒");

⑸ 搴旇仒JAVA宸ョ▼甯,闈㈣瘯瀹樺父闂涓浜涗粈涔堥棶棰

闈㈣瘯鍟婏紝涓鑸涓嶄細闂澶鍏蜂綋鐨勯棶棰橈紝璇娉曚細鍦ㄧ瑪璇曢噷鑰冿紝鐒跺悗涓鑸闈㈣瘯鍒嗘妧鏈闈㈣瘯鍜岀患鍚堥潰璇曘備竴鑸鎯呭喌鏄錛屼綘榪囦簡絎旇瘯錛岀劧鍚庡幓鎶鏈闈㈣瘯錛岀劧鍚庣患鍚堥潰璇曘傛妧鏈闈㈣瘯瀹樹竴鑸鏄鎷跨潃浣犵殑綆鍘嗗拰絎旇瘯璇曞嵎錛屼竴寮濮嬩細闂浣犻偅浜涘啓閿欑殑鍦版柟銆傜劧鍚庨棶浣犳湁浠涔堥」鐩緇忛獙錛屽傛灉鏈夛紝浼氳拷闂欏圭洰鐨勭嶇嶏紝姣斿備綘寮鍙戜簡涓涓鍥句功棣嗕俊鎮綆$悊緋葷粺錛屼細闂浣犵敤浜嗕粈涔堟嗘灦錛屾瘮濡備綘璇寸敤浜唖truts錛岀劧鍚庝粬浼氶棶浣爏truts鐨勫熀鏈鍘熺悊錛屼綘澶ц嚧璁蹭竴涓嬪箂truts妗嗘灦瀵箂ervlet鐨勫皝瑁呭拰閰嶇疆鏂囦歡錛岀劧鍚庝粬浼氶棶涓浜涗綘鏁版嵁搴撶殑涓滆タ錛屼富瑕佹槸浣犳暟鎹鏄濡備綍璁捐$殑~銆傚ぇ鑷存槸榪欎釜嫻佺▼銆傜劧鍚庣患鍚堥潰璇曞氨鏄闂浣犲湪瀛︽牎騫蹭簡浠涔 鐝騫查儴浠涔 瀛︽牎媧誨姩 瀛︾敓浼 榪樻湁 欏圭洰閮藉彲浠ラ殢渚胯磋達紝鑱婅亰銆
鏈変簺鎶鏈闈㈣瘯瀹樹細闂浣犱竴浜涙櫤鍔涢(閫氬父榪欐牱鐨勯潰璇曞畼閮戒笉鏄欏圭洰緇忕悊錛屾槸紼嶅井鎳傜偣鎶鏈鐨勪漢鍔涜祫婧愶紝姣旇緝2鐨勫弽姝)
鎶鏈棰樼洰鍙浠ュ湪緗戜笂鎼滅儲錛屽彟澶栧氨鏄鐪嬬▼搴忓憳闈㈣瘯瀹濆吀榪欐湰涔︺
鎶鏈闈㈣瘯瀹樿繕浼氶棶浣犲瑰叾浠栨妧鏈錛岋紙浣犱細鐨勪笢瑗塊兘搴旇ュ啓鍦ㄧ畝鍘嗕笂錛夛紝姣斿備綘綆鍘嗕笂璇翠綘浼欻ibernate錛岄偅浠栦篃浼氶棶浣燞ibernate鐨勭浉鍏充笢瑗褲侽OP鎬濇兂浠涔堢殑錛岃捐℃ā寮忎篃浼氭秹鍙婄殑

⑹ 得到app實習面試java問什麼

你好,實習面試都是面試最基礎的,面試內容大致包括:演算法、數據結構、操作系統、網路、資料庫、java基礎。
演算法:冒泡、快速、折半等
數據結構:數組、鏈表(單向鏈表、雙向鏈表)、樹(二叉樹,平衡二叉樹)、圖等
操作系統:進程、線程、鎖、中斷、調度等
網路:TCP/IP協議,尤其是TCP的原理(3次握手、滑動窗口)
資料庫:範式、事務、基本的sql操作等
java基礎:List、Tree、Map、反射、Thread類,Object類,String類等都是熱點核心問題
如果想去的話,我先考靠你一個最基礎的題,要是我這個題你都不會,你去干什麼?
String str1 = new String("中"); // 第1行代碼
String str2 = new String(str1.getBytes());// 第2行代碼
String str3 = new String(str1.getBytes("UTF-8"), "UTF-8");// 第3行代碼
第一個問題:java字元串在內存中是用什麼編碼?
第二個問題:說說第2行代碼的作用?(內部處理過程)
第三個問題:下面的輸出結果是什麼?為什麼?
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));

⑺ 應屆生面試Java相關崗位可能會被問到哪些技術問題

常見的Java問題

1.什麼是Java虛擬機?為什麼Java被稱作是「平台無關的編程語言」?

Java虛擬機是一個可以執行Java位元組碼的虛擬機進程。Java源文件被編譯成能被Java虛擬機執行的位元組碼文件。

Java被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。

2.JDK和JRE的區別是什麼?

Java運行時環境(JRE)是將要執行Java程序的Java虛擬機。它同時也包含了執行applet需要的瀏覽器插件。Java開發工具包(JDK)是完整的Java軟體開發包,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java調試器),可以讓開發者開發、編譯、執行Java應用程序。

3.」static」關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法?

「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。

4.是否可以在static環境中訪問非static變數?

static變數在Java中是屬於類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對static變數進行初始化。如果你的代碼嘗試不用實例來訪問非static的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。

5.Java支持的數據類型有哪些?什麼是自動拆裝箱?

Java語言支持的8中基本數據類型是:

⑻ 哪位大俠有java的面試題目

JAVA程序員面試32問(建議至頂)

第一,談談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面試資料庫相關的資料

熱點內容
幼兒編程教育培訓多少錢 瀏覽:401
經常生氣有什麼東西能解壓 瀏覽:900
代理伺服器地址和埠可以怎麼填 瀏覽:62
unity5手游編譯模型 瀏覽:265
安卓無人機app源碼 瀏覽:808
pl1編程語言 瀏覽:801
台達plc編程換算指令大全 瀏覽:174
手機上的編程游戲 瀏覽:108
伺服器密碼機有什麼用 瀏覽:477
dos磁碟命令 瀏覽:955
單片機cpu52的功能 瀏覽:691
opc伺服器怎麼開發 瀏覽:373
覓喜是個什麼app 瀏覽:402
加密cd機 瀏覽:946
社保用什麼app繳納 瀏覽:313
nodevlinux 瀏覽:582
騰訊tt伺服器怎麼登錄密碼 瀏覽:898
windows命令提示符 瀏覽:352
win7管理員許可權命令 瀏覽:729
地圖app哪個適合老年人用 瀏覽:74