首页 > 网易互娱java工程师一、二面面经
头像
Luaf
编辑于 2021-08-15 13:31
+ 关注

网易互娱java工程师一、二面面经

一面:
两个小哥哥特别和蔼(阿不是),全程劝我不要紧张,但是我好紧张...
上来先介绍面试流程
1. 自我介绍,项目介绍,毕设论文介绍
2. 两道题
1)删除链表重复元素
2)对称二叉树判断
3. 发了论文所以有论文的介绍
4. 基础知识:
1)广度优先遍历和深度优先遍历
2)数据库,mysql和redis,其他关系型数据库了解
3)计算机网络端口号
4)多线程,并发,锁,说一个场景说说联系
5)翻页怎么实现
6)类加载,类加载器
5. 开放题目
1)异步场景考虑情况,生产者消费者模式
2)预测下雨
3)设计一个排行榜存储,前100全服展示,100后仅自己可见,实时更新
redis  sorted set
问了一下java是今年校招新开的,听起来主要是开发一些内部平台
许愿二面QAQ

二面:
1. 自我介绍
2. 介绍科研,论文
3. 介绍实习做了啥
4. 介绍在校项目
5. 消息队列对比
6. redis选择
7. 遇到最大困难,怎么解决
8. 系统设计:
1)设计定时任务管理平台

当时答出来了使用DelayQueue,但是面试官问如果有需要紧急执行的定时任务要怎么办,这个没答出来

总结一下上面文章:
  • 如果当前待运行的定时任务属于耗时长一点,任务量也不是那么大的时候,可以采用 ScheduledExecutorService 的方式来实现。
  • 如果任务量比较大,任务耗时短,无疑使用 HashedWheelTimer 对内存更加友好。
a)录入模块实现
  • 提供业务系统可集成 jar 包,由开发人员编码录入任务。
  • 提供管理后台界面,提供可配置方式录入任务。
b) 调度模块实现
  • 解析时间表达式为时间点,周期性任务的下一个可执行时间点在上一个任务执行时计算。
  • 将可执行时间点送入调度器中,让时间流动起来。
如果任务密度不是很大,多为固定的定期执行任务,小根堆算法就可以胜任;如果任务密集,很多短期快速执行的任务,可以采用时间轮的方式提高效率。
c) 任务执行模块
把每个任务都封装为一个对象 Job,所有的 Job 都在内存中加载,调度器定义为 Scheduler,把每个可执行时间封装为 Trigger 对象.

Trigger 用于定义调度任务的事件规则,唯一关联一个 Job 并标识当前 Job 的执行状态。

d)高可用情况
- 传统数据库独占锁
- 分布式锁 临时节点性质,同一个任务注册一个唯一的节点,哪个机器抢到这个节点谁就来执行任务即可

e) 容错机制(重试,故障转移,手动开启),任务分片
2)设计客户端性能监控平台

9. 平时玩什么游戏,游戏外的一些思考

感觉系统设计题答的很尴尬...

许愿能过QAQ

更多模拟面试

全部评论

(4) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