當前位置:首頁 » 編程語言 » 美團java面試題

美團java面試題

發布時間: 2022-11-28 19:14:11

java基礎面試題都有哪些

一般面試官都會讓面試者回答哪些Java基礎面試題啊?難不難啊? 針對這一系列的疑問,廣州增城Java培訓學校收集了部分Java基礎面試題與大家分享,希望對各位參加了廣州專業Java培訓的學生,有一定的幫助! 一、Java基礎知識 1.Java有那些基本數據類型,String是不是基本數據類型,他們有何區別。 2.字元串的操作: 寫一個方法,實現字元串的反轉,如:輸入abc,輸出cba 寫一個方法,實現字元串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 3.數據類型之間的轉換 如何將數值型字元轉換為數字(Integer,Double) 如何將數字轉換為字元 如何取小數點前兩位,並四捨五入。 4.日期和時間 如何取得年月日,小時分秒 如何取得從1970年到現在的毫秒數 如何獲取某個日期是當月的最後一天 如何格式化日期 5.數組和集合 6.文件和目錄(I/O)操作 如何列出某個目錄下的所有文件 如何列出某個目錄下的所有子目錄 判斷一個文件或目錄是否存在 如何讀寫文件 7.Java多態的實現(繼承、重載、覆蓋) 8.編碼轉換,怎樣實現將GB2312編碼的字元串轉換為ISO-8859-1編碼的字元串。 9.Java中訪問資料庫的步驟,Statement和PreparedStatement之間的區別。 10.找出下列代碼可能存在的錯誤,並說明原因: 二、JSP&Servlet技術 1.描述JSP和Servlet的區別、共同點、各自應用的范圍 2.在Web開發中需要處理HTML標記時,應做什麼樣的處理,要篩選那些字元(< > & 「」) 3.在JSP中如何讀取客戶端的請求,如何訪問CGI變數,如何確定某個Jsp文件的真實路徑。 4.描述Cookie和Session的作用,區別和各自的應用范圍,Session工作原理。 5.列出Jsp中包含外部文件的方式,兩者有何區別。 6.說明Jsp中errorPage的作用,應用范圍。 7.介紹在Jsp中如何使用JavaBeans。 8.簡單介紹JSP的標記庫 9.Jsp和Servlet中的請求轉發分別如何實現。 三、J2EE相關知識 1.介紹J2EE、J2SE、J2SE的區別。 2.J2EE是一種技術還是一種平台,他提供了那些技術。 3.什麼是Application Server,它有什麼功能和優點。 4.簡單介紹連接池的優點和原理。 5.Web.xml的作用 四、其他 1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮) 2.簡單介紹您所了解的MVC。 3.簡單介紹所了解的XML。 4.文檔和編碼規范 5.Java中的分頁、效率考慮。 6.簡單介紹您所了解的structs。 Java面試題收藏: 1.xml在項目中的作用 2.s-EJB 與 e-EJB的區別 3.會話面的作用 4.cmp與bmp的優缺點 5.j2me程序的必需的幾個部分 6.c/s與b/s的區別 7.構建一個connect pool然後再調用它, 8.j2ee平台與dotnet平台的區別 9.ejb的life cycle 10.session bean 和 entity bean的區別 11.ejb中的transaction機制 12.synchronized (生產者和消費) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什麼是MDA 17.tcp與udp的區別 18.鏈表與散列表和數組的區別 19.堆和棧的區別 20.ejb的分類及區別 21.你對現在軟體業以及國內軟體業的看法 22.談談java多線程 23.談談文件加密技術 24.軟體開發生命周期 25.路由協議種類及特點 26.java的awt和swing組件的GUI設計的關鍵 27.對於java流的認識 28.簡單描述一下awt與swing區別。 29.簡述java編程中事件處理模式。 30.你編寫過applet嗎?applet的安全許可權如何?試列舉java application或者applet中與servlet/jsp通信可以採用的方式。 31.簡述邏輯操作(如&|)與條件操作(如&&||)的區別。

⑵ java軟體面試題

1 java思想中 動態代理 方便維護和拓展 樓主可以搜下(Dynamic Proxy)。
2 答案不唯一, 事實考你的是servlet線程不安全的概念,servlet中是不用 成員變數的,因為線程不安全。(參考 搜索servlet的線程不安全解決方法)本題答案,加一個「局部線程」變數綁定。
3 reques
4 對象流要傳送對象 一定要實現Serializable 介面 form傳的對象reques,response
5 EL表達式 我了解的不是很透 ,樓主再查找下。
你面試的問題 既基本 ,又砸人……很考察基礎。

⑶ java基礎面試題有哪些

下面是10道java基礎面試題,後附答案

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

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

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

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

「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。

Java 中 static 方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而 static 方法是編譯時靜態綁定的。static 方法跟類的任何實例都不相關,所以概念上不適用。

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

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

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

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

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

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

byte

short

int

long

float

double

boolean

char

自動裝箱是 Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。反之就是自動拆箱。

6.Java 支持多繼承么?

不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個介面。

7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是復制構造函數?

當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java 編譯器會為這個類創建一個默認的構造函數。

Java 中構造函數重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數必須有它自己唯一的參數列表。

Java 不支持像 C++中那樣的復制構造函數,這個不同點是因為如果你不自己寫構造函數的情況下,Java 不會創建默認的復制構造函數。

8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什麼意思?

Java 中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。

9.介面和抽象類的區別是什麼?

Java 提供和支持創建抽象類和介面。它們的實現有共同點,不同點在於:

介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。

類可以實現很多個介面,但是只能繼承一個抽象類

類如果要實現一個介面,它必須要實現介面聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。

抽象類可以在不提供介面方法實現的情況下實現介面。

Java 介面中聲明的變數默認都是 final 的。抽象類可以包含非 final 的變數。

Java 介面中的成員函數默認是 public 的。抽象類的成員函數可以是 private, protected 或者是 public。

介面是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調用的。

10.什麼是值傳遞和引用傳遞?

對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。

對象被引用傳遞,意味著傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。

最後祝你面試順利!

⑷ Java常見的面試問題(帶答案),自己答出來多少

1、在java中如果聲明一個類為final,表示什麼意思?
答:final是最終的意思,final可用於定義變數、方法和類但含義不同,聲明為final的類不能被繼承。
父類的構造方法是否可以被子類覆蓋(重寫)?
答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。
2、請講述String 和StringBuffer的區別。
答:String 類所定義的對象是用於存放」長度固定」的字元串。
StringBuffer類所定義的對象是用於存放」長度可變動」的字元串。
3、如果有兩個類A、B(注意不是介面),你想同時使用這兩個類的功能,那麼你會如何編寫這個C類呢?
答:因為類A、B不是介面,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那麼C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。
4、談談你對抽象類和介面的理解。
答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。
介面:一個介面允許一個類從幾個介面繼承而來,Java 程序一次只能繼承一個類但可以實現幾個介面,介面不能有任何具體的方法,介面也可用來定義可由類使用的一組常量。其實現方式是interface來實現。
5、Java中什麼是競態條件?
答:競態條件會導致程序在並發情況下出現一些bugs。多線程對一些資源的競爭的時候就會產生競態條件,如果首先要執行的程序競爭失敗排到後面執行了,那麼整個程序就會出現一些不確定的bugs。這種bugs很難發現而且會重復出現,因為線程間的隨機競爭。
6、Java中如何停止一個線程?
答:Java提供了很豐富的API但沒有為停止線程提供API。JDK 1.0本來有一些像stop(), suspend() 和 resume()的控制方法但是由於潛在的死鎖威脅因此在後續的JDK版本中他們被棄用了,之後Java API的設計者就沒有提供一個兼容且線程安全的方法來停止一個線程。當run() 或者 call() 方法執行完的時候線程會自動結束,如果要手動結束一個線程,你可以用volatile 布爾變數來退出run()方法的循環或者是取消任務來中斷線程。點擊這里查看示例代碼。
7、 一個線程運行時發生異常會怎樣?
答: 簡單的說,如果異常沒有被捕獲該線程將會停止執行。Thread.UncaughtExceptionHandler是用於處理未捕獲異常造成線程突然中斷情況的一個內嵌介面。當一個未捕獲異常將造成線程中斷的時候JVM會使用Thread.getUncaughtExceptionHandler()來查詢線程的UncaughtExceptionHandler並將線程和異常作為參數傳遞給handler的uncaughtException()方法進行處理。

