大家好,今天來為大家分享springmvc面試題2021的一些知識點,和Java后端面試題的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問題,接下來我們就一起來看看吧!
matebook d15 2021款i5和i7區(qū)別
華為MateBookD152021款有兩個不同的型號:i5和i7。這兩個型號之間的主要區(qū)別在于處理器性能和圖形性能。1.處理器性能:i7型號配備了更強(qiáng)大的處理器,與i5型號相比,它擁有更高的基本時鐘頻率、更多的緩存和更多的處理線程,可以處理更多的任務(wù)和運(yùn)行更復(fù)雜的程序。2.圖形性能:i7型號還配備了更強(qiáng)大的集成顯卡,可以提供更好的圖形性能。這對于需要進(jìn)行圖形處理、游戲或其他圖形密集型任務(wù)的用戶來說可能是一個重要的考慮因素。除了處理器和圖形性能之外,i7型號可能還配備了更大的內(nèi)存和存儲容量選項,因為通常來說,高端型號提供更強(qiáng)大的配置選項。需要根據(jù)個人的需求來決定選擇哪個型號。如果需要更強(qiáng)大的處理器和圖形性能,以及更多的內(nèi)存和存儲容量,那么選擇i7型號可能更適合。但是,如果只是進(jìn)行日常辦公和簡單的任務(wù),i5型號可能已經(jīng)足夠滿足需求了。
java面試題有哪些
肝了一個月的面試題終于來啦,大家開心不。
2020年最新Java面試題整理,全網(wǎng)最全一份,包含各個技術(shù)棧,Java基礎(chǔ),Java集合,多線程,Java異常,spring,springMVC,springboot,springcloud,netty,dubbo,activemq,Javaweb,jvm,kafka,MongoDB,mybatis,MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,設(shè)計模式,數(shù)據(jù)結(jié)構(gòu),算法,分布式,限流,降級,cap原理等等知識點
話不多說,直接上圖
總共80多個PDF
【BAT必備】計算機(jī)網(wǎng)絡(luò)面試題:
鏈接:https://pan.baidu.com/s/1hFggmtdL1ZmE4utBlo8S1g提取碼:qfkh
【BAT必備】設(shè)計模式面試題
鏈接:https://pan.baidu.com/s/1eXJveIVvQe-m3MdvLcT-fQ提取碼:j0kx
【BAT必備】數(shù)據(jù)結(jié)構(gòu)算法面試題:
鏈接:https://pan.baidu.com/s/1daFN9jY03fXsqwc9LeKi2w提取碼:5ab7
【BAT必備】多線程面試題:
鏈接:https://pan.baidu.com/s/1GdvsNESoHPBjWKN2h-iK7Q提取碼:cqib
【BAT必備】并發(fā)編程鎖面試題:
鏈接:https://pan.baidu.com/s/1hXPPtMY2dvz-g7QcSTc3PA提取碼:zhmy
【BAT必備】tomcat面試題:
鏈接:https://pan.baidu.com/s/1qPZXx4lmLynmaF0XjRTzpQ提取碼:5m16
【BAT必備】zookeeper面試題:
鏈接:https://pan.baidu.com/s/1EhOee9e1Qe-Q6RC8KlthxA提取碼:p2am
【BAT必備】spring全家桶面試題:
鏈接:https://pan.baidu.com/s/1DXGO-N5P6QIGKLZ8LIVOuQ提取碼:m9v7
【BAT必備】rocketMq面試題:
鏈接:https://pan.baidu.com/s/1TEF3yUR4OOaIpj-4ud_79A提取碼:3g3d
【BAT必備】redis面試題:
鏈接:https://pan.baidu.com/s/1qlanxWBfwvKUObnHulCQiA提取碼:rjo7
【BAT必備】rabbitMq面試題:
鏈接:https://pan.baidu.com/s/1ywLiq3IUJVyZosPLNrmyTA提取碼:0td4
【BAT必備】netty面試題:
鏈接:https://pan.baidu.com/s/1Pbv4aelqOt1dUPA2SwEB_Q提取碼:2w1e
【BAT必備】Nginx面試題:
鏈接:https://pan.baidu.com/s/1r8YNyOz0N6MJ9F0045lEZw提取碼:49tl
【BAT必備】MySQL面試題:
鏈接:https://pan.baidu.com/s/1GeX6Fs4nNi6fTUHKxJ2SZw提取碼:8pow
【BAT必備】mybatis面試題:
鏈接:https://pan.baidu.com/s/1xOYiaiQ2JpPt2jb6GdWjaA提取碼:aqd3
【BAT必備】MongoDB面試題:
鏈接:https://pan.baidu.com/s/1QTVx1TF8tDn6LUJr7wdfOQ提取碼:j1qt
【BAT必備】Linux面試題:
鏈接:https://pan.baidu.com/s/1veZ3dBJmz1PduCE5tl-e1A提取碼:txpf
【BAT必備】kafka面試題:
鏈接:https://pan.baidu.com/s/1SWhiBCswleYGsDupSGzE6g提取碼:o1gv
【BAT必備】jvm面試題:
鏈接:https://pan.baidu.com/s/1xi-QLq_I75kha439EGqELw提取碼:kxde
【BAT必備】javaweb面試題:
鏈接:https://pan.baidu.com/s/1r3Bupn9qhJbw5ebR_6h94A提取碼:qba4
【BAT必備】Java基礎(chǔ)面試題:
鏈接:https://pan.baidu.com/s/1J40nYKIoV_VMCumoRpIyhQ提取碼:5xo7
【BAT必備】dubbo面試題:
鏈接:https://pan.baidu.com/s/10flnh7Tb0Oxd3yZPQOnjsA提取碼:5gc9
【BAT必備】activeMQ面試題:
鏈接:https://pan.baidu.com/s/1igNB64dpMCjCQkRzvqCXpQ提取碼:006a
【BAT必備】分布式相關(guān)面試題大全面試題:
鏈接:https://pan.baidu.com/s/1ZcpJDh07B2NPAL4_4VC6jQ提取碼:w4mw
【BAT必備】java面試題大全:
鏈接:https://pan.baidu.com/s/11jw0Ua4CZiI8-S6EadM_iQ提取碼:epmp
【BAT必備】Java面試匯總
鏈接:https://pan.baidu.com/s/1vG9_cNoiYBW5TY32S4wGnQ提取碼:k087
【BAT必備】2020年多家公司整理的350道Java面試題手冊
鏈接:https://pan.baidu.com/s/1FEGQVTgiyKG0kCasYn-n2g提取碼:f7y1
【BAT必備】Java全部核心知識點整理
鏈接:https://pan.baidu.com/s/1StG-ib70TDAE1Hb4NVLQRQ提取碼:5rp1
整理這些非常辛苦,大家點個贊在走吧SpringBoot中,@Autowired和@Resource使用起來到底有什么區(qū)別
這個問題也有一段時間了,當(dāng)初也就隨手一寫,直到最近還有網(wǎng)友在看,為了保證大家看的時候不會出現(xiàn)理解方面的問題,于2021-5-10編輯一次,希望能更加嚴(yán)謹(jǐn)一點,至少不會誤導(dǎo)大家。
首先,這個問題有點不準(zhǔn)確,這2個注解是使用Spring框架過程中常用的注解,而SpringMVC和SpringBoot等框架都是基于Spring的進(jìn)階框架,并沒有對這2個注解的使用進(jìn)行修改或者調(diào)整,所以,只討論Spring框架如何處理這2個注解即可,而不是討論在SpringBoot中的使用區(qū)別。
【結(jié)論】在絕大部分情況下,使用這2個注解的任何一個都可以實現(xiàn)自動裝配,在使用方面是無感的。
如果要討論區(qū)別,基本上就是2點:
所屬不同:@Resource注解是javax包的;@Autowired是Spring聲明的;裝配機(jī)制不同:@Resource會優(yōu)先byName來裝配,即使名稱不匹配,也會嘗試byType來裝配;@Autowired則是先查找匹配類型對象的數(shù)量,如果有且僅有1個,則直接裝配,如果為0個,則無法裝配,此時需要考慮該注解的required屬性,默認(rèn)是true,就會因為“必須裝配卻沒有匹配類型的對象”而拋出異常,如果顯式的設(shè)置為false,則不裝配,保持被自動裝配的屬性為null值,如果匹配類型的對象超過1個,則會嘗試byName,如果成功,則裝配,如果失敗,則拋出異常。如果一定要說還有其它區(qū)別,可以是:
作用范圍不同:@Resource用于對字段、Setter方法進(jìn)行注解,@Autowired可用于構(gòu)造方法、Setter方法和字段;當(dāng)同一種類型的對象有多個時(例如聲明的類型是接口,在Spring容器中有2個或多個實現(xiàn)類的對象),需要指定名稱,@Resource可直接配置name屬性來指定bean-name,而@Autowired需要配合@Qualifer注解,由@Qualifer注解來指定bean-name,當(dāng)用于字段時,直接在字段的聲明之前使用這2個注解,當(dāng)用于Setter方法時,在方法的聲明之前使用@Autowired,在方法的參數(shù)之前使用@Qualifer;另外,還有很多關(guān)于使用@Autowired的細(xì)節(jié)問題,例如“是不是不建議使用了”、“到底應(yīng)該怎么用”等等,所以,接下來主要討論這些問題。
關(guān)于“是不是不建議使用了”,這種問題的主要原因應(yīng)該是最近幾年IntelliJIDEA越來越流行了,而許多版本的IntelliJIDEA對@Autowired的預(yù)判是有問題的!也就是說:IntelliJIDEA會在編碼期實時預(yù)判是否存在可以裝配的對象,如果它認(rèn)為沒有,就會報錯,事實上,它的判斷并不完全準(zhǔn)確!
例如,嘗試在Service組件中裝配一個Mapper接口類型的字段時:
(截圖來自IntelliJIDEA2020.1.4)
以上報錯就是IntelliJIDEA預(yù)判錯誤導(dǎo)致的,如果使用的是Eclipse就不會有這樣的問題,解決方案可以是:
在UserMapper接口上添加@Repository注解;將以上代碼中的@Autowired配置為@Autowired(required=false),因為@Autowired默認(rèn)是required=true,同時IntelliJIDEA認(rèn)為沒有可裝配對象,所以報錯,顯式的配置為required=false之后,即使IntelliJIDEA認(rèn)為沒有可裝配對象也不會報錯了;將以上代碼中的@Autowired改為@Resource。再例如在使用SpringSecurity進(jìn)行配置時也會有類似的問題,只不過這次它認(rèn)為“存在多個匹配類型的對象”:
(截圖來自IntelliJIDEA2020.1.4)
解決以上報錯信息的方式可以是:
將聲明的UserDetailsService接口類型改為你的UserDetailsServiceImpl實現(xiàn)類類型,例如privateUserDetailsServerImplservice;即可;將以上代碼中的@Autowired改為@Resource。由于許多類似問題都可以通過“將@Autowired改為@Resource”來解決,加上一些相關(guān)說法(詳見下文),且某些片面的斷章取義,導(dǎo)致網(wǎng)上還存在“使用@Resource取代@Autowired”、“以后不要再用@Autowired”的說法,而這些說法都是錯誤的,沒有任何官方(開發(fā)工具的IntelliJIDEA,或框架官方Spring)說過這樣的話!
首先,使用Spring實現(xiàn)自動裝配時,有3種方式:
通過構(gòu)造方法注入;通過Setter注入(即與字段屬性匹配的set方法);通過字段注入;基本示例參見下圖:
以上圖片來自Spring官方提供的資料,可以看到最后還附了個URL,是國外網(wǎng)友寫的一篇主題為《whyfieldinjectionisevil》的討論文章,有興趣且有一定英語閱讀能力的朋友可以自行上網(wǎng)查看全文,大意是“使用字段注入時可能導(dǎo)致NPE”!為什么會這樣呢?假設(shè)你有如下代碼:
如果你因為某種原因直接創(chuàng)建對象,即通過UserServiceservice=newUserService();來創(chuàng)建對象,其中的userRepository屬性肯定是沒有值的,后續(xù)使用這個service對象時,只要涉及調(diào)用userRepository就會出現(xiàn)NPE了!
既然UserService是一個組件,為什么還會直接創(chuàng)建對象呢?其實這也算是一個低概率的特殊情況,在彼此不太熟悉的協(xié)同工作中可能出現(xiàn),例如你和我一起開發(fā)項目,我對你寫的那部分代碼不太了解……再就是測試使用時,也可能出現(xiàn)直接創(chuàng)建對象的情況……
如果將代碼改為下面這樣:
則剛才的問題就不存在了!因為現(xiàn)在的構(gòu)造方法是需要參數(shù)的,你不給參數(shù),就創(chuàng)建不了對象!如果能創(chuàng)建出對象,就肯定給了參數(shù),則userRepository肯定有值,就不會出現(xiàn)NPE!當(dāng)然,如果你一定要傳個null進(jìn)去就沒辦法了,Nozuonodiewhyyoutry?
所以,使用構(gòu)造方法傳遞參數(shù)是一種強(qiáng)制依賴的做法,可以保證不會出現(xiàn)NPE,但是,如果參數(shù)太多會不會很奇怪?真的有必要把代碼寫得這么滴水不漏嗎?這個就看你自己了!首先,是IntelliJIDEA并不建議你使用字段注入:
(截圖來自IntelliJIDEA2020.1.4)
而Spring的觀點,可參見下圖:
可以看到,Spring是無所謂的,反正都能用(Springdoesn'tcare,canuseeither),當(dāng)然,也列舉了使用構(gòu)造方法注入和使用Setter注入的區(qū)別(雖然我在前面都是寫的字段注入,在NPE問題上,字段注入和Setter注入是一樣的)。
既然Spring都無所謂了,我們?yōu)槭裁催€要糾結(jié)注入方式呢?還是那句話,只要你能保證不出錯,怎么都行!可能95%以上的Java從業(yè)者不是在寫大廠的大型項目,合格的程序員也不會亂寫代碼,由Setter或字段注入導(dǎo)致NPE的概率本來就極低,不一定需要為了“保證極端情況下也不出錯”而刻意的把代碼調(diào)整為構(gòu)造方法注入,只要注意規(guī)避這個問題即可!
另外,我在上面的代碼演示中,在構(gòu)造方法上加了@Autowired注解,在這里解釋一下:
如果類中只存在默認(rèn)構(gòu)造方法(無論是你顯式的添加的,還是根本不寫,由編譯器添加的),則無需@Autowired注解,Spring會自動調(diào)用,當(dāng)然,加了也不會出錯;如果類中只存在唯一的構(gòu)造方法,Spring會自動調(diào)用,且會自動從Spring容器中找對象裝配為調(diào)用構(gòu)造方法的參數(shù),這種情況也是不需要添加@Autowired注解的,加了也不會出錯;如果類中存在多個構(gòu)造方法,且都沒有添加@Autowired注解時,當(dāng)存在無參數(shù)構(gòu)造方法時,Spring會自動調(diào)用無參數(shù)構(gòu)造方法,如果你想要Spring調(diào)用另外某一個構(gòu)造方法,就在那個構(gòu)造方法上添加@Autowired注解;如果類中存在多個構(gòu)造方法,且超過1個構(gòu)造方法上都添加了@Autowired注解……你別作,你不需要知道Spring怎么處理,你只要把@Autowired刪得只有1個了,就肯定沒問題!所以,從道理上來說,應(yīng)該推薦顯式的為某1個構(gòu)造方法添加@Autowired注解,哪怕是不需要添加也能用,因為這樣會保證多構(gòu)造方法的情況下代碼更加直觀,增加代碼的可讀性,但是,從實際工作出發(fā),可能就變成了“有啥好加的?這點道理都不懂還上什么班?”……大家都懶得加了,所以,又不是什么很難懂的原理,加不加就自行把握吧。
最后,再總結(jié)一下使用原則:
@Autowired和@Resource在使用時可以不糾結(jié)它們的區(qū)別,使用它們的目的就是為了裝配對象,只要能裝得上,裝的是對的,無所謂使用哪個?一定要區(qū)分選取,先保證“在同一個項目中使用同一個”,不要一個類使用@Autowired,另一個類又使用@Resource,然后,我個人建議使用@Autowired,原因嘛,很簡單,你既然用Spring框架,就用它帶的注解唄;關(guān)于@Autowired的使用方式,不怕麻煩就都使用構(gòu)造方法注入,且顯式的添加@Autowired,如果怕麻煩,只要不出錯,就隨意吧。Spring官方也考慮到了網(wǎng)友關(guān)于@Resource或相關(guān)注解的問題,因為沒什么需要特別解釋的了,就直接貼圖好了,大家自行查閱,以下圖片仍是來自Spring官方資料:
最后,近期因為工作的關(guān)系看了不少Spring的官方資料,包括官方的Spring學(xué)習(xí)教程,有些感慨,給我的感覺,Spring對外提倡實用主義,極少和你講理論,源碼什么的更是少得可憐,這也和面向?qū)ο蟮乃枷氡3忠恢拢思叶紟湍阕龊昧耍愫煤糜镁托辛耍槐仃P(guān)心實現(xiàn)細(xì)節(jié),希望大家也能這樣!現(xiàn)在IT行業(yè)真的被一些大廠帶節(jié)奏了,網(wǎng)上各種吸引眼球的XX源碼解析、XX底層原理、XX加載過程分析、XX算法、大廠案例、大廠面試題……很多時候真的想噴一句“你咋不從操作系統(tǒng)開始做軟件研發(fā)呢”……真的,絕大部分Java從業(yè)者一輩子都進(jìn)不了大廠,也接觸不到超過20臺以上服務(wù)器才能扛得住的項目,除非是為了應(yīng)付面試,你甚至不需要知道i++和++i的區(qū)別,如果只是自己寫代碼自己用,你也不需要知道private和public的區(qū)別……如果你只想開自己的私家車,不想修車也不想造車,除了吹牛,你都不需要知道發(fā)動機(jī)的型號……多掌握實用技術(shù),多積累解決問題的經(jīng)驗,原理什么的能不管就不要管,當(dāng)熟練到一定程度后,再考慮要不要深入了解原理。
好了,就這么多,如果有錯別字,大家將就一下吧(可編輯次數(shù)有限),如果有覺得不對的地方,歡迎留言討論。
文章分享結(jié)束,springmvc面試題2021和Java后端面試題的答案你都知道了嗎?歡迎再次光臨本站哦!