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生成的原理;

常用的設計模式

關於前端

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

關於框架

spring

  1. springIOC的理解;

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

  3. springIOC的java底層原理;

    反射

  4. springAOP的理解;

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

  6. spring如何解析視圖;

  7. 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. 樂觀鎖和重入鎖;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM