国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java開發(fā)框架和中間件面試題(8)

這篇具有很好參考價值的文章主要介紹了Java開發(fā)框架和中間件面試題(8)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

82.Mybatis一級緩存,二級緩存?

83.Mybatis如何防止SQL注入?

84.mybatis中resultType和resultMap有什么區(qū)別?

85.如何在SpringBoot中禁用Actuator斷點安全性?

86.什么是SpringBoot?SpringBoot有哪些優(yōu)點?

87.SpringBoot中的監(jiān)視器是什么?

88.什么是yaml文件?

89.如何使用SpringBoot實現(xiàn)異常處理??

90.SpringBoot中有哪些常用注解?

91.SpringBoot中有哪些選擇器類?

92.SpringBoot中緩存相關的注解有哪些?

93.Springboot如何進行打包和部署?

94.SpringBoot如何訪問不同數(shù)據(jù)庫?

95.為什么要使用hibernate?

96.hibernate中如何在控制臺查看打印的SQL語句?

97.hibernate有幾種查詢方式?

98.hibernate實體類可以被綁定為final嗎?

99.在hibernate中使用integer和int做映射有什么區(qū)別?

100.如何搭建一個高可用的系統(tǒng)?

101.你認為項目中最重要的過程是哪些?


82.Mybatis一級緩存,二級緩存?

1.一級緩存:指的是Mybatis中sqlSession對象的緩存,當我們執(zhí)行查詢以后,查詢的結果會同時存入sqlSession中,再次查詢的時候,先去sqlSession中查詢,有的話直接拿出來,當sqlSession消失時,Mybatis的一級緩存也就消失了,當調(diào)用sqlSession的修改,添加,刪除,commit(),close()等方法時,會清空一級緩存。

2.二級緩存:指的是Mybatis中的sqlSessionFactory對象的緩存,由同一個sqlSessionFactory對象創(chuàng)建的sqlSession共享其緩存,但是其中緩存的是數(shù)據(jù)而不是對象。當命中二級緩存時,通過存儲的數(shù)據(jù)構造成對象返回。查詢數(shù)據(jù)的時候,查詢的流程是二級緩存>一級緩存>數(shù)據(jù)庫。

3.二級緩存執(zhí)行時機,如果開啟了二級緩存,sqlSession進行close()后,才會把sqlSession一級緩存中數(shù)據(jù)添加到二級緩存中,為了將緩存數(shù)據(jù)取出來執(zhí)行反序列化,還需要將要緩存的pojo實現(xiàn)Serializable接口,因為二級緩存數(shù)據(jù)存儲介質多種多樣,不一定只存在內(nèi)存中,也可能存在硬盤中。

4.Mybatis執(zhí)行步驟,Mybatis框架主要是圍繞SqlSessionFactory進行的,具體步驟:

? ?定義一個configuration對象,其中包含數(shù)據(jù)源,事務,mapper文件資源以及影響數(shù)據(jù)庫行為屬性設置settings.

? ?通過配置對象,則可以創(chuàng)建一個sqlSessionFactoryBuilder對象

? ?通過sqlSessionFactoryBuilder獲得sqlSessionFactory實例。

? ?通過sqlSessionFactory實例創(chuàng)建sqlSession實例,通過SqlSession對數(shù)據(jù)庫進行操作。

83.Mybatis如何防止SQL注入?

? ?注意:但凡是sql注入漏洞的程序,都是因為程序要結束來自客戶端用戶輸入的變量或者URL傳遞的參數(shù),并且這個變量或者參數(shù)組成sql語句的一部分。對于用戶輸入的內(nèi)容或傳遞的參數(shù),我們應該要時刻保持警惕,這是安全領域里的【外部數(shù)據(jù)不可信任】的原則??v觀Web安全領域的各種攻擊方式,大多數(shù)都是因為開發(fā)者違反了這個原則而導致的。所以自然能想到,就是變量的檢測,過濾,驗證下手,確保變量是開發(fā)者所預想的。

