導航:首頁 > 程序命令 > 三四年左右java程序員面試

三四年左右java程序員面試

發布時間:2022-05-18 11:11:53

A. 程序員工作4,5年面試會問什麼問題

面試一般分兩輪。
1、第一輪一般是技術面試:主要是問面試者的工作經歷,例如都做過哪些項目,寫過多少代碼等。其次是問工作相關的基礎知識,主要包括C語言,C++,java,操作系統,數據結構,資料庫,計算機網路等。
2、第二輪基本是HR面試:這輪面試就是與面試者談談期待的薪水,以後的發展等問題,HR會根據面試者的表現決定是否錄取。

B. 工作3年的Java程序員應該掌握哪些技能

1、基本語法
這包括static、final、transient等關鍵字的作用,foreach循環的原理等等。
2、集合
非常重要,基本上就是List、Map、Set,各種實現類的底層實現原理,實現類的優缺點。
集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實現原理,
(1)ConcurrentHashMap的鎖分段技術
(2)ConcurrentHashMap的讀是否要加鎖,為什麼
(3)ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器
3、設計模式
設計模式在工作中是非常重要、非常有用的,23種設計模式中重點研究常用的十來種就可以了,面試中關於設計模式的問答主要是三個方向:
(1)你的項目中用到了哪些設計模式,如何使用
(2)知道常用設計模式的優缺點
(3)能畫出常用設計模式的UML圖
4、多線程
假如有Thread1、Thread2、Thread3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何實現?
聰明的網友們對這個問題是否有答案呢?不難,java.util.concurrent下就有現成的類可以使用。
另外,線程池在面試中也是比較常問的一塊,常用的線程池有幾種?這幾種線程池之間有什麼區別和聯系?線程池的實現原理是怎麼樣的?實際一些的,會給你一些具體的場景,讓你回答這種場景該使用什麼樣的線程池比較合適。
最後,雖然面試問得不多,但是多線程同步、鎖這塊也是重點。synchronized和ReentrantLock的區別、synchronized鎖普通方法和鎖靜態方法、死鎖的原理及排查方法等等,關於多線程,
5、JDK源碼
要想拿高工資,JDK源碼不可不讀。總結一下比較重要的源碼:
(1)List、Map、Set實現類的源代碼
(2)ReentrantLock、AQS的源代碼
(3)AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的
(4)線程池的實現原理
(5)Object類中的方法以及每個方法的作用
6、框架
老生常談,面試必問的東西。一般來說會問你一下你們項目中使用的框架,然後給你一些場景問你用框架怎麼做,比如我想要在Spring初始化bean的時候做一些事情該怎麼做、想要在bean銷毀的時候做一些事情該怎麼做、MyBatis中$和#的區別等等,這些都比較實際了,平時積累得好、有多學習框架的使用細節自然都不成問題。
7、資料庫
一些基本的像union和union all的區別、left
join、幾種索引及其區別就不談了,比較重要的就是資料庫性能的優化,如果對於資料庫的性能優化一竅不通,那麼有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL優化的內容准備一下。
8、數據結構和演算法分析
數據結構和演算法分析,對於一名程序員來說,會比不會好而且在工作中絕對能派上用場。數組、鏈表是基礎,棧和隊列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅黑樹,可以不了解它們的具體實現,但是要知道什麼是二叉查找樹、什麼是平衡樹,AVL樹和紅黑樹的區別。
9、Java虛擬機
Java虛擬機中比較重要的內容:
(1)Java虛擬機的內存布局
(2)GC演算法及幾種垃圾收集器
(3)類載入機制,也就是雙親委派模型
(4)Java內存模型
(5)happens-before規則
(6)volatile關鍵字使用規則

C. JAVA程序員面試總結,高手整整理加強版

第一階段:三年
我認為三年對於程序員來說是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,我們走出校園,邁入社會,成為一名程序員,正式從書本 上的內容邁向真正的企業級開發。我們知道如何團隊協作、如何使用項目管理工具、項目版本如何控制、我們寫的代碼如何測試如何在線上運行等等,積累了一定的 開發經驗,也對代碼有了一定深入的認識,是一個比較純粹的Coder的階段。

