面试问题汇总

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

微服务

  • 怎么理解微服务
  • 微服务的缺点
  • 对比微服务和传统服务的优缺点
  • 微服务之间怎么做负载均衡

反问

  • 业务,开发语言,表现,对应届生的要求(重点是基础和算法)
  • 部门怎样培养新人,刚进来做什么(学基础,语言和中间件,做 demo),大概多久做需求(1 周到 1 个月不等,看学习情况),框架和中间件以开源的为主还是以自研的为主(自研的)
  • 这轮面试通过后还有面试吗,新人入职有培训吗,技术氛围怎么样

场景

鉴权

  • Oauth2 基本流程、原理
  • 登录模块是怎么做的
详情

JWT 由三部分组成,如Header.Payload.Signature

  • Header:头部,通常由两部分组成,令牌的类型(即 JWT)和所使用的加密算法(如 HMAC SHA256 或 RSA)。
  • Payload:负载,包含声明,如用户信息、权限等。
  • Signature:签名,由头部、负载和密钥生成,用于验证令牌是否被篡改。

通常说的 JWT 是没有第三方安全保障的,只是一个编码的字符串,可以通过 base64 解码得到明文信息。 常用的是 JWS(JSON Web Signature),通过 HMAC SHA256 或 RSA 等算法生成签名,用于验证令牌是否被篡改。

mermaid
graph LR
    A[Header] --> |Base64| A1[encodeHeader]
    B[Payload] --> |Base64| B1[encodeClaims]
    A1 --> C[Concatenated]
    B1 --> C
    C --> D[SecretKey]
    D --> |HMAC/SHA256| E[Signature]
    E -->|SecretKey| F((Verify))
plaintext
{
  "alg": "HS256",
  "typ": "JWT"
}
plaintext
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}
plaintext
HMACSHA256(
  base64UrlEncode(Header) + "." +
  base64UrlEncode(Payload),
  Secret
)
详情
特点JWTCookie + Session
存储位置客户端(通常在 LocalStorage)服务端存储 Session 数据
状态管理无状态(Stateless)有状态(Stateful)
扩展性更好,适合分布式系统依赖服务器的内存或数据库
安全性容易被拦截,需要配合 HTTPS 使用SessionID 可泄露,容易被劫持
性能不需要查询数据库即可验证需要数据库或 Redis 查询验证
注销和撤销无法立即撤销,需要等待过期可直接删除 Session

云存储

详情

OSS(Object Storage Service),对象存储服务。对于非结构性文件,OSS 比本地存储更加可靠,更加经济。

详情

Netty

  • Netty 为什么高性能?
Common Resources for Materials Calculation