20230928 字节一面 过

朝夕光年 游戏服务器开发
感觉还不错 面试官先介绍了一下所在的部门 然后说了一下面试的流程,没问八股 问完项目就是场景题

  1. 自我介绍

  2. 玩过哪些类型的游戏,以及游戏成就

    1. 如数家珍啊打了这么多年游戏终于派上用场了(bushi) >_>
      1. 移动端手游 闹闹天宫(6 国服)云顶之翼 皇室战争 荒野乱斗(开服玩家,3 国服)忍者必须死 3(超忍) 吃鸡 王者
      2. 主机 steam 只狼三周目 求生之路通关 饥荒通关 方舟生存进化游戏时长 100h
      3. 页游 4399 基本都玩过
        1. 问荒野乱斗现在还在玩吗? 还在玩
  3. 场景:给一个 class 文件 怎么在程序动态运行的时候获取字段以及方法

    1. 直接用自定义的类加载器 然后使用反射获取 字段 方法
  4. 场景:设计一个表 用于记录订单信息 订单更新频次很大 且订单只能保存 30 天

    1. 首先两阶段
      1. 考虑 MySQL 负载 使用 mq 进行削峰填谷
      2. 然后写一个 mysql 的存储过程 清表 使用 linux 定时命令调用存储过程
        1. 然后说不是定时清表,是删除 30 天的订单
          1. 使用 redis 记录订单号,设 ttl30 天,然后监听 key 失效,删除数据
  5. 场景:如何统计一个类中一个方法的调用次数

    1. aop 思想 使用自定义注解,标记在方法上,然后写通知 before 这个注解,计数
      1. 问如果使用的是库中不能修改的方法怎么办
        1. 动态代理,使用反射,重写 invoke() 使用 proxy.newInstance()传入 handler
          1. 解释一下代理
            1. 解释了静态代理,动态代理
  6. 如何理解线程安全和线程不安全,如何处理线程不安全

    1. 通过 jvm 结构的角度解释,如何处理:加锁
      1. 问知道哪些锁
        1. cas,syocize 从源码的角度解释这两个锁 ,顺便解释了一下轻量级锁,锁膨胀,偏向锁,锁自选 hhh 一锁多个面试用
  7. 考了一个计网的,很多游戏是使用 tcp 或者 udp,请解释 tcp 粘包现象,如何解决,如何拆包

    1. 嘴贱说了一下 mc 是用 tcp 然后解释粘包 从停止等待 滑动窗口 接收端缓存队列角度解释粘包原因,如何避免?加消息边界
    2. 你刚刚说 mc 是用 tcp,你了解过 mc 源码,或者知道 mc 插件的源码或者框架吗,他们是怎么实现的
      1. mc 分成 java 版本和基岩版本,然后说了一个 mc 融合多模态的框架,讲了一下如何实现,这个刚好之前了解过,顺带扯了一下使用 github action 搭建 mc 服务器 白嫖算力 算比较巧了

反问