招聘3年以内经验的Golang开发者

招聘3年以内经验的Golang开发者 你好,我们正在寻找Picnic Go开发人员

Picnic是一家位于硅谷、发展迅速且获得风险投资支持的初创公司。我们构建了一款移动社交应用程序,作为通往爱好、兴趣点和兴趣的入口——即“兴趣操作系统”。我们在两个月内用户增长超过一百万(比早期的Snapchat、YouTube或Music.ly [Tiktok] 发展更快),拥有比领先社交网络更佳的用户使用情况,并提供了一个积极影响一代人及未来社交方式的机会,塑造互联网,并为Z世代带来社区体验。我们已经完成了一轮融资,正在寻找有才华、技术过硬的软件工程师来领导我们的产品扩展和增长。

我们正在寻找各级别的Go开发人员,需要全职投入,帮助我们构建一个新的后端系统,该系统需具备扩展到数百万用户的潜力。 我们当前的传统后端运行在GCP和无服务器的Firebase上。然而,我们的重建工作需要具备Golang和Kubernetes的经验。

您将成为一个小型分布式开发团队(移动端 + 后端)的一员,并将获得团队其他成员的协助,并由我们的工程主管在整个过程中为您提供所需的任何指导。我们奖励高效产出,并欢迎任何反馈(技术或其他方面),以改善团队中每个人的工作环境。

我们希望尽快开始全职工作。我们提供极具竞争力的薪酬,并乐于满足任何薪酬形式的偏好。对于我们的远程工程师,我们还提供现金和股权安排的激励。

资格/职责包括:

对于高级职位,最好有几年的后端工程经验

○ 具备应用程序开发/支持经验

○ 具备云平台和分析工具经验

○ 重建和维护应用程序以支持1000万至1亿用户

必需的技术技能包括:

  • Golang
  • Docker
  • 了解CI/CD

推荐的技术技能包括:

  • 后端:Firebase, MongoDB, PostgresDB, Redis
  • 交互:gRPC, GraphQL, REST, Kafka
  • 基础设施:Docker, k8s, Google Cloud Platform

业务要求:

全职工作时间

寻求长期工作关系

不接受代理/开发工作室,仅限个人

如果您有兴趣,请通过以下方式联系我:giorgidalakishvili@picnic.zone

谢谢 此致


更多关于招聘3年以内经验的Golang开发者的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

好机会,你们考虑全职远程工作吗?

更多关于招聘3年以内经验的Golang开发者的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好 @Giorgi_Dalakishvili,我发送了关于这篇帖子的邮件,你能查收一下你的收件箱吗?

诚挚地,

你好,Andrew,职位招聘仍然有效… 你是否正好有三年工作经验? 如果是的话,我将很高兴地发送日历链接给你预约会议。

此致

没注意到帖子的日期,是吧? 😊

你好,Giorgi,

如果你还在寻找合适的人选,我对这个职位很感兴趣,因为你想做的事情正好在我的专业领域之内。

你可以通过 andrewjohnson.56782@gmail.com 联系我。

祝好,并祝你今天过得愉快。

Giorgi_Dalakishvili:

giorgidalakishvili@picnic.zone

你好, 希望你一切顺利。 我们是一家CMMI 3级公司,拥有650多名专业人员,以极具竞争力的价格为全球客户提供服务。 请开启对话,以便我们进一步讨论您当前的需求。 此外,您可以通过Skype联系我:cis.scott 或发送电子邮件至:scott@cisinlabs.com 很高兴能与您合作。 此致, Scott

根据招聘要求,这是一个专注于高并发后端系统重建的Go开发岗位。以下是针对技术要点的专业分析:

核心架构需求分析:

  1. 微服务架构:需要基于gRPC/GraphQL构建可扩展的微服务
  2. 容器化部署:必须掌握Docker镜像优化和Kubernetes编排
  3. 数据层设计:需要处理MongoDB分片和PostgreSQL读写分离

示例代码(用户服务原型):

package main

import (
    "context"
    "net/http"
    
    "github.com/gin-gonic/gin"
    "go.mongodb.org/mongo-driver/mongo"
    "google.golang.org/grpc"
)

// 用户服务gRPC接口
type UserServiceServer struct {
    db *mongo.Database
    redisClient *redis.Client
}

func (s *UserServiceServer) GetUser(ctx context.Context, req *pb.UserRequest) (*pb.UserResponse, error) {
    // MongoDB查询优化
    pipeline := mongo.Pipeline{
        {{"$match", bson.M{"user_id": req.Id}}},
        {{"$project", bson.M{
            "profile": 1,
            "stats": bson.M{"$slice": ["$activity", -100]}}}},
    }
    
    // Redis缓存层
    cacheKey := fmt.Sprintf("user:%s", req.Id)
    if data, err := s.redisClient.Get(ctx, cacheKey).Result(); err == nil {
        return parseCachedUser(data)
    }
    
    // 数据库查询
    cursor, err := s.db.Collection("users").Aggregate(ctx, pipeline)
    if err != nil {
        return nil, status.Error(codes.Internal, err.Error())
    }
    
    // 更新缓存
    s.redisClient.SetEx(ctx, cacheKey, serializedData, time.Hour)
    
    return &pb.UserResponse{User: user}, nil
}

// REST网关示例
func setupRouter() *gin.Engine {
    r := gin.Default()
    
    // 健康检查端点
    r.GET("/health", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "status": "healthy",
            "services": map[string]string{
                "mongodb": "connected",
                "redis": "connected",
            },
        })
    })
    
    // 用户API组
    v1 := r.Group("/api/v1")
    {
        v1.GET("/users/:id", getUserHandler)
        v1.POST("/users", createUserHandler)
    }
    
    return r
}

// Kubernetes就绪探针
func readinessProbe() bool {
    // 检查数据库连接
    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()
    
    if err := mongoClient.Ping(ctx, readpref.Primary()); err != nil {
        return false
    }
    
    // 检查Redis连接
    if _, err := redisClient.Ping(ctx).Result(); err != nil {
        return false
    }
    
    return true
}

CI/CD流水线关键点:

# .github/workflows/deploy.yml
name: Deploy to GKE
on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Run tests
        run: go test -race -coverprofile=coverage.out ./...
        
      - name: Build Docker image
        run: |
          docker build -t gcr.io/$PROJECT_ID/service:${{ github.sha }} .
          
      - name: Deploy to GKE
        env:
          KUBECONFIG: ${{ secrets.KUBECONFIG }}
        run: |
          kubectl set image deployment/user-service \
            user-service=gcr.io/$PROJECT_ID/service:${{ github.sha }}

性能优化建议:

  1. 使用sync.Pool减少GC压力
  2. 实现连接池管理数据库连接
  3. 采用Circuit Breaker模式处理服务降级
  4. 使用pprof进行性能剖析

监控集成:

import (
    "github.com/prometheus/client_golang/prometheus"
    "go.opentelemetry.io/otel"
)

var (
    requestsTotal = prometheus.NewCounterVec(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Total HTTP requests",
        },
        []string{"method", "endpoint"},
    )
    
    requestDuration = prometheus.NewHistogramVec(
        prometheus.HistogramOpts{
            Name: "http_request_duration_seconds",
            Help: "Request duration in seconds",
        },
        []string{"endpoint"},
    )
)

func instrumentedHandler(endpoint string, handler http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()
        
        // 记录追踪
        ctx, span := otel.Tracer("api").Start(r.Context(), endpoint)
        defer span.End()
        
        // Prometheus指标
        requestsTotal.WithLabelValues(r.Method, endpoint).Inc()
        timer := prometheus.NewTimer(requestDuration.WithLabelValues(endpoint))
        defer timer.ObserveDuration()
        
        handler(w, r.WithContext(ctx))
    }
}

这个岗位需要构建能够支撑千万级用户的系统,重点考察分布式系统设计能力和性能优化经验。代码示例展示了典型的高并发后端服务架构模式。

回到顶部