前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARTS_202207W2

ARTS_202207W2

原创
作者头像
cswh
发布2022-08-01 19:24:20
2350
发布2022-08-01 19:24:20
举报
文章被收录于专栏:CSWH技术博客

ARTS 第 3 周

每周完成一个ARTS:

Algorithm:每周做一个 leetcode 的算法题

Review:阅读并点评写作一篇英文技术文章

Tip:学习至少一个技术技巧

Share:分享一篇有观点和思考的技术文章。

image.png
image.png

Table of Contents

  • Algorithm 两数相加
  • Review 泛硅谷公司相比传统公司更善用软件工程师
  • Tip 截图工具snipaste
  • Share 分享博客

Algorithm

leetcode2.两数相加

题目描述:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

leetcode链接

输入:l1 = 2,4,3, l2 = 5,6,4

输出:7,0,8

解释:342 + 465 = 807

代码语言:txt
复制
package com.haowang.leetcode;
import com.haowang.TestUtils.UseCase_LinkedList.ListNode;

public class 两数相加_2 {
    public static void main(String[] args) {
        ListNode l1 = UseCase_LinkedList.createLinkedList(new int[]{2, 4, 3});
        ListNode l2 = UseCase_LinkedList.createLinkedList(new int[]{5,6,4});
        ListNode sum_ListNode = addTwoNumbers(l1, l2);
        UseCase_LinkedList.printLinkedList(sum_ListNode);

        ListNode l1_2 = UseCase_LinkedList.createLinkedList(new int[]{9,9,9,9,9,9,9});
        ListNode l2_2 = UseCase_LinkedList.createLinkedList(new int[]{9,9,9,9});
        ListNode sum_ListNode_2 = addTwoNumbers(l1_2, l2_2);
        UseCase_LinkedList.printLinkedList(sum_ListNode_2);
    }

    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = null, tail = null;
        int carry = 0;
        while (l1 != null || l2 != null) {
            int n1 = l1 != null ? l1.val : 0;
            int n2 = l2 != null ? l2.val : 0;
            int sum = n1 + n2 + carry;

            if (head == null) {
                head = tail = new ListNode(sum % 10);
            } else {
                tail.next = new ListNode(sum % 10);
                tail = tail.next;
            }
            carry = sum / 10;
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }
        if (carry > 0) {
            tail.next = new ListNode(carry);
        }
        return head;
    }
}

为了方便本地IDEA调试,参考了一些资料,可通过方法createLinkedList()本地生成链表结构,printLinkedList()打印链表。详情可见LeetCode构建链表和树的测试用例

Review

文章主题为“泛硅谷公司相对于传统公司更加善用软件工程师“。

原文:What Silicon Valley "Gets" about Software Engineers that Traditional Companies Do Not

泛硅谷公司获得了一些传统公司无法理解或无法在实践中应用的东西。这些实践上的差异,导致公司层面更快创新、工程师更专业的成长和更好的产出。反过来,泛硅谷公司可以支付更高的工资并从同一个人身上获得更多价值。

作者从几个方面,比较了泛硅谷公司与传统公司的差别:

1、软件工程师的自主权

泛硅谷公司传递上下文并赋予自主权,工程师解决业务问题,而不仅是完成分配的任务。

image.png
image.png

二、好奇的问题解决者,而不是没有想法的资源

传统公司倾向于让工程师一直坐在电脑前编码,充分利用时间。

泛硅谷公司认为软件工程师是最适合解决组织存在的问题的人,不仅仅是专业技能,还包括沟通和解决问题能力;让软件工程师接触业务,完成编码的同时为业务寻找更有影响力的机会。

三、内部数据、代码和文档透明度

四、接触业务和业务指标

泛硅谷公司鼓励工程师与其他业务部门进行互动,并在其他工程师之间建立关系。

五、工程师之间的三角沟通

沟通.png
沟通.png

六、投资于不那么令人沮丧的开发体验

泛硅谷公司改善开发人员工作体验。投资于代码周边事情,如依赖项、环境部署、CI/CD等

七、更高的杠杆-->更高的{自主权、报酬}

更高的自主权 --> 更高的杠杆率 --> 更高的价值创造 --> 更高的薪酬(同时公司仍然盈利)

最后,作者总结了两类公司最大的不同点:泛硅谷公司将工程师视为价值创作者和创造性问题解决者;而传统公司将他们视为工厂工人。("SV-like" companies think of engineers as value generators, and creative problem solvers. Traditional companies think of them as factory workers.“)。而创造性的问题解决者可以带来10倍的价值,给他们更多的报酬,给他们更多的自由是有意义的。

来源湾区日报第1368期上收录文章

Tip

win10上的一款截图软件snipaste,官网

Share

分享一个不错的博客:

湾区日报 https://wanqu.co/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ARTS 第 3 周
  • Table of Contents
    • Algorithm
      • Review
        • Tip
          • Share
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档