字节一面
![](http://39.101.72.240:8080/picture/circle.jpg)
20230928 字节一面 过
朝夕光年 游戏服务器开发
感觉还不错 面试官先介绍了一下所在的部门 然后说了一下面试的流程,没问八股 问完项目就是场景题
自我介绍
玩过哪些类型的游戏,以及游戏成就
- 如数家珍啊打了这么多年游戏终于派上用场了(bushi) >_>
- 移动端手游 闹闹天宫(6 国服)云顶之翼 皇室战争 荒野乱斗(开服玩家,3 国服)忍者必须死 3(超忍) 吃鸡 王者
- 主机 steam 只狼三周目 求生之路通关 饥荒通关 方舟生存进化游戏时长 100h
- 页游 4399 基本都玩过
- 问荒野乱斗现在还在玩吗? 还在玩
- 如数家珍啊打了这么多年游戏终于派上用场了(bushi) >_>
场景:给一个 class 文件 怎么在程序动态运行的时候获取字段以及方法
- 直接用自定义的类加载器 然后使用反射获取 字段 方法
场景:设计一个表 用于记录订单信息 订单更新频次很大 且订单只能保存 30 天
- 首先两阶段
- 考虑 MySQL 负载 使用 mq 进行削峰填谷
- 然后写一个 mysql 的存储过程 清表 使用 linux 定时命令调用存储过程
- 然后说不是定时清表,是删除 30 天的订单
- 使用 redis 记录订单号,设 ttl30 天,然后监听 key 失效,删除数据
- 然后说不是定时清表,是删除 30 天的订单
- 首先两阶段
场景:如何统计一个类中一个方法的调用次数
- aop 思想 使用自定义注解,标记在方法上,然后写通知 before 这个注解,计数
- 问如果使用的是库中不能修改的方法怎么办
- 动态代理,使用反射,重写 invoke() 使用 proxy.newInstance()传入 handler
- 解释一下代理
- 解释了静态代理,动态代理
- 解释一下代理
- 动态代理,使用反射,重写 invoke() 使用 proxy.newInstance()传入 handler
- 问如果使用的是库中不能修改的方法怎么办
- aop 思想 使用自定义注解,标记在方法上,然后写通知 before 这个注解,计数
如何理解线程安全和线程不安全,如何处理线程不安全
- 通过 jvm 结构的角度解释,如何处理:加锁
- 问知道哪些锁
- cas,syocize 从源码的角度解释这两个锁 ,顺便解释了一下轻量级锁,锁膨胀,偏向锁,锁自选 hhh 一锁多个面试用
- 问知道哪些锁
- 通过 jvm 结构的角度解释,如何处理:加锁
考了一个计网的,很多游戏是使用 tcp 或者 udp,请解释 tcp 粘包现象,如何解决,如何拆包
- 嘴贱说了一下 mc 是用 tcp 然后解释粘包 从停止等待 滑动窗口 接收端缓存队列角度解释粘包原因,如何避免?加消息边界
- 你刚刚说 mc 是用 tcp,你了解过 mc 源码,或者知道 mc 插件的源码或者框架吗,他们是怎么实现的
- mc 分成 java 版本和基岩版本,然后说了一个 mc 融合多模态的框架,讲了一下如何实现,这个刚好之前了解过,顺带扯了一下使用 github action 搭建 mc 服务器 白嫖算力 算比较巧了
反问