java編程規范


地址

一、單選題
1. 如下關於集合類的描述錯誤的是 B
A. 含有集合意義的屬性命名,盡量包含其復數的意義
B. 集合中的數據不需要釋放,垃圾回收器會自動回收
C. 集合必須指定模板類型
D. 使用集合類時要設置初始化容量
2. 關於線程以下說法錯誤的有B
A. 新起一個線程,都要使用Thread.setName(“…”)設置線程名
B. 在JDK1.5或更新的版本中,若字符串拼接發生在單線程環境,使用StringBuffer
C. 對多線程訪問的變量、方法,必須加鎖保護,避免出現多線程並發訪問引起的問題
D. 線程使用時,要在代碼框架中使用線程池,避免創建不可復用的線程;禁止在循環中創建新線程,否則會引起JVM資源耗盡
3. 下面哪個是推薦使用的對稱密碼算法B
A. DES
B. AES
C. SHA
D. RSA
4. 以下說法正確的有C
A. 程序中的一些狀態多直接用數字表示,如函數執行成功return 1
B. 對於表示函數執行錯誤,多用約定的錯誤碼來標識
C. 用有意義的靜態變量或者枚舉來代替數字型的程序狀態,如函數執行成功return SUCCESS
D. 程序中的魔鬼數字並不可怕,需要所有開發人員努力理解這些數字的含義
5. 下列錯誤使用異常的做法是D
A. 在程序中使用異常處理還是使用錯誤返回碼處理,根據是否有利於程序結構來確定,並且異常和錯誤碼不應該混合使用,推薦使用異常
B. 一個方法不應拋出太多類型的異常。throws/exception子句標明的異常最好不要超過三個
C. 異常捕獲盡量不要直接 catch (Exception ex),應該把異常細分處理
D. 程序內拋出的異常本身就可說明異常的類型、拋出條件,可不填寫詳細的描述信息。捕獲異常后用exception.toString()取到詳細信息后保存
6. 關於命名規范,以下說法錯誤的有D
A. 屬性名使用意義完整的英文描述,第一個單詞的字母使用小寫,剩余單詞首字母大寫其余字母小寫的大小寫混合法。屬性名不能與方法名相同
B. 方法名使用類意義完整的英文描述:第一個單詞的字母使用小寫、剩余單詞首字母大寫其余字母小寫的大小寫混合法
C. 方法中,存取屬性的方法采用setter 和 getter方法,動作方法采用動詞和動賓結構
D. 常量名使用全大寫的英文描述,英文單詞之間用下划線分隔開,並且使用 static 修飾[y1] 
7. 下列哪個場景可以使用java.util.Random類產生的隨機數C
A. 挑戰算法中的隨機數生成
B. 驗證碼的隨機數生成
C. 隨機選取路由
D. Web應用會話標識符
8. 一段使用ZipInputStream對壓縮文件進行解壓的代碼,在[1]處填入適合的關鍵字是A
public RandomAccessFile openFile(java.io.File f) {
[1] java.io.File copy = new java.io.File(f.getPath());
askUserPermission(copy.getPath());
// ...
return (RandomAccessFile)AccessController.doPrivileged(new PrivilegedAction () {
public Object run() {
return new RandomAccessFile(copy, copy.getPath());
}
});
}
A. final
B. static
C. volatile
D. private
9. 安全編程規范中,下面說法錯誤的是D[y2] 
A. 對外部輸入進行校驗
B. 禁止不受信任的代碼直接終止JVM
C. 創建文件時指定合理的訪問權限
D. 記錄日志時可以拋異常
10. 若程序中需要獲取操作系統登錄用戶名,應采取下列哪種方法來獲取
A. 提示用戶輸入
B. 由環境變量獲取:System.getenv("USER")
C. 由JVM屬性獲取:System.getProperty("user.name")
D. 啟動程序的時候由程序參數傳入
11. 以下說法正確的是C[y3] 
A. 盡量使用Java 5.0新循環寫法
B. 判斷一個變量是否等於null、或者一個常量,應把變量放在操作符的左邊
C. 方法參數不能超過7個
D. 用“==”比較兩個字符串內容相等
12. 在下列哪個場景中,不需要加密和數字簽名機制保證數據安全D
A. 序列化傳輸敏感數據
B. 無SSL傳輸通道或者代價太高
C. 敏感數據需要持久化長久保存
D. 同一信任域內組件間傳遞
13. 下列JDK中的API調用中若使用不當易遭致OS命令注入的是B
A. java.lang.System.load()
B. java.lang.Runtime.exec()
C. java.lang.Thread.start()
D. java.lang.Process.waitFor()
14. 如下描述不正確的是D
A. 除了構建器外,不要使用和類名相同的方法名
B. 使用 equals() 比較兩個類的值是否相同
C. 不要使用嵌套賦值,即在一個表達式中使用多個 =
D. 重載 equals() 方法時,不必要重載 hashCode() 方法
15. 下列不符合編碼規范的是C
A. 數據庫、IO操作等需要使用結束close()的對象必須在try-catch-finally 的finally中close()
B. 數組聲明的時候使用 int[] index ,而不要使用 int index[]
C. 所有的類必須重載toString()方法,返回該類有意義的內容
D. 自己拋出的異常必須要填寫詳細的描述信息
16. 對於下面的代碼片段,假設PasswordManager的實例可以被非信任代碼所訪問,且changePassword()方法調用屬於敏感操作,則下列說法中不正確是的C
public class PasswordManager
{
public final Object lock = new Object(); 

public void changePassword() throws FileNotFoundException
{
synchronized (lock)

// . . .
}
}
}
A. changePassword()方法中應該包含安全管理器檢查,以確認調用代碼是否具有該操作權限
B. 應該將lock成員變量的可見性聲明為private
C. 可以省去changePassword()方法中的同步塊,直接將changePassword()方法聲明為synchronized修飾的同步方法
D. changePassword()方法不應該拋出FileNotFoundException異常
17. 推薦的防御SQL注入的最佳方式是C
A. 限制外部輸入的長度
B. 使用存儲過程
C. 使用預編譯語句--java.sql.PreparedStatement
D. 對外部輸入進行轉義
18. JAAS授權類中,不包含以下哪一類D
A. Policy
B. AuthPermission
C. PrivateCredentialPermission
D. LoginContext
19. 下面說法或者語句不符合公司編程規范的排版要求的是D
A. 逗號、分號只在后面加空格; 比較操作符, 賦值操作符"="、 "+=",算術操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前后加空格; "!"、"~"、"++"、"--"、"&"(地址運算符)等單目操作符前后不加空格
B. 如果語句已足夠清晰則括號內側(即左括號后面和右括號前面)不需要加空格,多重括號間不必加空格,因為在Java語言中括號已是最清晰的標志了
C. 較長的語句、表達式或參數(>80字符)要分成多行書寫,長表達式要在低優先級操作符處划分新行,操作符放在新行之首,划分出的新行要進行適當的縮進,使排版整齊,語句可讀
D. if, for, do, while等語句的執行語句如果只有一行的話,不需要要加括號{}
20. 對於注釋的描述錯誤的是C
A. 公有和保護方法注釋內容:列出方法的一句話功能簡述、功能詳細描述、輸入參數、輸出參數、返回值、異常等
B. 對重載父類的方法必須進行@Override聲明
C. 對關鍵變量的定義必須編寫注釋,分支語句(條件分支、循環語句等),可以根據實際情況,可以增加注釋,也可以不加,根據注釋量確定
D. 對於方法內部用throw語句拋出的異常,必須在方法的注釋中標明,對於所調用的其他方法所拋出的異常,選擇主要的在注釋中說明。 對於非RuntimeException,即throws子句聲明會拋出的異常,必須在方法的注釋中標明
二、多選題
21. 如下類名符合公司規范的有CD
A. FtpDownload_Util
B. DEBUGLOG
C. OrderResponse
D. UserManager
22. 如下哪些地方應該加上空行AB
A. import語句與類定義之間
B. 注釋與其上面的無關的代碼之間
C. 注釋和被注釋的代碼之間
D. 變量說明之后
23. 關於局部變量說法,符合編程規范的說法是ABCD
A. 不要定義不會被用到的局部變量,類私有屬性,類私有方法和方法參數
B. 幾乎每一個局部變量的聲明都應該包含一個初始化表達式
C. 變量定義的“就近原則”
D. 屬性名可以和公有方法參數相同,也可以和局部變量相同
24. 下列說法描述正確的是ABC
A. public方法參數的合法性檢查應由方法本身負責,每一個public方法必須保證自己的健壯性
B. 調用方法獲取返回結果后必須進行有效性校驗,以確保后續代碼在運行過程中不會拋出異常或產生邏輯錯誤
C. 訪問數組、List等容器內的元素時,必須首先檢查下標是否越界,杜絕下標越界異常的發生
D. 對於if ? else if ?(后續可能有多個else if …)這種類型的條件判斷,最后必須包含一個else分支,避免出現分支遺漏造成錯誤;每個switch-case語句都必須保證有default,避免出現分支遺漏,造成錯誤
25. 下面關於存取控制符號的描述,符合編程規范的有ABC
A. 只是該類內部調用的函數使用 private 屬性
B. 繼承類可以使用的使用protected屬性
C. 對外公開的函數使用public屬性
D. 類的成員變量的盡量采用protected修飾,其他類可以通過類的成員方法來訪問和修改變量
26. 下列關於類和接口的注釋,正確的說法有ABCD
A. 放在class或者interface關鍵字之前
B. 放在import關鍵字之后
C. 注釋主要是一句話功能簡述與功能詳細描述
D. 類注釋使用“/****/”注釋方式
27. 以下說法正確的有ABCD
A. 一個系統或者模塊應該統一規划異常類型和返回碼的含義
B. 異常的處理效率比條件分支低
C. 異常的跳轉流程難以預測
D. 系統非正常運行產生的異常捕獲后,如果不對該異常進行處理,則應該記錄日志
28. 關於異常,以下說法正確的有AC
A. 運行時異常使用RuntimeException的子類來表示,不用在可能拋出異常的方法聲明上加throws子句
B. 運行時異常使用RuntimeException的子類來表示,必須在可能拋出異常的方法聲明上加throws子句
C. 非運行期異常是從Exception繼承而來的,必須在方法聲明上加throws子句
D. 非運行期異常是從Exception繼承而來的,不需要在方法聲明上加throws子句
29. 下述排版代碼中,符合編碼規范的是CD
A. if (i>j) doStart();
B. Object o = new Object(); Object b = null;
C. 類定義 { 類的公有屬性定義 類的保護屬性定義 類的私有屬性定義 類的公有方法定義 類的保護方法定義 類的私有方法定義 }
D. typeCounter *= 2;
30. 循環嵌套的時候,下面哪些情況需要盡量避免ABCD
A. 實例化對象
B. try/catch
C. 開啟IO
D. 連接數據庫
三、判斷題
31. 將字符串轉換為數字時必須處理NumberFormatException異常
正確
錯誤√ 
32. 一個文件不要定義兩個類(並非指內部類)
正確√ 
錯誤
33. interface 中定義的常量不要寫public、static、final的修飾詞,方法需要寫public修飾詞
正確
錯誤√ 
34. 應明確規定對接口方法參數的合法性檢查應由方法的調用者負責還是由接口方法本身負責,缺省是由方法調用者負責
正確√ 
錯誤
35. 代碼提交前,需要消除相應的錯誤、告警,並將findbug清零
正確√ 
錯誤
36. 對於switch語句下的case語句,必須在每個case分支結束前加上break語句
正確√ 
錯誤
37. 判斷語句可以使用”* == true”來判斷為真
正確
錯誤√ 
38. 不要使用循環將集合轉為數組,可以使用集合的toArray()方法
正確√ 
錯誤
39. 實現Serializable接口的可序列化類應該顯式private static final聲明 serialVersionUID
正確√ 
錯誤
40. 類屬性和類方法可以交叉放置
正確
錯誤√ 


 [y1]應用final static修飾

 [y2]不確定

 [y3]不確定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM