本篇內(nèi)容介紹了“JAVA中高級的面試題有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),城固企業(yè)網(wǎng)站建設(shè),城固品牌網(wǎng)站建設(shè),網(wǎng)站定制,城固網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,城固網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
什么是悲觀鎖,樂觀鎖。 他們有什么區(qū)別? 悲觀鎖: 認(rèn)為一定會有資源的競爭的情況出現(xiàn)。因此對資源進(jìn)行加鎖, 只有持有鎖的訪問者才可以對其進(jìn)行訪問, 否則就需要等待資源鎖的釋放,獲取到鎖才可以對資源進(jìn)行訪問。 樂觀鎖:并發(fā)訪問資源,不會產(chǎn)生沖突,產(chǎn)生數(shù)據(jù)不一致的情況。 不需要對其加鎖,判斷當(dāng)版本號匹配才可以對其進(jìn)行修改。 區(qū)別: 悲觀鎖對資源進(jìn)行加鎖,性能低下,可能會出現(xiàn)死鎖。 樂觀鎖:性能高效,但是當(dāng)版本號不匹配的時候,需要重試 什么是sql注入?如何防范sql注入? 非法的惡意的SQL命加入到請求參數(shù)里面,最終讓數(shù)據(jù)庫執(zhí)行惡意的SQL命令 預(yù)防: 1 。程序過濾惡意SQL命令。轉(zhuǎn)義特殊字符 2. 不要動態(tài)拼接SQL,PreparedStatement采用參數(shù)化賦值 3. 配置應(yīng)用的數(shù)據(jù)庫權(quán)限 https://blog.csdn.net/qq_41685990/article/details/89316575 https://www.cnblogs.com/lansetuerqi/p/12807891.html spring的事務(wù)傳播行為有哪些? 1. 當(dāng)前如果沒有事務(wù),則創(chuàng)建一個事務(wù)。 propagation_required 2. 當(dāng)前如果不存在事務(wù),則拋出異常 . propagation_mandatory 3. 當(dāng)然如果不存在事務(wù),則不使用事務(wù)。如果存在則使用當(dāng)前事務(wù) propagation_supports 4. 如果存在事務(wù),則掛起當(dāng)前事務(wù),創(chuàng)建一個新的事務(wù) propagation_required_new 5. 以非事務(wù)運(yùn)行,如果當(dāng)前事務(wù)存在,則掛起當(dāng)前事務(wù) propagation_not_supported 6. 以非事務(wù)運(yùn)行,如果當(dāng)前存在事務(wù),則拋出異常 propagation_never 7. 如果當(dāng)前事務(wù)存在,新建一個新的嵌套事務(wù)運(yùn)行 。當(dāng)前不存在事務(wù),則創(chuàng)建一個事務(wù) propagation_nested 假設(shè)一個接口的DB操作包含寫日志和業(yè)務(wù)處理,如何讓寫日志一定會成功。 代碼邏輯: 先執(zhí)行寫日志,再執(zhí)行業(yè)務(wù)處理。 接口開啟事務(wù)propagation_required ,接口里面的 寫日志使用propagation_required_new 這樣 當(dāng)寫日志異常,執(zhí)行業(yè)務(wù)處理也不會執(zhí)行。 當(dāng)執(zhí)行業(yè)務(wù)處理異常回滾,那么 寫日志因為是在一個新的事務(wù)里面將不受影響因此寫日志成功 https://www.jianshu.com/p/8f576982f574 https://blog.csdn.net/wangpeifeng669/article/details/26403119 “組合優(yōu)先于繼承“,這種描述是否正確,請給出自己的分析? 不正確??礃I(yè)務(wù)需求!具體情況具體分析。 組合靈活,易于擴(kuò)展。如果業(yè)務(wù)復(fù)雜,多變, 比如 根據(jù)不同條件進(jìn)行各種不一樣的處理 或者業(yè)務(wù)模型多種多樣,那么就使用組合。 否則隨意組合,會導(dǎo)致過度設(shè)計,增加程序復(fù)雜度。 繼承適用于父類改動少,子類依賴于父類的屬性或者方法,子類自身屬性少或者不需要擴(kuò)展的情況 使用redis時,如何保證數(shù)據(jù)的一致性,請給出自己的分析? 1. 如果并發(fā)不高的情況下,就使用先刪除緩存再刪除數(shù)據(jù)庫數(shù)據(jù)。 相對于先刪除數(shù)據(jù)庫數(shù)據(jù),再刪除緩存來說出現(xiàn)數(shù)據(jù)不一致的問題大大減低。 先刪除數(shù)據(jù)庫的話,如果刪除緩存失敗,那么數(shù)據(jù)就是錯誤的。 如果先刪除緩存的話,那么下次查詢就可以去查詢數(shù)據(jù)庫獲取最新的數(shù)據(jù)。 2. 高并發(fā)的情況下: 通常的解決方案是,如果我們需要使用一個線程安全隊列來緩存更新或刪除的數(shù)據(jù), 當(dāng) A 操作變更數(shù)據(jù)時,會先刪除一個緩存數(shù)據(jù), 此時通過線程安全的方式將緩存數(shù)據(jù)放入到隊列中, 并通過一個線程進(jìn)行數(shù)據(jù)庫的數(shù)據(jù)刪除操作。 當(dāng)有另一個查詢請求 B 進(jìn)來時,如果發(fā)現(xiàn)緩存中沒有該值, 則會先去隊列中查看該數(shù)據(jù)是否正在被更新或刪除, 如果隊列中有該數(shù)據(jù),則阻塞等待,直到 A 操作數(shù)據(jù)庫成功之后, 喚醒該阻塞線程,再去數(shù)據(jù)庫中查詢該數(shù)據(jù)。 但其實這種實現(xiàn)也存在很多缺陷, 例如,可能存在讀請求被長時間阻塞,高并發(fā)時低吞吐量等問題。 如果數(shù)據(jù)更新比較頻繁且對數(shù)據(jù)有一定的一致性要求,通常不建議使用緩存。 常見算法以及: 算法的 復(fù)雜度 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支持), 主鍵索引,聯(lián)合索引 索引方法: hash, btree https://blog.csdn.net/weixin_33686714/article/details/91894377 mysql 執(zhí)行計劃type類型: https://www.jianshu.com/p/b5c01bd4a306 type 訪問類型,表示找到所查詢數(shù)據(jù)的方法,該屬性的常見值如下,性能從好到差: NULL:無需訪問表或者索引,比如獲取一個索引列的最大值或最小值。 system/const:當(dāng)查詢最多匹配一行時,常出現(xiàn)于where條件是=的情況。system是const的一種特殊情況,既表本身只有一行數(shù)據(jù)的情況。 eq_ref:多表關(guān)聯(lián)查詢時,根據(jù)唯一非空索引進(jìn)行查詢的情況。 ref:多表查詢時,根據(jù)非唯一非空索引進(jìn)行查詢的情況。 range:在一個索引上進(jìn)行范圍查找。 index:遍歷索引樹查詢,通常發(fā)生在查詢結(jié)果只包含索引字段時。 ALL:全表掃描,沒有任何索引可以使用時。這是最差的情況,應(yīng)該避免。 spring IOC與AOP 的原理: https://www.jianshu.com/p/78ba8bafb90a 描述你對微服務(wù)架構(gòu)的理解: openFeign 與 RestTemplate 的區(qū)別 ? 微服務(wù)的 gateWay 網(wǎng)關(guān)如何 修改 響應(yīng)內(nèi)容? redis 常見數(shù)據(jù)結(jié)構(gòu), hashmap 的使用場景 ? 微服務(wù)的 服務(wù)注冊中心的 命名空間 是什么 ? 微服務(wù) 配置信息的 熱加載 更新配置 ? 準(zhǔn)備SQL 題 (??途W(wǎng)上面有) : 比如 組織表如果 遞歸查詢 子組織信息 等。 即 查詢出來所有的組織樹信息 https://www.cnblogs.com/chywx/p/9420726.html https://blog.csdn.net/qq_34120430/article/details/84969235 1、 如果在組織表中間一個字段維護(hù)當(dāng)前組織的所有父級信息那么將會非常省事 2、 或者建立一張組織的父子關(guān)系表或者視圖!關(guān)聯(lián)查詢即可 3、 否則就是建立對應(yīng)的函數(shù)了 4、 一般組織表都會記錄其所有父級的數(shù)據(jù),比如 tree_code 以逗號分隔存儲其所以的父ID 就可以 使用聯(lián)合查詢來達(dá)到效果了 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' 常規(guī)的java 題目也是需要準(zhǔn)備的(牛客網(wǎng)上面有) , 熟悉 java的 基礎(chǔ)類比如 list ,hashmap 等信息 : kafka 是什么? 和其他MQ的區(qū)別 多線程: 多線程的參數(shù) , 舉例說一下 使用到的場景 分布式事務(wù) 比如 MQ如何實現(xiàn) , setea , tcc 等 什么是同步鎖? 什么是偏向鎖, 還有哪些鎖? 等 spring boot 常用注解 有哪些?
“JAVA中高級的面試題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!