search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Java程序員如何才能拿高薪

咱們開篇點題,說一說Java程序員應該具備的技能,這也是Java程序員們比較關心的問題。這裡要說明一下,以下列舉的內容不是都要會的東西,但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。

在這裡我推薦一下我自己建的Java學習群:479121291,首先你要是學Java的,其次不管你是小白還是大牛,小編都挺歡迎,群里每天都會分享Java相關乾貨,包括我最近熬夜花了一星期整理出的一份適合2017年自學的最新Java資料,都送給大家,歡迎初學和進階中的小夥伴。

1 基本語法

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

小編插一句:面試和被面試本身就是相對的,面試官能問這個問題同時也讓面試者感覺到面試官也是一個喜愛研究技術的人,增加了面試者對公司的好感。不要覺得這太吹毛求疵了,越簡單的問題越能看出一個人的水平,別人對你技術的考量絕大多數都是以深度優先、廣度次之,切記。

2 集合

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

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

3 設計模式

設計模式在工作中還是非常有用的,23種設計模式中重點研究常用的十來種就可以了,面試中關於設計模式的問答主要是三個方向:

你的項目中用到了哪些設計模式,如何使用

知道常用設計模式的優缺點

能畫出常用設計模式的UML圖

4 多線程

這也是必問的一塊了,如果你有3年左右的工作經驗,就基本上不會再問你怎麼實現多線程了,會問得深入一些。比如說Thread和Runnable的區別和聯繫,多次start一個線程會怎麼樣、線程有哪些狀態。

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

5 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框架了,大多數互聯網公司也都在用Netty。

6 JDK源碼

要想拿高工資,JDK源碼不可不讀。上面的內容可能還和具體場景聯繫起來,JDK源碼就是實打實地看你平時是不是愛鑽研了。JDK源碼其實沒什麼好總結的,純粹看個人,總結一下比較重要的源碼:

List、Map、Set實現類的源代碼

ReentrantLock、AQS的源代碼

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

線程池的實現原理

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

7 框架

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

如果上面你的問題答得好,面試官往往會深入地問一些框架的實現原理。問得最多的就是Spring AOP的實現原理,當然這個很簡單啦,兩句話就搞定的的事兒,即使你不會準備一下就好了。

8 資料庫

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

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

9 數據結構和演算法分析

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

10 Java虛擬機

Java虛擬機,很重要的一塊內容,也許面試的時候用不上,但在走向大牛的路上,不可不會。

Java虛擬機中比較重要的內容:

Java虛擬機的內存布局

GC演算法及幾種垃圾收集器

類載入機制,也就是雙親委派模型

Java內存模型

happens-before規則

volatile關鍵字使用規則

以上這些問題絕對關乎你的薪資,能領悟多少,就看自己了,在通往成功的路上可不能太懶哦!



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