java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?
四年Java工作經驗已經不短了,應該要有比較高的技術水準。
1、集合
幾乎是面試必問的內容,問的基本是底層實現原理,實現類的優缺點。
2、設計模式
23種設計模式中重點研究常用的十來種就可以了,面試中關于設計模式的問答主要是三個方向:
(1)你的項目中用到了哪些設計模式,如何使用
(2)知道常用設計模式的優缺點
(3)能畫出常用設計模式的UML圖
3、多線程
這是必問的一塊,因為四年工作經驗,基本上不會再問你怎么實現多線程了,會問得深入一些比如說Thread和Runnable的區別和聯系、多次start一個線程會怎么樣、線程有哪些狀態。當然這只是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同,總結起來是這么一個意思:
假如有Thread1、Thread2、Thread3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何實現?
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。提一句,NIO并不是嚴格意義上的非阻塞IO而應該屬于多路復用IO,面試回答的時候要注意這個細節,講到NIO會阻塞在Selector的select方法上會增加面試官對你的好感。
5、JDK源碼
要想拿高工資,JDK源碼不可不讀。上面的內容可能還和具體場景聯系起來,JDK源碼就是實打實地看你平時是不是愛鉆研了。面試過程中被問了不少JDK源碼的問題,其中最刁鉆的一個問了String的hashCode()方法是怎么實現的,幸好平時String源代碼看得多。JDK源碼其實沒什么好總結的,純粹看個人,總結一下比較重要的源碼:
(1)List、Map、Set實現類的源代碼
(2)ReentrantLock、AQS的源代碼
(3)AtomicInteger的實現原理,主要能說清楚CAS機制并且AtomicInteger是如何利用CAS機制實現的
(4)線程池的實現原理
(5)Object類中的方法以及每個方法的作用
6、框架
面試必問的,一般來說會問你項目中使用的框架,然后給你一些場景問你用框架怎么做,比如我想要在Spring初始化bean的時候做一些事情該怎么做、想要在bean銷毀的時候做一些事情該怎么做、MyBatis中$和#的區別等等,這些都比較實際了,平時積累得好、有多學習框架的使用細節自然都不成問題。
如果上面你的問題答得好,面試官往往會深入地問一些框架的實現原理。問得最多的就是Spring AOP的實現原理,當然這個很簡單,兩句話就搞定的事兒,即使你不會準備一下就好了。我遇到的最變態的是讓畫一下Spring的Bean工廠實現的UML圖。
7、數據庫
數據庫十有八九也都會問到,一些基本的像union和union all的區別、left join、幾種索引及其區別就不談了,比較重要的就是數據庫性能的優化,如果對于數據庫的性能優化一竅不通,那么有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL優化的內容準備一下。
8、Java虛擬機
Java虛擬機應該是很重要的一塊內容,推薦《深入理解Java虛擬機:JVM高級特性與最佳實踐》。
談談Java虛擬機中比較重要的內容:
1.Java虛擬機的內存布局
2.GC算法及幾種垃圾收集器
3.類加載機制,也就是雙親委派模型
4.Java內存模型
5.happens-before規則
6.volatile關鍵字使用規
大概就是這些,如果有精力的話,可以學習下數據結構和算法,這對于進去大廠的幫助非常大。
如果你覺得對你有幫助,請不要吝嗇,點個贊和喜歡,在加個關注。
總結
以上是生活随笔為你收集整理的java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站提示java已被阻止_Win7系统下
- 下一篇: java 接口中 常量_讨论:Java