Aspiration招聘2个Golang后端开发职位,年薪14-18万美元

Aspiration招聘2个Golang后端开发职位,年薪14-18万美元 大家好!我是Aspiration公司的技术招聘人员(一家C轮融资、具有环保意识的金融科技银行公司,我们已筹集了超过5.5亿美元的资金),我们正在寻找一些优秀的Go工程师!我们目前有两个大型项目正在进行中,一个是将我们的代码库从Java迁移到Go。另一个是一批新的微服务,同样使用Go。我们目前正在招聘两个不同的远程职位。

我们在美国招聘,并且可以为居住在美国的优秀候选人提供H1B签证赞助/续签。Aspiration目前约有350名员工,并计划在年底前达到500人以上。该职位是全职的,我们目前不招聘合同工。以下是职位的详细信息以及Lever职位描述链接。如有任何问题,欢迎随时私信我(我将进行第一轮面试),或者使用我的Calendly链接以加快流程。谢谢!

薪酬基于经验: 高级工程师:14万-18万美元基本工资 + 股权;技术主管:灵活(通常为18万-22万美元基本工资 + 股权)

开放职位:

  • 高级后端工程师 - 拥有6年以上为后端框架编写代码的经验。强烈偏好Golang(具有Java、Ruby、Python等经验的Go开发者也可以)。具备SQL代码经验并理解REST API。
  • 技术主管软件工程师 - 拥有5年以上使用Golang、Java、Python等核心语言编码的经验。拥有1年以上的人员或项目领导经验。

更多关于Aspiration招聘2个Golang后端开发职位,年薪14-18万美元的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Aspiration招聘2个Golang后端开发职位,年薪14-18万美元的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


作为Go语言开发者,看到这样的招聘信息很令人兴奋。Aspiration的这两个职位对Go技术栈有明确需求,尤其是从Java迁移到Go的项目,这对熟悉Go高性能和并发特性的工程师来说是个很好的机会。以下从技术角度分析这两个职位可能涉及的Go开发内容:

1. 从Java迁移到Go的技术考量 迁移项目通常需要处理以下Go代码示例:

// 示例:替代Java Spring Boot的REST API服务
package main

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

type AccountHandler struct {
    DB *gorm.DB
}

// 类似Java的@GetMapping
func (h *AccountHandler) GetAccount(c *gin.Context) {
    id := c.Param("id")
    var account Account
    result := h.DB.First(&account, id)
    if result.Error != nil {
        c.JSON(http.StatusNotFound, gin.H{"error": "Account not found"})
        return
    }
    c.JSON(http.StatusOK, account)
}

// 依赖注入模式(类似Java的@Autowired)
func NewAccountHandler(db *gorm.DB) *AccountHandler {
    return &AccountHandler{DB: db}
}

2. 微服务开发中的Go最佳实践 新微服务项目可能涉及:

// 示例:使用Go标准库的并发模式
package main

import (
    "context"
    "sync"
    "time"
)

type ServiceCoordinator struct {
    services map[string]Service
    mu       sync.RWMutex
}

func (sc *ServiceCoordinator) ProcessBatch(ctx context.Context, requests []Request) []Response {
    var wg sync.WaitGroup
    responses := make([]Response, len(requests))
    
    for i, req := range requests {
        wg.Add(1)
        go func(idx int, r Request) {
            defer wg.Done()
            
            // 上下文超时控制
            ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
            defer cancel()
            
            responses[idx] = sc.processSingle(ctx, r)
        }(i, req)
    }
    
    wg.Wait()
    return responses
}

// 接口设计(类似Java的Interface)
type Service interface {
    Execute(ctx context.Context, input interface{}) (interface{}, error)
    HealthCheck() bool
}

3. 数据库操作优化 SQL经验在Go中的体现:

// 示例:使用GORM进行复杂查询
package main

import (
    "gorm.io/gorm"
    "gorm.io/gorm/clause"
)

type FinancialRepository struct {
    db *gorm.DB
}

func (r *FinancialRepository) GetTransactionsWithAnalytics(userID uint, filters TransactionFilters) ([]TransactionWithAnalytics, error) {
    var results []TransactionWithAnalytics
    
    query := r.db.Table("transactions t").
        Select(`
            t.*,
            a.balance,
            COALESCE(SUM(t.amount) OVER(PARTITION BY t.category), 0) as category_total
        `).
        Joins("LEFT JOIN accounts a ON t.account_id = a.id").
        Where("t.user_id = ?", userID)
    
    // 动态过滤条件
    if filters.StartDate != nil {
        query = query.Where("t.created_at >= ?", filters.StartDate)
    }
    
    // 预加载关联数据
    err := query.Preload(clause.Associations).
        Find(&results).Error
    
    return results, err
}

4. 技术主管需要的架构设计能力 技术主管职位可能涉及的系统设计:

// 示例:微服务通信层设计
package main

import (
    "context"
    "github.com/redis/go-redis/v9"
    "go.uber.org/zap"
)

type ServiceRegistry struct {
    redisClient *redis.Client
    logger      *zap.Logger
    services    sync.Map // concurrent map
}

func (sr *ServiceRegistry) RegisterService(ctx context.Context, service ServiceInfo) error {
    // 服务注册逻辑
    key := fmt.Sprintf("service:%s:%s", service.Name, service.ID)
    
    err := sr.redisClient.HSet(ctx, key, map[string]interface{}{
        "endpoint": service.Endpoint,
        "version":  service.Version,
        "status":   "healthy",
        "last_ping": time.Now().Unix(),
    }).Err()
    
    if err != nil {
        sr.logger.Error("Failed to register service", 
            zap.Error(err),
            zap.String("service", service.Name))
        return err
    }
    
    // 设置过期时间
    sr.redisClient.Expire(ctx, key, 30*time.Second)
    sr.services.Store(service.ID, service)
    
    return nil
}

5. 性能关键代码示例 金融科技系统需要的性能优化:

// 示例:使用sync.Pool减少GC压力
package main

import (
    "sync"
    "encoding/json"
)

var transactionPool = sync.Pool{
    New: func() interface{} {
        return &Transaction{
            Metadata: make(map[string]string, 4),
        }
    },
}

func ProcessTransaction(data []byte) (*Transaction, error) {
    // 从对象池获取,避免频繁分配
    tx := transactionPool.Get().(*Transaction)
    defer transactionPool.Put(tx)
    
    // 重置对象状态
    for k := range tx.Metadata {
        delete(tx.Metadata, k)
    }
    
    // 解析JSON
    if err := json.Unmarshal(data, tx); err != nil {
        return nil, err
    }
    
    return tx, nil
}

这些代码示例展示了Go在金融科技后端开发中的实际应用,包括并发处理、数据库操作、微服务架构和性能优化等方面。对于从Java迁移的项目,特别需要注意Go的接口设计、错误处理模式(返回error而非异常)和并发原语(goroutine/channel)与Java的差异。

回到顶部