java開發3~5年工做經驗面試題

關於java基礎

  1. String,StringBuilder,StringBuffer區別是什麼?底層數據結構是什麼?分別是如何實現的?
  2. HashSet的底層實現是什麼?它與HashMap有什麼關係?
  3. Java 的併發包裏面有那些知識點?
  4. HashCode與HashMap的關係?
  5. 哈希函數的理解?
  6. map在put()的作了哪些事?
  7. 若是發生hash碰撞,有什麼方法能夠解決?
  8. 各類類型的鎖?
  9. synchronize和lock?
  10. hashTable的數據結構?
  11. 線程安全的map即HashTable和CurrentHashMap,底層的線程安全是如何實現的?
  12. hashCode的原理?
  13. 什麼狀況下須要重寫類的hashCode()方法?何時須要重寫equals()方法?
  14. hashmap添加元素,若是經過hash值獲得的位置若是有元素,哪種狀況會取代所在的元素?
  15. HashMap添加元素,若是是所得的桶數組的位置有值。該值則被添加到鏈表尾端,爲何會是尾端?
  16. ArrayList和hashmap底層結構,以及CurrentHashMap解決了什麼問題;
  17. Hashmap的是否線程安全?爲何是安全或者不安全?
  18. HashMap、HashTable以及ConcurrentHashMap的區別;
  19. volatile關鍵字的理解;用在哪些場景?
  20. 線程的理解以及其實現方式;
  21. 線程池的參數有哪些?實現原理;
  22. 線程同步方法有哪些?
  23. 緩存的原理?爲何要用緩存?爲何會比數據庫查詢快?
  24. 反射機制的理解;
  25. Object中的方法;
  26. String的toString()方法的實現?底層原理?
  27. NIO與IO的異同;
  28. 垃圾回收機制的理解;
  29. java8的新特性有哪些?如何使用?
  30. static關鍵字的場景和意義;(拓展:final)
  31. 如何理解事務?
  32. 虛擬機的內存結構;
  33. 動態代理的兩種實現方式;
  34. 悲觀鎖和樂觀鎖的區別
  35. 如何解決跨域問題?
  36. xml文件解析方式有幾種
  37. synchronize的鎖的類型
  38. 秒殺系統的設計
  39. 分庫分表
  40. Spring底層是如何實現的;
  41. Tomcat容器啓動的時候,spring的啓動流程;
  42. SpringAop除了動態代理,還用了其他的什麼原理?
  43. rpc框架
  44. 事務的隔離級別和傳播機制
  45. docker
  46. 高峯期如何進行分流

高併發

  1. 形成線程安全的主要因素有哪些:
  2. 互斥鎖是什麼?java鎖如何分類?
  3. 關於鎖名詞的分類
  4. 線程的建立方式;
  5. 三種建立方式分別有什麼區別?(最終能夠追究到最底層)
  6. 線程池的核心參數是哪些?分別表示什麼意義?
  7. 經過線程池建立線程的流程是什麼?
  8. Lock接口;
  9. synchronize和volitile的區別?
  10. 設計一個高併發的網站通用的技術有哪些?
  11. CAS是什麼?
  12. JUD是什麼?

分佈式

  1. 關於分佈式的一些基本概念
  2. springboot與spring相比優點是什麼?
  3. springboot自動配置的原理是什麼?
  4. 若是本身集成一個jar包到springboot中,該如何作?
  5. 如何解決分佈式事務問題?

web

  1. servlet的實現以及其中的方法;前端

  2. token生成的原理;java

經常使用的設計模式

關於前端

  1. 閉包的理解;
  2. js函數的理解;
  3. 如何優化前端?

關於框架

spring

  1. springIOC的理解;mysql

  2. spring是如何經過xml配置或者註解配置生成實例對象的?linux

  3. springIOC的java底層原理;git

    反射web

  4. springAOP的理解;ajax

  5. springAOP的底層的實現原理;redis

  6. spring如何解析視圖;算法

  7. spring的經常使用註解;spring

  8. springmvc和Struts2的差別;

  9. 如何控制事務;

  10. 事物的隔離級別和傳播機制;

  11. Spring BeanFactory與FactoryBean的區別;

  12. springAOP的應用場景;

mybatis

  1. mybatis的結構?

  2. 配置文件如何配置?

  3. mybatis處理多個參數的幾種方式?

  4. 佔位符有幾種?區別是什麼?

  5. 一級緩存和二級緩存的區別?

  6. Mybatis的類型轉換器?

  7. mybatis接口沒有實現類,他是如何操做數據庫的?

hibernate

  1. mybatis 與hibernate的對比;優點,劣勢,原理,如何選擇;
項目 Mybatis Hibernate
開發效率 較容易上手;須要手動管理sql 較難上手;無需管理sql,專一業務
入門 簡單 較難
靈活性 sql更加靈活 幾乎不用寫sql,封裝性較大
性能 相對較高 相對較低
日誌系統 除了基本記錄功能外,功能薄弱不少 志系統很是健全,涉及普遍,包括:sql記錄、關係異常、優化警告、緩存提示、髒數據警告等
優化 更容易 更難
自動性 半自動 全自動
緩存 有更好的二級緩存機制
移植性 移植性低(綁定了sql) 移植性高
適用場合 1.有複雜的查詢業務;2.無hibernate實踐經驗的 1.無複雜的查詢業務;2.可以熟練應用hibernate的