第二階段:五年
五年又是區分程序員的第二個門檻。有些人在三年裡,除了完成工作,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被 更年輕的人給頂替;有些人在三年裡,除了寫代碼之外,還熱衷於研究各種技術實現細節、看了N多好書、寫一些博客、在Github上分享技術,這些人在五年 後必然具備在技術上獨當一面的能力並且清楚自己未來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成為項目組中不可或缺的人物。

第三階段:十年
十年又是另一個門檻了,轉行或是繼續做一名程序員就在這個節點上。如果在前幾年就抱定不轉行的思路並且為之努力的話,那麼在十年的這個節點上,有些 人必然成長為一名對行業有著深入認識、對技術有著深入認識、能從零開始對一個產品進行分析的程序員,這樣的人在公司基本擔任的都是CTO、技術專家、首席 架構師等最關鍵的職位,這對於自己絕對是一件榮耀的事,當然老闆在經濟上也絕不會虧待你。

第一部分總結一下,我認為,隨著你工作年限的增長、對生活對生命認識的深入,應當不斷思考三個問題:

1、我到底適不適合當一名程序員?
2、我到底應不應該一輩子以程序員為職業?
3、我對編程到底持有的是一種什麼樣的態度,是夠用就好呢還是不斷研究?
最終,明確自己的職業規劃,對自己的規劃負責並為之努力。
關於項目經驗
在網上經常看到一些別的朋友有提出項目經驗的問題,依照我面試的感覺來說,面試主要看幾點:項目經驗+基本技術+個人潛力(也就是值不值得培養)。

關於項目經驗,我認為並發編程網的創始人方騰飛老師講的一段話非常好:介紹產品時面試官會考察應聘者的溝通能力和思考能力,我們大部分情況都是做產品的一個功能或一個模塊,但是即使是這樣,自 己有沒有把整個系統架構或產品搞清楚,並能介紹清楚,為什麼做這個系統?這個系統的價值是什麼?這個系統有哪些功能?優缺點有哪些?如果讓你重新設計這個 系統你會如何設計?

我覺得這就已經足以概括了。也許你僅僅工作一年,也許你做的是項目中微不足道的模塊,當然這些一定是你的劣勢且無法改變,但是如何彌補這個劣勢?

從方老師的話中我總結幾點:

1、明確你的項目到底是做什麼的,有哪些功能。
2、明確你的項目的整體架構,在面試的時候能夠清楚地畫給面試官看並且清楚地指出從哪裡調用到哪裡、使用什麼方式調用。
3、明確你的模塊在整個項目中所處的位置及作用。
4、明確你的模塊用到了哪些技術,更好一些的可以再了解一下整個項目用到了哪些技術。
在你無法改變自己的工作年限、自己的不那麼有說服力的項目經驗的情況下(這一定是扣分項),可以通過這種方式來一定程度上地彌補並且增進面試官對你的好感度。

關於專業技能

寫完項目接著寫寫一名3年工作經驗的Java程序員應該具備的技能,這可能是Java程序員們比較關心的內容。我這里要說明一下,以下列舉的內容不是都要會的東西—-但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。

1、基本語法

這包括static、final、transient等關鍵字的作用,foreach循環的原理等等。今天面試我問你static關鍵字有哪些作 用,如果你答出static修飾變數、修飾方法我會認為你合格,答出靜態塊,我會認為你不錯,答出靜態內部類我會認為你很好,答出靜態導包我會對你很滿 意,因為能看出你非常熱衷研究技術。

最深入的一次,我記得面試官直接問到了我Volatile關 鍵字的底層實現原理(順便插一句,面試和被面試本身就是相對的,面試官能問這個問題同時也讓面試者感覺到面試官也是一個喜愛研究技術的人,增加了面試者對 公司的好感,我最終選擇的就是問了這個問題的公司),不要覺得這太吹毛求疵了—-越簡單的問題越能看出一個人的水平,別人對你技術的考量絕大多數都是以深度優先、廣度次之為標準的,切記。
2、集合
非常重要,也是必問的內容。基本上就是List、Map、Set,問的是各種實現類的底層實現原理,實現類的優缺點。
集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、 HashSet的實現原理,能流利作答,當然能掌握CopyOnWrite容器和Queue是再好不過的了。另外多說一 句,ConcurrentHashMap的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題,關於ConcurrentHashMap, 我給網友朋友們提供三點回答或者是研究方向:
(1)ConcurrentHashMap的鎖分段技術。
(2)ConcurrentHashMap的讀是否要加鎖,為什麼。
(3)ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器。
3、設計模式

本來以為蠻重要的一塊內容,結果只在阿里巴巴B2B事業部面試的時候被問了一次,當時問的是裝飾器模式。

當然咱們不能這么功利,為了面試而學習,設計模式在工作中還是非常重要、非常有用的,23種設計模式中重點研究常用的十來種就可以了,面試中關於設計模式的問答主要是三個方向:

(1)你的項目中用到了哪些設計模式,如何使用。
(2)知道常用設計模式的優缺點。
(3)能畫出常用設計模式的UML圖。
4、多線程

這也是必問的一塊了。因為三年工作經驗,所以基本上不會再問你怎麼實現多線程了,會問得深入一些比如說Thread和Runnable的區別和聯 系、多次start一個線程會怎麼樣、線程有哪些狀態。當然這只是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同。

總結起來是 這么一個意思:

假如有Thread1、Thread2、ThreaD3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何實現?
聰明的網友們對這個問題是否有答案呢?不難,java.util.concurrent下就有現成的類可以使用。

另外,線程池也是比較常問的一塊,常用的線程池有幾種?這幾種線程池之間有什麼區別和聯系?線程池的實現原理是怎麼樣的?實際一些的,會給你一些具體的場景,讓你回答這種場景該使用什麼樣的線程池比較合適。

最後,雖然這次面試問得不多,但是多線程同步、鎖這塊也是重點。synchronized和ReentrantLock的區別、 synchronized鎖普通方法和鎖靜態方法、死鎖的原理及排查方法等等。

5、JDK源碼

要想拿高工資,JDK源碼不可不讀。上面的內容可能還和具體場景聯系起來,JDK源碼就是實打實地看你平時是不是愛鑽研了。我面試過程中被問了不 少JDK源碼的問題,其中最刁鑽的一個問了我,String的hashCode()方法是怎麼實現的,幸好我平時String源代碼看得多,答了個大 概。

JDK源碼其實沒什麼好總結的,純粹看個人,總結一下比較重要的源碼:

(1)List、Map、Set實現類的源代碼
(2)ReentrantLock、AQS的源代碼
(3)AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的
(4)線程池的實現原理
(5)Object類中的方法以及每個方法的作用
這些其實要求蠻高的,我去年一整年基本把JDK中重要類的源代碼研究了個遍,真的花費時間、花費精力,當然回頭看,是值得的—-不僅僅是為了應付面試。
6、框架

老生常談,面試必問的東西。一般來說會問你一下你們項目中使用的框架,然後給你一些場景問你用框架怎麼做,比如我想要在Spring初始化bean 的時候做一些事情該怎麼做、想要在bean銷毀的時候做一些事情該怎麼做、MyBatis中$和#的區別等等,這些都比較實際了,平時積累得好、有多學習 框架的使用細節自然都不成問題。

如果上面你的問題答得好,面試官往往會深入地問一些框架的實現原理。問得最多的就是Spring AOP的實現原理,當然這個很簡單啦,兩句話就搞定的的事兒,即使你不會准備一下就好了。我遇到的最變態的是讓我畫一下Spring的Bean工廠實 現的UML圖,當然面對這樣一個有深度的問題,我是絕對答不出來的/(ㄒoㄒ)/~~

7、資料庫

資料庫十有八九也都會問到。一些基本的像union和union all的區別、left join、幾種索引及其區別就不談了,比較重要的就是資料庫性能的優化,如果對於資料庫的性能優化一竅不通,那麼有時間,還是建議你在面試前花一兩天專門 把SQL基礎和SQL優化的內容准備一下。

不過資料庫倒是不用擔心,一家公司往往有很多部門,如果你對資料庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對資料庫使用不是要求非常高的部門鍛煉一下。
8、數據結構和演算法分析

數據結構和演算法分析,對於一名程序員來說,會比不會好而且在工作中絕對能派上用場。數組、鏈表是基礎,棧和隊列深入一些但也不難,樹挺重要的,比較 重要的樹AVL樹、紅黑樹,可以不了解它們的具體實現,但是要知道什麼是二叉查找樹、什麼是平衡樹,AVL樹和紅黑樹的區別。記得某次面試,某個面試官和 我聊到了資料庫的索引,他問我:你知道索引使用的是哪種數據結構實現嗎?

我答到用的Hash表吧,答錯。他又問,你知道為什麼要使用樹嗎?我答到因為Hash表可能會出現比較多的沖突,在千萬甚至是上億級別的數據面 前,會大大增加查找的時間復雜度。而樹比較穩定,基本保證最多二三十次就能找到想要的數據,對方說不完全對,最後我們還是交流了一下這個問題,我也明白了 為什麼要使用樹,這里不說,網友朋友們覺得索引為什麼要使用樹來實現呢?

至於演算法分析,不會、不想研究就算了,記得某次面試對方問我,Collections.sort方法使用的是哪種排序方法,額,吐血三升。當然為了 顯示我的博學,對演算法分析也有一定的研究(⊙﹏⊙)b,我還是硬著頭皮說了一句可能是冒泡排序吧。當然答案肯定不是,有興趣的網友朋友們可以去看一下 Collections.sort方法的源代碼,用的是一種叫做TimSort的排序法,也就是增強型的歸並排序法。

9、Java虛擬機

出乎我的意料,Java虛擬機應該是很重要的一塊內容,結果在這幾家公司中被問到的概率幾乎為0。要知道,我去年可是花了大量的時間去研究Java虛擬機的,光周志明老師的《深入理解Java虛擬機:JVM高級特性與最佳實踐》,我就讀了不下五遍。

言歸正傳,雖然Java虛擬機沒問到,但我覺得還是有必要研究的,我就簡單地列一個提綱吧,談談Java虛擬機中比較重要的內容:

(1)Java虛擬機的內存布局
(2)GC演算法及幾種垃圾收集器
(3)類載入機制,也就是雙親委派模型
(4)Java內存模型
(5)happens-before規則
(6)volatile關鍵字使用規則
也許面試無用,但在走向大牛的路上,不可不會。
10、Web方面的一些問題

Java主要面向Web端,因此Web的一些問題也是必問的。

我碰到過問得最多的兩個問題是:
談談分布式Session的幾種實現方式。
常用的四種能答出來自然是讓面試官非常滿意的。
另外一個常問的問題是:講一下Session和Cookie的區別和聯系以及Session的實現原理。這兩個問題之外,web.xml裡面的內容是重點,Filter、Servlet、Listener,不說對它們的實現原理一清二楚吧,至少能對它們的使用知根知底。另外,一些細節的方面比如get/post的區別、forward/重定向的區別、HTTPS的實現原理也都可能會被考察到。
最後,如果有興趣有時間,建議學習、研究一下SOA和RPC,面向服務體系,大型分布式架構必備,救命良方、包治百病、屢試不爽。

D. java程序員面試的問題

