java基礎
全是基礎不用多說確定考的多,尤爲是招銀java
- OOP特性/java語言特性:封裝、繼承、多態
- 多態具體的表現:多態應用舉例、如何調用父類方法(super)、重寫和重載(重寫父類方法的規則、構造方法可否重寫。。)
- 類、抽象類、接口:抽象類和接口的區別、引用傳遞和值傳遞、java只有值傳遞
- 泛型
- 反射:class類的意義
- StringBuffer、StringBuilder、String區別:String經常使用方法
- static關鍵字在那個內存區域
- java經常使用包有哪些
- final關鍵字
- 建立新對象的方法
- java如何緩存(與redis、memcache無關)
容器
簡單linux
- 集合類的層次關係,簡單介紹
- equals()、hashcode()的區別,重寫注意事項
- TreeMap瞭解嗎
- HashMap、HashTable、ConcurrentHashMap:區別、hashMap實現原理、put方法作了什麼、底層源碼、自定義類放入hashmap的要求(重寫equals和hashcode)
- LinkedList和ArrayList區別
線程
難點在於被問到手寫線程代碼,那就算本身倒黴了;不然線程還算簡單面試
- 線程和進程
- 線程定義方法,這些方法的區別
- 線程狀態轉換圖
- concurrent包有啥內容
- BlockingQueue原理
- 線程安全的容器
- 線程池相關:線程池參數意義,如何設置線程池參數,如何調優線程池
- 程間通訊:概念、手段:同步包下的同步器、volatile、synchronized、單例+多線程、join
- 線程同步:概念
- 死鎖:原理和解決方式、手寫死鎖
- 綜合題目(我的認爲難度較大,遇到算你倒黴):景區多個入口出口統計人數、多線程保證一個對象、雙重檢查單例手寫、生產者消費者手寫、手寫多個線程按順序執行
- 樂觀鎖悲觀鎖思想:樂觀鎖和悲觀鎖的經常使用實現方式(樂觀鎖:版本號機制、CAS算法)、經常使用的樂觀鎖悲觀鎖都有啥(樂觀鎖atomic包下的、悲觀鎖synchronized reentrantLock)
- 併發訪問錯誤的解決
- 用lock實現先讀再寫(能答出來的我五體投地)
數據庫
問的就那些,背就完事了,很簡單redis
- 手寫基礎語句
- 事務(!!很重要):隔離級別、四個特性、不一樣隔離級別產生的問題(髒讀幻讀不可重複讀)
- 存儲過程 | 函數 | 觸發器:存儲過程和函數的區別,如何選擇使用;觸發器分類
- 存儲引擎
- 高級查詢相關:內外連接的區別、左右連接的區別
- 索引相關(!!很重要):原理、索引優缺點、索引設計優化策略、經常使用索引類型、索引生效場景
- 數據庫(非索引)優化
- 數據量巨大時,如何分庫分表,場景、條件和實現方式
- B樹和B+樹:區別、畫一個B+樹
- 設計無限極分類表
- union和union all
- 查詢結果去重:distinct和group by的區別
- 數據庫鏈接池:最大鏈接數、最小鏈接數
JVM
簡單算法
- jvm運行時內存分配:各區域比例設置
- GC:GC算法,堆和GC算法;GC時間
- finalize方法
- 內存泄漏的產生和解決(嚴格來講不屬於jvm相關知識)
- 對象建立流程
- 參數:本身改過什麼JVM參數
- 類初始化順序(加載鏈接初始化)
- 對象如何判斷是垃圾
- 回收過程
- 靜態變量實例域(啥玩意)
算法
算法本人沒啥好說的,本身刷吧,如下是出現過的經典題,一些偏門的我就不寫了spring
- 排序算法:七種基礎算法必定要熟練到手寫,各自的特色和複雜度;隨機快排和經典快排,複雜度;給一個序列,手寫快排一次後的序列
- 隊列和棧:隊列和棧區別,使用場景;數組實現隊列
- 找到100億url中最多出現的k個(!這個題不少公司都問到了,應該是哈希+分文件+堆排序,本身查吧)
- 如何把取出的數據樹形結構化
- 介紹紅黑樹,和AVL樹的區別
- 一致性哈希,怎麼解決哈希衝突
- 數組和鏈表:數組和鏈表的區別以及優缺點;列表去重;個有序鏈表合併(!!出現過幾回);找出兩個數組相等的數,不能用其餘數據結構;一個數組中只有兩個數出現一次,其餘的都出現兩次,求這兩個數;給定一個數字和數組,找出數組中兩個相加等於這個數字的兩個數,不能用數據結構;找兩個鏈表的交叉節點
- 判斷樹1是樹2的子樹
- 二叉樹:層級遍歷;後序遍歷;72個節點,問非葉子節點數量;求任意兩節點距離,時間複雜度;判斷是不是平衡二叉樹,如何調整平衡二叉樹
- 矩陣找最短路徑,直接畫出來
- 手寫LRU
JDBC & ORM
不太問道的一個區域,能問的也少,枉費我當初學了好久sql
- sql注入和防治辦法(preparestatement和statement區別,有啥優勢)
- mybatis:如何開啓延遲加載、如何分頁、mybatis批量查詢手寫
- 數據庫鏈接池的實現方式:本身設計鏈接池須要考慮什麼
- 驅動爲何使用反射而非new(內部存在內部靜態代碼塊,防止加載兩次)
spring族
- 介紹springboot/Spring:不要僵硬的背ioc和aop,雖然主要確定是說這個,但能夠隨便扯點別的啊、好比spring是輕量級一站式框架
- Spring中用到的設計模式:spring如何實現單例模式的
- spring的隔離級別
- spring事務寫在那一部分(service層),爲何不在controller或者dao層
- springmvc工做流程
- 攔截器作啥的,啥時候用
- spring修改成prototype的方法
- aop的使用方式,何時用jdk動態代理何時用cglib(不使用接口時的狀況)(別問我,問就是不懂)
- spring中全局變量如何建立
設計模式
- 單例模式(!!很是重要!!):手寫餓漢和懶漢式、單例保證多線程安全的方式,雙重檢測單例模式
- 工廠模式、策略模式、觀察者模式、適配器模式(比較常考)
操做系統 & 計算機網絡
這部分我都說的不知道,可是仍是過了,唉,感謝面試官啊數據庫
- 子網掩碼做用
- 進程調度算法
- 進程間通訊方式
- TCP和UDP的區別(!!常常考)
- TCP三握四揮(!!常常考)
- HTTP(!!常常考):常見狀態碼、http和https、http請求響應的內容、get和post區別
- 訪問網站的流程和涉及到的協議,對應七層模型(!!常常考)
項目 & 綜合題
這方面每一個人不同而且重複機率低,我列舉幾個有參考價值的設計模式
- 怎麼保證寫代碼出錯少
- 項目中類函數如何聲明
- 項目中印象顯著的bug,怎麼解決的
- 說一下微服務,微服務如何管理
- path和classpath區別
- eclipse、intellij快捷鍵和使用技巧
- 瀏覽器請求如何保證到達後臺而非使用瀏覽器緩存(請求加隨機參數)
- 設計轉帳場景(這是我被問到的綜合題,撲街)
- 設計移動支付場景
- BS和CS
- 系統卡頓如何查找緣由
- linux中不少waittime連接什麼狀況
寫在最後
最後,歡迎作Java的工程師朋友們加入Java高級架構進階Qqun:963944895數組
羣內有技術大咖指點難題,還提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)
比你優秀的對手在學習,你的仇人在磨刀,你的閨蜜在減肥,隔壁老王在練腰, 咱們必須不斷學習,不然咱們將被學習者超越!
趁年輕,使勁拼,給將來的本身一個交代!