一面:
两个小哥哥特别和蔼(阿不是),全程劝我不要紧张,但是我好紧张...
上来先介绍面试流程
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 对内存更加友好。
- 提供业务系统可集成 jar 包,由开发人员编码录入任务。
- 提供管理后台界面,提供可配置方式录入任务。
- 解析时间表达式为时间点,周期性任务的下一个可执行时间点在上一个任务执行时计算。
- 将可执行时间点送入调度器中,让时间流动起来。
c) 任务执行模块
把每个任务都封装为一个对象 Job,所有的 Job 都在内存中加载,调度器定义为 Scheduler,把每个可执行时间封装为 Trigger 对象.
Trigger 用于定义调度任务的事件规则,唯一关联一个 Job 并标识当前 Job 的执行状态。
d)高可用情况
- 传统数据库独占锁
- 分布式锁 临时节点性质,同一个任务注册一个唯一的节点,哪个机器抢到这个节点谁就来执行任务即可
e) 容错机制(重试,故障转移,手动开启),任务分片
2)设计客户端性能监控平台
9. 平时玩什么游戏,游戏外的一些思考
感觉系统设计题答的很尴尬...
许愿能过QAQ
全部评论
(4) 回帖