Golang工程师 - 全职远程岗位(需本地化工作)

Golang工程师 - 全职远程岗位(需本地化工作) 我们正在为 Nav 招聘 后端工程师(高级职员和资深职员级别)和 工程领导者(美国境内 100% 远程办公,或可在宾夕法尼亚州、犹他州、加利福尼亚州的办公室工作)。

Nav 是谁? Nav 是面向小型企业的、规模最大的精选金融产品市场。Nav 利用真实的业务数据和专有的评分系统,快速将借款人的资质与最佳的商业贷款和信用卡进行匹配。Nav 提供了一个独特的、免费的财务健康仪表板,在展示信用和现金流洞察的同时,还推荐融资方案。除了直接聚合流量外,Nav 的平台还能无缝集成到其他软件和网站中,使其成为面向中小型企业的领先嵌入式金融解决方案。我们已实现盈利,并得到了 Point72 Ventures、高盛和益博睿的支持。

薪酬: 10万-17万美元 + 股权 + 浮动薪酬 + 无限期休假 + 自选福利!

技术栈: 后端 - Go(主要)、Python、Ruby 和 Elixir; 前端 - React、Node.js、GraphQL; 编排与共享 - 容器化 - Kubernetes 和 Docker,SCM - GitLab,AWS 云,Linux 环境; 数据库 - PostgreSQL; CRM 与报告 - Salesforce(Apex, Lightning)、Tableau、Tealium。

*请勿通过第三方或代理机构联系。我们无法雇佣美国境外的候选人。


更多关于Golang工程师 - 全职远程岗位(需本地化工作)的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang工程师 - 全职远程岗位(需本地化工作)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常典型的Go语言后端工程师招聘需求,从技术栈描述来看,Go是他们的主要后端语言。以下是基于这个岗位要求的技术分析:

技术栈匹配度分析

核心后端技术

// 典型的Go后端服务结构示例
package main

import (
    "context"
    "database/sql"
    "log"
    "net/http"
    
    "github.com/gin-gonic/gin"
    _ "github.com/lib/pq"
    "gorm.io/gorm"
)

type LoanProduct struct {
    gorm.Model
    Name        string  `json:"name"`
    MinAmount   float64 `json:"min_amount"`
    MaxAmount   float64 `json:"max_amount"`
    InterestRate float64 `json:"interest_rate"`
    EligibilityScore int `json:"eligibility_score"`
}

// 金融产品匹配服务示例
type MatchingService struct {
    db *gorm.DB
}

func (s *MatchingService) FindBestMatches(creditScore int, revenue float64) ([]LoanProduct, error) {
    var products []LoanProduct
    err := s.db.Where("eligibility_score <= ?", creditScore).
        Order("interest_rate ASC").
        Limit(10).
        Find(&products).Error
    return products, err
}

func main() {
    // 连接PostgreSQL
    dsn := "host=localhost user=postgres password=secret dbname=nav port=5432 sslmode=disable"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        log.Fatal(err)
    }
    
    // 自动迁移
    db.AutoMigrate(&LoanProduct{})
    
    // 启动HTTP服务
    r := gin.Default()
    r.GET("/matches", func(c *gin.Context) {
        // 业务逻辑处理
    })
    
    r.Run(":8080")
}

多语言集成模式

考虑到他们使用Go、Python、Ruby和Elixir的混合技术栈,典型的集成模式:

// Go服务调用Python机器学习模型示例
package main

import (
    "bytes"
    "encoding/json"
    "net/http"
)

type CreditScoreRequest struct {
    BusinessID string  `json:"business_id"`
    Revenue    float64 `json:"revenue"`
    Expenses   float64 `json:"expenses"`
}

type CreditScoreResponse struct {
    Score    int     `json:"score"`
    Confidence float64 `json:"confidence"`
}

func CallPythonScoringModel(req CreditScoreRequest) (*CreditScoreResponse, error) {
    url := "http://python-scoring-service:8000/predict"
    
    jsonData, err := json.Marshal(req)
    if err != nil {
        return nil, err
    }
    
    resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    
    var result CreditScoreResponse
    err = json.NewDecoder(resp.Body).Decode(&result)
    return &result, err
}

// GraphQL API示例
type Resolver struct {
    db *gorm.DB
}

func (r *Resolver) Query() QueryResolver {
    return &queryResolver{r}
}

type queryResolver struct{ *Resolver }

func (r *queryResolver) GetBusinessFinancials(ctx context.Context, businessID string) (*FinancialData, error) {
    // 实现GraphQL查询
    var data FinancialData
    err := r.db.Where("business_id = ?", businessID).First(&data).Error
    return &data, err
}

Kubernetes部署配置

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nav-go-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nav-go-service
  template:
    metadata:
      labels:
        app: nav-go-service
    spec:
      containers:
      - name: go-service
        image: nav/go-service:latest
        ports:
        - containerPort: 8080
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: connection-string
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nav-go-service
spec:
  selector:
    app: nav-go-service
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer

数据库操作示例

// PostgreSQL操作示例
package repository

import (
    "context"
    "time"
    
    "gorm.io/gorm"
)

type BusinessRepository struct {
    db *gorm.DB
}

func (r *BusinessRepository) GetBusinessWithFinancials(ctx context.Context, businessID string) (*Business, error) {
    var business Business
    
    // 使用事务确保数据一致性
    err := r.db.Transaction(func(tx *gorm.DB) error {
        // 预加载关联数据
        err := tx.Preload("CreditReports").
            Preload("BankTransactions").
            Preload("LoanApplications").
            Where("id = ?", businessID).
            First(&business).Error
        
        if err != nil {
            return err
        }
        
        // 计算实时现金流
        cashFlow, err := r.calculateCashFlow(ctx, businessID)
        if err != nil {
            return err
        }
        
        business.CurrentCashFlow = cashFlow
        return nil
    })
    
    return &business, err
}

func (r *BusinessRepository) calculateCashFlow(ctx context.Context, businessID string) (float64, error) {
    var result struct {
        TotalIncome  float64
        TotalExpenses float64
    }
    
    // 使用原生SQL进行复杂计算
    err := r.db.WithContext(ctx).Raw(`
        SELECT 
            COALESCE(SUM(CASE WHEN type = 'income' THEN amount ELSE 0 END), 0) as total_income,
            COALESCE(SUM(CASE WHEN type = 'expense' THEN amount ELSE 0 END), 0) as total_expenses
        FROM transactions 
        WHERE business_id = ? 
        AND date >= ?`,
        businessID,
        time.Now().AddDate(0, -1, 0), // 最近30天
    ).Scan(&result).Error
    
    return result.TotalIncome - result.TotalExpenses, err
}

技术要点总结

  1. Go作为主要后端语言:需要熟练掌握Go的并发模型、标准库和常用框架(如Gin、Echo)
  2. 多语言架构:需要理解如何与Python、Ruby、Elixir服务进行集成
  3. 金融业务逻辑:涉及信用评分、贷款匹配、现金流计算等金融算法
  4. 云原生部署:Kubernetes、Docker、AWS的实践经验
  5. 数据密集型应用:PostgreSQL优化、大数据处理经验
  6. GraphQL API设计:前端使用React+GraphQL,需要设计高效的GraphQL接口

这个岗位的技术栈相当现代化,适合有Go语言经验并熟悉云原生架构的工程师。薪酬范围10万-17万美元在美国市场对于高级Go工程师来说是具有竞争力的。

回到顶部