Golang/Python后端软件工程师招聘 - 专注AI与机器学习(无需相关经验)

Golang/Python后端软件工程师招聘 - 专注AI与机器学习(无需相关经验) 我们的客户是一家屡获殊荣的人工智能初创公司,位于伦敦市中心。他们的产品是一个开放的软件和研究平台,同时也是硬件个人机器人,旨在彻底改变人工智能助手的世界,并且已经赢得了多项创新奖项。

他们目前有多个后端工程师职位空缺,欢迎加入他们的团队。他们的技术栈包括 C++、Python 和 Go,并在 AWS 中使用 Docker。

作为一名后端工程师,您将使用 Go 和 Python 构建复杂的软件系统——与机器学习和人工智能领域的专家一起,为他们的 AI 机器人开发新的和现有的功能。您将成为一支由经验丰富的开发人员和研究人员组成的紧密团队的一员,参与建立架构原则和选择设计模式。此职位不需要您具备人工智能或机器学习方面的先前经验。他们正在寻找富有创造力的解决问题者,能够在快节奏的环境中积极主动并适应变化。

如果您拥有 Go 或 Python 的商业经验,并且希望学习另一种语言,这是一个理想的学习环境,可以与公司共同成长,并融入协作文化之中。

公司提供具有竞争力的薪酬和一系列丰厚的福利(包括股权)。现在正是加入他们,共同踏上这段旅程的理想时机。

请注意,我们的客户不为此职位提供远程工作选项。虽然他们可以提供二级签证担保,但所有成功的候选人都需要在伦敦的办公室工作。

如果您想了解更多信息,请将您的简历发送至 Ben Sheridan 的邮箱:Ben@district4.io。

技能与要求 必备条件:

  • 拥有 Golang 或 Python 的经验
  • 拥有构建键值或关系型数据库的经验
  • 熟悉 REST 框架

加分项:

  • 熟悉 Docker 和 AWS
  • 了解持续测试流程
  • 了解机器学习模型(SVM、回归、随机森林)

申请方式 将您的简历发送至 Ben Sheridan 的邮箱:ben@district4.io 公司网站:District4 - 招聘机构


更多关于Golang/Python后端软件工程师招聘 - 专注AI与机器学习(无需相关经验)的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

太棒了!感谢分享。

更多关于Golang/Python后端软件工程师招聘 - 专注AI与机器学习(无需相关经验)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常吸引人的机会,尤其对于希望从传统后端开发切入AI领域的Gopher而言。该职位明确表示不需要AI/ML先验经验,但技术栈要求扎实的Go和系统构建能力。以下从Go语言技术角度,分析该职位可能涉及的工作内容并给出相关代码示例。

根据描述,后端系统很可能采用Go构建高性能、高并发的微服务,为AI机器人提供API、数据管道和业务逻辑支撑。Python可能更多用于AI模型服务和研究侧。

1. REST API 服务 (必备技能) 使用Go构建RESTful API是核心需求。推荐使用ginecho框架。

// 使用gin框架示例:一个处理机器人指令的API端点
package main

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

type CommandRequest struct {
    DeviceID  string `json:"device_id" binding:"required"`
    Action    string `json:"action" binding:"required"`
    Parameters map[string]interface{} `json:"parameters"`
}

func main() {
    r := gin.Default()
    
    // 健康检查端点
    r.GET("/health", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{"status": "operational"})
    })
    
    // 机器人指令端点
    r.POST("/api/v1/robot/command", func(c *gin.Context) {
        var req CommandRequest
        if err := c.ShouldBindJSON(&req); err != nil {
            c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
            return
        }
        
        // 这里会集成业务逻辑:验证、排队、执行指令
        // 例如:将指令发布到消息队列供AI引擎消费
        go processRobotCommand(req)
        
        c.JSON(http.StatusAccepted, gin.H{
            "message": "command accepted",
            "command_id": generateID(),
        })
    })
    
    r.Run(":8080")
}

