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万美元基本工资 + 股权)
开放职位:
更多关于Aspiration招聘2个Golang后端开发职位,年薪14-18万美元的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于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的差异。

