安信java編碼規(guī)范附有答案_第1頁(yè)
安信java編碼規(guī)范附有答案_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、安信java編碼規(guī)范復(fù)制您的姓名: 填空題 *_您的部門(mén): 單選題 *互聯(lián)網(wǎng)研發(fā)團(tuán)隊(duì)交易運(yùn)營(yíng)研發(fā)團(tuán)隊(duì)辦公科技研發(fā)團(tuán)隊(duì)數(shù)據(jù)研發(fā)團(tuán)隊(duì)平臺(tái)研發(fā)團(tuán)隊(duì)1. 關(guān)于多線(xiàn)程并行處理定時(shí)任務(wù)的情況,下列哪些說(shuō)法符合規(guī)范? *推薦使用Timer方式處理;推薦使用ScheduledExecutorService方式處理;(正確答案)Timer運(yùn)行多個(gè)TimeTask時(shí),只要其中之一沒(méi)有捕獲拋出的異常,其它任務(wù)便會(huì)自動(dòng)終止運(yùn)行;(正確答案)ScheduledExecutorService并發(fā)運(yùn)行多個(gè)定時(shí)任務(wù)時(shí),其中某線(xiàn)程拋出異常,不會(huì)影響到其它線(xiàn)程的繼續(xù)運(yùn)行。(正確答案)2. KV結(jié)構(gòu)的集合,在處理null值的存儲(chǔ)上

2、有細(xì)微的區(qū)別,下列哪些說(shuō)法是正確的? *TreeMap的key可以為null;TreeMap的key不可以為null;(正確答案)ConcurrentHashMap的key不可以為null;(正確答案)ConcurrentHashMap的value可以為null。3. 以下關(guān)于格式規(guī)約的說(shuō)法,正確的有哪些? *代碼塊縮進(jìn)2個(gè)空格,如果使用tab縮進(jìn),請(qǐng)?jiān)O(shè)置成1個(gè)tab為2個(gè)空格;(正確答案)代碼塊縮進(jìn)4個(gè)空格,如果使用tab縮進(jìn),請(qǐng)?jiān)O(shè)置成1個(gè)tab為4個(gè)空格;(正確答案)行寬建議為200個(gè)字符;不同組的變量之間,不同業(yè)務(wù)邏輯的代碼行之間,可以插入一個(gè)空行,起邏輯分段的作用。(正確答案)4. 關(guān)

3、于異常的處理方式,下列哪些說(shuō)法是正確的? *為防止obj對(duì)象本身空指針異常,書(shū)寫(xiě)代碼時(shí)應(yīng)該注意加異常捕獲處理,例如:try obj.method() catch(NullPointerException e);方法簽名中,拋給調(diào)用者的關(guān)鍵字為throws;(正確答案)方法內(nèi)部,拋出異常實(shí)例對(duì)象為throws;自定義異常,建議繼承RuntimeException。(正確答案)5. hashCode 和 equals 方法的處理,遵循如下哪些規(guī)則? *只要重寫(xiě) equals,就必須重寫(xiě) hashCode。 而且選取相同的屬性進(jìn)行運(yùn)算;(正確答案)只選取真正能決定對(duì)象是否一致的屬性,而不是所有屬性,

4、可以改善性能;(正確答案)對(duì)不可變對(duì)象,可以緩存 hashCode 值改善性能(比如 String 就是例子);(正確答案)類(lèi)的屬性增加時(shí),及時(shí)重新生成 toString,hashCode 和 equals 方法。(正確答案)6. 關(guān)于Java代碼的設(shè)計(jì)和開(kāi)發(fā)注意事項(xiàng),下列哪些說(shuō)法符合? *所有的覆寫(xiě)方法,必須是強(qiáng)制加 Override;(正確答案)方法的參數(shù)名/局部變量名,不與類(lèi)的成員變量重名 (getter/setter例外);(正確答案)POJO 類(lèi)中布爾類(lèi)型的變量名,可以加 is 前綴;枚舉類(lèi)名建議以 Enum 結(jié)尾。(正確答案)7. 下述哪些命名形式的說(shuō)法是符合規(guī)范的? *為了簡(jiǎn)潔A

5、bstractClass或以縮寫(xiě)為 AbsClass;變量或方法禁用使用拼音或是拼寫(xiě)縮寫(xiě)進(jìn)行命名;(正確答案)類(lèi)名與接口名使用 UpperCamelCase 風(fēng)格,遵從駝峰形式;(正確答案)局部變量可以隨意使用 a1,a2,a3 等命名。8. 關(guān)于線(xiàn)程池管理線(xiàn)程的好處,下列哪些說(shuō)法是正確的? *能夠減少在創(chuàng)建和銷(xiāo)毀線(xiàn)程上所花的時(shí)間以及系統(tǒng)資源的開(kāi)銷(xiāo);(正確答案)使用線(xiàn)程池一定能避免OOM問(wèn)題;線(xiàn)程資源必須通過(guò)線(xiàn)程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線(xiàn)程;(正確答案)線(xiàn)程池能夠根據(jù)資源等待情況,自動(dòng)調(diào)整線(xiàn)程優(yōu)先級(jí)并解決死鎖問(wèn)題。9. 關(guān)于加鎖,下列哪些說(shuō)法符合規(guī)范? *可以只鎖代碼區(qū)塊的情況下,就

6、不要鎖整個(gè)方法體;(正確答案)高并發(fā)的業(yè)務(wù)場(chǎng)景下,要考慮加鎖及同步處理帶來(lái)的性能損耗,能用無(wú)鎖數(shù)據(jù)結(jié)構(gòu),就不要用鎖;(正確答案)能用對(duì)象鎖的情況下,就不要用類(lèi)鎖;(正確答案)加鎖時(shí)需要保持一致的加鎖順序,否則可能會(huì)造成死鎖。(正確答案)10. 寫(xiě)代碼的注釋?zhuān)男┳龇N法符合規(guī)范定義? *如果命名和邏輯本身就足夠清晰可以自解析,這時(shí)就不需要額外的注釋?zhuān)?正確答案)不要留著IDE自動(dòng)生成的param,return,throws標(biāo)記;(正確答案)類(lèi)、類(lèi)的公有成員的注釋必須使用javadoc規(guī)范,不得使用/xxx方式;(正確答案)注釋內(nèi)容必須使用英語(yǔ),防止發(fā)生亂碼。11. 程序的方法設(shè)計(jì)上,我們應(yīng)該盡可

7、能遵從這些約定? *一個(gè)方法盡量不要超過(guò)120行;(正確答案)超過(guò)5行以上的重復(fù)的代碼,可以考慮抽取為公用方法;(正確答案)方法的參數(shù)最好不要超過(guò)3個(gè),最多不要超過(guò)7個(gè),太多的可以傳入一個(gè)對(duì)象;(正確答案)對(duì)外提供的開(kāi)放接口,API一定要有參數(shù)校驗(yàn)。(正確答案)12. 下列哪些做法是正確的? *聲明為private的方法一般只是自己調(diào)用,可以忽略參數(shù)校驗(yàn);(正確答案)從層次設(shè)計(jì)的角度看,Web/Service/Dao 越前面的層越需要進(jìn)行參數(shù)校驗(yàn);(正確答案)可以使用assert進(jìn)行參數(shù)校驗(yàn);返回值若有可能為Null,可以使用JDK8的Optional類(lèi)。(正確答案)13. 關(guān)于日志級(jí)別的使用

8、,下列哪些說(shuō)法符合規(guī)范? *info日志盡可能多輸出,方便開(kāi)發(fā)人員排查問(wèn)題;如果使用warn來(lái)記錄剛上線(xiàn)的業(yè)務(wù)行為信息,一定要注意日志的輸出量,避免把硬盤(pán)撐爆,并記得及時(shí)刪除這些觀察日志;(正確答案)生產(chǎn)環(huán)境禁止輸出debug日志;(正確答案)error級(jí)別只記錄系統(tǒng)邏輯出錯(cuò)、異?;蛑匾腻e(cuò)誤信息。(正確答案)14. 在設(shè)計(jì)類(lèi)的構(gòu)造方法時(shí),比較合理的做法有? *如果參數(shù)很多,組合也很多時(shí),可以使用Builder設(shè)計(jì)模式;(正確答案)即使仍然用多構(gòu)造方法時(shí),也建議使用鏈?zhǔn)綐?gòu)造器模式,逐層加入默認(rèn)值傳遞調(diào)用,把實(shí)現(xiàn)邏輯寫(xiě)在最多參數(shù)的方法上;(正確答案)將復(fù)雜的邏輯抽取到獨(dú)立的方法,比如init()

9、,start(),讓使用者顯式調(diào)用;(正確答案)構(gòu)造方法一般習(xí)慣生寫(xiě)在類(lèi)的所有方法前面,按參數(shù)數(shù)量升序排序。(正確答案)15. 控制語(yǔ)句的用法,下述哪些說(shuō)法是錯(cuò)誤的? *if,else,for,while在遇到只有單條語(yǔ)句時(shí)可以不使用大括號(hào);(正確答案)所有if/else/for/while/try的嵌套,一般不要超過(guò)4層,不然閱讀有障礙;布爾表達(dá)式運(yùn)算符(&,|)的個(gè)數(shù)不要超過(guò)4個(gè),太復(fù)雜的可以先賦值給一個(gè)有意義的變量,以提高可讀性;任何情況情況下都不要使用三目運(yùn)算符。(正確答案)16. 如何正確在使用switch語(yǔ)法? *在一個(gè)switch塊內(nèi),每個(gè)case要么通過(guò)break/return

10、等來(lái)終止,要么注釋說(shuō)明程序?qū)⒗^續(xù)執(zhí)行到哪一個(gè)case為止;(正確答案)在一個(gè)switch塊內(nèi),都必須包含一個(gè)default語(yǔ)句并且放在最后,即使它什么代碼也沒(méi)有;(正確答案)JDK7以后,switch支持字符串String,但是case標(biāo)準(zhǔn)必須為字符串常量或字面量;(正確答案)在一個(gè)switch塊內(nèi),default語(yǔ)句可以在任意位置,也可以沒(méi)有default語(yǔ)句。17. 關(guān)于控制語(yǔ)句,下列哪些說(shuō)法是合理的? *if-else方式可以通過(guò)哨兵語(yǔ)句來(lái)減少嵌套層次;(正確答案)盡量減少使用取反的邏輯,大部分情況下,取反邏輯存在對(duì)應(yīng)的正身邏輯寫(xiě)法;(正確答案)表達(dá)式中,能造成短路概率較大的邏輯應(yīng)盡量放

11、在前面;(正確答案)try-catch盡可能不要放在循環(huán)休內(nèi)。(正確答案)18. 如何合理地使用異常? *盡量使用JDK標(biāo)準(zhǔn)的Runtime異常如IllegalArgumentException、IllegalStateException;(正確答案)捕獲異常一定要處理;如果故意捕獲并忽略異常,須要注釋寫(xiě)明原因;(正確答案)必須對(duì)資源對(duì)象、流對(duì)象進(jìn)行關(guān)閉,或使用語(yǔ)法 try-with-resource;(正確答案)如果處理過(guò)程中有拋出異常的可能,也要做 try-catch,否則 finally 塊中拋出的異常,將代替 try 塊中拋出的異常。(正確答案)19. 關(guān)于數(shù)字類(lèi)型的計(jì)算,哪些描述是正確的? *數(shù)字運(yùn)算表達(dá)式,因?yàn)橄冗M(jìn)行等式右邊的運(yùn)算,再賦值給等式左邊的變量,所以等式兩邊的類(lèi)型要一致;(正確答案)取模做數(shù)組下標(biāo)時(shí),如果不處理負(fù)數(shù)的情況,很容易ArrayIndexOutOfBoundException;(正確答案)可以用double或float作金融貨幣計(jì)算,小精度

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論