常见场景题3(面试)

设计一个接口需要考虑什么

  1. 入参合法性校验。参数范围是否合理,参数类型是否正确等
  2. 接口考虑幂等性重复调用的结果和单次调用的结果一致
  3. 减少接口的响应时间。如数据库加索引。添加redis 缓存
  4. 选择合适的接口请求日志不同接口设置不同的日志级别
  5. 统一响应数据格式 。需要返回统一格式的响应体,响应数据会包含三个属性: 状态码(code),信息描述(message),响应数据(data)
  6. 接口单一职责

如何保证接口安全

  1. 使用https协议
  2. 参数校验。参数范围是否合理,参数类型是否正确等
  3. 统一封装返回值 。需要返回统一格式的响应体,响应数据会包含三个属性: 状态码(code),信息描述(message),响应数据(data)
  4. 区分不同的访问形式。比如是否登录,账号是普通账号还是会员账号,或者管理员账号
  5. 加验证码
  6. 限制访问频率。比如发送短信后,60秒后才能再次发送

慢接口如何排查

线上接口过慢,原因有以下三点:

1.内存使用过高,频繁gc导致cpu占满

2.内存使用不高,但出现了类似死循环的场景

3.死锁。

  1. 使用 top -c指令找到负载高的进程id
  2. top -Hp X指令查看该进程的线程id的CPU负载情况,找到CPU负载高的线程id
  3. 使用jstack命令查看该线程的堆栈信息
  4. 根据堆栈信息找到代码中哪个类的第几行出现了问题
相关推荐
哈里谢顿15 小时前
0305乒乓xx agent运维开发岗面试记录
面试
哈里谢顿15 小时前
0309面试二总结
面试
哈里谢顿16 小时前
0309面试一记录
面试
哈里谢顿16 小时前
0310面试二记录
面试
哈里谢顿16 小时前
0310面试记录一
面试
boooooooom19 小时前
讲清 Proxy + effect + track/trigger 流程
javascript·vue.js·面试
架构师沉默19 小时前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
豆苗学前端19 小时前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
zone773920 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
swipe20 小时前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试