2018.02.15除夕拿下了阿里云认证的《阿里巴巴编码规范(JAVA)》认证,写下这篇考后感,记录考试中碰到的一些考点。

先总体介绍下这个考试规则,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)

在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协议,三次握手、四次挥手相关概念及状态转换。

总结:自己对于数据库这块及单元测试相关的知识点了解相对薄弱,这也是今后需要补充知识的一个方向。笔者希望这篇文章希能巩固自己一些薄弱的知识点,同时也希望给准备去考这个认证的小伙伴一个参考,带来一定帮助。

《阿里巴巴编码规范(JAVA)》认证考后感的更多相关文章

  1. 阿里巴巴编码规范(Java)证明

    背景 阿里云上有个阿里巴巴编码规范认证,我估算一下时间成本很低,多个认证也没什么坏处,就花了1分钱报了个名.这个认证报名后就可以下载链接下的编码规范,然后参加个考试应该就OK了. 共48页的规范实际上 ...

  2. Apsara Clouder基础技能认证:阿里巴巴编码规范 考试备考题库

    考试网址: https://edu.aliyun.com/clouder/exam/intro/33 共50道题 限时90分钟 阿里云大学Apsara Clouder基础技能认证——阿里巴巴编码规范认 ...

  3. Java语言编码规范(Java Code Conventions)

    Java语言编码规范(Java Code Conventions) 名称 Java语言编码规范(Java Code Conventions) 译者 晨光(Morning) 简介 本文档讲述了Java语 ...

  4. Java语言编码规范 - Java语言编码规范(中文版)(http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html)

      目录 1 介绍 1.1 为什么要有编码规范 1.2 版权声明 2 文件名 2.1 文件后缀 2.2 常用文件名 3 文件组织 3.1 Java源文件 3.1.1 开头注释 3.1.2 包和引入语句 ...

  5. 编码规范 | Java函数优雅之道(下)

    上文背景 本文总结了一套与Java函数相关的编码规则,旨在给广大Java程序员一些编码建议,有助于大家编写出更优雅.更高质.更高效的代码. 内部函数参数尽量使用基础类型 案例一:内部函数参数尽量使用基 ...

  6. 编码规范 | Java函数优雅之道(上)

    导读 随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题.持续地优化代码,提高代码的质量,是提升系统生命力的有效手段之一.软件系统思维有句话“Less coding, ...

  7. cademy的Java习题做后感

    在cademy各种语言的hello world也做了不少,好像都差不多,先是数据类型,然后条件语句,之后面向对象,再上几个特殊对象. 以前都没有做笔记,导致ruby做完就忘光了,这次好歹写点什么,比如 ...

  8. Java 编码规范有感

    应小组要求,开发测试都需要考阿里编码规范,因此,相当于是突击了一下关于编码规范方面的知识,目前做的项目后期需要进行项目迁移,数据迁移,功能迁移... 各种迁移... 阿里巴巴编码规范(Java)考试地 ...

  9. HTML5 编码规范

    在编写HTML时,可能有一些方面不够规范,在通过对<HTML5编码规范>的学习后,采用代码注解的方式,做相关的整理,方便今后回顾. <!DOCTYPE html> <!- ...

随机推荐

  1. 【Leetcode_easy】1047. Remove All Adjacent Duplicates In String

    problem 1047. Remove All Adjacent Duplicates In String 参考 1. Leetcode_easy_1047. Remove All Adjacent ...

  2. html div高度100%无效

    移动端相关: div高度继承自父元素——>body——>html 解决方案: html,body { height: 100%;margin: 0; padding: 0;} 然后对应的d ...

  3. LeetCode:按序打印【1114】

    LeetCode:按序打印[1114] 题目描述 我们提供了一个类: 1 2 3 4 5 public class Foo {   public void one() { print("on ...

  4. C# 需要引用MySql.Data.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有引用 (SqlSugar)

    修改项目的app.config中的引用版本号即可

  5. Keras代码超详细讲解LSTM实现细节

    1.首先我们了解一下keras中的Embedding层:from keras.layers.embeddings import Embedding: Embedding参数如下: 输入尺寸:(batc ...

  6. gitstats 统计gitlab仓库中的代码

    使用Git版本库,有一些可视化的工具,如gitk,giggle等,来查看项目的开发历史.但对于大型的项目,这些简单的可视化工具远远不足以了解项目完整的开发历史,一些定量的统计数据(如每日提交量,行数等 ...

  7. 带你一步一步搭建TypeScript环境

    今天继续来更新,本篇文章我们讲环境搭建,主要分享一些环境搭建的学习资源及安装步骤,解决一些安装时可能会出现的问题.下面就让我们一起进入学习第一步,搭建TypeScript环境:一. 环境搭建1.1. ...

  8. 通过noVNC和websockify连接到QEMU/KVM 转

    开源项目 QEMU.KVM.libvirt 实现了创建虚拟机,启动虚拟机,监控虚拟机.我们解决了从无到有的问题,这时就该考虑从有到优了.尽管我们能使用 SSH 的方式来登录使用虚拟机,但这种方式从感觉 ...

  9. ucore 源码剖析

    lab1 源码剖析 从实模式到保护模式 初始化ds,es和ss等段寄存器为0 使能A20门,其中seta20.1写数据到0x64端口,表示要写数据给8042芯片的Output Port;seta20. ...

  10. redis服务操作

    端口启动服务./redis/redis-2.8.19/src/redis-server /redis/conf/r6100.conf./redis/redis-2.8.19/src/redis-ser ...