ARTS第一周
Algorithm
三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
Arrays.sort(nums);
for (int k=0; k<nums.length-2; k++) {
if (nums[k] > 0) {
break;
}
if (k>0 && nums[k] == nums[k-1]) {
continue;
}
int i = k+1, j = nums.length-1;
while (i < j) {
int sum = nums[i] + nums[j] + nums[k];
if (sum == 0) {
List<Integer> temp = Arrays.asList(nums[k],nums[i],nums[j]);
res.add(temp);
while (i < j && nums[i] == nums[++i]);
while (i < j && nums[j] == nums[--j]);
} else if (sum > 0) {
while (i < j && nums[j] == nums[--j]);
} else {
while (i < j && nums[i] == nums[++i]);
}
}
}
return res;
}
}
Review
https://engineering.linkedin.com/blog/2020/automated-accessibility-testing
网络应用
LinkedIn对我们的Web应用程序使用了Deque的Ax Core可访问性测试框架。Ax是用于网站和其他基于HTML的用户界面的静态分析引擎。它通过Ember A11y Testing Addon集成到我们的Ember测试基础结构中。
有三种类型的灰烬测试:
- 单元测试验证单个代码段。它们不足以评估,但执行起来非常快。
- 集成测试验证用户界面组件。他们被孤立地检查,执行起来有些快,但是缺乏精确评估的忠诚度。
- 验收测试是集成的理想点,因为它们与用户所体验的最相似。但是,它们在运行时和资源方面的成本要高得多。
我们的持续集成和部署过程是3x3,至少包括三个日常部署和三个验证阶段:提交前,合并前和合并后。
-
预提交发生在“推入远程”时,其中包括静态掉毛检查和依赖项验证。
-
预合并在成功推送后发生,包括构建验证和测试套件执行。
-
如果成功,则合并后检查会将相关联的更改排队等待部署。
iOS和Android应用
我们对iOS和Android使用与网络相同的测试方法。但是,我们运行的规则更少,并且我们不使用同一库来运行它们。这是因为移动平台具有自己的API和与辅助技术进行交互的不同方式。随着两个平台的可访问性能力的发展,我们确实计划增加可访问性检查的数量。
iOS
我们有6条规则。我们检查是否:
- 标签存在:确保所有辅助功能元素都具有标签。
- 标签中没有特质:确保元素不会在标签中过多地描述可访问性特征,例如“按钮”,因为这些角色是由屏幕阅读器自动宣布的。
- 标签不是多余的:确保可访问性标签是唯一的,以便在使用屏幕阅读器时可以区分它们。
- 特性不会冲突:请确保不要同时使用不兼容的特性,例如“按钮”和“链接”。
- 触摸目标尺寸:确保所有互动元素的触摸目标尺寸至少为44pt。
- 对比度足够:确保文本对比度至少为4.5:1。
Android
我们有10条规则。我们检查:
- 不受支持的项目类型:确保TalkBack支持指定的辅助功能类名称(角色)。
- ClickableSpan:确保无法在TextView中使用ClickableSpan,因为它无法访问,因为无法在单个TextView中单独选择各个范围。
- 遍历顺序:确保开发人员指定的遍历顺序没有任何问题,例如遍历中的循环或约束。
- 对比度检查:确保文本对比度至少为4.5:1。
- 存在标签:确保所有辅助功能元素都具有标签。
- 重复的可点击范围:确保可点击/可触摸范围彼此不重叠。
- 语音文字重复:请确保辅助功能标签是唯一的,以便在使用屏幕阅读器时可区分它们。
- 可编辑的内容描述:确保可编辑的TextView没有由contentDescription标记。
- 触摸目标尺寸:确保所有互动元素的触摸目标尺寸至少为48dp。
- 链接不清楚:确保链接目的不清楚或描述不够充分。
Tip
确保正确处理了线程池中任务的异常,如果任务通过 execute 提交,那么出现异常会导致线程退出,大量的异常会导致线程重复创建引起性能问题,我们应该尽可能确保任务不出异常,同时设置默认的未捕获异常处理程序来兜底;如果任务通过 submit 提交意味着我们关心任务的执行结果,应该通过拿到的 Future 调用其 get 方法来获得任务运行结果和可能出现的异常,否则异常可能就被生吞了。
Share
https://sq.163yun.com/blog/article/183654375478206464