阿里開發規範文檔:阿里java開發規範認證

自從阿里巴巴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-tw/n/225929.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:47
下一篇 2024-12-09 14:47

相關推薦

發表回復

登錄後才能評論