java面試題大全-基礎方面Java基礎方面:
1、作用域public,private,protected,以及不寫時的區別
答:區別如下:
作用域 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫時默認為friendly
2、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)
答:匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現
3、Static Nested Class 和 Inner Class的不同
答:Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
4、&和&&的區別
答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)
5、Collection 和 Collections的區別
答:Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作
6、什麼時候用assert
答:assertion(斷言)在軟體開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion用於保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟體發布後,assertion檢查通常是關閉的
7、String s = new String("xyz");創建了幾個String Object
答:兩個,一個字元對象,一個字元對象引用對象
8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少
答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回與參數最接近的長整數,參數加1/2後求其floor
9、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;(可以正確編譯
10、Java有沒有goto
答:java中的保留字,現在沒有在java中使用
11、數組有沒有length()這個方法? String有沒有length()這個方法
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法
12、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型
答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型
13、Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別
答:Set里的元素是不能重復的,那麼用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值
14、給我一個你最常見到的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
15、error和exception有什麼區別
答:error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況
16、List, Set, Map是否繼承自Collection介面
答: List,Set是,Map不是
17、abstract class和interface有什麼區別
答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法
介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面
18、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
答:都不能
19、介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)
答:介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數
20、構造器Constructor是否可被override
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
21、是否可以繼承String類
答:String類是final類故不可以繼承
22、try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後
答:會執行,在return前執行
23、用最有效率的方法算出2乘以8等於幾
答:2 << 3
24、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對
答:不對,有相同的hash code
25、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞
答:是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的
26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:witch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich
27、ArrayList和Vector的區別,HashMap和Hashtable的區別
答:就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
就HashMap與HashTable主要從三方面來說。
一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value
28、char型變數中能不能存貯一個中文漢字?為什麼?
答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char佔16個位元組,所以放一個中文是沒問題的
29、GC是什麼? 為什麼要有GC
答:GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。
30、float型float f=3.4是否正確?
答:不正確。精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.4
31、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│└Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
32、抽象類與介面?
答:抽象類與介面都用於抽象,但是抽象類(JAVA中)可以有自己的部分實現,而介面則完全是一個標識(同時有多重繼承的功能)。
JAVA類實現序例化的方法是實現java.io.Serializable介面
Collection框架中實現比較要實現Comparable 介面和 Comparator 介面
33、STRING與STRINGBUFFER的區別。
答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字元串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法
34、談談final, finally, finalize的區別
答:final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally?再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)
finalize?方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的
35、面向對象的特徵有哪些方面
答:主要有以下四方面:
1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2.繼承:
繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。
4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
36、String是最基本的數據類型嗎
答:基本數據類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類
37、int 和 Integer 有什麼區別
答:Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。
原始類型封裝類,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble
引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的預設值。對象引用實例變數的預設值為 null,而原始類型實例變數的預設值與它們的類型有關
38、運行時異常與一般異常有何異同
答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。
39、說出ArrayList,Vector, LinkedList的存儲性能和特性
答:ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。
40、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演算法都大概一樣,所以性能不會有很大的差異。

E. java程序員面試需要注意什麼要准備什麼

  1. 作為java程序員面試應該有信心。

  2. Java面試一般他們會首先通過電話面試,看你對Java知識掌握情況。可以就會在公司面試。

  3. 有些公司還會出面試題來做筆試,筆試+面試。

  4. 沉著冷靜面對面試,你一個好的面試,工資就可能很高。

F. 准備面試java程序員

第一步:杜撰一個有3年以上程序員工作的簡歷。
第二步:熟悉java語言編程常識性知識和常見問題處理要點,可以在網上搜公開課,也可以找朋友學習,總之怎麼便宜怎麼來。
第三步:行動起來,去面試,主要是積累面試經驗,每一次都要總結一下,形成記錄,中不中不重要。
第四步:肯定會被某家公司錄用上,少說話多做事,誰安排的事情都做,耐著性子把這門技術掌握好,做扎實。後面事情你自己就可以審時度勢、見風使舵了。

G. java程序員面試

我也是今年畢業的,剛剛找的了一個程序員的工作。之前也是培訓過的,比你作的東西還少呢,也面試了很多公司。總結的經驗嗎就是如果你面試的是大公司一般他們看重的不是你作過什麼項目現在都會什麼因為你會的再多也比不上人家有經驗的人會的多,既然要你就是奔著你的資質去的,一般要問的話也是一些基礎的問題更注重基礎課程有的還要問數據結構呢,本人大小公司都去過最大的去過IBM他們更是奇怪連一道專業題也不考,只考反應能力和英文閱讀。過內的一些大公司也是越大的考的越基礎,但是小公司可不這樣因為沒有錢培養人才所以他們會盡量選擇會的多的,會的實在的最好來了沒多久就能上手乾的,一般這樣的公司都會問一些現在流行的技術,如struts、spring等等。我現在找到的公司就是個一般大的300多人吧,他們的考題很適中都是基礎吧,有java基礎,sql基礎在技術上的。其實不會也不用怕主要是長經驗,多去幾次有經驗了不怕了,也摸透他們的問的路子了就好了。

H. Java程序員面試技巧

  1. struts1,2

  2. 有些代碼不知道怎麼寫,通過網路和請教前輩解決。

  3. struts,spring,hibernate,ejb

  4. 自信但不要吹牛,薪水要求不要太高,畢業頭三年,增加工作經驗是目的。祝你好運

I. java程序員簡單的面試問題!

「幾年後,你會是一個什麼狀態」-----------強化基礎
作出自己的架構
(目前使用的都是別人做好的框架)
還有「你目前有什麼不足?」
------------在伺服器和資料庫等方面還有待加強(資料庫
是專業DBA的活
我們分內的是SQL,沒有經驗的程序員大都只用過tomcat伺服器)
這樣回答
只能說明你對大方向了解很多,職業規劃有方向,而不能說明你真的有不足