1.檢查變量數(shù)據(jù)類型和格式,數(shù)據(jù)類型檢查,SQL執(zhí)行前,要進行數(shù)據(jù)類型檢查,如果是郵箱??,參數(shù)就必須是郵箱的格式,如果是日期,就必須是日期格式;

? 只要是有固定格式的變量,在SQL語句執(zhí)行前,應該嚴格按照固定格式檢查,確保變量是我們預想的格式,這樣子很大程度上可以避免SQL注入攻擊。如果上述例子中ID是int型的,效果會怎么樣呢?無法注入,因為輸入注入?yún)?shù)會失敗。比如上述中的name字段,我們應該在用戶注冊的時候,就確定一個用戶名規(guī)則,比如5~20個字符,只能由大小寫字母,數(shù)字以及漢字組成,不包含特殊字符。此時我們應該有一個函數(shù)來完成統(tǒng)一的用戶名檢查。不過,仍然有很多場景并不能用到這個方法,比如寫博客,評論系統(tǒng),彈幕系統(tǒng),必須允許用戶可以提交任意形式的字符才行,否則用戶體驗感太差了。

2.過濾特殊符號

3.綁定變量,使用預編譯語句

84.mybatis中resultType和resultMap有什么區(qū)別?

? ? ?1.resultType是直接表示返回類型的(對應著我們的Model對象中的實體)

? ? ?2.resultMap則是對外部ResultMap的引用(提前定義了db和Model之間的映射key,value關系),但是resultType跟resultMap不能同時存在。

85.如何在SpringBoot中禁用Actuator斷點安全性?

? ? 默認情況下,所有敏感的HTTP端點都是安全的,只有具有Actuator角色的用戶才能訪問他們。安全性是使用標準的HTTPServletRequest.isUserInRole方法實施的。

? ?我們可以使用managerment.security.enable=false來禁用安全性。只有在執(zhí)行機構端點在防火墻后訪問時,才建議禁用安全性。

86.什么是SpringBoot?SpringBoot有哪些優(yōu)點?

? ? 1.SpringBoot簡介

? ? 基于Spring4.x的設計,不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過簡化配置來進一步簡化Spring應用的整個搭建和開發(fā)過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,引用的不穩(wěn)定性得到了解決。

? 2.SpringBoot有哪些優(yōu)點?

? ?快速構建項目,可以選擇一些必要的組件;

? ?對主流框架的無配置集成;

? ?內(nèi)嵌Tomcat容器,項目可獨立運行;

? ?刪除了繁瑣的xml配置文件;

? 極大地提高了開發(fā)和部署效率;

? 提供starter,簡化Maven配置;

3.SpringBoot有哪些缺點?

版本迭代速度快,一些模塊改動很大;

由于無需配置,報錯時很難定位。

87.SpringBoot中的監(jiān)視器是什么?

? ? 監(jiān)視器也叫l(wèi)istener,是servlet的監(jiān)聽器,可以用于監(jiān)聽Web應用程序中某些對象的創(chuàng)建,銷毀增加,修改,刪除等動作的發(fā)生,然后做出相應的響應處理。當范圍對象的狀態(tài)發(fā)生改變時,服務器自動調(diào)用監(jiān)聽器對象中的方法,常用于系統(tǒng)加載時進行信息初始化,統(tǒng)計在線人數(shù)和在線用戶,統(tǒng)計網(wǎng)站的訪問量。配置監(jiān)聽器的方法:

? ? 通過@Component把監(jiān)聽器加入Spring容器中管理;

? ? 在application.properties中添加context.listener.class配置

? ? 在方法上加上@EventListener注解

88.什么是yaml文件?

?yaml是JSON的一個超集,可以非常方便的將外部配置以層次結構形式存儲起來。yaml可以作為properties配置文件的替代。

yaml使用的注意事項:

?在properties文件中是以“."進行分割的,在yml中是用"."進行分割的;