⑸ 一些java面試的題,希望前輩們解答

1.zk是ajax框架,是js實現的,前端的框架優點都是方便快速構建用戶頁面。 struts是服務端框架,java實現,壓根不是一個方面的。(區別)
2.去下個j2ee API,看一下,servlet包中隨便說幾個就OK,像HttpRequest ,HttpResponse 等
3.不同資料庫語言寫法不一樣的,簡單思路是oracle: select * from (select * from table where rownum<200) where rownum>100 (還有一種高性能的寫法,忘掉了。。。有興趣可單獨聯系)
4.用 setTimeout(window.location="url",100)
5.jsp和servlet異同,看下他們的生命周期就知道了,網上很多。 jsp其實是servlet的一種擴展,寫起html語言來更簡單明了。執行時還是轉換為servlet的
6.網上一堆。。。隨便搜下就能看到了
7.這個也很籠統。 自己看吧,不一定很全http://blog.csdn.net/liulian720/archive/2006/03/31/645654.aspx

⑹ 面試java開發工程師一般會提什麼問題

首先都是問工作經歷,上一家公司的工作情況(應屆生會問些學校表現、畢業設計之類的)。
然後問些技術問題,JAVA基礎的概念,線程、並發、網路、文件操作、資料庫操作之類等等。
現在JAVA都是WEB方向,所以還會問些WEB方面的問題,前端、伺服器之類。
還會問一些框架方面的問題,spring,springMVC,struts,hibernate,mybatis之類的。

⑺ 打死我也想不到「美團」測試面試題這么難,當場給我嚇「die」了

不知道你們多長時間沒有參加過面試了,最近這段時間的面試,真的是一個比一個嚴格!

昨天參加了一線大廠的技術面,當場給我嚇die了,沒想到這么難!

如果你不信,你也來die die:

你說這面試官狠不狠!太狠了!

對於我們測試員而言,面試就是將自己所學的技術與面試官表達出來。以前上學准備找工作的時候,發現最先找到工作的不是技術最好的而是善於溝通活躍度高的人,而我聽的最多的抱怨是:為什麼我明明知道這個東西,面試的時候卻不知從何說起。

本文會從我的自身經歷出發談一談面試前如何做好充分准備,怎麼流暢地表達自己的技術,以及進入項目時如何從一開始的手足無措、盲目下手到後來的淡定從容。

這里也推薦一個群,裡面會不定期地分享軟體測試資源,測試面試題以及測試行業資訊,朋友們可以在群中積極交流問題。私信我(交流群)

下面我將從以下幾個方面來分享一下面試前的准備。

1、 給自己定位 首先要給自己定位,自己現在是一個什麼階段,是初級崗,中級,高級,還是專家級。一般情況下剛參加工作一年左右是初級,兩年左右努力提升自己的話是中級,三到五年高級甚至專家級。前提是不停地鑽研。

2、知識的梳理
因為把自己定位為自動化測試工程師,俗話說:面試修航母,工作螺絲釘。面試考慮各個方面,對於測試來說,主要有以下幾個方面來准備:介面自動化測試、搭建測試框架、web自動化、APP自動化。當然知識梳理完畢之後,還要去閱讀一些面試經,看看最新各個廠商問的問題。其實以上這些東西准備完,基礎好的話,一個月左右,基礎不好的話至少要3個月吧。

俗話說不打無准備之仗,只有準備好了才能在面試過程中取得好的結果。

3、簡歷的准備
簡歷是一個敲門磚,HR每天會有很多簡歷收到。簡歷如何讓人眼前一亮,並且能一眼抓住關鍵信息:個人基本信息(姓名,電話,郵箱,畢業院校等),工作經歷,技能點,一些亮點(比如六級證書,獲獎等)。簡歷要簡潔,層次分明。寫完簡歷要在招聘網站上更新一下自己的簡歷。

4、 面試機會的各個渠道 這次面試一共通過了3種渠道,一是朋友內推,二是獵頭幫忙,三是通過boss或智聯投遞。

