您好,登錄后才能下訂單哦!
本篇內容介紹了“JAVA中高級的面試題有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
什么是悲觀鎖,樂觀鎖。 他們有什么區別? 悲觀鎖: 認為一定會有資源的競爭的情況出現。因此對資源進行加鎖, 只有持有鎖的訪問者才可以對其進行訪問, 否則就需要等待資源鎖的釋放,獲取到鎖才可以對資源進行訪問。 樂觀鎖:并發訪問資源,不會產生沖突,產生數據不一致的情況。 不需要對其加鎖,判斷當版本號匹配才可以對其進行修改。 區別: 悲觀鎖對資源進行加鎖,性能低下,可能會出現死鎖。 樂觀鎖:性能高效,但是當版本號不匹配的時候,需要重試 什么是sql注入?如何防范sql注入? 非法的惡意的SQL命加入到請求參數里面,最終讓數據庫執行惡意的SQL命令 預防: 1 。程序過濾惡意SQL命令。轉義特殊字符 2. 不要動態拼接SQL,PreparedStatement采用參數化賦值 3. 配置應用的數據庫權限 https://blog.csdn.net/qq_41685990/article/details/89316575 https://www.cnblogs.com/lansetuerqi/p/12807891.html spring的事務傳播行為有哪些? 1. 當前如果沒有事務,則創建一個事務。 propagation_required 2. 當前如果不存在事務,則拋出異常 . propagation_mandatory 3. 當然如果不存在事務,則不使用事務。如果存在則使用當前事務 propagation_supports 4. 如果存在事務,則掛起當前事務,創建一個新的事務 propagation_required_new 5. 以非事務運行,如果當前事務存在,則掛起當前事務 propagation_not_supported 6. 以非事務運行,如果當前存在事務,則拋出異常 propagation_never 7. 如果當前事務存在,新建一個新的嵌套事務運行 。當前不存在事務,則創建一個事務 propagation_nested 假設一個接口的DB操作包含寫日志和業務處理,如何讓寫日志一定會成功。 代碼邏輯: 先執行寫日志,再執行業務處理。 接口開啟事務propagation_required ,接口里面的 寫日志使用propagation_required_new 這樣 當寫日志異常,執行業務處理也不會執行。 當執行業務處理異常回滾,那么 寫日志因為是在一個新的事務里面將不受影響因此寫日志成功 https://www.jianshu.com/p/8f576982f574 https://blog.csdn.net/wangpeifeng669/article/details/26403119 “組合優先于繼承“,這種描述是否正確,請給出自己的分析? 不正確。看業務需求!具體情況具體分析。 組合靈活,易于擴展。如果業務復雜,多變, 比如 根據不同條件進行各種不一樣的處理 或者業務模型多種多樣,那么就使用組合。 否則隨意組合,會導致過度設計,增加程序復雜度。 繼承適用于父類改動少,子類依賴于父類的屬性或者方法,子類自身屬性少或者不需要擴展的情況 使用Redis時,如何保證數據的一致性,請給出自己的分析? 1. 如果并發不高的情況下,就使用先刪除緩存再刪除數據庫數據。 相對于先刪除數據庫數據,再刪除緩存來說出現數據不一致的問題大大減低。 先刪除數據庫的話,如果刪除緩存失敗,那么數據就是錯誤的。 如果先刪除緩存的話,那么下次查詢就可以去查詢數據庫獲取最新的數據。 2. 高并發的情況下: 通常的解決方案是,如果我們需要使用一個線程安全隊列來緩存更新或刪除的數據, 當 A 操作變更數據時,會先刪除一個緩存數據, 此時通過線程安全的方式將緩存數據放入到隊列中, 并通過一個線程進行數據庫的數據刪除操作。 當有另一個查詢請求 B 進來時,如果發現緩存中沒有該值, 則會先去隊列中查看該數據是否正在被更新或刪除, 如果隊列中有該數據,則阻塞等待,直到 A 操作數據庫成功之后, 喚醒該阻塞線程,再去數據庫中查詢該數據。 但其實這種實現也存在很多缺陷, 例如,可能存在讀請求被長時間阻塞,高并發時低吞吐量等問題。 如果數據更新比較頻繁且對數據有一定的一致性要求,通常不建議使用緩存。 常見算法以及: 算法的 復雜度 https://www.cnblogs.com/zwtgyh/p/10631760.html mysql 的 三種 log 的作用 : https://blog.csdn.net/lhanson/article/details/82752883 https://www.jb51.net/article/69676.htm mysql 索引類型: 普通索引,唯一索引 , 全文索引(MyISAM支持), 主鍵索引,聯合索引 索引方法: hash, btree https://blog.csdn.net/weixin_33686714/article/details/91894377 mysql 執行計劃type類型: https://www.jianshu.com/p/b5c01bd4a306 type 訪問類型,表示找到所查詢數據的方法,該屬性的常見值如下,性能從好到差: NULL:無需訪問表或者索引,比如獲取一個索引列的最大值或最小值。 system/const:當查詢最多匹配一行時,常出現于where條件是=的情況。system是const的一種特殊情況,既表本身只有一行數據的情況。 eq_ref:多表關聯查詢時,根據唯一非空索引進行查詢的情況。 ref:多表查詢時,根據非唯一非空索引進行查詢的情況。 range:在一個索引上進行范圍查找。 index:遍歷索引樹查詢,通常發生在查詢結果只包含索引字段時。 ALL:全表掃描,沒有任何索引可以使用時。這是最差的情況,應該避免。 spring IOC與AOP 的原理: https://www.jianshu.com/p/78ba8bafb90a 描述你對微服務架構的理解: openFeign 與 RestTemplate 的區別 ? 微服務的 gateWay 網關如何 修改 響應內容? redis 常見數據結構, hashmap 的使用場景 ? 微服務的 服務注冊中心的 命名空間 是什么 ? 微服務 配置信息的 熱加載 更新配置 ? 準備SQL 題 (牛客網上面有) : 比如 組織表如果 遞歸查詢 子組織信息 等。 即 查詢出來所有的組織樹信息 https://www.cnblogs.com/chywx/p/9420726.html https://blog.csdn.net/qq_34120430/article/details/84969235 1、 如果在組織表中間一個字段維護當前組織的所有父級信息那么將會非常省事 2、 或者建立一張組織的父子關系表或者視圖!關聯查詢即可 3、 否則就是建立對應的函數了 4、 一般組織表都會記錄其所有父級的數據,比如 tree_code 以逗號分隔存儲其所以的父ID 就可以 使用聯合查詢來達到效果了 SELECT sf1.org_name, sf1.tree_code from sso_framework sf1 where sf1.id=27 UNION SELECT sf2.org_name, sf2.tree_code from sso_framework sf2 where sf2.tree_code like '%,27,%' UNION SELECT sf2.org_name, sf2.tree_code from sso_framework sf2 where sf2.tree_code like '27,%' UNION SELECT sf2.org_name, sf2.tree_code from sso_framework sf2 where sf2.tree_code like '%,27' 常規的java 題目也是需要準備的(牛客網上面有) , 熟悉 java的 基礎類比如 list ,hashmap 等信息 : kafka 是什么? 和其他MQ的區別 多線程: 多線程的參數 , 舉例說一下 使用到的場景 分布式事務 比如 MQ如何實現 , setea , tcc 等 什么是同步鎖? 什么是偏向鎖, 還有哪些鎖? 等 spring boot 常用注解 有哪些?
“JAVA中高級的面試題有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。