?yml的數(shù)據(jù)格式和json的格式很像,都是KV格式,并且通過":"進行賦值;

?每個冒號后面一定要加一個空格;

89.如何使用SpringBoot實現(xiàn)異常處理??

? ? ?1.使用@ExceptionHandler注解處理局部異常,該方式只能處理當前Controller中的ArithmeticException和NullPointerException異常,缺點就是只能處理單個controller的異常。

? ?2.使用@ControllerAdvice+@ExceptionHandler注解處理全局異常

? ?3.配置SimpleMappingExceptionResolver類處理異常

? ?4.實現(xiàn)HandlerExceptionResolver接口處理異常

90.SpringBoot中有哪些常用注解?

?1.@SpringBootApplication替代@SPringBootConfiguration,@EnableAutoConfiguration,@ComponentScan

2.@ImportAutoConfiguration導入配置類,一般做測試的時候用,正常優(yōu)先使用@EnableAutoConfiguration.

3.@SpringBootConfiguration 替代@Configuration

4.@ImportResource將資源導入容器

5.@PropertySource導入properties文件

6.PropertySource? ?@PropertySource的集合

7.@Role Bean 角色定義為ROLE APPLICATION(默認值),ROLE SUPPORT(輔助角色),ROLE INFRASTRUCTURE(后臺角色,用戶無感)

8.@scope 指定bean的作用域,默認singleton,其他包括prototype,request,session,globalSession。

9.@Lazy使bean懶加載,取消bean與初始化。

10.@Primary自動裝配時出現(xiàn)多個Bean候選者時,被注解為@Primary的Bean將作為首選者,否則將拋出異常。

11.@Profile指定Bean在哪個環(huán)境下被激活

12.@DependsOn依賴的bean注冊完成,才注冊當前類,依賴bean不存在會報錯。用于控制bean加載順序。

13.@PostConstruct? bean的屬性都注入完畢后,執(zhí)行注解標注的方式進行初始化工作

14.@Autowired默認按類型裝配,如果我們想使用按名稱裝配,可以結合@Qualifier注解一起使用。

15.@Lookup根據(jù)方法返回的類型,去容器中撈出對應

16.@Qualifier申明bean名字,且可以按bean名字加載bean。

17.@Required檢查bean的屬性setXXX()方法,要求屬性在配置階段必須已經(jīng)配置。

18.@Description添加bean的文字描述。

19.@EnableAspectConfiguration啟動AspectJ自動配置

20.EnableLoadTimeWeaving啟動類加載器動態(tài)增強功能,使用instrucmentation實現(xiàn)

21.@AutoConfigurationPackage包含該注解的package會被AutoConfigurationPackages注冊

22.@AutoConfigureBefore在指定配置類初始化前加載

23.@AutoConfigureAfter在指定配置類初始化后加載

24.AutoConfigureOrder指定配置類初始化順序,越小初始化越早。

25.@ModelAttribute? ?注解可以被應用到方法上和方法參數(shù)上。

91.SpringBoot中有哪些選擇器類?

? ? 常用的選擇器如下:

@Conditional,當指定的條件都滿足時,組件才被注冊

@ConditionalOnBean,指定bean在上下文中時,才注冊當前bean。用在方法上,則默認依賴類為方法的返回類型。

@ConditionalOnClass,指定類在classpath上時,才初始化當前bean。用在方法上,則默認依賴類為方法的返回類型。

@ConditionalOnCloudPlateform,在指定云平臺才注冊配置。

@ConditionalOnExpression,指定spel為true時注冊配置。

@ConditionalOnJava,在指定Java版本時注冊配置;

@ConditionalOnMissingClass,指定類不在classpath上時,才初始化當前bean。用在方法上,則默認依賴類為方法的返回類型。

@ConditionalOnNotWebApplication,不是在Web環(huán)境才注冊配置。

@ConditionalOnProperty,配置文件中的值與指定值是否相等,相等才注冊配置

@ConditionalOnRespurce,指定resources都在classpath上才注冊配置。

@ConditionalOnSingleCondidate,上下文中只有一個候選者bean時才注冊配置

@ConditionalOnWebApplication,是在Web環(huán)境才注冊配置。

92.SpringBoot中緩存相關的注解有哪些?

? ? 緩存相關注解如下:

@EnableCaching,開啟緩存配置,支持子類代理或者Aspect增強;

@CacheConfig,在一個類下,提供公共緩存配置

@Cacheable,放在方法和類上,緩存方法或者類下所有方法的返回值

@CachePut,每次先執(zhí)行方法,再將結果放入緩存

@CacheEvict,刪除緩存

@Caching,可以配置@Cacheable,@CachePut,@CacheEvict

93.Springboot如何進行打包和部署?

? ?Spring和SpringBoot都支持Maven和gradle通用打包管理技術。SpringBoot相對Spring的一些優(yōu)點:

? 提供嵌入式容器支持;

?Java開發(fā)框架和中間件面試題(8),面試題,java,中間件,開發(fā)語言

部署時可以靈活指定配置文件;

最近項目是分布式的項目,都是通過分項目打包部署,然后部署在docker中運行。

94.SpringBoot如何訪問不同數(shù)據(jù)庫?

可以使用druidDataSource創(chuàng)建DataSource,然后通過jdbcTemplate執(zhí)行sql.

95.為什么要使用hibernate?

? ?hibernate對JDBC進行了封裝,簡化了JDBC的重復性代碼;

? hibernate對dao有一個封裝類hibernateTemplate,可以繼承他,實現(xiàn)簡單的CRUD接口。

? hibernate使用注解和配置文件,可以對實體類和映射文件進行映射;

?hibernate有事務管理機制,保證了數(shù)據(jù)的安全性;

? hibernate有一級緩存和二級緩存。

96.hibernate中如何在控制臺查看打印的SQL語句?

? ? ?需要在配置文件中進行如下配置:

??Java開發(fā)框架和中間件面試題(8),面試題,java,中間件,開發(fā)語言

97.hibernate有幾種查詢方式?

?1.導航對象圖查詢:根據(jù)已加載的對象,導航到其他對象。例如,對于已經(jīng)加載的Customer對象,調(diào)用他的getOrders().iterator()方法就可以導航到所有關聯(lián)的Order對象,假如在關聯(lián)級別使用了延遲加載檢索策略,那么首次執(zhí)行此方法時,hibernate會從數(shù)據(jù)庫中加載關聯(lián)的Order對象,否則就從緩存中獲得Order對象。

?2.OID方式:按照對象的OID來檢索對象Session的get()和load()方法提供了這種功能,如果在應用程序先知道了OID,就可以使用這種方式檢索對象。get()和Load()的用法完全一樣,都需要兩個參數(shù),一個是持久化對象類名class,一個是行號OID,返回固定的某一行的數(shù)據(jù),但是需要注意的是,當輸入的OID不存在時,get()會返回一個空對象,Load()則直接報錯。

3.HQL檢索方式使用面向對象的HQL查詢語言,session的find()方法用于執(zhí)行HQL查詢語句。此外,hibernate還提供了query接口,他是hibernate提供的專門的HQL查詢接口,能夠執(zhí)行各種復雜的HQL查詢語句。

?它具備以下功能:

? ? 在查詢語句中設定各種查詢條件

? ?支持投影查詢,即僅檢索出對象的部分屬性

? 支持鏈接查詢

支持分頁查詢

支持分組查詢

支持內(nèi)置函數(shù)

能夠調(diào)用用戶自定義的SQL函數(shù)

支持子查詢

支持動態(tài)綁定參數(shù)

4.QBC檢索方式:Query By Criteria的API來檢索對象,這種API封裝了基于字符串形式的查詢語句,提供了更加面向對象的接口。

Java開發(fā)框架和中間件面試題(8),面試題,java,中間件,開發(fā)語言