SpringBoot

  1. springboot與springmvc最大的優點在哪?
  2. 一個加了事務註解的「新增方法」,拋出異常,數據有沒有添加成功?

關於工具的使用

  1. git和svn的區別以及各自優點
  2. Jenkins的搭建和配置;
  3. maven是如何管理jar包版本的;

​​​

關於數據庫

關係型數據庫

  1. limit關鍵字從0到10與從100000到200000效率相差幾個數量級,爲何?
  2. mysql的架構;
  3. 索引的原理;

  4. 索引的選取原則(通用):
  5. 爲何索引致使查詢效率高?操做數據效率低?
  6. 索引的底層結構是什麼?是如何實現的?
  7. 哪些查詢會用到索引?哪些查詢用不到索引?
  8. 索引類型?
  9. 彙集索引和非彙集索引
  10. 彙集索引的優缺點
  11. mysql索引的數據結構
  12. 數據庫的隔離級別分別是什麼?
  13. sql的優化方案;
  14. left join 與 inner join的差異;
  15. mysql的存儲引擎MyIsam和InnoDB的區別;
  16. 主鍵和惟一索引有啥區別?
  17. 惟一索引能不能爲空?

非關係型數據庫

  1. 經常使用哪些非關係型數據庫?哪些場景會用到?
  2. redis如何進行持久化?

關於網絡協議

  1. UDP與TCP的異同;
  2. http的理解;
  3. webSocket編程;
  4. 什麼是ajax?原生的ajax如何寫?
  5. 比較get請求和post請求的異同;

關於linux操做

  1. 經常使用的文件操做命令;
  2. 查看線程信息的命令;
  3. 查看內存的命令;
  4. 部署項目的命令;
  5. mac與Linux服務器文件傳輸命令;

關於算法

  1. 經常使用的排序算法有哪些,分別如何實現(原理)?
  2. java中有哪些排序方式?原理是什麼?
  3. 兩個按降序排序的數組,用效率最高的算法組合成一個按降序排列的新數組;
  4. 迴文字符串的個數;
  5. 一個若干字符串中括號的對數;
  6. 斐波那契的實現;
  7. 單向鏈表反轉?
  8. 臺階問題?
  9. 輸入一個字符串,輸出一出現頻率最高的字符,若是出現頻率相同,則輸出第一個字符;

​ ​

關於數據結構

  1. 經常使用的數據結構;

  2. hashmap是什麼數據結構?

  3. 堆、棧、隊列的特性是什麼?

  4. 樹的應用場景是什麼?

  5. 二叉樹與紅黑樹的理解;

關於所作項目

  1. 讀寫如何設置同步和異步;

  2. 如何處理排他處理?

    思路:數據庫中存一個時間戳字段,每次加載頁面的時候將時間戳帶到頁面隱藏域。向後臺發送請求的時候將該時間戳與數據庫中所存的時間戳對比,若是一致的話說明該數據沒有被他人更新,若是不一致說明數據被他人更新了。

  3. 如何判斷用戶是否重複操做;

    能夠有以下幾種方案:

    ​ 1) 數據庫層面:添加惟一性約束,經過帳號、名稱等信息進行惟一性約束;

    ​ 2) 頁面層面:能夠對操做按鈕進行點擊限制;

    ​ 3) 後端層面:提交時生成的token(通常是時間戳),存與session,提交到後端與之對比;

  4. 如何實現實時顯示大計算的結果?

  5. 如何防止重複支付或者重複退款?

  6. 項目中如防止重複生成訂單?

  7. 項目中遇到什麼難題?是如何解決的?

  8. 下單時,若是在支付的時候,反饋給用戶的是失敗,然而調用第三方是成功,如何處理?

  9. 首先要縷清全部的流程,而後再拿出對應的數據表結構

關於分佈式

  1. 分佈式框架有哪些?

  2. dubbo和spring cloud的比較;

  3. Restful風格的接口的理解;

  4. rpc框架有哪些?如何使用?

  5. rpc和http的對比;

  6. 負載均衡的理解;

  7. 經常使用的mq的種類;(補充)

  8. RabbitMQ的做用?

PS(SongLea)

  1. 一個字符串裏有多個左右括號 如何判斷這些括號都是一一對應的
  2. 手寫一個單例模式的代碼
  3. 手寫實現一個blockingqueue的實現
  4. 線程池的數量怎麼肯定,設多少?
  5. 手寫怎樣實現一個LRU的緩存
  6. lru:最少未使用算法
  7. redis與rabbitmQ部分知識
  8. 手寫代碼去實現一個讀寫鎖
  9. 代理模式有什麼好處,怎麼實現的
  10. Linux經常使用命令,如查看磁盤空間,內存大小,CPU利用率,機器信息,Jvm上的內存佔用信息。。。
  11. btree樹,線程池,數據鏈接池,秒殺系統設計,迴文字符串個數,線程如何變成運行態,事務的兩種方式,垃圾回收機制,索引,hashmap,concurrenthashmap的結構
  12. 緩存穿透如何解決
  13. object有哪些方法,hashmap線程安全不
  14. hash一致性,JUC包與sync關鍵字鎖的區別與理解
  15. aba的問題;
  16. 什麼是樂觀鎖?什麼是重入鎖?
  17. CAS操做;
  18. 經常使用的集合框架的底層實現;
  19. 樂觀鎖和重入鎖;
相關文章
相關標籤/搜索