ARTS第一周

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测试基础结构中。

有三种类型的灰烬测试:

  1. 单元测试验证单个代码段。它们不足以评估,但执行起来非常快。
  2. 集成测试验证用户界面组件。他们被孤立地检查,执行起来有些快,但是缺乏精确评估的忠诚度。
  3. 验收测试是集成的理想点,因为它们与用户所体验的最相似。但是,它们在运行时和资源方面的成本要高得多。

我们的持续集成和部署过程是3x3,至少包括三个日常部署和三个验证阶段:提交前,合并前和合并后。

  • 预提交发生在“推入远程”时,其中包括静态掉毛检查和依赖项验证。

  • 预合并在成功推送后发生,包括构建验证和测试套件执行。

  • 如果成功,则合并后检查会将相关联的更改排队等待部署。

iOS和Android应用

我们对iOS和Android使用与网络相同的测试方法。但是,我们运行的规则更少,并且我们不使用同一库来运行它们。这是因为移动平台具有自己的API和与辅助技术进行交互的不同方式。随着两个平台的可访问性能力的发展,我们确实计划增加可访问性检查的数量。

iOS

我们有6条规则。我们检查是否:

  1. 标签存在:确保所有辅助功能元素都具有标签。
  2. 标签中没有特质:确保元素不会在标签中过多地描述可访问性特征,例如“按钮”,因为这些角色是由屏幕阅读器自动宣布的。
  3. 标签不是多余的:确保可访问性标签是唯一的,以便在使用屏幕阅读器时可以区分它们。
  4. 特性不会冲突:请确保不要同时使用不兼容的特性,例如“按钮”和“链接”。
  5. 触摸目标尺寸:确保所有互动元素的触摸目标尺寸至少为44pt。
  6. 对比度足够:确保文本对比度至少为4.5:1。

Android

我们有10条规则。我们检查:

  1. 不受支持的项目类型:确保TalkBack支持指定的辅助功能类名称(角色)。
  2. ClickableSpan:确保无法在TextView中使用ClickableSpan,因为它无法访问,因为无法在单个TextView中单独选择各个范围。
  3. 遍历顺序:确保开发人员指定的遍历顺序没有任何问题,例如遍历中的循环或约束。
  4. 对比度检查:确保文本对比度至少为4.5:1。
  5. 存在标签:确保所有辅助功能元素都具有标签。
  6. 重复的可点击范围:确保可点击/可触摸范围彼此不重叠。
  7. 语音文字重复:请确保辅助功能标签是唯一的,以便在使用屏幕阅读器时可区分它们。
  8. 可编辑的内容描述:确保可编辑的TextView没有由contentDescription标记。
  9. 触摸目标尺寸:确保所有互动元素的触摸目标尺寸至少为48dp。
  10. 链接不清楚:确保链接目的不清楚或描述不够充分。

Tip

确保正确处理了线程池中任务的异常,如果任务通过 execute 提交,那么出现异常会导致线程退出,大量的异常会导致线程重复创建引起性能问题,我们应该尽可能确保任务不出异常,同时设置默认的未捕获异常处理程序来兜底;如果任务通过 submit 提交意味着我们关心任务的执行结果,应该通过拿到的 Future 调用其 get 方法来获得任务运行结果和可能出现的异常,否则异常可能就被生吞了。

Share

https://sq.163yun.com/blog/article/183654375478206464

你可能感兴趣的:(左耳听风,程序人生)