自從阿里巴巴Java開發手冊(泰山版)推出之後,技術社區便炸起鍋來,代碼規範、UTDD、敏捷開發一度成功技術討論熱點。某些互聯網公司甚至把編碼規範作為codereview的標準,一些大型招聘網站也把編碼規範納入技術崗應聘的加分項。這對於需要的找工作尋求更高職位的童鞋來說,可謂是一個小小福音。“工欲善其事必先利其器”編碼能力是硬實力最有力的憑證。廢話不多說,今天就給大家講講這次技能考試的心得和認證過程。
- 先上證書

可以看到證書是帶有總裁的簽名和自己身份證標識的圖片。
- 認證流程
阿里雲註冊–>認證–>進入考試–>獲取證書
1、 阿里雲註冊:手機郵箱支持註冊,這裡使用支付寶掃碼驗證,直接進入;
2、 購買認證
https://edu.aliyun.com/certification/cldt02? spm=5176.11999222.1216634.71.45caff12NfFLTp 以前是9.9,現在是1毛,絕對夠良心價了,注意只有兩次考試機會。
3、 進入考試:考試會有錄入身份證正面照,所以提前要手機拍好了。
4、 獲取證書:過80分就可以領取證書了,注意是有阿里雲總裁簽名照。小編也是把開發手冊刷了一遍,花掉20多分鐘做完了50道題,當然都是選擇題(單選和多選),一遍86,做完倍感信心滿滿。
由於題目具有隨機性,接下來就給大家貼上已經有見過的試題(單選和多選題為主,網上也有,考完才發現。。。)非常具有代表性,劃重點還是泰山版規範,請各位技術的童鞋對號入座!
- 題型參考
多選 1.關於多線程並行處理定時任務的情況,下列哪些說法符合《阿里巴巴Java開發手冊》:BCD
A .推薦使用Timer方式處理。
B .推薦使用ScheduledExecutorService方式處理。
C .Timer運行多個TimeTask時,只要其中之一沒有捕獲拋出的異常,其它任務便會自動終止運行。
D .ScheduledExecutorService並發運行多個定時任務時,其中某線程拋出異常,不會影響到其它線程的繼續運行。
多選 2.關於數據庫中表相關的命名,下列哪些說法符合《阿里巴巴Java開發手冊》:ABD
A .表名、字段名禁止出現數字開頭,禁止兩個下劃線中間只出現數字。
B .表名不使用複數名詞。
C .表必備三字段命名:id, gmt_create, gmt_modify。
D .表必備三字段命名:id, gmt_create, gmt_modified。
單選3.KV結構的集合,在處理null值的存儲上有細微的區別,下列哪些說法是正確的:A
A .TreeMap的key不可以為null
B .TreeMap的key可以為null
C .ConcurrentHashMap的key可以為null
D .ConcurrentHashMap的value可以為null
注釋:HashMap的key/value均可以為null,但是TreeMap的key不能為空,value可以為空
多選 4.關於二方庫依賴的解析命令,下列哪些說法是正確的:ABC
A .mvn dependency:resolve 打印出已仲裁依賴的列表。
B .mvn dependency:tree 打印工程整個的依賴樹結構。
C .mvn dependency:tree -Dverbose -Dincludes=commons-lang 打印出與commons-lang相關的詳細依賴。
D .mvn clean install 打印工程整個的依賴樹結構,並部署到本地倉庫中。
多選 5.關於變量和常量定義,下列哪些符合《阿里巴巴Java開發手冊》:A
A .Long a=2L;//大寫的L
B .Long a=2l; //小寫的l
C .常量只定義一次,不再賦值,所以不需要命名規範。
D .不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。
多選 6.關於線程安全,下列哪些說法是正確的:ACD
A .SimpleDateFormat 是線程不安全的類。
B .SimpleDateFormat 是線程安全的類。
C .一般不要定義SimpleDateFormat的static變量,如果定義為static,必須保證線程安全。
D .推薦使用Apache封裝好的DateUtils和DateFormatUtils工具類,來處理時間日期轉換問題。
多選 7.以下關於格式規約的說法,正確的有哪些:AD
A .代碼塊縮進4個空格,如果使用tab縮進,請設置成1個tab為4個空格;
B .代碼塊縮進5個空格,如果使用tab縮進,請設置成1個tab為5個空格。
C .為了保持代碼美觀,《手冊》強烈推薦增加若干空格,使某一行的變量與相鄰對應位置的變量對齊。
D .方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者不同的語義之間推薦插入一個空行;相同業務邏輯和語義之間不需要插入空行。
多選 8.數組使用Arrays.asList轉化為集合,下列說法哪些正確的:ACD
A .數組元素的修改,會影響到轉化過來的集合。
B .數組元素的修改,不會影響到轉化過來的集合。
C .對於轉換過來的集合,它的 add/remove/clear 方法會拋出:
UnsupportedOperationException。
D .Arrays.asList 體現的是適配器模式,只是轉換接口,後台的數據仍是數組。
多選 9.關於異常的處理方式,下列哪些說法是正確的:BD
A .為防止obj對象本身空指針異常,書寫代碼時應該注意加異常捕獲處理,例如:try { obj.method() } catch(NullPointerException e){……} 。
B .方法簽名中,拋給調用者的關鍵字為throws
C .方法內部,拋出異常實例對象為throws
D .自定義異常要做到“認知對等”,即:拋出者和接收者要保持對自定義異常的認知統一,接收方需要知道這種異常的含義和對應的處理方案。
多選 10.Hashtable,HashMap, ConcurrentHashMap都是Map的實現類,它們在處理null值的存儲上有細微的區別,下列哪些說法是正確的:ABD
A .Hashtable的KV都不可以為null。
B .HashMap的KV都可以為null。
C .HashMap的K不可以為null,V可以為null。
D .ConcurrentHashMap的KV都不可以為null。
單選 11.關於測試代碼的覆蓋率,下列哪些說法是正確的?:B
A .路徑覆蓋是最強覆蓋,符合路徑覆蓋且測試全部通過,程序絕對沒有問題。
B .語句覆蓋度是最弱的覆蓋度量方式。
C .分支覆蓋與條件覆蓋其實是一回事。
D .判定條件覆蓋與路徑覆蓋其實是一回事。
多選 12.關於checked/unchecked exception,下列哪些說法是正確的:BCD
A .繼承java.lang.Error的類屬於checked exception。
B .checked異常繼承java.lang.Exception類。
C .unchecked異常繼承
java.lang.RuntimeException類。
D .NullPointerException , IllegalArgumentException屬於unchecked exception。
多選 13.以下關於命名規約內容說明,正確的是:BCDE
A .【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞,並且使用複數形式,例如:應用工具類包名為com.alibaba.mpp.utils
B .【強制】類名使用UpperCamelCase,必須遵從駝峰形式,但以下情形例外:(領域模型的相關命名)DO / DTO / VO / DAO等。
C .【強制】抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類命名以它要測試的類的名稱開始,以Test結尾。
D .【強制】枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
E . 如果使用到了設計模式,建議在類名中體現出具體模式。例如代理模式的類命名:LoginProxy;觀察者模式命名:ResourceObserver。
多選 14.關於MySQL性能優化的描述,下列哪些說法是正確的:ABCD
A .主鍵查詢優先於二級索引查詢。
B .表連接有一定的代價,故表連接數量越少越好。
C .一般情況下,二級索引掃描優先於全表掃描。
D .可以使用通過索引避免排序代價。
多選 15.關於生產環境的日誌文件,下列哪些說法符合《阿里巴巴Java開發手冊》:ABCD
A .異常信息應該包括兩類信息:案發現場信息和異常堆棧信息。
B .日誌文件推薦至少保存15天,因為有些異常具備以“周”為頻次發生的特點。
C .避免重複打印日誌,浪費磁盤空間,務必在log4j.xml中設置additivity=false。
D .錯誤日誌和業務日誌盡量分開存放。
多選 16.關於索引的使用,下列哪些說法是正確的:BCD
A .查詢語句 WHERE a+1 = 5 可以利用a索引。
B .查詢語句WHERE date_format(gmt_create, ‘%Y-%m-%d’) = ‘2016-11-11’無法利用gmt_create索引。
C .當 c 列類型為 char 時,查詢語句 WHERE c = 5 無法利用c索引。
D .索引字段使用時不能進行函數運算。
多選 17.關於索引的設計,下列哪些說法符合《阿里巴巴Java開發手冊》:ACD
A .對varchar類型的字段建立索引,必須指定索引長度。
B .對varchar類型的字段建立索引,不需要指定索引長度,這樣索引區分度最好。
C .業務上具有唯一特性的字段(含組合字段),必須指定唯一索引。
D .建複合索引時,一般選擇區分度高的字段放在最左列。
多選 18.關於Java的接口描述,下列哪些說法符合《阿里巴巴Java開發手冊》:BCD
A .在接口類中的方法和屬性使用public修飾符。
B .對於Service類,內部的實現類加Impl的後綴與接口區別。例如:ProductServiceImpl實現ProductService接口。
C .對於Service類,基於SOA的理念,是以接口方式暴露服務。
D .盡量不在接口裡定義變量,如果一定要定義變量,肯定是與接口方法相關,而且是整個應用的基礎常量。
單選 19.關於類的序列化,下列說法哪些是正確的:D
A .類的序列化與serialVersionUID毫無關係。
B .如果完全不兼容升級,不需要修改serialVersionUID值。
C .POJO類的serialVersionUID不一致會編譯出錯。
D .POJO類的serialVersionUID不一致會拋出序列化運行時異常。
多選 20.關於接口使用拋異常還是返回錯誤碼,下列哪些說法符合《阿里巴巴Java開發手冊》:ABCD
A .向公司外部提供的http/api接口,推薦使用“錯誤碼”方式返回異常或者錯誤信息。
B .對於應用內部的方法調用,推薦使用“拋出異常”的方式處理異常或者錯誤信息。
C .跨應用的RPC調用,推薦使用將“錯誤碼”和“錯誤簡短信息”封裝成Result的方式進行返回。
D .對外提供的接口,一定要保證邏輯健壯性:盡量避免空指針等技術類異常;對於業務類異常要做好錯誤碼或者異常信息的封裝。
多選 21.根據《阿里巴巴Java開發手冊》,以下功能必須進行水平權限控制校驗的有:ABCD
A .訂單詳情頁面。
B .類目管理後台。
C .店鋪裝修後台。
D .訂單付款頁面。
多選 22.關於分頁查詢,下列哪些說法符合《阿里巴巴Java開發手冊》:ABC
A .分頁查詢,當統計的count為0時,應該直接返回,不要再執行分頁查詢語句。
B .iBATIS自帶的queryForList(String statementName,int start,int size)分頁接口有性能隱患,不允許使用。
C .定義明確的sql查詢語句,通過傳入參數start和size來實現分頁邏輯。
D .可使用存儲過程寫分頁邏輯,提高效率。
多選 23.關於系統安全,下列哪些說法符合《阿里巴巴Java開發手冊》:BCD
A .表單、AJAX提交不需要進行CSRF安全過濾。
B .表單、AJAX提交必須執行CSRF安全過濾。
C .URL外部重定向傳入的目標地址必須執行白名單過濾。
D .用戶輸入的SQL參數嚴格使用參數綁定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL訪問數據庫。
多選 24.關於checked/unchecked exception,下列哪些說法是正確的:BCD
A .繼承java.lang.Error的類屬於checked exception。
B .checked異常繼承java.lang.Exception類。
C .unchecked異常繼承
java.lang.RuntimeException類。
D .NullPointerException , IllegalArgumentException屬於unchecked exception。
多選 25.Hashtable,HashMap, ConcurrentHashMap都是Map的實現類,它們在處理null值的存儲上有細微的區別,下列哪些說法是正確的:BD ====> ABD
A .Hashtable的KV都不可以為null。
B .HashMap的KV都可以為null。
C .HashMap的K不可以為null,V可以為null。
D .ConcurrentHashMap的KV都不可以為null。
多選 26.關於應用與數據庫之間的操作,下列哪些說法符合《阿里巴巴Java開發手冊》:BC
A .對外提供一個大而全的接口進行POJO的update更新,這樣比較省事,省代碼。
B .使用事務回滾的地方需要考慮各方面的回滾方案,包括緩存回滾、搜索引擎回滾、消息補償、統計修正等。
C .應用服務器與數據庫之間是短連接。
D .應用服務器與數據庫之間是長連接。
多選 27.關於索引的使用,下列哪些說法是正確的:BCD
A .查詢語句 WHERE a+1 = 5 可以利用a索引。
B .查詢語句WHERE date_format(gmt_create, ‘%Y-%m-%d’) = ‘2016-11-11’無法利用gmt_create索引。
C .當 c 列類型為 char 時,查詢語句 WHERE c = 5 無法利用c索引。
D .索引字段使用時不能進行函數運算。
多選 28.關於代碼書寫格式,下列哪些說法符合《阿里巴巴Java開發手冊》:BCD
A .換行時相對上一行縮進2個空格。
B .運算符與下文一起換行,方法調用的點符號與下文一起換行。
C .在多個參數超長,逗號後進行換行。
D .在括號前不要換行。
多選 29.關於MySQL性能優化的描述,下列哪些說法是正確的:ABCD
A .主鍵查詢優先於二級索引查詢。
B .表連接有一定的代價,故表連接數量越少越好。
C .一般情況下,二級索引掃描優先於全表掃描。
D .可以使用通過索引避免排序代價。
多選 30.關於Java的接口描述,下列哪些說法符合《阿里巴巴Java開發手冊》:BCD
A .在接口類中的方法和屬性使用public修飾符。
B .對於Service類,內部的實現類加Impl的後綴與接口區別。例如:ProductServiceImpl實現ProductService接口。
C .對於Service類,基於SOA的理念,是以接口方式暴露服務。
D .盡量不在接口裡定義變量,如果一定要定義變量,肯定是與接口方法相關,而且是整個應用的基礎常量。
多選 31.關於二方庫的依賴處理,下列哪些說法符合《阿里巴巴Java開發手冊》:ACD
A .依賴於一個二方庫群時,必須定義一個統一版本變量,避免各子二方庫版本號不一致。
B .可以允許子項目的pom依賴中出現相同的GroupId,相同的ArtifactId,但是不同的Version。
C .所有pom文件中的依賴聲明放在語句塊中,所有版本仲裁放在語句塊中。
D .線上應用不要依賴SNAPSHOT版本(安全包除外)。
單選 32.sort表示元素在存入集合時進行了排序,數據遍歷的結果是按某個排序規則輸出的;而order表示每次遍歷的序列都是一樣的,元素前後關係每次遍歷都是確定的,那麼下列哪些集合既是sort,又是order的:D
A .HashSet
B .LinkedList
C .HashMap
D .TreeSet
多選 33.關於工具類二方庫已經提供的,盡量不要在本應用中編程實現,下列哪些說法符合《阿里巴巴Java開發手冊》:ABD
A .json操作使用fastjson。
B .md5操作使用commons-codec。
C .ArrayUtils、NumberUtils、DateFormatUtils、DateUtils等優先使用org.apache.commons.lang包。
D .CollectionUtils優先使用
org.apache.commons.collections4包。
備註:(
org.apache.commons.lang3.time.DateFormatUtils)
多選 34.關於接口使用拋異常還是返回錯誤碼,下列哪些說法符合《阿里巴巴Java開發手冊》:ABCD
A .向公司外部提供的http/api接口,推薦使用“錯誤碼”方式返回異常或者錯誤信息。
B .對於應用內部的方法調用,推薦使用“拋出異常”的方式處理異常或者錯誤信息。
C .跨應用的RPC調用,推薦使用將“錯誤碼”和“錯誤簡短信息”封裝成Result的方式進行返回。
D .對外提供的接口,一定要保證邏輯健壯性:盡量避免空指針等技術類異常;對於業務類異常要做好錯誤碼或者異常信息的封裝。
單選 35.關於測試代碼的覆蓋率,下列哪些說法是正確的?:B
A .路徑覆蓋是最強覆蓋,符合路徑覆蓋且測試全部通過,程序絕對沒有問題。
B .語句覆蓋度是最弱的覆蓋度量方式。
C .分支覆蓋與條件覆蓋其實是一回事。
D .判定條件覆蓋與路徑覆蓋其實是一回事。
多選 36.關於類和方法的命名,下列哪些說法符合《阿里巴巴Java開發手冊》:ABD
A .類名使用UpperCamelCase命名法,但是領域模型命名除外,如:ProductDO的命名是規範的。
B .方法名命名應該使用lowerCamelCase命名法,如方法名:getHttpMessage() 是符合命名規範的。
C .為了方便理解,方法名或參數名可以使用拼音與英文混合的方式。
D .所有編程相關的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
多選 *37.對於索引(a, b, c),下列哪些說法是正確的:ABC
A .查詢語句 where a between 5 and 10 可以使用該索引。
B .查詢語句 where a = 5 and b between 5 and 10 可以使用該索引。
C .查詢語句 where a in (5, 6, 7, 8, 9) and b = 5 可以使用該索引。
D .查詢語句 where b = 5 and c = 10 可以使用該索引。
多選 38.以下關於命名規約內容說明,正確的是:BCD
A .【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞,並且使用複數形式,例如:應用工具類包名為com.alibaba.mpp.utils
B .【強制】類名使用UpperCamelCase,必須遵從駝峰形式,但以下情形例外:(領域模型的相關命名)DO / DTO / VO / DAO等。
C .【強制】抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類命名以它要測試的類的名稱開始,以Test結尾。
D .【強制】枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
多選 39.關於數據庫中表相關的命名,下列哪些說法符合《阿里巴巴Java開發手冊》:ABD
A .表名、字段名禁止出現數字開頭,禁止兩個下劃線中間只出現數字。
B .表名不使用複數名詞。
C .表必備三字段命名:id, gmt_create, gmt_modify。
D .表必備三字段命名:id, gmt_create, gmt_modified。
單選 40.關於使用explain對數據庫性能進行優化分析,下列哪些說法符合《阿里巴巴Java開發手冊》:A
A .SQL性能優化的目標:至少要達到 range 級別,要求是ref級別,如果可以是consts最好。
B .index級別走的是掃描索引,所以速度會比ref快。
C .range級別是指對錶進行範圍索引。
D .ref級別是指使用主鍵或者唯一索引。
多選 41.關於分頁查詢,下列哪些說法符合《阿里巴巴Java開發手冊》:ABC
A .分頁查詢,當統計的count為0時,應該直接返回,不要再執行分頁查詢語句。
B .iBATIS自帶的queryForList(String statementName,int start,int size)分頁接口有性能隱患,不允許使用。
C .定義明確的sql查詢語句,通過傳入參數start和size來實現分頁邏輯。
D .可使用存儲過程寫分頁邏輯,提高效率。
多選 42.根據《阿里巴巴Java開發手冊》,以下哪些字段屬於表的必備字段:ABD
A .id
B .gmt_modified
C .parent_id
D .gmt_create
43.單元測試代碼寫在Java工程的哪個地方最為合適?C
A .寫在業務代碼體裡邊,方便調試。
B .寫在業務代碼同一個包下,方便歸類查找。
C .寫在src/test/java目錄下。
D .寫在src/java目錄下。
多選 44.關於索引效率,下列哪些說法符合《阿里巴巴Java開發手冊》:CD
A .使用索引的效率一定高於全表掃描的效率。
B .關於explain的結果,type=index的索引效率好於type=ref。
C .sql查詢條件 where a like ‘%阿里%’ ,不會走索引。
D .sql查詢條件 where a like ‘阿里%’ ,a列創建了索引,一般會使用索引進行檢索。
多選 45.關於線程池管理線程的好處,下列哪些說法是正確的:AC
A .能夠減少在創建和銷毀線程上所花的時間以及系統資源的開銷。
B .使用線程池一定能避免OOM問題。
C .線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。
D .線程池能夠根據資源等待情況,自動調整線程優先級並解決死鎖問題。
多選 46.編寫單元測試代碼遵守BCDE原則,以保證被測試模塊的交付質量,那麼下列說法正確的是:ABC
A .Border,邊界值測試,包括循環邊界、特殊取值、特殊時間點、數據順序等。
B .Correct,正確的輸入,並得到預期的結果。
C .Design,與設計文檔相結合,來編寫單元測試。
D .Equal, 單元測試環境必須與線上生產環境一致。
(Error) 多選 47.關於領域模型命名,下列哪些說法符合《阿里巴巴Java開發手冊》:ABC
A .數據對象命名:xxxDO,xxx即為數據表名,例如:ResellerAccountDO。
B .數據傳輸對象:xxxDTO,xxx為業務領域相關的名稱,例如ProductDTO。
C .展示層對象:xxxVO,xxx一般為網頁名稱,例如RecommendProductVO。
D .POJO是DO/DTO/BO/VO的統稱,命名成xxxPOJO。
多選 48.以下關於格式規約的說法,正確的有哪些:AD
A .代碼塊縮進4個空格,如果使用tab縮進,請設置成1個tab為4個空格;
B .代碼塊縮進5個空格,如果使用tab縮進,請設置成1個tab為5個空格。
C .為了保持代碼美觀,《手冊》強烈推薦增加若干空格,使某一行的變量與相鄰對應位置的變量對齊。
D .方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者不同的語義之間推薦插入一個空行;相同業務邏輯和語義之間不需要插入空行。
多選 49.根據《阿里巴巴Java開發手冊》,以下功能必須進行水平權限控制校驗的有:ABCD
A .訂單詳情頁面。
B .類目管理後台。
C .店鋪裝修後台。
D .訂單付款頁面。
多選 50.關於客戶數據展示,下列哪些說法符合《阿里巴巴Java開發手冊》:ABCD
A .客戶的密碼,密鑰及密保問題答案等信息禁止展示。
B .客戶的銀行卡號只顯示後四位。
C .客戶的證件號碼只顯示第一位和最後一位,在必要業務場景下,經多因子強驗證後可完整展示。
D .涉及有完整展示客戶信息的頁面均需要接入防爬系統
整體上題目都是從開發手冊中來的,很適合檢驗自己在編碼中的規範。也值得大家牛刀小試。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/225929.html
微信掃一掃
支付寶掃一掃