程序员需要了解的大模型开发方向!

开发 后端
随着GPT的爆火,大模型方向近期也迎来越来越多的机会和发展。而且作为工作几年CRUD的后端,感觉后端开发是越来越卷了。

大家好呀,我是飞鱼。

随着GPT的爆火,大模型方向近期也迎来越来越多的机会和发展。

而且作为工作几年CRUD的后端,感觉后端开发是越来越卷了。

这里也不是鼓励大家赶紧去转大模型,可以先了解一下新的行业,新的机会,更好的规划自己未来的职业发展。

现在招聘大模型的岗位还是比较少的,而且也出现很多培训大模型的(大部分是收割韭菜的,大家也别被骗了)。

目前大模型工程师有以下几个方向

大模型数据工程师:

  • 数据清洗/ETL/Data Engine/Pipeline

大模型平台工程师:

  • 分布式训练/大模型集群/工程基建

大模型算法工程师:

  • 搜广推/对话机器人/AIGC等

大模型部署工程师:

  • 推理加速/跨平台/端智能/嵌入式等

就目前的现状,对于数据工程师,特别是有经验的数据工程师,是非常稀缺的。

多关心数据,积累高质量训练/测试集的构建经验,对数据的Sense,是最直接,也是最适合用到未来工作当中的。

想做应用的,建议深耕某个垂直领域。

比如对话机器人,问答系统,金融/医疗/教育方向,找一个具体的场景,把它做好,做深。

每日一题

题目描述

给定一个二叉树,判断它是否是 平衡二叉树。

解题思路

递归

三点注意事项:

  • 左子树是平衡二叉树
  • 右子树是平衡二叉树
  • 左右子树高度不超过1

代码实现

Java代码:

class Solution {
    public boolean isBalanced(TreeNode root) {
        //只要不存在不平衡的子树,则整个树平衡
        return depth(root) != -1;
    }
    //递归求解每个子二叉树的平衡性,一旦有不平衡的,递归向上返回-1,结束判断
    public int depth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        //计算左节点的深度
        int left = depth(root.left);
        //计算右节点深度
        int right = depth(root.right);
        //如果本层根节点的二叉树不平衡则返回-1,如果其子树不平衡一样
        if (Math.abs(left - right) > 1 || left == -1 || right == -1) {
            return -1;
        }
        return Math.max(left, right) + 1;
    }
}

Python代码:

class Solution:
    def isBalanced(self, root):
        # 只要不存在不平衡的子树,则整个树平衡,调用depth方法判断,若返回值不是 -1 则表示平衡
        return self.depth(root)!= -1
    def depth(self, root):
        if root is None:
            return 0
        # 计算左子树深度
        left = self.depth(root.left)
        # 计算右子树深度
        right = self.depth(root.right)
        # 如果本层根节点的二叉树不平衡(左右子树高度差绝对值大于1)或者左、右子树有返回 -1 的情况(即不平衡),则返回 -1
        if abs(left - right) > 1 or left == -1 or right == -1:
            return -1
        return max(left, right) + 1

Go代码:

func (s *Solution) IsBalanced(root *TreeNode) bool {
    return s.Depth(root)!= -1
}
func (s *Solution) Depth(root *TreeNode) int {
    if root == nil {
        return 0
    }
    // 递归计算左子树深度
    left := s.Depth(root.Left)
    // 递归计算右子树深度
    right := s.Depth(root.Right)
    // 如果当前节点的左右子树高度差绝对值大于1,或者左、右子树有返回 -1 的情况(即不平衡),则返回 -1
    if abs(left-right) > 1 || left == -1 || right == -1 {
        return -1
    }
    // 返回左右子树深度最大值加1(代表加上当前节点这一层)
    return max(left, right) + 1
}
// abs函数用于计算整数的绝对值
func abs(a int) int {
    if a < 0 {
        return -a
    }
    return a
}
// max函数用于返回两个整数中的较大值
func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

复杂度分析

❝时间复杂度:O(n)

  • 其中 n 为二叉树的节点个数。

空间复杂度:O(n)。

  • 最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。
责任编辑:姜华 来源: 月伴飞鱼
相关推荐

2022-01-05 08:00:00

框架Golang开源

2019-02-21 10:51:37

程序员技能沟通

2021-05-05 11:32:36

MySQL数据库索引

2020-02-21 16:47:25

依赖冲突原因解决办法

2019-11-19 15:10:40

程序员操作系统计算机基础

2011-12-08 09:16:12

2014-10-20 12:19:09

程序员

2015-10-29 10:26:45

Windows管理员技巧Linux

2015-08-26 11:20:37

程序员发展方向

2013-05-03 15:06:08

AIR移动应用Android开发

2012-02-06 09:14:24

2015-06-02 09:17:10

程序员学习经验

2021-06-02 09:23:57

Go开发内存

2017-02-05 16:00:35

Java编程语言

2016-12-26 17:53:05

Java开发者编程语言

2022-01-05 11:02:44

物联网开发物联网IOT

2022-10-26 07:21:15

网络视频开发

2017-01-15 17:48:04

Java开发者编程语言

2019-12-09 16:18:08

程序员数据库技术

2017-06-26 15:32:59

前端编译原理语言知识
点赞
收藏

51CTO技术栈公众号