5、技能儲備

自動化/性能/安全(必須會編程)——中高級測試工程師

具備測試能力和代碼能力,提高測試效率和軟體質量。

下面是自動化測試的一個例子。

1)選擇一門編程語言學習:java、python、ruby等。

2)了解自動化測試,自動化測試工具,web/app/ interface /pc自動化基礎。

3)框架思路、項目實踐和流程。

在功能測試崗位工作幾年後,我會開始感到焦慮。

在工作中,我感受到了自己成長的局限。除了越來越熟悉的業務,工作也是一點一點的,其他方面都沒有長進。

想換工作,想漲工資,但是又覺得很失落,很無力,因為全身的價值都在這里。

想在工作過程中提升自己,朝著高薪自動化測試、性能測試、安全測試等方向邁進。

當然,自動化測試工具也可以自動化,但是有好有壞。

測試開發/性能、安全測試專家(必須能夠編程)——高級測試工程師

測試開發,具備測試能力和代碼能力,提高測試效率和軟體質量。開發和測試都可以。

需要很強的開發能力,深入代碼層面。一般不直接參與測試工作。

1.測試框架和測試工具的二次開發更好地滿足了公司產品的測試需求。

2.進行單元測試或協助開發和進行單元測試,從開發階段開始控制產品代碼質量。在後續迭代過程中快速挖掘問題。

3.開發測試工具和平台,提高測試效率,簡化各種測試,為測試團隊量化測試結果。比如性能測試平台、介面測試平台。

測試主管、經理和主管-職業發展和晉升階段

需要很強的測試和編程技能以及足夠的管理和溝通技能。如果你只有足夠的測試能力,就沒法hold住開發團隊。

對於這個問題,每個人都有每個人的看法。

覺得去大公司好的人認為,大公司資金較為雄厚,管理較為規范,對於應屆畢業生來說,大公司的工作經歷也會為以後的求職生涯鍍金。

覺得去小公司好的人認為,大公司的管理模式僵化,能夠學到的東西並不會很多,而小公司的管理模式靈活,晉升的機會也很多,能夠得到不少的鍛煉機會。

其實這個問題,我覺得並沒有固定的答案,每一個公司和崗位都有適合的人和不合適的人。

如果你有機會進入一家知名大企業工作,那麼絕對是一個不錯的機會:

如果在這么好的環境下,你還在混日子的話,只能說自己放棄自己了,那就更別提職業發展了。

如果你有機會進入一家創業公司並且你是一個願意接受挑戰的人的話,那麼絕對是一個不錯的機會 :

面試的時候如何選擇這家企業(某知名大公司 /創業型小公司 )是否適合你呢?

你需要在面試結束之後讓自己清晰的了解以下幾個問題:

對於上述這4點,你可能會說,面試的時候,有些企業不願意告訴你這些問題的答案。沒錯,我也遇見過這種公司。

但反過來問問自己,如果在面試的時候企業都不能回答你這些問題,這樣的公司你敢去嗎?你真的願意去嗎?難道只是為了眼前的那些薪資?希望大家好好思考一下。在這里推薦一個軟體測試交流群,群中會不定期的分享軟體測試資源,測試面試題以及測試行業資訊,朋友們可以在群中積極交流問題。私信我(軟體測試)


1.根據你的工作經歷,說說你對質量保證的理解?

這是個綜合性基礎知識問題,考驗你在測試行業工作幾年後的心得,是否有測試思維,明確自己的定位。可以談談你認為如何做好測試?如何衡量質量?你又如何專注軟體質量提升,幫助團隊快速迭代高質量交付

2.非關系型資料庫和關系型資料庫的區別,談談他們的優勢?

資料庫在測試工作中的重要性相信我就不用在這贅述了,需要你對常見的關系型資料庫和非關系型資料庫的原理理解,而且總結出它們之前的區別

3.在自動化方面有什麼成熟的方案,有沒有做過二次開發?

測試工程師離不開一個關鍵字,「自動化」,在任何類型的項目或多或少會用到自動化測試技術。關於前後端自動化技術,是否有一套完整的測試框架,技術體系。在開源自動化測試框架的理解上,有一定的開發思維,能進行封裝,開源框架上二次開發。能根據項目靈活打造適合團隊的測試框架,是測試工程師的能力分水嶺

