首先,很多程序員在職場發展的初期都會面臨一個路線選擇的問題,甚至不少開發團隊中的主力程序員也存在發展路線不清晰的問題,如果不能及時確立自己的發展方向,對於未來的職場發展會產生一定的負面影響,也很容易導致職業生命周期縮短的情況。
就現在經濟大環境而言,很不樂觀,Java程序員的日子也很不好過,無論是還在找工作的、還是已經入職多年、哪怕做到項目經理技術經理的,壓力都異常巨大,似乎處處充滿危機。但是,仔細分析一下,出路還是有的,甚至解決溫飽、過上有房有車沒貸款的生活也是很可能的。首先,在如今這個浮躁的社會,大多數人的心態也是浮躁的,只要你能潛下心來,深入研究某個技術,有了一技之長,溫飽問題肯定就可以先解決了。
Java程序員應該如何學習提升自己?
我在和這位架構師進行交流的時候他告訴我:
很多人雖然每天都在學習,但是真的是在做無用功,學的東西很多都是即將被淘汰,或者工作中遇不到,面試中問不到的一些技術。反倒是面試中常問的的,工作中經常用到技術,覺得自己會用就行,或者是覺得自己懂得夠多了,沒有再去深入的研究!你覺得,這樣的學習有什么用呢?
在后續的交流中,我問他,現在面試時都會問哪些技術?都會問到什么深度?他告訴我:其實你翻翻面經,或者去面試兩次也就知道了,面試問的都是那些東西,只不過很多人都在背面試題等等,要我說這樣只會讓面試官更加不看好你!
做個小測試吧,下面給大家看一份面經
一面: 90mins
講項目
講一個集合框架整體框架
分Collection和Map兩大類全部講一遍,每一個接口和對應實現類,他們類各自的特點,性質,基本參數,能講多深講多深
arraylist和hashset區別
為什么hashmap要在8的時候樹華
hashmap線程安全的方式
hashtable和concurrenthashmap的各自特點,能講多深講多深
為什么hashtable被棄用了,cch1.7之前和1.8之后的區別
鎖的分類
樂觀鎖、悲觀鎖、自旋鎖、讀寫鎖、排它鎖、共享鎖、分段鎖等等各自特點,以及它們在java中具體的實現方式
Spring IOC的底層實現
XML+dom4j+工廠+單例
索引不適用的條件
索引列上有函數,不滿足最左前綴,使用了不等號,使用了范圍查詢等等
索引的分類
B-Tree索引,Hash索引,全文索引,單值索引、唯一索引、復合索引、聚簇索引、非聚簇索引等等,以及它們各自的特點
二面:40mins
講項目
線程池了解多少
executors創建的幾種線程池,直接new ThreadPoolExecutor,7個參數
線程池拒絕策略分別使用在什么場景
Spring AOP的底層實現
動態代理,newProxyInstance,cglib,ASM
講一下代理模式
動態代理,靜態代理
你都了解什么設計模式,他們在JDK中如何體現的
工廠,責任鏈,觀察者,建造,代理,單例,原型等等在JDK中對應的體現。。。
三面coding:2h
千萬級數據量的list找一個數據(多線程),搶紅包
四面:50mins
講項目
講一下JVM堆內存管理
棧上分配->TLAB->新聲代、老年代->可達性分析->GC算法->所有垃圾回收器及其優缺點和特點
那到底多大的對象會被直接扔到老年代
G1兩個region不是連續的,而且之間還有可達的引用,我現在要回收其中一個,另一個會被怎么處理
聽說過CMS的並發預處理和並發可中斷預處理嗎
平常怎么學習的和職業規划
五面coding:2h
百萬級int數據量的一個array求和(fork/join)
六面交叉面:20mins
深挖科研項目
七面hr:20min
聊人生
通過上面的這份面經你都得到了那些收獲?
先說下這份面經需要注意的地方
這是一份應屆生的面經
面試中都問到了那些技術點
面試的深度
面試時長
通過面經得出的結論:
應屆生面試時算法問的會多一點,不會着重抓項目,面試的重點還是基礎知識。面試時過程中問到的知識點都有那些、面試時可能會遇到連環炮,死懟一個技術點,一直深入直到你不會為止。
應該着重學習那些技術?
ps:應屆生首選算法,保證每天一道LeetCode題
多線程
JVM
設計模式
Redis
MySQL
ZK
