歸納篇:JAVA面試條目

本篇筆記是我五年來的工作學習面試經驗&記錄,希望對大家有一些幫助

一、Java基礎

  • Object類的所有方法:getClass hashCode equals clone toString notify notifyAll wait finalize

  • 八種基本數據類型&取值範圍

  • 自動拆裝箱&包裝類型的緩存機制

  • ThreadLocal 理解String&不可變性 StringBuffer StringBuilder源碼

  • ArrayList LinkedList HashMap(重點,可以花一天時間徹底掌握) LinkedHashMap TreeMap HashSet LinkedHashSet TreeSet源碼

  • 異常體系結構

  • Java8:理解函數式編程 流式操作 CompletableFuture

二、併發編程(必考,高併發處理的必要手段,對於juc以及線程模型的演進過程的掌握非常重要)

  • 理解併發與並行

  • 線程池的原理:理解每個參數

  • Thread Runnable Callable

  • AQS(重要:常常會配合synchronized來說) Condition

  • Lock:ReentrantLock ReentrantReadWriteLock

  • Semaphore CountDownLatch CyclicBarrier

  • 各種Atomic

  • ConcurrentHashMap BlockingQueue CopyOnWriteArrayList

  • Executors

  • 線程的狀態轉換:wait sleep notify notifyAll join park

  • 停止線程的方法

  • 線程模型:理解BIO、NIO(重點)、AIO、瞭解netty

  • 併發包就那些東西,掌握AQS之後其他的很快就打通了,所以不用

三、jvm(《深入理解java虛擬機》每年都至少看一遍,每次都會有新的理解)

  • jvm內存結構

  • 常用調優參數

  • gc算法

  • gc的工具:CMS&G1重點&ZGC

  • java內存模型:

    • 可見性、原子性、順序性、happens-before、內存屏障、volatile、final

    • synchronized(對象頭):偏向鎖->輕量級鎖->重量級鎖、monitor、鎖優化、鎖消除、鎖粗化、自旋鎖、可重入鎖

  • 常用工具以及命令

  • 類加載過程

  • 對象創建過程

  • fullGC的排查思路

  • 工具:jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, Arthas

四、設計模式

  • 創建型:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。

  • 結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。

  • 行爲型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。

五、mysql(下面列出來的全是重點)

  • 常用sql以及內置函數

  • 索引

    • hash索引

    • b+樹的索引

    • 聚集索引&非聚集索引

    • 回表

    • 聯合索引:最左前綴&覆蓋索引&索引下沉

  • 事務&隔離級別&實現原理:readview undolog redolog mvcc

  • 鎖的使用&鎖算法&行鎖&表鎖&樂觀鎖&悲觀鎖

  • 連接查詢的原理(算法)

  • binlog&使用場景

  • 分庫分表:垂直&水平

  • 工具:explain

六、redis(《redis的設計與實現》看完這本書就行了)

  • 熟練五種類型對象&適用場景:字符串 列表 哈希 集合 有序集合

  • 瞭解底層數據結構:SDS 鏈表 字典 跳躍表 整數集合 壓縮列表

  • 淘汰策略

  • RDB&AOF

  • 複製功能的實現

  • Sentinel&集羣的結構

  • 發佈訂閱&事務

  • 分佈式鎖

  • 常見問題&解決方案:緩存擊穿,緩存穿透,緩存雪崩

七、web(感覺很少有人問了,應屆生可能問的多些)

  • 三次握手與四次揮手

  • http/1.0 http/1.1 http/2之間的區別

  • http中 get和post區別

  • 理解https加密過程

  • forward&redirect的區別

  • CSRF&XSS攻擊與防範

  • 常見的web請求返回的狀態碼

  • cookie&session

  • Servlet&filter&listener

  • DNS

  • tomcat&nginx區別

八、spring(說實話問到我的不多,感覺掌握下面幾個足夠了)

  • IOC&DI&AOP

  • 掌握常用註解

  • 如何解決循環依賴

  • 事務傳播機制

  • 事務失效場景

  • springMVC的理解

  • springboot的理解

九、分佈式&高可用(平時多注意怎麼處理好程序可能遇到的極端情況,保證服務的高可用率)

  • zookeeper

    • 理解使用:文件系統+監聽器

    • 瞭解選舉算法&分佈式鎖的實現

  • mq(重要,有時候面試官直接一串mq連環炮就可以決定要不要一個人了)

    • 設計架構

    • 如何保證高可用

    • 如何保證高吞吐

    • 如何實現局部有序

    • 重複消費的問題

    • 延遲消息

    • 作用:異步 解耦 削峯

    • kafka(之後會就kafka寫一個系列)

  • 瞭解dubbo&spring cloud&Consul工作流程

  • 限流&熔斷:Hystrix/Resilience4j(高可用的必須中間件)

  • 鏈路追蹤(瞭解實現原理)

十、算法&數據結構(常刷leetcode)

  • 棧、隊列、鏈表、數組、哈希表、樹、堆、圖

  • 快排&二分&分治&遞歸&滑動窗口/雙指針&BFS&DFS

  • 屬於基本素養了(畢竟據說微軟5輪面試全是算法,每輪一個小時)

十一、工具

  • git多分支協作流程

  • maven常用命令&生命週期

  • linux常用命令:tail grep awk sed等等

備註

  • 個人難免有盲區,歡迎評論區指正&補充,會持續更新

  • 種一棵樹,最好的時間是十年前,其次是現在,大家共勉

碼字實在辛苦,歡迎 關注 收藏 點贊 轉發


ps:大家感興趣的主題可以打在評論區,我這邊好安排節奏哈(畢竟10 10 5/6,精力有限

歡迎關注“豬哥Java”



本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章