java程序員面試應該具備的一些基本技能


這里列舉一些Java程序員面試應該要具備的一些基本技能,僅當參考。

1.基本語法

包括static、final、transient等關鍵字的作用,foreach循環的原理等等。越簡單的問題越能看出一個人的水平,別人對你技術的考量絕大多數都是以深度優先、廣度次之為標准的,切記。

2.集合

非常重要,也是必問的內容。基本上就是List、Map、Set,問的是各種實現類的底層實現原理,實現類的優缺點。集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實現原理,能流利作答,當然能掌握CopyOnWrite容器和Queue是再好不過的了。

3.設計模式

面試中關於設計模式的問答主要是三個方向:你的項目中用到了哪些設計模式,如何使用;知道常用設計模式的優缺點;能畫出常用設計模式的UML圖。

4.多線程

這也是必問的一塊了。問得深入一些比如說Thread和Runnable的區別和聯系、多次start一個線程會怎么樣、線程有哪些狀態。當然這只是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同,總結起來是這么一個意思:

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

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

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

5.框架

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

6.數據庫

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

7.數據結構和算法分析

數據結構和算法分析,對於一名程序員來說,會比不會好而且在工作中絕對能派上用場。數組、鏈表是基礎,棧和隊列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅黑樹,可以不了解它們的具體實現,但是要知道什么是二叉查找樹、什么是平衡樹,AVL樹和紅黑樹的區別。

8.Java虛擬機

談談Java虛擬機中比較重要的內容:Java虛擬機的內存布局、GC算法及幾種垃圾收集器、類加載機制,也就是雙親委派模型、Java內存模型、happens-before規則、volatile關鍵字使用規則。也許面試無用,但在走向大牛的路上,不可不會。

9.Web方面的一些問題

現在的Java主要面向Web端,因此Web的一些問題也是必問的。我碰到過問得最多的兩個問題是:談談分布式Session的幾種實現方式、講一下Session和Cookie的區別和聯系以及Session的實現原理。

這兩個問題之外,web.xml里面的內容是重點,Filter、Servlet、Listener,不說對它們的實現原理一清二楚吧,至少能對它們的使用知根知底。另外,一些細節的方面比如get/post的區別、forward/重定向的區別、HTTPS的實現原理也都可能會被考察到。

 

"錯過了太陽的時候,請你不要哭泣,因為如果你哭了,就會錯失接下來的月亮和漫天星辰。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM