《JAVA編碼規(guī)范》試卷
1 【單選題】 以下說法正確的是? ()
A 程序中的一些狀態(tài)多直接用數(shù)字表示,如函數(shù)執(zhí)行成功,return 1變量和方法名的首寫字母大寫
B 對于表示函數(shù)執(zhí)行錯誤,多用約定的錯誤碼來標(biāo)識常量完全大寫
C 用有意義的靜態(tài)變量或者枚舉來代替數(shù)字型的程序狀態(tài),如函數(shù)執(zhí)行成功,return SUCCESS
D 程序中的魔鬼數(shù)字并不可怕,需要所有開發(fā)人員努力理解這些數(shù)字的含義
2 【單選題】 關(guān)于注釋,以下哪個說法是錯誤的? ()
A 注釋也是代碼,一旦寫注釋,就好好寫,并且與相對應(yīng)代碼同步維護(hù)
B 所有的枚舉類型字段必須要有注釋,說明每個數(shù)據(jù)項(xiàng)的用途
C 注釋應(yīng)當(dāng)標(biāo)明代碼的一些可能的副作用(比如非線程安全)等
D 示例注釋: addOrder方法上可以加注釋以方便英語不好的人閱讀:// 增加訂單
3 【單選題】 推薦的防御SQL注入的最佳方式是? ()
A 限制外部輸入的長度
B 使用存儲過程
C 使用預(yù)編譯語句--java.sql.PreparedStatement
D 對外部輸入進(jìn)行轉(zhuǎn)義
4 【單選題】 關(guān)于控制語句的使用,以下哪個說法是錯誤的? ()
A 在一個switch塊內(nèi),每個都case要通過break/return等來終止
B 在一個switch塊內(nèi),都必須包含一個default語句并且放在最后,即使空代碼
C 在if/else/for/while/do語句中必須使用大括號
D 即使只有一行代碼。函數(shù)中表達(dá)異常的分支時,盡量使用衛(wèi)語句來提前返回或者拋出異常
5 【單選題】 關(guān)于日志,以下說法哪個是錯誤的? ()
A 應(yīng)用中不可直接使用日志系統(tǒng)(Log4j、Logback)中的API,而應(yīng)依賴使用日志框架SLF4J中的API
B 建議使用lombok的@slf4j注解,進(jìn)一步簡化日志的寫法
C 日志輸出中包含參數(shù)的話,必須使用使用占位符的方式
D 如果輸出內(nèi)容較多或者輸出參數(shù)較長,可以考慮多次調(diào)用日志打印來輸出
E 日志輸出時,盡量輸出關(guān)鍵點(diǎn)的上下文信息,包括輸入?yún)?shù),中間變量等
6 【單選題】 下列不符合編碼規(guī)范的是? ()
A 數(shù)據(jù)庫、IO操作等需要使用結(jié)束close()的對象必須放在try-catch-finally的finally中close()
B 數(shù)組聲明的時候建議使用int[] index而不要使用int index[]
C 在日期格式中可以混用大寫的 M 和小寫的 m以及大寫的 H 和小寫的 h。
D 自己拋出的異常必須要填寫詳細(xì)的描述信息
7 【單選題】 關(guān)于代碼格式的說法,以下哪個是錯誤的? ()
A 使用統(tǒng)一的格式化工具,在保存時自動格式化代碼
B 所有源文件以及配置文件等,都使用操作系統(tǒng)默認(rèn)的編碼形式
C 使用IDE/編輯器 ,應(yīng)當(dāng)顯式化空白字符
D 注釋的雙斜線與注釋內(nèi)容之間保留一個空格
8 【單選題】 在JDK7版本及以上,Comparator要滿足三個條件,不然Arrays.sort,Collections.sort會報IllegalArgumentException異常,下面哪一項(xiàng)不是三個條件之一? ()
A 自反性:x,y的比較結(jié)果和y,x的比較結(jié)果相反
B 傳遞性:xy,yz,則xz
C 對稱性:x=y,則x,z比較結(jié)果和y,z比較結(jié)果相同
D 不同性:x!=y, 則x, z比較結(jié)果和y,z比較結(jié)果不相同
9 【單選題】 以下哪種命名沒有體現(xiàn)出使用了哪種面向?qū)ο蟮脑O(shè)計模式? ()
A OrderFactory
B LoginAdapter
C ResourceObserver
D CustomPattern
10 【單選題】 以下哪個說法是錯誤的? ()
A 抽象類命名使用Abstract或Base開頭
B 異常類命名使用Exception結(jié)尾
C 測試類命名以它要測試的類名開始,以Test結(jié)尾
D 具體實(shí)現(xiàn)類使用Impl或者Implementation結(jié)尾
11 【單選題】 下列標(biāo)識符(名字)命名原則中,正確的是? ()
A 類名的首字母小寫
B 變量和方法名的首寫字母大寫
C 接口名的首寫字母小寫
D 常量完全大寫
12 【單選題】 關(guān)于單元測試,以下哪種代碼可以不強(qiáng)制單元測試? ()
A 核心業(yè)務(wù)代碼
B 核心算法代碼
C 調(diào)用頻繁的代碼
D 工具生成的數(shù)據(jù)庫存儲數(shù)據(jù)DAO的代碼
13 【單選題】 在下列哪個場景中,不需要加密與數(shù)字簽名機(jī)制保證數(shù)據(jù)安全? ()
A 序列化傳輸敏感數(shù)據(jù)
B 無SSL傳輸通道或代價太高
C 敏感數(shù)據(jù)需要持久化長久保存
D 同一信任域內(nèi)組件間傳遞
14 【單選題】 分層領(lǐng)域模型規(guī)約中,以下哪個是表示與數(shù)據(jù)庫表結(jié)構(gòu)一一對應(yīng),通過DAO層向上傳輸數(shù)據(jù)源對象? ()
A DO(Data Object)
B DTO(Data Transfer Object)
C BO(Business Object)
D VO(View Object)
15 關(guān)于單元測試,下面說法正確的有? ()
A 單元測試應(yīng)該是全自動執(zhí)行的,并且非交互式的
B 單元測試代碼測試通過后不需要維護(hù)
C 對于單元測試,要保證測試粒度足夠小,有助于精確定位問題
D 單元測試應(yīng)該是測試同學(xué)干的事情
16 下列說法描述正確的有? ()
A public方法參數(shù)的合法性檢查應(yīng)由方法本身負(fù)責(zé),每一個public方法必須保證自己的健壯性
B 調(diào)用方法獲取返回結(jié)果后必須進(jìn)行有效性校驗(yàn),以確保后續(xù)代碼運(yùn)行過程中不會拋出異?;虍a(chǎn)生邏輯錯誤
C 訪問數(shù)組、List等容器內(nèi)的元素時,必須首先檢查下標(biāo)是否越界,杜絕下標(biāo)越界異常的發(fā)生
D 對于if?else if?(后續(xù)可能有多個else if...)這種類型的判斷,可以不用包含最后的else分支;switch語句可以不需要有default分支
17 下面哪些描述是錯誤的? ()
A 方法的參數(shù)名和類中的方法名相同的時候會產(chǎn)生編譯錯誤
B 實(shí)現(xiàn)equals()方法時,先用getClass()或者instanceof進(jìn)行類型比較,可以提高性能
C equals()或者==都可以用來比較兩個不同實(shí)例類的值是否相同
D 每個類都應(yīng)該定義main方法
18 循環(huán)嵌套的時候,下面哪些情況需要盡量避免? ()
A 實(shí)例化對象
B try/catch
C 開啟IO
D 連接數(shù)據(jù)庫
19 以下哪個說法是正確的? ()
A 在foreach循環(huán)里可以進(jìn)行元素的remove/add操作
B 使用keySet方式對Map集合的key進(jìn)行遍歷
C 在集合項(xiàng)目較多時,推薦直接使用List的contains方法進(jìn)行遍歷、對比、去重操作
D 具有元素唯一特性的集合,可以使用Set,Map
20 請求http接口時,如果需要傳遞參數(shù),下面哪些實(shí)現(xiàn)方式是正確的? ()
A 使用字符串拼接的方式直接將參數(shù)拼接到url參數(shù)中
B 先將每個參數(shù)進(jìn)行url編碼,然后再使用字符串拼接的方式將參數(shù)拼接到url參數(shù)中
C 使用post請求的application/x-www-form-urlencoded編碼方式,采用表單的形式提交參數(shù)
D 使用post請求的application/json編碼方式,采用json格式的數(shù)據(jù)提交參數(shù)
關(guān)閉
更多問卷
復(fù)制此問卷