摘《阿⾥巴巴JAVA开发⼿册》易错题⽬
Apsara Clouder基础技能认证:阿⾥巴巴编码规范
摘《阿⾥巴巴JAVA开发⼿册》的⼩部分易错题⽬
下⾯的例⼦代码和描述,哪些是不正确的: 【ABD】
A. 单⾏字符数限制不超过140个,超出需求换⾏
B. IDE的text file encoding设置为GBK;IDE中⽂件的换⾏符使⽤Unix格式,不要使⽤windows格式。
C. ⼤括号与if,else,for,do,while语句⼀起使⽤,即使只有⼀条语句(或是空),也应该把⼤括号写上。
D. ⼤括号的使⽤约定。如果是⼤括号内为空,则简洁地写成{}即可,不需要换⾏;
解析:A  超过120个字符
多选 关于⽅法的返回值是否可以为null,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BCD】
A. ⽅法的返回值可以为null,如果是集合,必须返回空集⽩。
B. ⽅法的返回值可以为nul,不强制近回空集⽩或者空对象等,
C. ⽅法实现者必须添加注释,充分说明什么情只不会近回nul值。
D. 防⽌NPE是调⽤者的责任。
ABCD
A 对外暴露的接⼝签名,原则上不允许修改⽅法签名,避免对接⼝调⽤⽅产⽣影响
B 接⼝过时必须加@Deprecated 注解,并清晰地说明采⽤的新接⼝或者新服务是什么
C 任何类、⽅法、参数、变量,严控访问范围。过宽泛的访问范围,不利于模块解耦
D 不能使⽤过时的类或⽅法
利⽤索引进⾏排序,下列哪些说法是正确的:【AB】
A.查询语句 WHERE a = 10 ORDER BYb,可以利⽤素引(a,b)来进⾏索引排序。
B.查询语句WHERE a > 10 ORDER BY b,不可以利⽤素引(a,b)进⾏索引排序。
C.查询语句WHERE a IN (10, 11) ODER BY b.可以利⽤索引(a,b)来进⾏索引排序。
D.查询语句WHER a>10 AND b=20 ORDER BY a,可以利⽤索引(b,a)来进⾏素引排序。
解析:--where a in(...) order by b,c (对于排序来说,多个等于条件,也是范围查询)。⼜因为:⽐如索引中有范围查,那么索引有序性⽆法利⽤。
sort表⽰元素在存⼊集合时进⾏了排序,数据遍历的结果是按某个排序规则输出的;⽽order表⽰每次遍历的序列都是⼀样的,元素前后关系每次遍历都是确定的,那么下列哪些集合既是sort,⼜是order的:【D】
A、HashSet
B、LinkedList
C、HashMap
D、TreeMap
多选 关于组合索引,下他哪些说法符合《阿⾥巴巴Java开发⼿册》:【ACD】
A. 查询条件 where a=0' and b='1',当组合索引为(b a)的时候能进⾏索引扫描。
B. 查询条件where a='0' and b='1',当组台素引为(c,a,b)的时候能进⾏素引扫描。
C. 查询select b from table where a='0',当电台素引为(a b)的时候会进⾏素引扫描。
D. 查询条件where a> '0' order by b,当组合素引为(a. b)时会利⽤素引进⾏排序
在定义DO/DTO/VO/等POJO类时,对属性默认值的设定,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【D】
A. String类型的默认值设定为空字符串。
B. Date类型的默认值设定为new Date()。
C. 集合类型的默认值设定为Collections.EMPTY_LIST。
D. 不要设定任何属性默认值。
关于join的描述,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【AB】
A. join的字段,数据类型须保持绝对⼀致
B. join列必须有索引。
C. 优先where过滤。 其次再join关联。
D. 只要满⾜业务需求和,join表的个数不受限制。
解析:【强制】超过三个表禁⽌ join。需要 join 的字段,数据类型必须绝对⼀致;多表关联查询
时,保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。
关于参数校验,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【ABCD】
A. 批量处理接⼝必须做好接⼝⼊参保护
B. 需要极⾼稳定性和可⽤性的⽅法需要对参数进⾏校验
C. 底层的⽅法,在上层调⽤中参数多半已经被校验过,可以考虑不校验。
D. 对外提供的开放接⼝,都要进⾏参数检验。
解析:2) 底层调⽤频度⽐较⾼的⽅法。毕竟是像纯净⽔过滤的最后⼀道,参数错误不太可能到底层才会暴露问题。⼀般 DAO 层与Service 层都在同⼀个应⽤中,部署在同⼀台服务器中,所以 DAO 的参数校验,可以省略。
关于⽇志的条件输出和占位符的⽅式,下列哪些说法是正确的:【AC】
A. 对trace/debug/info级别的⽇志输出,必须使⽤条件输出形式或者使⽤占位符的⽅式
B. 条件输出⽅式可以避免log参数中字符串拼接的开销。
C. 占位符输出格式可以和条件输出⼀样避免参数中字符串拼接开销。
D. 因为设置了⽇志输出级别,所以⽆需使⽤条件输出⽅式。
解析:【强制】对于 trace/debug/info 级别的⽇志输出,必须进⾏⽇志级别的开关判断。
说明:虽然在 debug(参数)的⽅法体内第⼀⾏代码 isDisabled(Level.DEBUG_INT)为真时(Slf4j 的常见实
现 Log4j 和 Logback),就直接 return,但是参数可能会进⾏字符串拼接运算。此外,如果
debug(getName())这种参数内有 getName()⽅法调⽤,⽆谓浪费⽅法调⽤的开销。
关于应⽤中可以直接依赖的⽇志框架,下列哪些说法符合《阿⾥巴巴Java开发⼿册》:【BC】
A. Log4j。
B. SLF4J。
C. JCL(Jakarta Commons Logging)。
D. Logback。
【强制】应⽤中不可直接使⽤⽇志系统(Log4j、Logback)中的 API,⽽应依赖使⽤⽇志框架
SLF4J 中的 API,使⽤门⾯模式的⽇志框架,有利于维护和各个类的⽇志处理⽅式统⼀。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = Logger(Test.class);
单选 list⼦类使⽤toarray()⽅法实现集合向数组转换,下列哪些说法是正确的:【A】
时间正则表达式javaA. Vector⽆法使⽤toArray转换成数组。
B. 优先推荐:调⽤集合类的⽅法toArray(T[] a),传⼊的是类型完全⼀样的数组,⼤⼩就是集合的size()。
C. 集合的修改,会影响到数组元素的改变。
D. 数组的修改,会影响到集合元素的改变。
下列哪些说法符合阿⾥巴巴java开发⼿册:【ABCD】
A.在使⽤正则表达式时,利⽤好其预编功能,可以有效加快正则匹配速度
B.在JDK8中,针对统计时间等场景,推荐使⽤instant类
C.尽量不要在vm中加⼊变量声明,逻辑运算符,更不要在vm模板中加⼊任何复杂的逻辑
D.后台输送给页⾯的变量必须加$!{var}----中间的感叹号
其它的问题⽐较好理解和常见,暂不罗列

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。