51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计一个API接口,用于海事企业发布招聘信息。接口需支持参数校验(如必填字段:企业名称、职位名称、技能要求)、权限控制(仅企业认证用户可发布)、响应格式(JSON)。请说明接口的请求/响应结构,以及如何处理异常情况(如参数错误、权限不足)。

大连海事就业沃尔沃生产储备人才(实习生)难度:中等

答案

1) 【一句话结论】设计一个符合要求的招聘信息发布API,需包含请求参数校验(必填字段、技能要求正则验证)、权限控制(仅企业认证用户,通过JWT验证企业状态)、JSON响应格式,并处理参数错误(400状态码,具体错误字段)和权限不足(403状态码,认证状态提示)等异常。

2) 【原理/概念讲解】老师口吻解释关键点:
API接口设计需明确请求方法(POST)、URL路径(如/api/v1/jobs)、请求参数(企业名称、职位名称等必填字段)、响应结构(状态码、消息、数据/错误详情)。

  • 参数校验:通过工具(如Joi)验证必填字段非空(企业名称、职位名称),技能要求为有效数组(非空字符串,符合技能名称格式)。
  • 权限控制:使用JWT令牌验证用户身份,仅企业认证用户(令牌中企业ID匹配且企业状态为“认证”)可发布招聘。
  • 响应格式:统一为JSON,包含状态码(200/400/403)、消息(成功/错误提示)、数据(成功时返回jobId)或错误详情(失败时返回具体错误字段)。
    类比:就像填写招聘信息表单,必须填完必填项(企业名称、职位名称)才能提交,提交前检查(参数校验),只有授权的企业用户能提交(权限控制),提交后给出结果(成功或失败,JSON响应)。

3) 【对比与适用场景】

对比项参数校验工具(Joi)权限控制方案(JWT)
定义验证请求参数合法性验证用户身份与权限
特性支持复杂规则(正则、数组)、错误提示基于令牌验证,轻量,适合单点登录
使用场景API参数验证(必填、格式检查)用户认证(企业用户登录后发布招聘)
注意点需配置验证规则,避免过度复杂令牌过期处理,防止未授权访问

4) 【示例】

  • 请求示例(POST /api/v1/jobs,JSON参数):
    {
      "enterpriseName": "大连海事集团",
      "positionName": "船舶工程师",
      "skillRequirements": ["船舶设计", "CAD", "英语C1"],
      "location": "大连",
      "salary": "8000-15000",
      "description": "负责船舶设计及维护..."
    }
    
  • 成功响应:
    {
      "code": 200,
      "message": "招聘信息发布成功",
      "data": {
        "jobId": "job_12345",
        "status": "published"
      }
    }
    
  • 参数错误响应(企业名称为空):
    {
      "code": 400,
      "message": "企业名称不能为空",
      "errors": {
        "enterpriseName": "企业名称是必填字段"
      }
    }
    
  • 权限不足响应(非认证用户):
    {
      "code": 403,
      "message": "无发布招聘信息的权限",
      "errors": {
        "permission": "仅企业认证用户可发布"
      }
    }
    

5) 【面试口播版答案】
面试官您好,针对海事企业发布招聘信息的API设计,核心是确保数据完整、权限安全、响应规范。接口采用POST方法,路径为/api/v1/jobs,请求参数包含企业名称、职位名称等必填字段。参数校验方面,通过Joi工具验证必填字段非空,技能要求为有效数组(非空字符串,如“船舶设计”);权限控制使用JWT令牌,验证用户是否为企业认证用户(令牌中的企业ID匹配且企业状态为“认证”);响应统一为JSON,包含状态码、消息、数据或错误信息。异常处理上,参数错误返回400(如企业名称为空),权限不足返回403(非认证用户),成功返回200(带jobId)。具体来说,请求示例是POST /api/v1/jobs,参数如企业名称、职位名称等,响应成功时返回jobId,失败时返回具体错误信息。这样既满足功能需求,又保证安全性和易用性。

6) 【追问清单】

  • 问:参数校验的具体规则,比如技能要求是否需要正则验证?
    回答要点:技能要求验证为非空数组,元素为字符串,且符合技能名称格式(如“船舶设计”),使用正则表达式过滤无效字符(如数字、特殊符号,如/^[a-zA-Z0-9一-龥]+$/)。
  • 问:权限控制的具体实现,比如JWT令牌如何验证?
    回答要点:用户登录后生成包含企业ID的JWT,发布招聘时验证令牌中的企业ID是否匹配,且通过数据库查询企业表状态(如“active”或“认证”),若状态不符则返回403。
  • 问:异常处理中,参数错误和权限不足的响应差异,如何区分?
    回答要点:状态码不同(400 vs 403),错误消息不同(必填字段 vs 权限不足),错误字段不同(参数字段 vs 权限字段),便于前端区分错误类型。
  • 问:数据加密传输是否考虑?
    回答要点:使用HTTPS协议加密传输,确保数据安全,防止中间人攻击(敏感信息如企业名称、技能要求通过加密传输)。

7) 【常见坑/雷区】

  • 忽略必填字段验证:导致无效数据进入系统,影响招聘信息质量。
  • 权限控制不严格:非认证用户也能发布招聘,违反业务规则。
  • 响应格式不一致:前端解析困难,导致错误。
  • 异常处理不明确:错误信息不具体,难以排查问题。
  • 参数校验规则复杂:导致验证逻辑混乱,维护困难。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1