開篇介紹
個人背景:
不說太多廢話,但起碼要讓你先對我有一個基本的了解,本人畢業于浙江某二本院校,算是科班出身,畢業后就進了一家外包公司做開發,當然不是阿里的外包,具體什么公司就不透露了,在外包一呆就呆了整整2年多,直到現在才從外包離開,如今拿到阿里的offer準備入職了,
闡述原因:
在外包公司的兩年里,作為一名菜雞,確實非常合格,技術沒什么長進,眼見也沒有提升,沒規劃沒未來,讓人實在焦慮,之所以開始改變自己也是家庭發生了變故,才讓自己開始思考人生,身邊很多人感嘆過,能從外包逆襲,算是傳奇,所以今天想要分享一下個人的經歷,希望能夠鼓勵到一些與我有相似經歷的同行,
注意:這次面試程序比較長,內容繁多,在文章中我基本上簡述了

阿里一角
阿里巴巴Java崗面試題分享
1.HashMap 的內部結構?內部原理?和 HashTable 的區別,假如發?了 hash 碰撞,如何設計能讓遍歷效率??
2.講一講講講 ConcurrentHashMap吧,
3.講一下JVM虛擬機記憶體結構,以及它們的作?,
4.講講JVM的類加載程序&&雙親委派模型,
5.談談Java的垃圾回收演算法,
6.談談Java垃圾回收的觸發條件,
7.synchronized和Lock的區別,
8.volatile的作?,為什么會出現變數讀取不?致的情況,與 synchronized 的區別?
9.++i 在多執行緒環境下是否存在問題,怎么解決?
10.講一講Thread.sleep() 和 Thread.yield() 區別?
11.講講常?的容器類?
12.如何去除 ArrayList 的重復元素?
- 直接采? HashSet 即可,作為它的引數,然后再 addAll,但這種?式不能保證原來的順序,如果要求順序,可以使? LinkedHashSet 即可,
13.講講 Java 的泛型擦除,泛型主要是為了解決什么問題?如何?泛型做 Json 的決議的?
14.談談 Java 的 Error 和 Exception 的區別聯系,
- Error 和 Exception 均集成? Throwable,但 Error ?般指的是和虛擬機相關的問題,?如系統崩潰,虛擬機錯誤,OOM 等,遇到這樣的錯誤,程式應該被終?,? Exception 表示程式可以處理的例外,可以捕獲并且可能恢復,
15.說一下軟引?和弱引?的區別?
16.成員變數和靜態?法可以被重寫么?重寫的規則是怎樣的?
17.內部類訪問區域變數的時候,為什么變數必須加上fifinal修飾符?
- 因為?命周期不同,
18.什么情況會造成記憶體泄漏?
19.什么是執行緒死鎖,如何解決?
20.十億條淘寶購買記錄,怎么獲取出現最多的前十個 ?
- 這是一道典型的有限記憶體的海量資料處理的題目,一般這類題目的解答無非是以下幾種:
- 分治,hash映射,堆排序,雙層桶劃分,Bloom Filter,bitmap,資料庫索引,mapreduce等,
- 具體情形都有很多不同的方案,這類題目可以到網上搜索一下,了解下套路,后面就基本都會了,
21.說一下Innodb和MySIAM的區別
22.說一下jvm記憶體模型,介紹一下你了解的垃圾收集器
- 其實并沒有jvm記憶體模型的概念,應該是Java記憶體模型或者jvm記憶體結構,這里面試者一定要聽清楚問的是哪個,再回答,
23.如何訪問鏈表中間節點
- 對于這個問題,我們首先能夠想到的就是先遍歷一遍整個的鏈表,然后計算出鏈表的長度,進而遍歷第二遍找出中間位置的資料,這種方式非常簡單,
- 若題目要求只能遍歷一次鏈表,那又當如何解決問題?
- 可以采取建立兩個指標,一個指標一次遍歷兩個節點,另一個節點一次遍歷一個節點,當快指標遍歷到空節點時,慢指標指向的位置為鏈表的中間位置,這種解決問題的方法稱為快慢指標方法,
23.HR問
- 從技術角度來說,你覺得你跟前同事比怎么樣?
- 說一下自己的個人優勢,
- 作業中覺得哪方面欠缺?
- 為什么想來阿里?阿里的什么方面吸引了你?
面試總結及建議
每一次Java面試,其實都是一次學習機會,是對自己技術知識堆疊的梳理、考核、復盤,我們應該抱著學習的態度,認真對待,找到自己比較薄弱的環節,盡快去查漏補缺學習鞏固,對于面試來說,其實也沒有太多的技巧可言,面試官主要看重的就是個人能力,無非就是兩個方面:
- 技術廣度
- 技術深度
外包CRUD屌絲,是怎樣逆襲的?
外包出身的我,究竟有多么菜,多么屌絲呢?還在外包的我,面試時被問到什么是成員變數,我是什么都不知道,相信這種程度大家應該有所感受了,
那作為一個外包CRUD屌絲,我是怎么做到逆襲的呢?
注意:下文主要是我個人的總結方法經驗(面試學習和刷題筆記),都整理有PDF完整版,有需要的可以加助理VX:mxx2020666,免費領取
01 梳理知識體系,學會查漏補缺

關于知識體系的梳理,我個人主要分為以下5個部分,有針對性的,將這5個部分逐步擊破,那么搞定面試是基本沒什么問題了,
- 并發編程:多執行緒,高并發,CAS,鎖,容器,執行緒池底層
- 性能調優:Mysql,IO及網路調優,演算法調優,JVM
- Spring全家桶:Spring,SpringMVC,MyBatis,IOC,AOP
- 快取資料庫:Redis,mongoDB,MySQL
- 分布式&微服務:SpringBoot,SpringCloud,docker,maven
02 根據要點,逐個擊破(根據大綱內容來進行復習)
1.并發編程(核心技術筆記)
- Java多執行緒技能
- 物件及變數的并發訪問
- 執行緒間通信
- Lock的使用
- 定時器Timer
- 單例模式與多執行緒
- 拾遇增補


2.性能調優(Java性能調優+MySQL調優+JVM調優)

3.Spring全家桶(Spring全家桶學習腦圖+SpringBoot使用筆記+原始碼深度決議)
- Spring學習思維腦圖(Xmind)

- Spring使用筆記+實戰檔案


4.快取資料庫(MySQL+Redis+mongoDB)

03 最后看面試題來舉一反三(刷題刷題刷題,重要事情說三遍)
關于面試刷題也是有方法可言的,建議最好是按照專題來進行,然后由基礎到高級,由淺入深來,效果會更好,當然,這些內容我也全部整理在一份pdf檔案內,分成了以下幾大專題:
- Java基礎部分

- 演算法與編程

- 資料庫部分

- 流行的框架與新技術(Spring+SpringCloud+SpringCloudAlibaba)

這份面試檔案當然不止這些內容,實際上像JVM、設計模式、ZK、MQ、資料結構等其他部分的面試內容均有涉及,因為文章篇幅,就不全部在這里闡述了
寫在文末
作為一名程式員,階段性的學習是必不可少的,而且需要保持一定的持續性,這次在這個階段內,我對一些重點的知識點進行了系統的復習,一方面鞏固了自己的基礎,另一方面也提升了自己的知識廣度和深度,
最后提醒一下哦,如果你想要學習,卻無奈于沒有干貨學習資料,以上所有的資料內容都可以免費分享給你,只需你多多支持一下即可
——點贊+關注,加助理VX:mxx2020666,免費領取
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206175.html
標籤:其他
