金九銀十跳槽季,程序員面試點解析之Java專場

前言mysql

近年來Java工程師這個崗位煊赫一時,市場需求大,學習Java的人也愈來愈多,因此IT企業與求職者的選擇都比較多,那麼IT企業在面試時都會提哪些問題呢。下面爲你們分享 Java高級工程師面試阿里、京東、天貓、菜鳥時涉及的知識點,文章略長,但較全面,閱讀時間15分鐘左右。面試

11212.png

1、面試技巧

一、背熟你的簡歷redis

緣由:面試的第一個問題,一般是讓你進行自我介紹,或者介紹最近的項目,而一個面試者,若是連本身的簡歷都不熟悉,對簡歷裏提到的項目、技術都沒法描述清楚的話,我想沒有哪家公司會選擇這樣的工做人員。因此,切記:必定要背好本身的簡歷,不要求你能所有記住,但至少要熟記最近待過的兩家公司,這兩家公司裏作過的項目、負責的模塊、項目裏面用到的技術以及相對應的技術實現方案(這個尤其重要)。算法

二、保持自信心和沉重冷靜的心態sql

緣由:面試過程當中,自信是必不可少的, 你能夠在面試的路上進行自我暗示,不斷對本身說,我能夠的, 反正我就是這麼作的。其實,面對面試官的時候,你自信的狀態會讓面試官感受到你是個頗有實力的人,至少從第一印象上會給你高分。另外就是保持沉重冷靜,若是讓你提供技術方案或者說某個技術原理,不必什麼都說,你能夠對面試官說:我先想一想。而後回想記憶中的知識,組織一下語言,有條理地說出來,這樣能夠更好地表現你的才能。 不管誰面試都會緊張,我也會緊張,有時候明明記得的知識點會忽然忘記,不要緊,大膽地說忘了,或者直接說不知道,而不是逞強隨意胡亂一說。數據庫

三、儘可能記住面試過程當中你回答不出來或者回答存在不妥的問題後端

緣由:面試失敗了不要緊,畢竟每一個公司的要求不同,提的問題和你擅長的方面可能有所出入,可是請記住一點:面試過程當中那些你回答不出來的問題,或者你感受回答不許確的問題,能夠用紙和筆記下來。若是不會的,你能夠當場問面試官有沒有好的解答,若是面試官不肯意告訴你(通常是基礎方面面試官就懶得答你),那麼你就本身回家查資料,若是是某些特定的技術,也能夠本身寫寫案例什麼的,畢竟知識點就那麼多,問題百變,原理不變。面試也是一個學習知識的過程,讓你瞭解大部分公司目前須要或者要求的技術,此次不知道,下次就知道了設計模式

四、去面試以前,最好先了解你要去面試公司的狀況(包括產品、項目狀況)數組

緣由:俗話說,知己知彼,百戰不殆,面試就是一場戰鬥,你須要瞭解面試公司的基本狀況,包括崗位要求,這樣你就能大概知道面試的這家公司的技術要求狀況。 爲什麼要了解這家公司的主營產品和項目呢,就是讓你大概瞭解這家公司的一個技術架構的狀況,包括你可能對他們的一種實現方式提出質疑和疑惑。相信面試官很願意幫你解答這些問題,這樣你既能表現,也學到了知識,何樂而不爲。緩存

五、合理安排你的面試時間(若是有多家公司的面試機會,儘可能把你想去的公司放到最後去面試)

緣由:可能大部分人對於如何安排面試時間會比較迷茫,隨意安排。這裏有個技巧,若是同時有多個面試機會,把你最想去的公司放到最後,這樣你經歷過前面的這些公司篩選,若是成功了是個機會,若是沒成功,也是爲最後作練習。 不過這裏就須要考慮兩點:

一、你須要記住你投簡歷的公司和基本狀況(這說明你不是海投的)

二、若是記不住,能夠先應答一個時間,後續瞭解公司信息後,再調整面試時間。並且建議一天面試的公司不要超過兩家,最好是上午一家,下午一家,這樣你有充足的時間調整狀態。

2、項目介紹

一、明確項目是作什麼的。

二、明確項目的價值。(爲何作這個項目,它解決了用戶什麼痛點,它帶來什麼價值?)

三、明確項目的功能。(這個項目涉及哪些功能?)

四、明確項目的技術。(這個項目用到哪些技術?)

五、明確我的在項目中的位置和做用。(你在這個項目的承擔角色?)

六、明確項目的總體架構。

七、明確項目的優缺點,若是從新設計你會如何設計。

八、明確項目的亮點。(這個項目有什麼亮點?)

九、明確技術成長。(你經過這個項目有哪些技術成長?)

3、面試基礎總結

 在開始分析面試題以前,順便給你們推薦一個Java後端方向的交流學習社區:650385180,裏面不只能夠交流討論,還有面試經驗分享以及免費的資料下載,包括Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系。相信對於已經工做和遇到技術瓶頸的碼友,在這裏會有你須要的內容。

Java基礎

一、List 和 Set 的區別

二、HashSet 是如何保證不重複的

三、HashMap 是線程安全的嗎,爲何不是線程安全的(最好畫圖說明多線程環境下不安全)?

四、HashMap 的擴容過程

五、HashMap 1.7 與 1.8 的 區別,說明 1.8 作了哪些優化,如何優化的?

六、final finally finalize

七、強引用 、軟引用、 弱引用、虛引用

八、Java反射

九、Arrays.sort 實現原理和 Collection 實現原理

十、LinkedHashMap的應用

十一、cloneable接口實現原理

十二、異常分類以及處理機制

1三、wait和sleep的區別

1四、數組在內存中如何分配

Java 併發

一、synchronized 的實現原理以及鎖優化?

二、volatile 的實現原理?

三、Java 的信號燈?

四、synchronized 在靜態方法和普通方法的區別?

五、怎麼實現全部線程在等待某個事件的發生纔會去執行?

六、CAS?CAS 有什麼缺陷,如何解決?

七、synchronized 和 lock 有什麼區別?

八、Hashtable 是怎麼加鎖的 ?

九、HashMap 的併發問題?

十、ConcurrenHashMap 介紹?1.8 中爲何要用紅黑樹?

十一、AQS

十二、如何檢測死鎖?怎麼預防死鎖?

1三、Java 內存模型?

1四、如何保證多線程下 i++ 結果正確?

1五、線程池的種類,區別和使用場景?

1六、分析線程池的實現原理和線程的調度過程?

1七、線程池如何調優,最大數目如何確認?

1八、ThreadLocal原理,用的時候須要注意什麼?

1九、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差異?

20、LockSupport工具

2一、Condition接口及其實現原理

2二、Fork/Join框架的理解

2三、分段鎖的原理,鎖力度減少的思考

2四、八種阻塞隊列以及各個阻塞隊列的特性

Spring

一、BeanFactory 和 FactoryBean?

二、Spring IOC 的理解,其初始化過程?

三、BeanFactory 和 ApplicationContext?

四、Spring Bean 的生命週期,如何被管理的?

五、Spring Bean 的加載過程是怎樣的?

六、若是要你實現Spring AOP,請問怎麼實現?

七、若是要你實現Spring IOC,你會注意哪些問題?

八、Spring 是如何管理事務的,事務管理機制?

九、Spring 的不一樣事務傳播行爲有哪些,幹什麼用的?

十、Spring 中用到了那些設計模式?

十一、Spring MVC 的工做原理?

十二、Spring 循環注入的原理?

1三、Spring AOP的理解,各個術語,他們是怎麼相互工做的?

1四、Spring 如何保證 Controller 併發的安全?

Netty

一、BIO、NIO和AIO

二、Netty 的各大組件

三、Netty的線程模型

四、TCP 粘包/拆包的緣由及解決方法

五、瞭解哪幾種序列化協議?包括使用場景和如何去選擇

六、Netty的零拷貝實現

七、Netty的高性能表如今哪些方面

分佈式相關

一、Dubbo的底層實現原理和機制

二、描述一個服務從發佈到被消費的詳細過程

三、分佈式系統怎麼作服務治理

四、接口的冪等性的概念

五、消息中間件如何解決消息丟失問題

六、Dubbo的服務請求失敗怎麼處理

七、重連機制會不會形成錯誤

八、對分佈式事務的理解

九、如何實現負載均衡,有哪些算法能夠實現?

十、Zookeeper的用途,選舉的原理是什麼?

十一、數據的垂直拆分水平拆分。

十二、zookeeper原理和適用場景

1三、zookeeper watch機制

1四、redis/zk節點宕機如何處理

1五、分佈式集羣下如何作到惟一序列號

1六、如何作一個分佈式鎖

1七、用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎

1八、MQ系統的數據如何保證不丟失

1九、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題

20、zookeeper的選舉策略

2一、全局ID

數據庫

一、mysql分頁有什麼優化

二、悲觀鎖、樂觀鎖

三、組合索引,最左原則

四、mysql 的表鎖、行鎖

五、mysql 性能優化

六、mysql的索引分類:B+,hash;什麼狀況用什麼索引

七、事務的特性和隔離級別

緩存

一、Redis用過哪些數據數據,以及Redis底層怎麼實現

二、Redis緩存穿透,緩存雪崩

三、如何使用Redis來實現分佈式鎖

四、Redis的併發競爭問題如何解決

五、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的

六、Redis的緩存失效策略

七、Redis集羣,高可用,原理

八、Redis緩存分片

九、Redis的數據淘汰策略

JVM

一、詳細jvm內存模型

二、講講什麼狀況下回出現內存溢出,內存泄漏?

三、說說Java線程棧

四、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?

五、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題?

六、類加載爲何要使用雙親委派模式,有沒有什麼場景是打破了這個模式?

七、類的實例化順序

八、JVM垃圾回收機制,什麼時候觸發MinorGC等操做

九、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的

十、各類回收器,各自優缺點,重點CMS、G1

十一、各類回收算法

十二、OOM錯誤,stackoverflow錯誤,permgen space錯誤

最後祝各位面試成功,早日走上高級Java工程師的崗位,今後邁向人生巔峯!若文中有遺漏之處,望你們指出,造福更多的人,你們共同進步!

相關文章
相關標籤/搜索