<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【程序源代碼】java基礎(chǔ)面試題-day1

          共 3137字,需瀏覽 7分鐘

           ·

          2021-07-14 05:19

          “ 關(guān)鍵字: java 學(xué)習(xí) 每日 高頻 面試題 每日高頻面試題 ,一起沖進(jìn)大廠"


          導(dǎo)讀:

              大家好,我是程序源代碼,算算入行的時(shí)候我已算入行10以上的老兵了,畢業(yè)在北京北漂8年,13年回到省會(huì)石家莊,一直就在河北這塊土地上生活著。現(xiàn)在人了快到了中年,感覺現(xiàn)在生活壓力都比較多大。夢(mèng)想著有一天能進(jìn)入大廠,實(shí)現(xiàn)一個(gè)大廠夢(mèng)。其實(shí)我感覺大家應(yīng)該和我一樣,都想有進(jìn)入大廠工作畢竟生活需要理想,還需要茍且(掙高工資),其實(shí)現(xiàn)在大廠并不是特別容易進(jìn),作為一名好多年的Java選手,其實(shí)我感覺進(jìn)入大廠,首先要把自己的技術(shù)和面試這兩個(gè)重要點(diǎn)做好。

              最近這幾天我一直在看java相關(guān)的基礎(chǔ),也在看一些面試相關(guān)的資源和視頻,其實(shí)感覺不管什么技術(shù)面試,其實(shí)基礎(chǔ)是很重要的。現(xiàn)在正好暑假了,天氣炎熱,作為宅男的我本來就不想出去,所以還不如呆在家里,靜下心來好好準(zhǔn)備下基礎(chǔ)的面試。所以這個(gè)暑假(雖然我沒有暑假)我準(zhǔn)備用60天時(shí)間,把Java面試中的面試題看一看,從頭復(fù)習(xí)一遍。計(jì)劃是每天1-3題的形式學(xué)一遍(希望自己能堅(jiān)持下來)。

          ?  主要涵蓋的知識(shí)點(diǎn)我簡(jiǎn)單列了一下,計(jì)劃從這些方面出發(fā)進(jìn)行學(xué):Java基礎(chǔ)知識(shí)、集合容器、并發(fā)編程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL數(shù)據(jù)庫、Redis緩存、RabbitMQ消息隊(duì)列、Linux操作技巧等。


          01

          字符串a
          String,StringBuffer, StringBuilder 的區(qū)別是什么?
          1、從對(duì)象是否可變角度(可變與不可變)
          String類中使用字符數(shù)組保存字符串,因?yàn)橛小癴inal”修飾符,所以string對(duì)象是不可變的。對(duì)于已經(jīng)存在的String對(duì)象的修改都是重新創(chuàng)建一個(gè)新的對(duì)象,然后把新的值保存進(jìn)去。StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,這兩種對(duì)象都是可變的。
          2、是否多線程安全性
          String中的對(duì)象是不可變的,也就可以理解為常量,顯然線程安全。StringBuilder是非線程安全的。StringBuffer對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線程安全的。
          3、在使用性能上分析
          每次對(duì)String 類型進(jìn)行改變的時(shí)候,都會(huì)生成一個(gè)新的String對(duì)象,然后將指針指向新的String 對(duì)象。StringBuffer每次都會(huì)對(duì)StringBuffer對(duì)象本身進(jìn)行操作,而不是生成新的對(duì)象并改變對(duì)象引用。相同情況下使用StirngBuilder 相比使用StringBuffer 僅能獲得10%~15% 左右的性能提升,但卻要冒多線程不安全的風(fēng)險(xiǎn)。

          02

          字符串b
          String為什么要設(shè)計(jì)成不可變的?
          1.便于實(shí)現(xiàn)字符串池(String pool)
          在Java中,由于會(huì)大量的使用String常量,如果每一次聲明一個(gè)String都創(chuàng)建一個(gè)String對(duì)象,那將會(huì)造成極大的空間資源的浪費(fèi)。Java提出了String pool的概念,在堆中開辟一塊存儲(chǔ)空間String pool,當(dāng)初始化一個(gè)String變量時(shí),如果該字符串已經(jīng)存在了,就不會(huì)去創(chuàng)建一個(gè)新的字符串變量,而是會(huì)返回已經(jīng)存在了的字符串的引用。如果字符串是可變的,某一個(gè)字符串變量改變了其值,那么其指向的變量的值也會(huì)改變,String pool將不能夠?qū)崿F(xiàn)!
          2.使多線程安全
          在并發(fā)場(chǎng)景下,多個(gè)線程同時(shí)讀一個(gè)資源,是安全的,不會(huì)引發(fā)競(jìng)爭(zhēng),但對(duì)資源進(jìn)行寫操作時(shí)是不安全的,不可變對(duì)象不能被寫,所以保證了多線程的安全。
          3.避免安全問題
          在網(wǎng)絡(luò)連接和數(shù)據(jù)庫連接中字符串常常作為參數(shù),例如,網(wǎng)絡(luò)連接地址URL,文件路徑path,反射機(jī)制所需要的String參數(shù)。其不可變性可以保證連接的安全性。如果字符串是可變的,黑客就有可能改變字符串指向?qū)ο蟮闹担敲磿?huì)引起很嚴(yán)重的安全問題。
          4.加快字符串處理速度
          由于String是不可變的,保證了hashcode的唯一性,于是在創(chuàng)建對(duì)象時(shí)其hashcode就可以放心的緩存了,不需要重新計(jì)算。這也就是Map喜歡將String作為Key的原因,處理速度要快過其它的鍵對(duì)象。所以HashMap中的鍵往往都使用String。
          總體來說,String不可變的原因要包括 設(shè)計(jì)考慮,效率優(yōu)化,以及安全性這三大方面。

          03

          java對(duì)象的創(chuàng)建c
          什么是不可變對(duì)象?好處是什么?
          不可變對(duì)象指對(duì)象一旦被創(chuàng)建,狀態(tài)就不能再改變,任何修改都會(huì)創(chuàng)建一個(gè)新的對(duì)象,如 String、Integer及其它包裝類.不可變對(duì)象最大的好處是線程安全.

           能否創(chuàng)建一個(gè)包含可變對(duì)象的不可變對(duì)象?
          當(dāng)然可以,比如`final Person[] persons = new Persion[]{}`. `persons`是不可變對(duì)象的引用,但其數(shù)組中的Person實(shí)例卻是可變的.這種情況下需要特別謹(jǐn)慎,不要共享可變對(duì)象的引用.這種情況下,如果數(shù)據(jù)需要變化時(shí),就返回原對(duì)象的一個(gè)拷貝.

          java 創(chuàng)建對(duì)象有哪幾種方式?
          java中提供了以下四種創(chuàng)建對(duì)象的方式:- new創(chuàng)建新對(duì)象- 通過反射機(jī)制- 采用clone機(jī)制- 通過序列化機(jī)制。前兩者都需要顯式地調(diào)用構(gòu)造方法。對(duì)于clone機(jī)制,需要注意淺拷貝和深拷貝的區(qū)別,對(duì)于序列化機(jī)制需要明確其實(shí)現(xiàn)原理,在java中序列化可以通過實(shí)現(xiàn)Externalizable或者Serializable來實(shí)現(xiàn)。

          04


          聯(lián)




          公眾號(hào)ID:  itcode

          【公眾號(hào)二維碼, 掃一掃吧


          微信ID:  itcoder

          微信二維碼, 掃一掃吧


          責(zé)



          【寫作說明】以上文章屬于此公眾號(hào)原創(chuàng)所有,如需轉(zhuǎn)載請(qǐng)注明出處。【免責(zé)申明】本公眾號(hào)不是廣告商,也沒有為其他三方網(wǎng)站或者個(gè)人做廣告宣傳。文章發(fā)布源代碼和文章均來源于各類開源網(wǎng)站社區(qū)或者是小編在項(xiàng)目中、學(xué)習(xí)中整理的一些實(shí)例項(xiàng)目。主要目的是將開源代碼分享給喜歡編程、有夢(mèng)想的程序員,希望能幫助到你們與他們共同成長(zhǎng)。其中用戶產(chǎn)生的一些自愿下載、打賞或者付費(fèi)行為,原則與平臺(tái)沒有直接關(guān)系。如果涉及開源程序侵犯到原作者相關(guān)權(quán)益,可聯(lián)系小編進(jìn)行相關(guān)處理。
          【投稿郵箱】[email protected]

          —————————————

          目前已有1000000+優(yōu)秀的程序員加入我們
                                    
                                   

          ——————————————

          【你的每一份打賞就是對(duì)我最真誠(chéng)的鼓勵(lì)】
          瀏覽 75
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天躁天干 | 日本级婬片A片AAA毛片炙热 | 色情视频在线观看免费 | 大香蕉在线成人 | 久久国产精品毛片 |