《阿里巴巴編碼規範(JAVA)》認證考後感

2018.02.15除夕拿下了阿里雲認證的《阿里巴巴編碼規範(JAVA)》認證,寫下這篇考後感,記錄考試中碰到的一些考點。sql

先整體介紹下這個考試規則,50道選擇題,大部分是多選題,有少部分單選,滿分100分,達到80分便可拿到證書。數據庫

傳送門:https://edu.aliyun.com/certification/cldt02數組

 

絕大部分的考題涉及到的知識點都能在《阿里巴巴JAVA開發手冊》上找到,這些都是比較基礎的考點,相信對大多數有工做經驗的猿們來講,不是難題,這一部分筆者就再也不多提了,書上都有的。緩存

下面重點記錄幾個重要的考點,有些可能只在書上略微說起且本身工做中不常涉及:服務器

JAVA:網絡

1.考點:全部的相同類型的包裝類對象之間值的比較,所有使用equals方法比較。數據結構

    對於Integer var = ? 在-128至127範圍內的賦值,Integer對象是在IntegerCache.cache產生,會複用已有對象,這個區間內的Integer值能夠直接使用==進行判斷,可是這個區間以外的全部數據,都會在堆上產生,並不會複用已有對象,這是一個大坑,推薦使用equals方法進行判斷。這個點在不少書上都有說起,特別須要注意。併發

2.考點:集合處理這個章節,特別是數組與集合相互轉換,涉及考題較多。框架

   subList 返回的是 ArrayList 的內部類 SubList,並非 ArrayList ,而是 ArrayList 的一個視圖,對於SubList子列表的全部操做最終會反映到原列表上(在sublist中添加/刪除元素,不僅影響sublist自己,同時會影響原ArrayList)tcp

   在subList場景中,高度注意對原集合元素個數的修改,會致使子列表的遍歷、增長、刪除均會產生ConcurrentModificationException 異常(切記,這個場景是不被容許的,不要和上一點記混淆)

   sublist沒有實現序列化,查看源碼就能夠發現其沒有實現Serializable接口,這點必須注意,在大多數寫入緩存容器、RPC調用等場景須要作一些調整。

   使用工具類Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出UnsupportedOperationException異常。

   說明:asList的返回對象是一個Arrays內部類,並無實現集合的修改方法。Arrays.asList體現的是適配器模式,只是轉換接口,後臺的數據還是數組(若是數組中的數據改變,那麼list視圖也將受到影響)。

 

數據庫:

1.考點:NULL與任何值比較的結果都爲NULL。~記住這點很重要。

2.考點:Mysql涉及的索引從數據結構角度來看涉及到 B-Tree、Hash、R-Tree、Full-text,從物理存儲角度,彙集索引(clustered)、非彙集索引(non-clustered)。

   在MySQL中,InnoDB引擎表是(彙集)索引組織表(clustered index organize table),而MyISAM引擎表則是堆組織表(heap organize table)。

   InnoDB的數據文件自己就是索引文件,B+Tree的葉子節點上的data就是數據自己,key爲主鍵,這是聚簇索引。非聚簇索引,葉子節點上的data是主鍵(因此聚簇索引的key,不能過長)。爲何存放的主鍵,而不是記錄所在地址呢,理由至關簡單,由於記錄所在地址並不能保證必定不會變,但主鍵能夠保證。 

3.考點:索引規約中相關的點,考到的題比較多,好比索引中有範圍查找,那麼索引有序性沒法利用,如:WHERE a>10 ORDER BY b; 索引a_b沒法排序。

 

日誌:

1.考點:應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。

   平時經常使用的日誌適配框架是SLF4J,重點提一下JCL(Jakarta Commons Logging),網上查詢了資源它也是一種日誌適配框架,~考試的時候漏選了這個。。用這些日誌框架的好處是下降與具體日誌框架的耦合,能夠靈活改變使用的具體日誌框架。

 

單元測試:

1.考點:白盒測試中的代碼覆蓋率相關概念,語句覆蓋、分支覆蓋(斷定覆蓋)、條件覆蓋、路徑覆蓋。

   語句覆蓋是最弱的一種度量方式,即便是路徑覆蓋也不能保證程序徹底沒問題。這些相關概念仍是看下專業的書籍或者博客等資料,筆者在這裏就很少描述了。

 

網絡:

1.考點:高併發服務器建議調小TCP協議的time_wait超時時間。

   重點須要理解tcp協議,三次握手、四次揮手相關概念及狀態轉換。

 

 

總結:本身對於數據庫這塊及單元測試相關的知識點了解相對薄弱,這也是從此須要補充知識的一個方向。筆者但願這篇文章希能鞏固本身一些薄弱的知識點,同時也但願給準備去考這個認證的小夥伴一個參考,帶來必定幫助。

相關文章
相關標籤/搜索