func processRobotCommand(cmd CommandRequest) {
    // 异步处理指令:调用Python ML服务、更新数据库等
}

2. 数据库交互 (必备技能) 职位要求键值或关系型数据库经验。以下展示Go与PostgreSQL(关系型)和Redis(键值)的交互。

// PostgreSQL示例(使用pgx驱动)
import (
    "context"
    "github.com/jackc/pgx/v5/pgxpool"
)

type RobotState struct {
    DeviceID    string
    Status      string
    LastCommand string
}

func SaveRobotState(db *pgxpool.Pool, state RobotState) error {
    query := `INSERT INTO robot_states(device_id, status, last_command) 
              VALUES($1, $2, $3) 
              ON CONFLICT(device_id) DO UPDATE SET 
              status=$2, last_command=$3, updated_at=NOW()`
    
    _, err := db.Exec(context.Background(), query, 
        state.DeviceID, state.Status, state.LastCommand)
    return err
}

// Redis示例(使用go-redis)
import "github.com/redis/go-redis/v9"

func CacheSensorData(rdb *redis.Client, deviceID string, data []byte) error {
    ctx := context.Background()
    // 缓存传感器数据,设置30秒过期
    return rdb.SetEx(ctx, "sensor:"+deviceID, data, 30*time.Second).Err()
}

3. Docker与AWS集成 (加分项) 在AWS上运行Docker化的Go服务是典型部署模式。

// 体现AWS SDK使用的示例:从S3加载机器人配置
import (
    "context"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/s3"
)

func LoadConfigFromS3(bucket, key string) ([]byte, error) {
    cfg, err := config.LoadDefaultConfig(context.Background())
    if err != nil {
        return nil, err
    }
    
    client := s3.NewFromConfig(cfg)
    output, err := client.GetObject(context.Background(), &s3.GetObjectInput{
        Bucket: aws.String(bucket),
        Key:    aws.String(key),
    })
    if err != nil {
        return nil, err
    }
    defer output.Body.Close()
    
    return io.ReadAll(output.Body)
}

4. 与Python AI服务协同 Go后端需要与Python ML服务通信,通常采用gRPC或HTTP。

// 通过HTTP调用Python ML服务的示例
type PredictionRequest struct {
    Features []float64 `json:"features"`
}

type PredictionResponse struct {
    Prediction int     `json:"prediction"`
    Confidence float64 `json:"confidence"`
}

func GetPredictionFromMLService(features []float64) (*PredictionResponse, error) {
    url := "http://ml-service:5000/predict"
    reqBody := PredictionRequest{Features: features}
    
    jsonData, _ := json.Marshal(reqBody)
    resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    
    var result PredictionResponse
    err = json.NewDecoder(resp.Body).Decode(&result)
    return &result, err
}

5. 持续测试 (加分项) Go内置测试框架支持单元测试和集成测试。

// 对API处理器进行单元测试
func TestCommandHandler(t *testing.T) {
    // 创建测试请求
    reqBody := `{"device_id":"bot-001","action":"move","parameters":{"direction":"forward"}}`
    req := httptest.NewRequest("POST", "/api/v1/robot/command", strings.NewReader(reqBody))
    req.Header.Set("Content-Type", "application/json")
    
    w := httptest.NewRecorder()
    router := setupRouter() // 你的gin路由器
    router.ServeHTTP(w, req)
    
    if w.Code != http.StatusAccepted {
        t.Errorf("Expected status 202, got %d", w.Code)
    }
    
    var resp map[string]interface{}
    json.Unmarshal(w.Body.Bytes(), &resp)
    if resp["command_id"] == nil {
        t.Error("Response missing command_id")
    }
}

该职位技术栈务实,Go将负责构建可靠的基础设施层,而Python处理AI/ML算法。对于Go开发者,这是一个将并发处理、API设计和系统架构经验应用于前沿AI场景的绝佳机会。代码示例展示了如何用Go构建此类系统的核心组件。

回到顶部