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
更多关于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
}
技术要点总结
- Go作为主要后端语言:需要熟练掌握Go的并发模型、标准库和常用框架(如Gin、Echo)
- 多语言架构:需要理解如何与Python、Ruby、Elixir服务进行集成
- 金融业务逻辑:涉及信用评分、贷款匹配、现金流计算等金融算法
- 云原生部署:Kubernetes、Docker、AWS的实践经验
- 数据密集型应用:PostgreSQL优化、大数据处理经验
- GraphQL API设计:前端使用React+GraphQL,需要设计高效的GraphQL接口
这个岗位的技术栈相当现代化,适合有Go语言经验并熟悉云原生架构的工程师。薪酬范围10万-17万美元在美国市场对于高级Go工程师来说是具有竞争力的。

