Golang开发工程师 - 金奈招聘岗位

Golang开发工程师 - 金奈招聘岗位 TalentPro India 招聘 Golang 开发人员。

摘要

此文本将被隐藏

项目概述:

TalentPro 的 HRMS 系统是一款先进且经过验证的软件,能够高效地管理时间、考勤和员工休假。从薪资到绩效评估,再到员工发展,TalentPro HRMS 管理着保持员工满意度所需的完整人力资源功能范围。

TalentPro 目前正在使用 Go 语言 / MongoDB 结合 Docker 容器编排 对现有的 HRMS / 薪资模块进行重构。

职位与职责:

  • 在开发团队中工作,使用 Golang、MongoDB 和 VueJs 进行集成开发。
  • 执行基于 Web 的应用程序和服务的设计与开发。
  • 与质量保证团队密切合作,确保交付高质量且可靠的 Web 应用程序。
  • 开发数据库,包括查询、文档、部署等。
  • 监控部署后阶段的应用程序性能,并在需要时进行必要的更改。
  • 与客户互动,定义项目特性和需求。
  • 及时解决应用程序缺陷和问题。
  • 与项目经理协作,确保项目按时交付。
  • 应具备 4 年以上设计和开发 Golang/Python Web 应用程序的经验。
  • 应具备良好的 Golang/Python 编程语言、MongoDB/SQL Server 经验。
  • 具备 Go 协程和通道模式、Go Web 框架的实践经验。
  • 具备 MongoDB/SQL Server 的实践经验。
  • 具备 AngularJs/VueJs/ReactJs 的实践经验。
  • 对 RESTful Web 服务 / Web API 有良好的了解。
  • 对 OOPS、HTML、XML、AJAX、JavaScript 和 JQuery 有良好的知识和经验。
  • 具备较强的分析能力和解决问题的态度。
  • 具备持续集成和持续部署经验。
  • 熟悉代码版本控制工具,如 Git、SVN 和 Mercurial。
  • 具备敏捷/Scrum 经验者优先。
  • 具备 HRMS 模块开发经验者优先。

Talentpro India

面向 HRMS 的 Go 开发人员 | Talentpro India

项目概述:TalentPro 的 HRMS 系统是一款先进且经过验证的软件,能够高效地管理时间、考勤和员工休假。从薪资到绩效评估,再到员工发展,TalentPro HRMS 管理着完整的…


更多关于Golang开发工程师 - 金奈招聘岗位的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

你好,

是否有可能进行远程工作?

更多关于Golang开发工程师 - 金奈招聘岗位的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,Rachel,

感谢你的快速回复和关注。我们目前正在寻找一位能在我们金奈办公室工作的合适人选。如果你有兴趣,请将你的简历发送至 Rosary.Shirley (Rosary.Shirley@talentproindia.com)

这是一个典型的Golang后端开发职位,主要技术栈为Go + MongoDB + Vue.js。以下是相关技术点的示例代码:

1. Go协程和通道模式示例:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for job := range jobs {
        fmt.Printf("Worker %d processing job %d\n", id, job)
        time.Sleep(time.Second)
        results <- job * 2
    }
}

func main() {
    jobs := make(chan int, 100)
    results := make(chan int, 100)
    
    // 启动3个worker协程
    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }
    
    // 发送任务
    for j := 1; j <= 9; j++ {
        jobs <- j
    }
    close(jobs)
    
    // 收集结果
    for a := 1; a <= 9; a++ {
        <-results
    }
}

2. Go Web框架(Gin)与MongoDB集成示例:

package main

import (
    "context"
    "log"
    "time"
    
    "github.com/gin-gonic/gin"
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

type Employee struct {
    ID        string    `json:"id" bson:"_id"`
    Name      string    `json:"name" bson:"name"`
    Department string   `json:"department" bson:"department"`
    CreatedAt time.Time `json:"created_at" bson:"created_at"`
}

var client *mongo.Client

func initMongoDB() {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    
    clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
    var err error
    client, err = mongo.Connect(ctx, clientOptions)
    if err != nil {
        log.Fatal(err)
    }
}

func getEmployees(c *gin.Context) {
    collection := client.Database("hrms").Collection("employees")
    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()
    
    cursor, err := collection.Find(ctx, bson.M{})
    if err != nil {
        c.JSON(500, gin.H{"error": err.Error()})
        return
    }
    defer cursor.Close(ctx)
    
    var employees []Employee
    if err = cursor.All(ctx, &employees); err != nil {
        c.JSON(500, gin.H{"error": err.Error()})
        return
    }
    
    c.JSON(200, employees)
}

func main() {
    initMongoDB()
    
    r := gin.Default()
    
    // RESTful API端点
    r.GET("/api/employees", getEmployees)
    r.POST("/api/employees", createEmployee)
    r.PUT("/api/employees/:id", updateEmployee)
    r.DELETE("/api/employees/:id", deleteEmployee)
    
    r.Run(":8080")
}

3. Docker容器化示例(Dockerfile):

# 使用官方Golang镜像
FROM golang:1.21-alpine AS builder

# 设置工作目录
WORKDIR /app

# 复制go.mod和go.sum文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 复制源代码
COPY . .

# 构建应用
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

# 使用轻量级镜像运行
FROM alpine:latest
RUN apk --no-cache add ca-certificates

WORKDIR /root/
COPY --from=builder /app/main .
COPY --from=builder /app/.env .

# 暴露端口
EXPOSE 8080

# 运行应用
CMD ["./main"]

4. RESTful API中间件示例:

func authMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        token := c.GetHeader("Authorization")
        if token == "" {
            c.JSON(401, gin.H{"error": "Authorization header required"})
            c.Abort()
            return
        }
        
        // 验证token逻辑
        isValid := validateToken(token)
        if !isValid {
            c.JSON(401, gin.H{"error": "Invalid token"})
            c.Abort()
            return
        }
        
        c.Next()
    }
}

// 在路由中使用中间件
func setupRoutes(r *gin.Engine) {
    api := r.Group("/api")
    api.Use(authMiddleware())
    {
        api.GET("/employees", getEmployees)
        api.POST("/employees", createEmployee)
    }
}

5. MongoDB聚合查询示例(用于HRMS报表):

func getDepartmentStats(c *gin.Context) {
    collection := client.Database("hrms").Collection("employees")
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    
    pipeline := mongo.Pipeline{
        bson.D{{"$group", bson.D{
            {"_id", "$department"},
            {"totalEmployees", bson.D{{"$sum", 1}}},
            {"averageSalary", bson.D{{"$avg", "$salary"}}},
        }}},
        bson.D{{"$sort", bson.D{{"totalEmployees", -1}}}},
    }
    
    cursor, err := collection.Aggregate(ctx, pipeline)
    if err != nil {
        c.JSON(500, gin.H{"error": err.Error()})
        return
    }
    defer cursor.Close(ctx)
    
    var results []bson.M
    if err = cursor.All(ctx, &results); err != nil {
        c.JSON(500, gin.H{"error": err.Error()})
        return
    }
    
    c.JSON(200, results)
}

这些示例展示了该职位要求的技术栈在实际HRMS系统开发中的应用,包括并发处理、数据库操作、API设计和容器化部署。

回到顶部