1-开篇-程序员需要解决不确定的问题

简介: 1-开篇-程序员需要解决不确定的问题



第一期回顾

历次讨论主题记录: 每次讨论主题的记录


第二期

DIY班: 其一,Deeply Inspire Yourself 深度激发自己

其二,Do It Yourself 实践出真知

以前总是听说阿里某某大佬,听说孤尽老师,也时常琢磨他的开发规范,有些初看不明白,当深入了才知厉害,去年就听说有DIY班,但已经召集结束了,还好后来同学其他朋友间接偷学了点,今年终于能有机会系统和孤尽老师交流,好幸运,所以就想努力试试,我也知道规则时间的苛刻,但我真的就想只是一个肤浅的码农,真的就只能排查简单的问题,都说武林功法万变不离其宗,这个宗,我想去找,想要内化于心,所以,我的目的是学习,是想认识更多优秀的你,所以其他都是次要,谢谢孤尽老师

听说规则后,我也有时候觉得不尽人意,但这么好和大佬接触的机会,有一次就有一次的欢喜。所以,我先去争做班委,努力承担更多责任。其次,想要去归纳总结形成博客,对每次的分享都吃透。


快排

孤尽老师下午测试自己最快几分钟写完快排,并且直接测试通过,3分钟。

孤尽老师添加了注释,算是给大家一个开胃小菜

/**
     * 快速排序
     *
     * @param source 排序的数组
     * @param left   数组分区后的闭区间的最左边的下标
     * @param right  数组分区后的闭区间的最右边的下标
     */
    public static void quickSort(int[] source, int left, int right) {
        // 递归的退出条件。数组下标left必须大于等于right。数组是空数组或只有一个元素,直接返回
        if (source == null || left >= right) {
            return;
        }
        // 设置最左边的数组元素为基准值,数组中比pivot小的放在左边,比pivot大的放在右边
        int pivot = source[left];
        // 定义两个指针,分别指向最左边和最右边,都是往中间方向移动
        int pointerLeft = left;
        int pointerRight = right;
        while (pointerLeft < pointerRight) {
            // 如果pointerRight向左移,遇到比pivot大的值
            while (pointerLeft < pointerRight && source[pointerRight] >= pivot) {
                // 右边的指针往左边移动一下
                pointerRight--;
            }
            // 交换一下,不要怕,左边的值就是pivot,下个循环一定能够让指针进一步往右边移动
            swapValue(source, pointerLeft, pointerRight);
            // 如果pointerLeft向右移,遇到比pivot小的值
            while (pointerLeft < pointerRight && source[pointerLeft] <= pivot) {
                // 左边的指针往右边移动一下
                pointerLeft++;
            }
            swapValue(source, pointerLeft, pointerRight);
        }
        // 参数的left和right作为边界的存在,在这里终于用到了
        quickSort(source, left, pointerLeft - 1);
        quickSort(source, pointerLeft + 1, right);
    }
    private static void swapValue(int[] source, int pointerLeft, int pointerRight) {
        // 如果交换的时候,指针已经重合,那么不需要再交换
        if (pointerLeft >= pointerRight) {
            return;
        }
        int t = source[pointerLeft];
        source[pointerLeft] = source[pointerRight];
        source[pointerRight] = t;
    }
}


金九银十:给Java开发者的大厂面试心法

金九银十:给Java开发者的大厂面试心法-开课吧


体会最深的

架构是一个能力,不是一个职位

前提:

架构要把

架构先进性转换成技术先进性

技术先进性转换成商业先进性

架构在演变过程中,

  1. 对设计模式的了解
  2. 对架构本身的了解?架构的目的,
  3. 架构的方法论

架构要解决的问题:

  1. 确定你的系统的边界在哪里?
  2. 指导设计演化的原则是什么
  3. 确定非功能性需求

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。

举例:警匪片中“放下武器,立刻投降”, 武器是抽象的,对应匪徒手中具体的手枪,刺刀等

把一个确定性的描述,转换成代码并不难

但是,在整个科技世界中,都是不确定的问题。正是因为我们需要解决不确定的问题,所以才需要利用程序员的智商迭代。


目录
相关文章
|
7月前
|
机器学习/深度学习 算法 程序员
程序员代码面试指南之笔记01(下)
4) 局部最小值问题 public class Code06_BSAwesome {
22 0
|
7月前
|
算法 搜索推荐 程序员
程序员代码面试指南之笔记01(上)
一、算法数据结构基础课 第一节 一、 评估算法
38 0
程序员代码面试指南之笔记01(上)
|
12月前
|
程序员 测试技术 开发工具
程序员成长第十篇:从阅读代码开始
程序员成长第十篇:从阅读代码开始
172 0
|
NoSQL 前端开发 关系型数据库
程序员进阶2
程序员进阶2
52 0
|
前端开发 JavaScript 关系型数据库
程序员进阶一
程序员进阶一
83 0
|
存储 NoSQL 前端开发
程序员进阶3
程序员进阶3
88 0
|
存储 NoSQL 前端开发
程序员进阶三
程序员进阶三
58 0
|
缓存 运维 前端开发
《一本技术畅销书是如何写成的?》 | 学习笔记(一)
快速学习《一本技术畅销书是如何写成的?》
92 0
《一本技术畅销书是如何写成的?》 | 学习笔记(一)
|
程序员 C++ 开发者
《代码整洁之道》-开篇
《代码整洁之道》-开篇
|
前端开发 程序员 测试技术
程序员进阶之道(一)
程序员进阶之道(一)

相关实验场景

更多