4.質量部如果需要定製化一個質量體系平台,你會考慮哪些問題?

說實話,面試官這么問測試平台的問題,你可能就扛不住了。干過測試開發的應該都知道,測試平台的構造,除了技術難點。你要考慮如何去推進這個工作?測試平台研發出來後,在整個測試部門推廣運營這個平台是大難題。在功能測試人員的角度來想,去使用不成熟的測試平台來測試,如果加大你的工作量,對你自身工作和技術沒有什麼太大價值,一般都不是非常積極的去配合,測試平台如何推廣運營是個難題。你要讓所有人親身感受到用與不用這個測試平台有什麼區別。

我也收集和整理了一些軟體測試的學習資料,對於想學習或者進階軟體測試的朋友來說應該會很有幫助,有需要的小夥伴可以私信我(軟體測試)

我是二黑,一個不太黑的測試人~

⑻ java 面試題《前輩們進來指教一下,小弟獻50分》

錯!

一般的小公司也許會,但是大公司絕對不會照搬原題的。

你剛從學校畢業,面試不會出很難得題,一般就是這幾部分:
1.java基礎,主要考你對面向對象的理解。----佔60%
2.SQl語句,對資料庫的操作------佔20%
3.開發經驗-----是否在學校有具體編碼的經歷

不要小看了java基礎,很多的問題就是工作了幾年的老程序員都不一定會做,很多都是基本題。

一些大的公司-----如,IBM等主要考你的專業課知識,這個可就難了,一般就考C語言,但是涉及到數據結構,資料庫,而且對計算機組成原理等多門基礎課也考試,能進這種公司,大學不好好學習是不可能進去的。

我也剛畢業一年,參加的面試大概不下60家。呵呵。。。自己有體驗就好了~!

⑼ java面試會問什麼

java面試問題面試官的不同而不同,根據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++嵌套類最大的不同就在於是否有指向外部的引用上。
註: 靜態內部類(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工程師哪些問題

初級java工程師多數是剛畢業或者工作1,2年的新人。對於新人,面試中基礎問題會問道很多,因為先要考察這個人的基礎。

關於基礎類的題目,我在面試初級java工程師的時候一般會問下面兩大類問題,每類5個題目,這樣下來我就基本可以了解這位工程師的程度了。

java基礎類

面向對象基礎類

最後,如果前面問題回答的不錯,會補充兩個編程習慣問題。

1.在你寫過的代碼中,你寫過超過2層的循環嗎,怎麼實現的?

回答:沒有,就算ok;如果回答有,聽一下實現,如果原因說不出來,扣分。

2.在你寫過的代碼中,if語句最多嵌套了幾層,最多有多少分支,怎麼實現的?

回答:3層以下,就算ok;如果回答3層以上,聽一下實現,如果原因說不出來,扣分。

4,5個分支,就算ok;如果回答5個分支以上,聽一下實現,如果原因說不出來,扣分。

最後兩個題其實比較陷阱,但是正是一個反向的思考才能了解面試者之前的工作狀態。

如果面試者在平日里就有好的習慣,自然不用擔心。

熱點內容
查詢最大sql 發布:2025-01-18 11:43:14 瀏覽:266
網易我的世界伺服器添加第三方mod 發布:2025-01-18 11:32:10 瀏覽:212
oracle批量插入存儲過程 發布:2025-01-18 10:49:57 瀏覽:41
分表存儲查詢 發布:2025-01-18 10:45:18 瀏覽:469
缺頁演算法 發布:2025-01-18 10:40:20 瀏覽:778
撕裂重罪6游戲電腦需要什麼配置 發布:2025-01-18 10:37:23 瀏覽:444
python大小寫忽略 發布:2025-01-18 10:36:13 瀏覽:441
如何給桌面的游戲加密碼 發布:2025-01-18 10:09:34 瀏覽:231
魅族微信多開安卓怎麼弄 發布:2025-01-18 10:04:33 瀏覽:448
網路設置里沒有伺服器是什麼 發布:2025-01-18 09:52:19 瀏覽:343