5.利用原生SQL語句進行查詢

98.hibernate實體類可以被綁定為final嗎?

? ? ?可以將hibernate的實體類定義為final,但這種做法不好。

? ? 因為hibernate會使用代理模式在延遲關聯(lián)的情況下提高性能。如果你把實體類定義成final類之后,因為Java不允許對final類進行擴展,所以hibernate就無法再使用代理了,如此一來就限制了使用可以提升性能的手段。

不過,如果你的持久化類實現(xiàn)了一個接口,而且在該接口中聲明了所有定義實體類中的所有public的方法的話,就能避免出現(xiàn)前面所說的不利后果。

99.在hibernate中使用integer和int做映射有什么區(qū)別?

? hibernate是面向對象的ORM,所以一般定義成封裝類型,要看數(shù)據(jù)庫中的定義。

如果數(shù)據(jù)庫中有對應字段存在null值,就要定義integer。也可以定義基本類型,在配置文件中寫清楚即可。

100.如何搭建一個高可用的系統(tǒng)?

? 高可用系統(tǒng),就是說要保證系統(tǒng)在幾乎任何時候都要有正常運行,功能正常。我們來看下哪些情況會造成系統(tǒng)不可用。

單機系統(tǒng)下的可用性問題,單點問題會影響系統(tǒng)高可用,比如要是這個鏈路其中一個單點掛了,那么整個系統(tǒng)都不可用了。所以引申出來主備/集群模式,防止單點問題。

高并發(fā)場景下,請求過多也會因為后端瓶頸點引起整個系統(tǒng)down掉,所以一般情況下應對高并發(fā)場景我們會限流,比如肖戰(zhàn)演出搶票。

通過采用mq等隊列形式削峰,保證后端系統(tǒng)不會down掉。

熔斷機制。容災機制,多機房部署。

綜上所述:

1.主備/集群模式,防止單點故障。

2.限流,削峰,防止后端壓力過大。

3.熔斷機制,類似于限流。

4.容災機制,多機房/異地部署。

101.你認為項目中最重要的過程是哪些?

分析,設計階段,盡量找出進度的優(yōu)先級。

? ? ?文章來源地址http://www.zghlxwxcb.cn/news/detail-774228.html

