WIN Reality招聘全栈工程师(Golang开发方向 - 奥斯汀)
WIN Reality招聘全栈工程师(Golang开发方向 - 奥斯汀) WIN Reality 的产品工程团队现有一个令人兴奋的全职机会!
WIN Reality 工程团队致力于为 WIN Reality 客户开发、交付和维护核心在线服务及 Web 应用程序。工程团队构建面向客户的动态 Web 应用程序、内部数据工具,以及跨产品和服务使用的核心网络 API。
WIN Reality 开发技术栈:
Web 前端:Vue.js,Bulma CSS 和 Buefy UI 组件,使用 skypack 的 ES 模块
Web 应用服务器:使用 Go 构建,采用 Go 模板
Web API:使用 Go 构建,采用 HTTP RESTful 设计,返回 JSON 响应
数据库:MariaDB(由 AWS RDS 托管),Redis(由 AWS ElastiCache 托管),Redshift
监控:Cloudwatch
基础设施:AWS(基于 ECS + ECR 的部署),SQS,SNS
开发与交付:Gitlab,git 仓库,问题追踪,使用 CodeBuild + CodePipeline 实现 CI/CD
必备技能:
- 拥有 3 年以上专业经验,从事从用户界面到数据库的全栈 Web 应用程序开发。
- 至少熟练掌握一种服务器端编程语言,并能提供证明。
优先技能:
- 在生产服务器应用程序中使用过 Go
- 云基础设施 DevOps
- 对 HTTP API 开发和设计有扎实的理解
- 有前端 Web 应用程序框架经验
- 有 Web 开发和设计经验
- 有容器化工作负载经验
- 有使用关系型数据库的经验
我们期望的品质:
- 能够在正确性和实用性之间取得平衡。
- 具备自我导向工作的能力
- 能够考虑产品需求,并预见客户需求和用户体验。
- 对构建软件系统的技艺充满热情。
- 理解通过口头和代码性能进行清晰沟通的重要性
此职位当前的重点工作:
- 构建功能和流水线,通过我们的在线仪表盘向客户提供性能洞察。
- 改进新用户体验,让他们能尽可能快速、轻松地进入 VR 并开始技能训练。
- 创建能对产品价值产生超比例影响的功能。
- 开发工具以帮助我们的团队应对不断增长的用户群。
- 通过系统监控、报告和通用的故障恢复能力,确保我们的基础设施持续可靠运行并优雅演进。
- 启用新的数据分析系统,并向客户提供准确的实时指标。
- 通过审查合并请求、增加测试覆盖率、修订文档和简化开发流水线,帮助提高代码质量。
WIN Reality 提供:
- 有竞争力的基本工资、福利(健康/牙科/视力)、丰厚的带薪休假、带薪假期,以及俯瞰奥斯汀湖并配有现场健身中心的优美办公空间。
- WIN Reality 致力于营造一个有趣且充满活力的文化氛围,力求做到最好。
如有兴趣,请直接与我联系 matt.winters@winreality.com
Matt Winters 人才主管

Win Reality | Virtual Reality Baseball & Softball Training
WIN Reality 是排名第一的虚拟现实棒球和垒球训练项目。真实的投球,真实的反馈,真实的效果。亲自体验 WIN Reality。
更多关于WIN Reality招聘全栈工程师(Golang开发方向 - 奥斯汀)的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于WIN Reality招聘全栈工程师(Golang开发方向 - 奥斯汀)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
从技术栈来看,这是一个典型的Go全栈岗位,结合了Vue.js前端和Go后端。以下是一些Go相关的技术实现示例,符合该职位描述中的API开发和服务器构建要求:
1. RESTful API示例(使用标准库)
package main
import (
"encoding/json"
"net/http"
"github.com/go-chi/chi/v5"
)
type PerformanceMetrics struct {
UserID string `json:"user_id"`
BattingAvg float64 `json:"batting_average"`
ExitVelocity float64 `json:"exit_velocity"`
}
func main() {
r := chi.NewRouter()
// 对应职位描述中的"向客户提供性能洞察"
r.Get("/api/users/{id}/metrics", func(w http.ResponseWriter, r *http.Request) {
userID := chi.URLParam(r, "id")
metrics := PerformanceMetrics{
UserID: userID,
BattingAvg: 0.327,
ExitVelocity: 92.4,
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(metrics)
})
// 对应"改进新用户体验"的数据端点
r.Post("/api/onboarding", func(w http.ResponseWriter, r *http.Request) {
var onboardingData map[string]interface{}
json.NewDecoder(r.Body).Decode(&onboardingData)
// 处理用户引导数据
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(map[string]string{
"status": "onboarding_complete",
"next_step": "vr_training",
})
})
http.ListenAndServe(":8080", r)
}
2. Go模板服务器示例(对应Web应用服务器)
package main
import (
"html/template"
"net/http"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
// 使用Go模板渲染仪表盘页面
r.Get("/dashboard", func(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles(
"templates/layout.html",
"templates/dashboard.html",
))
data := struct {
Title string
UserName string
Metrics []PerformanceMetric
}{
Title: "Performance Dashboard",
UserName: "Player123",
Metrics: getPerformanceData(),
}
tmpl.ExecuteTemplate(w, "layout", data)
})
http.ListenAndServe(":8080", r)
}
type PerformanceMetric struct {
Date string
Value float64
Category string
}
3. 数据库操作示例(MariaDB)
package main
import (
"database/sql"
"log"
_ "github.com/go-sql-driver/mysql"
)
type UserSession struct {
ID string
Duration int
Timestamp string
}
func saveTrainingSession(db *sql.DB, session UserSession) error {
// 对应"启用新的数据分析系统"需求
query := `
INSERT INTO training_sessions
(user_id, duration_seconds, session_timestamp)
VALUES (?, ?, ?)
`
_, err := db.Exec(query,
session.ID,
session.Duration,
session.Timestamp,
)
return err
}
func getRealTimeMetrics(db *sql.DB, userID string) (map[string]interface{}, error) {
// 对应"提供准确的实时指标"
query := `
SELECT
AVG(exit_velocity) as avg_velocity,
COUNT(*) as total_sessions,
MAX(session_timestamp) as last_training
FROM training_sessions
WHERE user_id = ?
AND session_timestamp > DATE_SUB(NOW(), INTERVAL 7 DAY)
`
var metrics struct {
AvgVelocity float64
TotalSessions int
LastTraining string
}
err := db.QueryRow(query, userID).Scan(
&metrics.AvgVelocity,
&metrics.TotalSessions,
&metrics.LastTraining,
)
result := map[string]interface{}{
"weekly_avg_velocity": metrics.AvgVelocity,
"weekly_sessions": metrics.TotalSessions,
"last_training": metrics.LastTraining,
}
return result, err
}
4. 监控和健康检查端点
package main
import (
"net/http"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var (
requestsTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total HTTP requests",
},
[]string{"path", "method"},
)
requestDuration = prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Name: "http_request_duration_seconds",
Help: "HTTP request duration",
},
[]string{"path"},
)
)
func init() {
prometheus.MustRegister(requestsTotal)
prometheus.MustRegister(requestDuration)
}
func monitoringMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
// 记录请求指标
requestsTotal.WithLabelValues(r.URL.Path, r.Method).Inc()
next.ServeHTTP(w, r)
duration := time.Since(start).Seconds()
requestDuration.WithLabelValues(r.URL.Path).Observe(duration)
})
}
func main() {
r := chi.NewRouter()
r.Use(monitoringMiddleware)
// CloudWatch/Prometheus指标端点
r.Handle("/metrics", promhttp.Handler())
// 健康检查端点(对应基础设施监控)
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
// 检查数据库连接、Redis连接等
healthStatus := map[string]interface{}{
"status": "healthy",
"timestamp": time.Now().UTC(),
"services": map[string]string{
"database": "connected",
"redis": "connected",
"api": "operational",
},
}
json.NewEncoder(w).Encode(healthStatus)
})
http.ListenAndServe(":8080", r)
}
这些示例展示了如何实现职位描述中提到的核心功能:性能指标API、用户仪表盘、实时数据系统、监控和健康检查。技术栈选择上使用了chi路由(轻量级且符合Go习惯)、标准库模板、MariaDB驱动和Prometheus监控,这些都与AWS ECS容器化部署和RESTful API设计需求相匹配。

