Golang后端软件工程师招聘 - 远程/纽约布鲁克林

Golang后端软件工程师招聘 - 远程/纽约布鲁克林

Civil Media Company

你好!Civil Media Company (civil.co) 正在寻找开发人员加入我们的工程团队。我们热衷于构建一个社区所有的市场,用于推广道德、独立的新闻业。我们的 Go 后端为我们当前和未来的产品提供动力,并与以太坊上的智能合约进行交互。

申请方式:

The Civil Media Company jobs

软件工程师 - 后端

在 Civil,我们热衷于构建一个社区所有的市场,用于推广道德、独立的新闻业。我们致力于开发能够维持新闻自由、文明对话和公共问责制的产品。如果你对这些价值观充满热情,并希望构建前沿的应用程序,我们正在寻找认真负责、具有团队合作精神的软件工程师加入我们世界一流的工程团队。

作为团队的一员,你的职责将是设计、实现、测试和维护我们的 API 和后台数据系统,这些系统为 Civil 的许多产品和服务提供支持。你将与你的工程师同事以及产品、运营和设计团队紧密合作,构建面向全球用户的消费者优先产品。在公司支持下,你将学习、成长并取得成功。

Civil 深信一种基于透明度、包容性和好奇心的文化。

要求

  • 约 3-6 年的团队软件工程师经验。
  • 精通设计、实现、测试和调试生产级代码。
  • 精通 Go。
  • 精通编写单元测试并在测试驱动环境中工作。
  • 精通 SCM/git 并通过代码审查和技术设计会议进行协作。
  • 了解关系型/SQL 数据库,如 PostgreSQL。
  • 熟练的书面和口头沟通能力。

以下是加分项,但绝对不是必需条件

  • 精通 TypeScript/NodeJS。
  • 了解以太坊和/或区块链技术。
  • 了解 Solidity 智能合约。
  • 有将生产应用程序部署到 Google Cloud(Kubernetes、PubSub 等)的经验。
  • 有 DevOps 和/或 SRE 经验。
  • 有在敏捷环境(Scrum/Sprints/Stories)中工作的经验。

我们是一家远程优先的公司,虽然我们的团队遍布全球,但我们的总部设在纽约布鲁克林。我们提供有竞争力的薪资、医疗/牙科/视力保险、灵活的休假政策、育儿假等。


更多关于Golang后端软件工程师招聘 - 远程/纽约布鲁克林的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

你好, 希望你一切顺利。

我想进一步讨论这个工作机会。 请通过我的电子邮件联系我:Vanessa@cisinlabs.com

期待你的回复。 此致, Vanessa

更多关于Golang后端软件工程师招聘 - 远程/纽约布鲁克林的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常典型的Go后端开发职位,对核心技能要求明确。从技术栈来看,这是一个典型的现代Go微服务架构岗位。

核心Go技术要求分析:

  1. 生产级Go代码能力 - 需要熟悉Go的最佳实践和并发模式
  2. 测试驱动开发 - 强调单元测试,这是Go社区非常重视的
  3. PostgreSQL数据库 - Go中常用的数据库驱动和ORM选择

示例代码 - 展示Go后端常见模式:

// 典型的API处理器示例
package main

import (
    "encoding/json"
    "log"
    "net/http"
    "github.com/jmoiron/sqlx"
    _ "github.com/lib/pq"
)

type Article struct {
    ID    int    `json:"id" db:"id"`
    Title string `json:"title" db:"title"`
    Body  string `json:"body" db:"body"`
}

type APIHandler struct {
    db *sqlx.DB
}

func (h *APIHandler) GetArticles(w http.ResponseWriter, r *http.Request) {
    var articles []Article
    err := h.db.Select(&articles, "SELECT id, title, body FROM articles WHERE published = true")
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
    
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(articles)
}

// 单元测试示例
func TestGetArticles(t *testing.T) {
    // 模拟数据库连接
    db, mock, err := sqlmock.New()
    if err != nil {
        t.Fatalf("failed to create mock: %v", err)
    }
    defer db.Close()
    
    rows := sqlmock.NewRows([]string{"id", "title", "body"}).
        AddRow(1, "Test Article", "Content here")
    
    mock.ExpectQuery("SELECT id, title, body FROM articles WHERE published = true").
        WillReturnRows(rows)
    
    handler := &APIHandler{db: sqlx.NewDb(db, "postgres")}
    
    req := httptest.NewRequest("GET", "/articles", nil)
    w := httptest.NewRecorder()
    
    handler.GetArticles(w, req)
    
    if w.Code != http.StatusOK {
        t.Errorf("expected status 200, got %d", w.Code)
    }
}

区块链集成考虑:

由于职位提到以太坊集成,Go开发者可能需要了解以下相关库:

// 以太坊客户端交互示例
import (
    "context"
    "github.com/ethereum/go-ethereum/ethclient"
    "github.com/ethereum/go-ethereum/common"
)

func GetBlockchainData() {
    client, err := ethclient.Dial("https://mainnet.infura.io/v3/YOUR_PROJECT_ID")
    if err != nil {
        log.Fatal(err)
    }
    
    address := common.HexToAddress("0x...")
    balance, err := client.BalanceAt(context.Background(), address, nil)
    if err != nil {
        log.Fatal(err)
    }
}

云部署相关:

职位要求Google Cloud和Kubernetes经验,典型的Go Dockerfile示例:

# 多阶段构建是Go部署的最佳实践
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]

这个职位对Go开发者的要求很全面,涵盖了从代码开发、测试到部署的完整生命周期。候选人需要展示在团队环境中编写可维护、可测试的Go代码的能力,特别是考虑到需要与区块链智能合约交互的特殊要求。

回到顶部