編碼規範相關問題總結

一節

  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的keyvalue均可以爲null, 但是TreeMap的key不能爲空,value可以爲空

  4. 關於二方庫依賴的解析命令,下列哪些說法是正確的: ABC
    A .mvn dependency:resolve打印出已仲裁依賴的列表。
    B .mvn dependency.tree打印工程整個的依賴樹結構。
    C .mvn dependency:tree -Dverbose -Dincludes=commons-lang打印出與commons-lang相關的詳細依賴。

  5. 關於變量和常量定義,下列哪些符合《阿里巴巴Java開發手冊》: AD
    A .Long a=2L;
    B .Long a=2l;
    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/removelclear方法會拋出: UnsupportedOperationException.
    D .Arays asList體現的是適配器模式,只是轉換接口,後臺的數據仍是數組。

  9. 關於異常的處理方式,下列哪些說法是正確的: BD
    A爲防止obj對象本身空指針異常,書寫代碼時應該注意加異常捕獲處理,例如: try {obj.method() } cath(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 Jang Error的類屬於checked exception。
    B .checked異常繼承javalang .Exception類。
    C .unchecked異常繼承java. lang .RuntimeException類。
    D .NullPointerException ,lllegalAargumentException屬於unchecked exception。

  13. 以下關於命名規約內容說明,正確的是: BCDE
    A. [強制]包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞,並且使用複數形式,例如:應用工具類包名爲com. alibaba mpp.
    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 xmI中設置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的後綴與接口區別。例如: ProductServicelmpl實現ProductService接口。
    C .對於Service類,基於SOA的理念,是以接口方式暴露服務。
    D .儘量不在接口裏定義變量,如果一定要定義變量, 肯定是與接口方法相關,而且是整個應用的基礎常量。

  19. 關於類的序列化,下列說法哪些是正確的: D
    A .類的序列化與serialVersionUID毫無關係。
    B .如果完全不兼容升級,不需要修改serialVersionUID值。
    C .POJO類的seriaNersionUID不一致會編譯出錯。
    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. [強制]有try塊放到了事務代碼中,catch異常後,如果需要回滾事務,一定要注意手動回滾事務。

  24. 關於Java代碼的設計和開發注意事項,下列哪些說法符合《阿里巴巴Java開發手冊》: ABC
    A.所有的覆寫方法,必須是強制加@Overide.
    B .setter方法中,參數名稱與類成員變量名稱一致,this. 成員名=參數名。
    C .在getter方法中,儘量不要增加邏輯判斷,因爲添加了邏輯判斷後,會增加排查問題難度。
    D .避免用BeanUtil進行屬性的copy。

  25. 在多線程併發讀寫的情況下,下列哪些處理方式能保證對象的線程安全: BCD
    A .使用volatile關鍵字。
    B .使用synchronized關鍵字給對象的讀寫操作加鎖。
    C .如果是基本類型,推薦使用java.util. concurrent atomic包下面提供的線程安全的基本類型包裝類,例如AtomicInteger.
    D .如果是集合,推薦使用java.util. concurrent提供的併發集合類,例如: ConcurrentHashMap。
    備註:
    (volatile解決多線程內存不可見問題。對於一寫多讀,是可以解決變量同步問題,但是如果多寫,同樣無法解決線程安全問題。)

  26. 關於代碼書寫格式,下列哪些說法符合 《阿里巴巴Java開發手冊》: BCD
    A .換行時相對上一行縮進2個空格。
    B .運算符與下文一起換行,方法調用的點符號與下文-起換行。.append()
    C .在多個參數超長,逗號後進行換行。
    D .在括號前不要換行。

  27. 關於使用explain對數據庫性能進行優化分析,下列哪些說法符合《阿里巴巴Java開發手冊》: A
    A .SQL性能優化的目標:至少要達到range級別,要求是ref級別,如果可以是consts最好。
    B .index級別走的是掃描索引,所以速度會比ref快。
    C .range級別是指對錶進行範圍索引。
    D .ref級別是指使用主鍵或者唯一索引。

  28. 關於索引效率,下列哪些說法符合《阿里巴巴Java開發手冊》: CD
    A .使用索引的效率一定高於全表掃描的效率。
    B .關於explain的結果,tpe=index的索引效率好於type=ref.
    C .sq|查詢條件where a like ‘%阿里%’,不會走索引。
    D .sq|查詢條件where a like ‘阿里%’ ,a列創建了索引,一般會使用索引進行檢索。

  29. 關於線程池管理線程的好處,下列哪些說法是正確的: AC
    A .能夠減少在創建和銷燬線程上所花的時間以及系統資源的開銷。
    B .使用線程池一定能避免OOM問題。
    C .線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。
    D .線程池能夠根據資源等待情況,自動調整線程優先級並解決死鎖問題。

  30. 關於MySQL性能優化的描述,下列哪些說法是 正確的: ABCD
    A.主鍵查詢優先於二級索引查詢。
    B表連接有一定的代價,故表連接數量越少越好。
    C .一般情況下,二級索引掃描優先於全表掃描。
    D .可以使用通過索引避免排序代價

  31. [參考]不要對單元測試存在如下誤解:

  • 那是測試同學乾的事情。本文是開發手冊,凡是本文內容都是與開發同學強相關的。
  • 單元測試代碼是多餘的。系統的整體功能與各單元部件的測試正常與否是強相關的。
  • 單元測試代碼不需要維護。-年半載後,那麼單元測試幾乎處於廢棄狀態。
  • 單元測試與線.上故障沒有辯證關係。好的單元測試能夠最大限度地規避線上故障。
  1. 關於用日誌記錄異常信息,下列哪些說法符合《阿里巴巴Java開發手冊》: AB
    A .日誌儘量記錄案發現場信息和異常堆棧信息。
    B .如果日誌中輸出POJO類,POJO類 需要重寫toString方法,避免只輸出hashCode.
    C .不建議輸出任何日誌,因爲日誌記錄消耗性能。
    D .捕獲異常後,一律拋給調用者去處理。
  2. [推薦] 使用CountDownLatch進行異步轉同步操作,每個線程退出前必須調用countDown方法,線程執行代碼注意catch 異常,確保countDown方法被執行到,避免主線程無法執行至await方法,直到超時才返回結果。
    說明:注意,子線程拋出異常堆棧,不能在主線程try-catch到
  3. [強制] 不得使用外鍵與級聯,一切外鍵概念必須在應用層解決。
    說明:以學生和成績的關係爲例,學生表中的student jid是主鍵,那麼成績表中的student_ jd則爲外鍵。如果更新學生表中的student jid, 同時觸發,student_ id 更新,即爲級聯更新。 外鍵與級聯更新適用於單機低併發,不適合分佈式、高併發集羣;級聯更新是強阻塞,存在數據庫更新風暴的風庫的插入速度。
  4. [強制] count(distinct col)計算該列除NULL之外的不重複行數,注意count(distinct col1, col2)如果其中一列全爲NULL,那麼即使另一列有回爲0。
  5. mysql使用sum函數注意判空操作
    [強制]當某一列的值全是NULL時,count(col)的返回結果爲 0,但sum(col)的返回結果爲NULL,因此使用sum()時需注意NPE問題。
    正例:可以使用如下方式來避免sum的NPE問題: SELECT IF(ISNULL(SUM(g)).0,SUM(g) FROM table;
    sum(null)====>null
    countunul)====>0

二節

  1. KV結構的集合,在處理nll值的存儲上有細微的區別,下列哪些說法是 正確的: A
    A .TreeMap的key不可以爲null
    B .TreeMap的key可以爲null
    C .ConcurrentHashMap的key可以爲null
    D .ConcurrentHashMap的value可以爲null
    註釋: HashMap的key/value均可以爲null,但是TreeMap的key不能爲空, value可以爲空
  2. 數組使用Arrays. asList轉化爲集合,下列說法哪些 正確的: ACD
    A .數組元素的修改,會影響到轉化過來的集合。
    B .數組元素的修改,不會影響到轉化過來的集合。
    C .對於轉換過來的集合,它的add/remove/clear方法會拋出: UnsupportedOperationException。
    D .Arrays.asList 體現的是適配器模式,只是轉換接口,後臺的數據仍是數組。
  3. 關於ORM的規則,下列哪些說法符合《阿里巴巴Java開發手冊》: AD
    A .數據庫中,表達是與否概念的字段,必須使用is_ xxx的方式命名。
    B .推薦使用iBATIS自帶的queryForL ist(String statementName,int start,int size)進行分頁查詢。(不推薦)
    C .爲避免寫resultMap,可以直接拿HashMap與HashTable作爲查詢結果集的輸出。
    D .不要用resultClass當返回參數,即使所有類屬性名與數據庫字段一對應, 也需要定義。
  4. 關於多線程並行處理定時任務的情況,下列哪些說法符合 《阿里巴巴Java開發手冊》: BCD
    A .推薦使用Timer方式處理。
    B .推薦使用ScheduledExecutorService方式處理。
    C .Timer運行多個TimeTask時,只要其中之-沒有捕獲拋出的異常,其它任務便會自動終止運行。
    D .ScheduledExecutorService併發運行多個定時任務時,其中某線程拋出異常,不會影響到其它線程的繼續運行。
  5. 關於異常的處理方式,下列哪些說法是 正確的: BD
    A爲防止obj對象本身空指針異常,書寫代碼時應該注意加異常捕獲處理,例如: try { obj.method() } catch(nullPointerException e){ …}。
    B .方法簽名中,拋給調用者的關鍵字爲throws
    C .方法內部,拋出異常實例對象爲throws
    D .自定義異常要做到“認知對等",即:拋出者和接收者要保持對自定義異常的認知統一,接收方 需要知道這種異常的含義和對應的處理方案。
  6. 關於註釋,下列哪些說法符合《阿里巴巴Java開發手冊》: BC
    A.方法頭定義簽名.上的註釋可以使用// (雙劃線)簡單說明,不必要遵守javaoc規範。(/** */)
    B .類定義開始部分,一般都用Javadoc註釋 程序的總體描述以及作者信息。
    C .方法頭定義簽名上的註釋必須遵守javadoc規範,使用/*回車來生成,不得在方法定義上方使用// (雙劃線)簡單說明。
    D .方法頭定義簽名上的註釋,可以使用// xxx的形式
  7. 關於用日誌記錄異常信息,下列哪些說法符合《阿里巴巴Java開發手冊》: AB
    A.日誌儘量記錄案發現場信息和異常堆棧信息。
    B .如果8志中輸出POJO類,POJO類需要重寫toString方法,避免只輸出hashCode。
    C .不建議輸出任何日誌,因爲日誌記錄消耗性能。
    D .捕獲異常後,一律拋給調用者去處理。
  8. 關於常量的命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A .常量命名應該全部大寫,單詞間用下劃線隔開。
    B .常量的定義要力求語義表達完整清楚,讓別人能從常量名稱上大致瞭解含義,例如: MAX_ STOCK _COUNT.
    C .常量命名,可以使用拼音與英文的混合方式。
    D .在使用縮寫時要注意:杜絕不規範的縮寫。
  9. 關於類的序列化,下列說法哪些 是正確的: D
    A .類的序列化與serialVersionUID毫無關係。
    B .如果完全不兼容升級,不需要修改serialVersionUID值。
    C .POJO類的serialVersionUID不一致會編譯出錯。
    D .POJO類的serialVersionUID不一致會拋出序列化運行時異常。
  10. 關於二方庫使用枚舉類型,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A. 二方庫裏可以定義。
    B. 二方庫裏接口的入參可以使用枚舉類型。
    C. 二方庫裏接口的返回值不能使用枚舉類型,但可以包含枚舉類型。
    D. 二方庫裏接口的返回值是枚舉類型或包含枚舉類型時,當二方庫的枚舉值升級(增加枚舉值)時,可能會導致接口調用時出現枚舉對象序列化異
  11. 關於索引的設計,下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .對varchar類型的字段建立索引,必須指定索引長度。
    B .對varchar類型的字段建立索引,不需要指定索引長度,這樣索引區分度最好。
    C .業務.上具有唯一特性的字段 (含組合字段), 必須指定唯一索引。
    D .建複合索引時,-般選擇區分度高的字段放在最左列。
  12. 關於hashcode和equals,下列哪些說法是正確的: BC
    A .hashcode是Class的方法,equals是Object的方法。
    B .hashcode決定(如: HashMap) 存儲位置; equals決定是否需要覆蓋(同一hash下) 集合元素。
    C .類重寫hashcode,必須重寫equals。
    D .兩者是否需要重寫,沒有必然聯繫。
    備註: equals 爲true, hashcode值相同,但是hashcode值相同,equals可 能爲false
  13. 關於常量定義,下列哪些說法符合《阿里巴巴Java開發手冊》: ABCD
    A .跨應用共享常量:放置在二方庫中,通常是client.jar中的const目錄下。
    B .應用內共享常量:通常放置在一方庫的子 模塊中的const目錄下。
    C .子工程內部共享常量:即在當前子工程的const目錄下。
    D .類內常量:直接在類內部private static final定義。
  14. 針對tcp協議,下列哪些說法是正確的: CD
    A .tcp鏈接主動關閉的一方,在完成四次揮手協議後,即會立即關閉並釋放socket。
    B .處於time_ wait狀態的socket, 其實是已經關閉狀態,當需要新建連接時,可以被馬上覆用。
    C .當大量socket處於time_wait狀態時,會導致可用socket資源稀缺,從而導致服務器併發能力下降。
    D .通過修改/etc/sysct.conf配置文件,減小time_wait的超時時間,可以降低time_wait狀態的socket數量,從而提升服務器併發能力。
  15. 關於二方庫依賴的解析命令,下列哪些說法是正確的: ABC
    A .mvn dependency:resolve打印出已仲裁依賴的列表。
    B .mvn dependency:tree打印工程整個的依賴樹結構。
    C .mvn dependency:tree -Dverbose -Dincludes-commons-lang打印出與commons-lang相關的詳細依賴。
    D .mvn clean install 打印工程整個的依賴樹結構,並部署到本地倉庫中。
  16. 關於Java代碼的設計和開發注意事項,下列哪些說法符合《阿里巴巴Java開發手冊》: ABC
    A .所有的覆寫方法,必須是強制加@Override。
    B .setter方法中,參數名稱與類成員變量名稱一致,this.成員名= 參數名。
    C .在getter方法中,儘量不要增加邏輯判斷,因爲添加了邏輯判斷後,會增加排查問題難度。
    D .避免用BeanUtil進行屬性的copy。
  17. 關於變量和常量定義,下列哪些符合《阿里巴巴Java開發手冊》: AD
    A.Long a=2L;
    B .Long a=2l;
    C .常量只定義一次,不再賦值,所以不需要命名規範。
    D .不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。
  18. 關於線程安全,下列哪些說法是正確的: ACD
    A .SimpleDateFormat是線程不安全的類。
    B .SimpleDateFormat是線程安全的類。
    C .一般不要定義SimpleDateFormat的static變量,如果定義爲static,必須保證線程安全。
    D .推薦使用Apache封裝好的DateUtils和DateFormatUtis工具類,來處理時間日期轉換問題。
  19. 關於try-catch的使用方式,下列哪些說法是正確的: BD
    A .推薦用try-catch來做流程控制、條件控制。
    B .捕獲異常與拋異常,必須是完全匹配,或者捕獲異常是拋異常的父類。
    C .對大段代碼進行try-catch,利用Throwable來捕捉,萬無一失。
    D .對大段代碼進行try-catch,這是不負責任的表現,分清穩定代碼和非穩定代碼,對非穩定的代碼做對應的異常處理。
  20. 關於加鎖,下列哪些說法符合《阿里巴巴Java開發手冊》: ABCD
    A.可以只鎖代碼區塊的情況下,就不要鎖整個方法體。
    B .高併發的業務場景下,要考慮加鎖及同步處理帶來的性能損耗,能用無鎖數據結構,就不要用鎖。
    C .能用對象鎖的情況下,就不要用類鎖。
    D .加鎖時需要保持一致的加鎖順序, 否則可能會造成死鎖。
  21. 在多線程併發讀寫的情況下,下列哪些處理方式能保證對象的線程安全: BCD
    A .使用volatile關鍵字。(volatile 解決多線程內存不可見問題。對於一寫多讀, 是可以解決變量同步問題,但是如果多寫,同樣無法解決線程安全問題。)
    B .使用synchronized關鍵字給對象的讀寫操作加鎖。
    C .如果是基本類型,推薦使用java.til.concurrent. atomic包下面提供的線程安全的基本類型包裝類,例如AtomicInteger.
    D .如果是集合,推薦使用java.util.concurrent提供的併發集合類, 例如: ConcurrentHashMap。
  22. 關於生產環境的日誌文件,下列哪些說法符合 《阿里巴巴Java開發手冊》: ABCD
    A .異常信息應該包括兩類信息:案發現場信息和異常堆棧信息。
    B .日誌文件推薦至少保存15天,因爲有些異常具備以“周”爲頻次發生的特點。
    C .避免重複打印日誌,浪費磁盤空間,務必在log4j.xml中設 置adidtvity-false。
    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,llegalArgumentException屬於unchecked exception。
  25. Hashtable, HashMap, ConcurrentHashMap都是Map的實現類,它們在處理null值的存儲上有細微的區別,下列哪些說法是 正確的: BD =
    A .Hashtable的KV都不可以爲null。
    B .HashMap的KV都可以爲null。
    C .HashMap的K不可以爲null, V可以爲null。
    D .ConcurrentHlashMap的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類,內部的實現類加lmpl的後綴與接口區別。例如: ProductServicelmpl實現ProductService接口。
    C .對於Service類,基於SOA的理念, 是以接口方式暴露服務。
    D .儘量不在接口裏定義變量,如果一定要定義變量, 肯定是與接口方法相關,而且是整個應用的基礎常量。
  31. 關於二方庫的依賴處理,下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .依賴於一個二方庫羣時,必須定義一個統一版本變量, 避免各子二方庫版本號不一致。
    B . 可以允許子項目的pom依賴中出現相同的Groupld,相同的Artifactld, 但是不同的Version。
    C .所有pom文件中的依賴聲明放在語句塊中,所有版本仲裁放在語句塊中。
    D .線上應用不要依賴SNAPSHOT版本(安全包除外)。
  32. sort表示元素在存入集合時進行了排序,數據遍歷的結果是按某個排序規則輸出的;而order表示每次遍歷的序列都是一樣的, 元素前後關定的,那麼下列哪些集合既是sort,又是order的: D
    A .HashSet
    B .LinkedList
    C .HashMap
    D .TreeSet
  33. 關於工具類二方庫已經提供的,儘量不要在本應用中編程實現,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A . json操作使用fastjison。
    B .md5操作使用commons-codec。
    C ArrayUtils、NumberUtis、 DateFormatUtils、 DateUtils等 優先使用org .apache .commons.lang包。
    D .CollectionUtis優 先使用org. apache. .commons cllections4包。
    備註: (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 .查詢語句wherea in(5, 6, 7, 8, 9) and b=5可以使用該索引。
    D .查詢語句where b= 5 and c= 10可以使用該索引。
  38. 以下關於命名規約內容說明,正確的是: BCD
    A. [強制]包名統-使用小寫,點分隔符之間有且僅有一一個自然語義的英語單詞,並且使用複數形式,例如:應用工具類包名爲com. alibaba.mpp.
    B. [強制]類名使用UpperCamelCase, 必須遵從駝峯形式,但以下情形例外: (領域模型的相關命名) DO/DTO/VO/DAO等。
    C. [強制]抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類命名以它要測試的類的名稱開始,以Test結尾。
    D. [強制]枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
  39. 關於數據庫中表相關的命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A.表名、字段名禁止出現數字開頭,禁止兩個下劃線中間只出現數字。
    B .表名不使用複數名詞。
    C .表必備三字段命名: id, gmt\ _create, gmt_ modity。
    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自帶的queryForL ist(String statementName,int start,int size)分頁接口有性能隱患,不允許使用。
    C .定義明確的sq查詢語句,通過傳入參數start和size來實現分頁邏輯。
    D .可使用存儲過程寫分頁邏輯,提高效率。
  42. 根據《阿里巴巴Java開發手冊》,以下哪些字段屬於表的必備字段: ABD
    A .id
    B .gmt_modified
    C .parent_ jid
    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 .sq|查詢條件where a like ‘%阿里%’,不會走索引。
    D .sq|查詢條件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 .展示層對象: xxVO, xxx- 般爲網頁 名稱,例如RecommendProductVO。
    D .POJO是DO/DTO/BONO的統稱,命名成0xxPOJO。
  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 .涉及有完整展示客戶信息的頁面均需要接入防爬系統

三節

  1. 如何處理單元測試產生的數據,下列哪些說法是 正確的? ABC
    A .測試數據入庫時加特殊前綴標識。
    B .測試數據使用獨立的測試庫。
    C .自動回滾單元測試產生的髒數據。
    D .無須區別,統-在業務代碼中進行判斷和識別。
  2. 關於併發處理,下列哪些說法符合《阿里巴巴Java開發手冊》: ABC
    A .線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。
    B .同步處理時,能鎖部分代碼區塊的情況下不要鎖整個方法;高併發時,同步調用應該考慮到性能損耗。
    C .創建線程或線程池時,推薦給線程指定-個有意義的名稱,方便出錯時回溯。
    D .推薦使用Executors.newFixedThreadPool(int x)生成指定大小的線程池。
  3. 下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .對於*明確停止使用的代碼和配置",如方法、變量、類、配置文件、動態配置屬性等要堅決從程序中清理出去,避免造成過多垃圾。
    B .永久棄用的代碼段註釋掉即可,即不用加任何註釋。
    C .對於暫時被註釋掉,後續可能恢復使用的代碼片斷,在註釋代碼上方,統-規定使用三個斜槓//)來說明註釋掉代碼的理由。
    D .不要在視圖模板中加入任何複雜的邏輯。
  4. 關於分頁查詢,下列哪些說法符合《阿里巴巴Java開發手冊》: ABC
    A .分頁查詢,當統計的count爲0時, 應該直接返回,不要再執行分頁查詢語句。
    B .iBATIS自帶的queyForL ist(String statementName,int start,int size)分頁接口有性能隱患,不允許使用。
    C .定義明確的sq|查詢語句,通過傳入參數start和size來實現分頁邏輯。
    D .可使用存儲過程寫分頁邏輯,提高效率。
  5. 根據《阿里巴巴Java開發手冊》,以下功能必須進行水平權限控制校驗的有: ABCD
    A .訂單詳情頁面。
    B .類目管理後臺。
    C .店鋪裝修後臺。
    D .訂單付款頁面。
  6. 關於數據庫中NULL的描述,下列哪些說法符合《阿里巴巴Java開發手冊》: BD
    A .NULL=NULL的返回結果爲true。
    B .NULL與任何值的比較結果都爲NULL。
    C .NULL<> 1的返回結果爲true。
    D .當某- -列的值全是NULL時,sum(col)的返回結果 爲NULL。
  7. 關於接口使用拋異常還是返回錯誤碼,下列哪些說法符合 《阿里巴巴Java開發手冊》: ABCD
    A .向公司外部提供的http/api接口,推薦使用“錯誤碼”方式返回異常或者錯誤信息。
    B .對於應用內部的方法調用,推薦使用"拋出異常的方式處理異常或者錯誤信息。
    C .跨應用的RPC調用,推薦使用將“錯誤碼"和“錯誤簡短信息"封裝成Result的方式進行返回。
    D .對外提供的接口,- 定要保證邏輯健壯性:儘量避免空指針等技術類異常;對於業務類異常要做好錯誤碼或者異常信息的封裝。
  8. 關於類的序列化,下列說法哪些是 正確的: D
    A .類的序列化與serialVersionUID毫無關係。
    B .如果完全不兼容升級,不需要修改serialVersionUID值。
    C .POJO類的serialVersionUID不-致會編譯出錯。
    D .POJO類的serialVersionUID不-致會拋出序列化運行時異常。
  9. 關於Java的接口描述,下列哪些說法符合《阿里巴巴Java開發手冊》: BCD
    A .在接口類中的方法和屬性使用public修飾符。
    B .對於Service類,內部的實現類加lmpl的後綴與接口區別。例如: ProductServicelmpl實現ProductService接口。
    C .對於Service類,基於SOA的理念,是以接口方式暴露服務。
    D .儘量不在接口裏定義變量,如果一定要定義變量, 肯定是與接口方法相關,而且是整個應用的基礎常量。
    備註:
    [推薦]接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔
    性,並加上有效的Javadoc註釋。儘量不要在接口裏定義變量,如果-定要定義變量,肯定是
    與接口方法相關,並且是整個應用的基礎常量。
    正例:接口方法簽名void commit();
    接口基礎常量String COMPANY = “alibaba”;
    反例:接口方法定義public abstract void f();
    說明: JDK8 中接口允許有默認實現,那麼這個default方法,是對所有實現類都有價值的默
    認實現。
  10. 集合在遍歷過程中,有時需要對符合一定條件的元素進行刪除,下列哪些說法是正確的: B
    A .在foreach循環裏進行元素的remove操作。
    B .使用Iterator方式,如果有併發,需要對Iterator對 象加鎖。
    C .Iterator進行元素的刪除操作,絕對是線程安全的。
    D .Java無法實現在遍歷時,進行刪除元素操作。
  11. 關於基本數據類型與包裝數據類型的使用標準,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A .所有的POJO類屬性必須使用包裝數據類型。
    B .RPC方法的返回值和參數必須使用包裝數據類型。
    C .因爲JAVA的自動裝箱與拆箱機制,不需要根據場景來區分數據類型。
    D .所有的局部變量推薦使用基本數據類型。
  12. 關於索引的設計,下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .對varchar類型的字段建立索引,必須指定索引長度。
    B .對varchar類型的字段建立索引,不需要指定索引長度,這樣索引區分度最好。
    C .業務上具有唯一特性的字段(含組合字段),必須指定唯一索引。
    D .建複合索引時,一般選擇區分度高的字段放在最左列。
  13. 關於二方庫版本號的命名方式,下列哪些說法符合 《阿里巴巴Java開發手冊》: ABCD
    A .版本號命名格式:主版本號.次版本號.修訂號。
    B .主版本號:產品方向改變,或者大規模API不兼容,或者架構不兼容升級。
    C .次版本號:保持相對兼容性,增加主要功能特性,影響範圍極小的API不兼容修改。
    D .修訂號:保持完全兼容性,修復BUG、新增次要功能特性等。
  14. 關於索引的使用,下列哪些說法是正確的: BCD
    A .查詢語句WHERE a+1 = 5可以利用a索引。
    B .查詢語句WHERE date_ format(gmt_create, “%Y-%m-%d”) = '2016-11-11’無法利用gmt_create索引。
    C .當c列類型爲charchar時,查詢語句WHERE c= 5無法利用c索引。
    D索引字段使用時不能進行函數運算。
  15. 關於生產環境的日誌文件,下列哪些說法符合 《阿里巴巴Java開發手冊》: ABCD
    A .異常信息應該包括兩類信息:案發現場信息和異常堆棧信息。
    B .日誌文件推薦至少保存15天,因爲有些異常具備以“周”爲頻次發生的特點。
    C .避免重複打印日誌,浪費磁盤空間,務必在log4j.xmI中設 置aditivity-false.
    D .錯誤日誌和業務日誌儘量分開存放。
  16. 關於代碼註釋,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A .特殊註明標記人與標記時間。
    B .待辦事宜(TODO) : ( [標記人,標記時間,[預計處理時間)
    C .在註釋中用FIXME標記某代碼雖然實現了功能,但是實現的方法有待商榷,希望將來能改進
    D .在註釋中用FIXME標記某代碼是錯誤的,而且不能工作,需要及時糾正的情況
  17. 關於MySQL性能優化的描述,下列哪些說法 是正確的: ABCD
    A .主鍵查詢優先於二級索引查詢。
    B .表連接有一 定的代價,故表連接數量越少越好。
    C.-般情況下,二級索引掃描優先於全表掃描。
    D .可以使用通過索引避免排序代價。
  18. 關於索引的設計和使用,下列哪些說法是 正確的: AD — ABCD
    A .若查詢條件中不包含索引的最左列,則無法使用索引。
    B .對於範圍查詢,只能利用索引的最左列。
    C .對於order by A或group by A語句,在A. 上建立索引,可以避免排序。
    D .對於多列排序,需要所有所有列排序方向一致,才能利用索引。
    備註:
    設計高效索引:
    查詢,更新,刪除where條件中必須有 索引,處理行數不能超過1w
    若查詢條件中不包含索引的最左列,無法使用索引
    對於範圍查詢,只能利用索引的最 左列
    對於group bylorder by A語句,在A上建立索引,可以避免排序
    對於多列排序,需要所有所有列排序方向一致,才能利用索引。
  19. 關於類命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ABCD
    A .抽象類命名使用Abstract或Base開頭。
    B .異常類命名使用Exception結尾。
    C .測試類命名以它要測試的類的名稱開始,以Test結尾 。
    D .如果使用到了設計模式,建議在類名中體現出具體模式。例如代理模式的類命名: LoginProxy; 觀察者模式命名: ResourceObserver。
  20. 關於數據庫模糊檢索的描述,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A .絕對禁止左模糊。
    B .絕對禁止全模糊。
    C .絕對禁止右模糊。
    D .全模糊或左模糊查詢需求,優先使用搜索引擎。
  21. 關於代碼註釋,下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .所有的抽象方法(包括接口中的方法)必須要用javadoc註釋。
    B .所有的方法,包括私有方法,最好都增加註釋,有總比沒有強。
    C .過多過濫的註釋,代碼的邏輯-旦修改, 修改註釋是相當大的負擔。
    D .我的命名和代碼結構非常好,可以減少註釋的內容。
  22. 關於checked/unchecked exception,下列哪些說法是正確的: BCD
    A .繼承java.lang Error的類屬於checked exception。
    B .checked異常繼承java.lang. Exception類。
    C .unchecked異常繼承java.lang .RuntimeException類。
    D .NullPointerException , llegalArgumentException屬於unchecked exception.
  23. 關於Map類型集合的遍歷方式,下列哪些說法是 正確的: D
    A .Map類型的實現類都同時實現了Iterator接口。
    B .使用foreach進行遍歷。
    C .推薦使用keySet進行遍歷。
    D .推薦使用entrySet進行遍歷。
  24. 關於變量、方法名、包的命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ABCD
    A .POJO類中的任何布爾類型的變量,都不要加is,因爲部分框架解析時有可能會出現序列化錯誤。
    B .包名統-使用單數形式,如: com.alibaba.mpp.util.
    C .中括號是數組類型的一部分,數組定義如下: StringD args;不要誤寫爲String args];
    D .Service/DAO層方法命名可以參考規約,例如:刪除的方法推薦使用remove或delete做前綴。
  25. 關於常量定義,下列哪些說法符合《阿里巴巴Java開發手冊》: AC
    A .不允許出現任何魔法值(即未經預先定義的常量)直接出現在代碼中。
    B 魔法值是指程序中隨意定義並賦值的變量值,如果代碼編寫者明白變量值意義是可以任意使用的,例如在代碼中寫if(status == 3) return error;午
    C .如果變量值僅在-個範圍內變化推薦用Enum類。
    D .在程序中,一律禁止使用枚舉類型。
  26. 關於maven依賴、仲裁、規則,下列哪些說法是正確的: ACD
    A .的依賴會默認傳遞給子項目。
    B .的依賴絕對不會傳遞給子項目。
    C .在中指定版本號。
    D .避免在不同的子項目,聲明同一個二方庫的不同版本號。
  27. 關於二方庫升級,下列哪些說法是正確的: B
    A .升級二方庫只是改個版本號,不需要關聯功能的迴歸。
    B .升級二方庫需要比對仲裁結果的差異,謹慎評估。
    C .升級二方庫,絕對不會影響到其它二方庫的版本號。
    D .只要此二方庫負責人保證說不會有任何影響,即可大膽升級,直接發佈上線。
    備註: [強制] 二方庫的新增或升級,保持除功能點之外的其它jar 包仲裁結果不變。如果有改變,
    必須明確評估和驗證,建議進行dependency:resolve前後信息比對,如果仲裁結果完全不一
    致,那麼通過dependency:tree命令,找出差異點,進行排除 jar包。
  28. 關於表字段和索引,下列哪些說法符合 《阿里巴巴Java開發手冊》: ABD
    A .表字段註釋,如果修改字段含義或對字段表示的狀態追加時,需要及時更新。
    B .合適的字符存儲長度,不但節約數據庫表空間、節約索引存儲,更重要的是提升檢索速度。
    C .針對表的每個字段都增加索引,加快查詢速度。
    D .字段的區分度越高,索引的查找速度越快。
  29. 關於測試代碼的覆蓋率,下列哪些說法是正確的? B
    A .路徑覆蓋是最強覆蓋,符合路徑覆蓋且測試全部通過,程序絕對沒有問題。
    B .語句覆蓋度是最弱的覆蓋度量方式。
    C .分支覆蓋與條件覆蓋其實是一回事。
    D.判定條件覆蓋與路徑覆蓋其實是一回事。
  30. Hashtable, HashMap, ConcurrentHashMap都是Map的實現類,它們在處理nul值的存儲 上有細微的區別,下列哪些說法是 正確的: ABD
    A .Hashtable的KV都不可以爲null。
    B .HashMap的KV都可以爲null.
    C .HashMap的K不可以爲null, V可以爲null。
    D .ConcurrentHashMap的KV都不可以爲null.
    備註: HashMap kv都可以爲null,
    TreeMap的v可以爲null
  31. 關於數據庫命名規則,下列哪些說法符合 《阿里巴巴Java開發手冊》: BCD
    A .數據庫庫名和表名沒有規定,可任意取名,只要方便記憶即可。
    B .庫名應該儘量與應用名稱保持-致,表的命名最好是業務名稱_表名的方式。
    C .無論是庫名還是表名都禁用保留字,如desc、 match、 range等。
    D表名、字段名必須使用小寫字母或數字。
  32. 關於異常的處理方式,下列哪些說法是正確的: BD
    A .爲防止obj對象本身空指針異常,書寫代碼時應該注意加異常捕獲處理,例如: try { obj.method() } catchINllPointerException …。
    B .方法簽名中,拋給調用者的關鍵字爲throws
    C .方法內部,拋出異常實例對象爲throws
    D .自定義異常要做到"認知對等”,即:拋出者和接收者要保持對自定義異常的認知統一, 接收方需要知道這種異常的含義和對應的處理方案。
    備註: [強制] Java 類庫中定義的可以通過預檢查方式規避的RuntimeException異常不應該通過
    catch的方式來處理,比如: NullPointerException, IndexOutOfBoundsException 等等。
    說明:無法通過預檢查的異常除外,比如,在解析字符串形式的數字時,不得不通過catch
    NumberFormatException來實現。
  33. 數組使用Arrays. asList轉化爲集合,下列說法哪些正確的: ACD
    A .數組元素的修改,會影響到轉化過來的集合。
    B .數組元素的修改,不會影響到轉化過來的集合。
    C .對於轉換過來的集合,它的add/remove/clear方法會拋出: UnsupportedOperationException。
    D Arays asList體現的是適配器模式,只是轉換接口,後臺的數據仍是數組。
  34. 關於文件編碼和格式的設定,下列哪些說法符合《阿里巴巴Java開發手冊》: BC
    A .IDE的text file encoding設置爲GBK格式。
    B .IDE的text file encoding設置爲UTF. -8格式。
    C .IDE中文件的換行符使用unix格式。
    D .IDE中文件的換行符使用windows格式。
  35. 關於數據庫是與否概念的列的命名方式,下列哪些說法符合《阿里巴巴Java開發手冊》: BD
    A .對於是與否概念的列名,必須使用can_ abc 來表示。
    B .對於是與否概念的列名,必須使用is_ _abc來表示。
    C .數據類型是varchar(1) ( Y表示是,N表示否)。
    D .數據類型是unsigned tiny int. ( 1表示是,0表示否)。
  36. 以下關於格式規約的說法,正確的有哪些: AD
    A .代碼塊縮進4個空格,如果使用tab縮進,請設置成1個tab爲4個空格;
    B .代碼塊縮進5個空格,如果使用tab縮進, 請設置成1個tab爲5個空格。
    C爲了保持代碼美觀,《手冊》 強烈推薦增加若干空格,使某-行的變量 與相鄰對應位置的變量對齊。
    D .方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者不同的語義之間推薦插入一個空行;相同業務邏輯和語義之間不需要插
  37. 通過集合A.subList()獲取子集合B,下列說法哪些是正確的: ABD
    A .返回的集合B沒有實現Serializable接口,不能被序列化,所以不能應用於RPC場景。
    B .在B集合中添加某個元素,那麼A集合也會添加進去此元素。
    C .集合A中元素的修改不會影響到集合B的任何操作。
    D .對A元素個數的修改,會導致集合B的遍歷產生ConcurrentModificationException異常。
  38. 關於捕獲異常和拋異常,下列哪些說法符合 《阿里巴巴Java開發手冊》: BCD
    A .如果需要捕獲不同類型異常,爲了方便處理,可以使用catch(Exception e).-}. .
    B .不要捕獲異常後不處理,丟棄異常信息。
    C .捕獲異常與拋異常,必須是完全匹配,或者捕獲異常是拋異常的父類。
    D .異常定義時區分unchecked 1 checked異常,避免直接使用RuntimeException拋出。
  39. 關於線程安全,下列哪些說法是正確的: ACD
    A .SimpleDateFormat是線程不安全的類。
    B .SimpleDateFormat是線程安全的類。
    C.-般不要定 義SimpleDateFormat的static變量,如果定義爲static,必須保證線程安全。
    D .推薦使用Apache封裝好的DateUtils和DateFormatUtils工具類,來處理時間日期轉換問題。
  40. 爲了更方便地進行單元測試,被測試的業務代碼應避免以下哪些情況? ABCD
    A .構造方法中做的事情過多。
    B .存在過多的全局變量和靜態方法。
    C .存在過多的外部依賴。
    D .存在過多的條件語句。
  41. 關於控制語句,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A .推薦if-else的方式可以改寫成衛語句的形式。
    B .儘量減少try-catch塊內的邏輯,定義對象、變量、獲取數據庫連接等操作可以移到try-catch塊外處理
    C .if( condition) statements; 單行語句不需要使用大括號。
    D .在一個switch塊內,都必須包含-個default語句並且放在最後,即使它什麼代碼也沒有。
  42. 關於參數有效性驗證,下列哪些說法符合《阿里巴巴Java開發手冊》: ABCD
    A .防止page size過大導致內存溢出。
    B .防止正則輸入源串拒絕服務ReDOS。
    C .防止任意重定向。
    D .預防SQL注入。
  43. 關於變量和常量定義,下列哪些符合《阿里巴巴Java開發手冊》: AD
    A.Long a=2L; I大寫的L
    B .Long a=2l;小寫的1
    C .常量只定義- -次,不再賦值,所以不需要命名規範。
    D .不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。
  44. 在定義DO/DTO/VO/等POJO類時,對屬性默認值的設定,下列哪些說法符合《阿里巴巴Java開發手冊》: D
    A .String類型的默認值設定爲空字符串。
    B .Date類型的默認值設定爲new Date()。
    C .集合類型的默認值設定爲Collections. EMPTY_ LIST。
    D .不要設定任何屬性默認值。
    備註: [強制] 定義DO/DTONO等POJO類時,不要設定任何屬性默認值。
    反例: POJO類的gmtCreate默認值爲new Date(),但是這個屬性在數據提取時並沒有置入具
    體值,在更新其它字段時又附帶更新了此字段,導致創建時間被修改成當前時間。
  45. 關於二方庫依賴的解析命令,下列哪些說法是正確的: ABC
    A .mvn dependency:resolve打印出已仲裁依賴的列表。
    B .mvn dependencytree打印工程整個的依賴樹結構。
    C .mvn dependency:tree -Dverbose -Dincludes=commons-lang打印出與commons-lang相關的詳細依賴。
    D .mvn dlean install打印工程整個的依賴樹結構,並部署到本地倉庫中。
  46. KV結構的集合,在處理nill值的存儲 上有細微的區別,下列哪些說法是正確的: A
    A.TreeMap的key不可以爲null
    B .TreeMap的key可以爲null
    C .ConcurrentHashMap的key可以爲null
    D .ConcurrentHashMap的value可以爲null
  47. 關於數據庫中表相關的命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ABD
    A.表名、字段名禁止出現數字開頭,禁止兩個下劃線中間只出現數字。
    B表名不使用複數名詞。
    C .表必備三字段命名: id, gmt. create, gmt modify.
    D .表必備三字段命名: id, gmt_ create, gmt modifed.
  48. 關於多線程並行處理定時任務的情況,下列哪些說法符合《阿里巴巴Java開發手冊》: BCD
    A .推薦使用Tmer方式處理。
    B .推薦使用ScheduledExecutorService方式處理。
    C .Tmer運行多個TmeTask時,只要其中之一沒有捕獲拋出的異常, 其它任務便會自動終止運行。
    D .ScheduledExecutorService併發運行多個定時任務時,其中某線程拋出異常,不會影響到其它線程的繼續運行。
  49. 關於Java代碼的設計和開發注意事項,下列哪些說法符合《集合開發規約》: ABCD
    A.禁止將URL、文件名、系統參數、數據庫連接地址、業務規則的可變參數,硬編碼在工程中。
    B .long或者Long初始賦值時,必須是大寫的L,不能小寫。
    C .當一個類有多個構造方法,或是多個同名方法,這些方法應該按順序放置在一 起,便於閱讀。
    D .相同參數類型,同等業務含義, 纔可以使用Java的可變參數,參數的類型儘量避免使用Object。
  50. 關於數據庫索引的命名,下列哪些說法符合《阿里巴巴Java開發手冊》: ACD
    A .主鍵索引(primary key),字段類型爲unsigned bigint.單表時推薦自增、步長爲1。
    B .主鍵索引(primary key),字段類型爲unsigned bigint.單表時推薦自增、步長爲2。
    C .唯一索引(unique key),命名規則爲uk_字段名(如果多個字段繼續下劃線)。
    D .普通索引(normal index),標記成idx_ 字段名(如果多個繼續下劃線)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章