Java工程師要求三年工作經驗,三年經驗的工程師都具備哪些技能?
小編覺得工作經驗對我們來說就是在工作中積累解決問題的能力,那麼程式設計師對工作經驗是什麼樣的要求呢?
其實三年工作經驗只是檢驗你作為一個程式設計師能力是否達標的一個標準,並不是硬性的,當然有些公司為了減少大量培訓出身的開發人員以及應屆生的投遞,所以設定了年限,同時也讓剔除了一部分對自己技術不自信的人的簡歷,增大了工作效率,但是這不是絕對的,如果你對任何技術都瞭如指掌,那麼就算你只有一年工作經驗,但是你的工作能力完全勝任,那麼你也可以私下和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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java工程師要具備哪些技能呢?Java都學哪些內容呢?Java工程師
- web前端工程師需要具備哪些要求?Web前端工程師
- 一名3年工作經驗的java程式設計師應該具備的技能!Java程式設計師
- 大資料開發工程師需要具備哪些技能?大資料工程師
- Python工程師具備哪些技能才能提升求職機率?Python工程師求職
- 軟體工程師生存指南:面試準備、工作經驗和實用工具軟體工程工程師面試
- 【入門必看】網路安全工程師需要具備哪些技能?工程師
- 大資料開發工程師的兩年工作經驗總結大資料工程師
- 研發工程師兩年工作經驗如何優化簡歷工程師優化
- 三年開發程式設計師的職場經驗談程式設計師
- 月入2W的高階PHP工程師都具備哪些能力?PHP工程師
- 4-6年經驗左右、優秀的 Java 程式設計師應該具備的技能Java程式設計師
- 優秀的DevOps工程師必須具備的軟技能dev工程師
- Linux運維工程師簡歷專案經驗Linux運維工程師
- 【Java開發工程師面經】Java工程師
- web前端工程師必備技能Web前端工程師
- linux網路工程師需要掌握哪些技能?linux網路工程師技能分析Linux工程師
- 分散式服務介面的java工程師,需要熟練具備的技能點分散式Java工程師
- 軟體測試工程師需要具備哪些能力工程師
- 高階PHP工程師應該具備的一些技能PHP工程師
- 工程師經驗分享2 --- 嵌入式大牛開發經驗心得之學習方向工程師
- 面試官:三年工作經驗,你連序列化都說不明白?面試
- 軟體測試工程師需要具備哪些素質?工程師
- 2020年Java工程師就業前景分析,這份經驗分享給迷惘的你Java工程師就業
- Java工程師研發面經大合集Java工程師
- 速看!工程師的“平安經”工程師
- 演算法工程師老潘總結的一些經驗演算法工程師
- Java找工作需要具備哪些技能?Java
- 從業Linux運維工程師崗位有哪些要求?負責哪些工作?Linux運維工程師
- 5G運營三年:從亞洲成功經驗中汲取經驗
- Python運維工程師是什麼?Python運維工程師工作職責及要求!Python運維工程師
- 網路安全應急響應工程師需要具備哪些能力?工程師
- 成為一名大資料工程師,需要具備什麼技能?大資料工程師
- HTML5前端工程師需具備的能力HTML前端工程師
- 高年薪的Web前端工程師經常思考哪些問題?Web前端工程師
- 做大資料工程師需要掌握哪些技能呢?大資料工程師
- 谷歌軟體工程師分享程式設計經驗:有效的流程很關鍵谷歌軟體工程工程師程式設計
- 大資料如何學習,大資料工程師學習經驗分享大資料工程師