Java工程師要求三年工作經驗,三年經驗的工程師都具備哪些技能?

山東中公優就業發表於2019-10-08

小編覺得工作經驗對我們來說就是在工作中積累解決問題的能力,那麼程式設計師對工作經驗是什麼樣的要求呢?

其實三年工作經驗只是檢驗你作為一個程式設計師能力是否達標的一個標準,並不是硬性的,當然有些公司為了減少大量培訓出身的開發人員以及應屆生的投遞,所以設定了年限,同時也讓剔除了一部分對自己技術不自信的人的簡歷,增大了工作效率,但是這不是絕對的,如果你對任何技術都瞭如指掌,那麼就算你只有一年工作經驗,但是你的工作能力完全勝任,那麼你也可以私下和HR直接溝通,一般HR都會給出面試。再說你什麼都會,還怕找不到工作?對吧,自信點!其次就是工作經驗,什麼叫工作經驗?就是你在工作中積累的各種開發技巧以及你在工作中積累下來解決問題的辦法,還有就是你在工作中積累開發能力,當遇到有什麼不懂的問題能有自己方法去解決,這才叫工作經驗。這個能力並不是有年限的。所以工作經驗並不是硬性的,說白了就能力達到與否的問題。

那作為程式設計師對自身的技術要求還是挺高的,一般程式設計師需要具備的技能就包括這些,能力欠缺的小夥伴還是要繼續加強修煉哦。

1、基本語法

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

2、集合

非常重要,也是必問的內容。基本上就是List、Map、Set,問的是各種實現類的底層實現原理,實現類的優缺點。

集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實現原理,能流利作答,當然能掌握CopyOnWrite容器和Queue是再好不過的了。另外多說一句,ConcurrentHashMap的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題,關於ConcurrentHashMap,我提供三點回答或者是研究方向:

ConcurrentHashMap的鎖分段技術

ConcurrentHashMap的讀是否要加鎖,為什麼

ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器

3、多執行緒

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

假如有Thread1、Thread2、Thread3、Thread4四條執行緒分別統計C、D、E、F四個盤的大小,所有執行緒都統計完畢交給Thread5執行緒去做彙總,應當如何實現?

你對這個問題是否有答案呢?不難,java.util.concurrent下就有現成的類可以使用。

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

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

4、 IO

IO分為File IO和Socket IO,File IO基本上是不會問的,問也問不出什麼來,平時會用就好了,另外記得File IO都是阻塞IO。

Socket IO是比較重要的一塊,要搞懂的是阻塞/非阻塞的區別、同步/非同步的區別,藉此理解阻塞IO、非阻塞IO、多路複用IO、非同步IO這四種IO模型,Socket IO如何和這四種模型相關聯。這是基本一些的,深入一些的話,就會問NIO的原理、NIO屬於哪種IO模型、NIO的三大組成等等,

提一句,NIO並不是嚴格意義上的非阻塞IO而應該屬於多路複用IO,面試回答的時候要注意這個細節,講到NIO會阻塞在Selector的select方法上會增加面試官對你的好感。

如果用過Netty,可能會問一些Netty的東西,畢竟這個框架基本屬於當前最好的NIO框架了(Mina其實也不錯,不過總體來說還是比不上Netty的),大多數網際網路公司也都在用Netty。

5、JDK原始碼

要想拿高工資,JDK原始碼不可不讀。上面的內容可能還和具體場景聯絡起來,JDK原始碼就是實打實地看你平時是不是愛鑽研了。我面試過程中被問了不少JDK原始碼的問題,其中最刁鑽的一個問題——String的hashCode()方法是怎麼實現的,幸好我平時String原始碼看得多,答了個大概。JDK原始碼其實沒什麼好總結的,純粹看個人,總結一下比較重要的原始碼:

List、Map、Set實現類的原始碼

ReentrantLock、AQS的原始碼

AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的

執行緒池的實現原理

Object類中的方法以及每個方法的作用

6、 框架

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

7、資料庫

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

不過資料庫倒是不用擔心,一家公司往往有很多部門,如果你對資料庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對資料庫使用不是要求非常高的部門鍛鍊一下。

8、Web方面的一些問題

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

1.談談分散式Session的幾種實現方式

2.講一下Session和Cookie的區別和聯絡以及Session的實現原理

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



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947593/viewspace-2658999/,如需轉載,請註明出處,否則將追究法律責任。

相關文章