到了這里,關于Java開發(fā)框架和中間件面試題(8)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 消息中間件學習筆記--RabbitMQ(二、模式,一次違反常規(guī)的Java大廠面試經(jīng)歷

    消息中間件學習筆記--RabbitMQ(二、模式,一次違反常規(guī)的Java大廠面試經(jīng)歷

    .Fanout:轉發(fā)消息到所有綁定隊列 比較常用的是Direct、Topic、Fanout. Fanout 這種Fanout模式不處理路由鍵,只·需要簡單的將隊列綁定到exchange上,一個發(fā)送到exchange的消息都會被轉發(fā)到與該exchange綁定的所有隊列上。很像廣播子網(wǎng),每臺子網(wǎng)內(nèi)的主機都獲得了一份復制的消息。Fan

    2024年04月09日
    瀏覽(29)
  • RocketMQ:一個純java的開源消息中間件--開發(fā)測試環(huán)境搭建

    一、簡介 ? ? RocketMQ的前身是Metaq,當?Metaq?3.0發(fā)布時,產(chǎn)品名稱改為? RocketMQ ????MetaQ2.x版本由于依賴了alibaba公司內(nèi)部其他系統(tǒng),對于公司外部用戶使用不夠友好,推薦使用3.0版本。 ? ? ?項目地址:? https://github.com/alibaba/RocketMQ

    2024年02月11日
    瀏覽(25)
  • 使用開源中間件:云計算環(huán)境中的中間件采用開源框架,可以減少開發(fā)和部署時間,提高開發(fā)效率和可靠性。

    作者:禪與計算機程序設計藝術 云計算是一個新的分布式計算模型,具有獨特的特征。它把資源的虛擬化、彈性伸縮和按需付費等能力集成到了一起。這種新型的分布式計算模式,使得軟件工程師們在編寫應用程序時無須擔心服務器性能,而只需要關注應用本身。同時,云平

    2024年02月04日
    瀏覽(80)
  • 面試就是這么簡單,offer拿到手軟(三)—— 常見中間件框架面試題,es,redis,dubbo,zookeeper kafka 等

    面試就是這么簡單,offer拿到手軟(三)—— 常見中間件框架面試題,es,redis,dubbo,zookeeper kafka 等

    面試就是這么簡單,offer拿到手軟(一)—— 常見非技術問題回答思路 面試就是這么簡單,offer拿到手軟(二)—— 常見65道非技術面試問題 面試就是這么簡單,offer拿到手軟(三)—— 常見中間件框架面試題,es,redis,dubbo,zookeeper kafka 等 面試就是這么簡單,offer拿到手

    2024年02月05日
    瀏覽(25)
  • Java 緩存中間件

    Java 緩存中間件

    :Spring Cache、J2Cache、JetCache JSR107 中制訂了 Java 緩存的規(guī)范。 因此,在很多緩存框架、緩存庫中,其 API 都參考了 JSR 107 規(guī)范。 img Java Caching 定義了 5 個核心接口 CachingProvider - 定義了創(chuàng)建、配置、獲取、管理和控制多個 CacheManager 。一個應用可以在運行期訪問多個 Cac

    2024年02月04日
    瀏覽(20)
  • 【Java中間件】RocketMQ

    【Java中間件】RocketMQ

    Message Queue,是一種提供消息隊列服務的中間件。提供了消息生產(chǎn)、存儲、消費全過程API的軟件系統(tǒng)。 MQ的作用 限流削峰:當用戶發(fā)送超量請求時,將請求暫存,以便后期慢慢處理。如果不使用MQ暫存直接請求到業(yè)務系統(tǒng)中容易引起系統(tǒng)崩潰。 異步解耦:若上游系統(tǒng)和下游系

    2024年02月15日
    瀏覽(23)
  • Java中間件-Elasticsearch

    Java中間件-Elasticsearch

    Elasticsearch 是一個非常強大的搜索引擎。它目前被廣泛地使用于各個 IT 公司。Elasticsearch 是由 Elastic 公司創(chuàng)建。它的代碼位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。目前,Elasticsearch 是一個免費及開放(free and open)的項目。同時,Elastic 公司也擁有

    2023年04月27日
    瀏覽(20)
  • Java高可用監(jiān)控中間件

    Prometheus是一個開源的系統(tǒng)監(jiān)控和警報工具集,用于收集、存儲和查詢時間序列數(shù)據(jù)。 它支持多種數(shù)據(jù)源,可以監(jiān)控分布式系統(tǒng)的各種指標,并提供強大的查詢語言和靈活的警報規(guī)則。 Grafana是一個開源的可視化監(jiān)控和分析平臺,可以與多個數(shù)據(jù)源集成,包括Prometheus、InfluxD

    2024年01月23日
    瀏覽(26)
  • 深入理解Java消息中間件-組件-消息隊列

    引言: 消息中間件在現(xiàn)代分布式系統(tǒng)中扮演著至關重要的角色,它解決了系統(tǒng)之間異步通信和解耦的需求。而在消息中間件的架構中,核心組件之一就是消息隊列。本文將深入探討消息隊列的架構組件,幫助讀者加深對消息中間件的理解和應用。 一、什么是消息隊列 消息隊列

    2024年04月27日
    瀏覽(94)
  • java后端技術匯總 + 中間件 + 架構思想

    1. 華為OD機考題 + 答案 2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新) 2023年華為OD真題機考題庫大全-帶答案(持續(xù)更新) 2. 面試題 一手真實java面試題:2023年各大公司java面試真題匯總--持續(xù)更新 3. 技術知識 java后端技術匯總 + 中間件 + 架構思想 類型 難度 Spring、

    2024年02月13日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包