J. 請問兩年半的JAVA程序員面試會遇到哪些問題

J2SE基礎:

1. 九種基本數據類型的大小,以及他們的封裝類。
2. Switch能否用string做參數?
3. equals與==的區別。
4. Object有哪些公用方法?
5. Java的四種引用,強弱軟虛,用到的場景。
6. Hashcode的作用。
7. ArrayList、LinkedList、Vector的區別。
8. String、StringBuffer與StringBuilder的區別。
9. Map、Set、List、Queue、Stack的特點與用法。
10. HashMap和HashTable的區別。
11. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼。
12. TreeMap、HashMap、LindedHashMap的區別。
13. Collection包結構,與Collections的區別。
14. try catch finally,try里有return,finally還執行么?
15. Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。
16. Java面向對象的三個特徵與含義。
17. Override和Overload的含義去區別。
18. Interface與abstract類的區別。
19. Static class 與non static class的區別。
20. java多態的實現原理。
21. 實現多線程的兩種方法:Thread與Runable。
22. 線程同步的方法:sychronized、lock、reentrantLock等。
23. 鎖的等級:方法鎖、對象鎖、類鎖。
24. 寫出生產者消費者模式。
25. ThreadLocal的設計理念與作用。
26. ThreadPool用法與優勢。
27. Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。
28. wait()和sleep()的區別。
29. foreach與正常for循環效率對比。
30. Java IO與NIO。
31. 反射的作用於原理。
32. 泛型常用特點,List<String>能否轉為List<Object>。
33. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。
34. Java與C++對比。
35. Java1.7與1.8新特性。
36. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等。
37. JNI的使用。

JVM:
1. 內存模型以及分區,需要詳細到每個區放什麼。
2. 堆裡面的分區:Eden,survival from to,老年代,各自的特點。
3. 對象創建方法,對象的內存分配,對象的訪問定位。
4. GC的兩種判定方法:引用計數與引用鏈。
5. GC的三種收集方法:標記清除、標記整理、復制演算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?
6. GC收集器有哪些?CMS收集器與G1收集器的特點。
7. Minor GC與Full GC分別在什麼時候發生?
8. 幾種常用的內存調試工具:jmap、jstack、jconsole。
9. 類載入的五個過程:載入、驗證、准備、解析、初始化。
10. 雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
11. 分派:靜態分派與動態分派。
(來源:面試心得與總結---BAT、網易、蘑菇街)

總體來說java考察內容包括以下這些:
1,面向對象的一些基本概念:繼承,多態之類的
2, 抽象類和介面
3, 靜態類,內部類
4, Java集合類,同步和非同步
5, Java類載入機制
6, Java內存模型和垃圾回收演算法
7, 線程同步機制(voliate,synchronized,重入鎖,threadlocal),線程間通信(wait,notify)
8, 異常處理
9, 多線程同步問題,生產者消費者,讀者寫者,哲學家就餐,用java實現
10, 了解java中設計模式的思想,用了哪些設計模式,有什麼好處

作者:Doing
鏈接:https://www.hu.com/question/29800631/answer/109486025
來源:知乎

閱讀全文

與三四年左右java程序員面試相關的資料

熱點內容
java程序升級 瀏覽:490
排序演算法之插入類 瀏覽:227
gcccreate命令 瀏覽:73
海爾監控用什麼app 瀏覽:64
系統盤被壓縮開不了機 瀏覽:984
linuxredis30 瀏覽:541
狸窩pdf轉換器 瀏覽:696
ajax調用java後台 瀏覽:904
活塞式壓縮機常見故障 瀏覽:614
break演算法 瀏覽:731
換電池的app是什麼 瀏覽:771
單片機ad采樣快速發送電腦 瀏覽:22
第五人格伺服器錯誤是什麼回事兒 瀏覽:467
查看手機谷歌伺服器地址 瀏覽:191
python操作zookeeper 瀏覽:706
蘋果手機dcim文件夾顯示不出來 瀏覽:430
如何壓縮文件夾聯想電腦 瀏覽:586
程序員的學習之旅 瀏覽:443
apkdb反編譯 瀏覽:925
雪花演算法為什麼要二進制 瀏覽:825