您的位置:首页 > 财经 > 产业 > 【天机学堂】面试总结

【天机学堂】面试总结

2024/10/6 22:22:16 来源:https://blog.csdn.net/qq_45249273/article/details/140858862  浏览:    关键词:【天机学堂】面试总结

写在前面,首先要将天机学堂包装一下,智慧教育平台,暂时就想到这个。天机学堂文档

1.包装简历

在这里插入图片描述

2.简单介绍一下你的项目

智慧教育平台是一个基于微服务架构的生产级在线教育项目,我们的核心用户是面向15-22岁的C端的学生和非学历职业技能培训平台。智慧教育平台是一个B2C类型(企业对消费者的电子商务模式,一般以网络零售业为主,主要借助于Internet开展在线销售活动)的教育网站,因此分为管理端和也用户端(PC网站)。用户端包括:学习中心(例如学习记录,学习计划等),个人中心(例如信息管理和登录等),交易中心(购物车,支付和退款等),管理端包括:课程管理,用户管理,交易管理,营销活动,学习管理。我主要负责的是点赞功能,用户学习模块中的学习进度管理,用户积分系统中的排行榜管理,优惠券管理。该项目技术包括:SSM+SpringBoot+Redis+MySQL+MyBatisPlus+RabbitMQ+xxl-job等。
在这里插入图片描述

3.你在开发中参与了哪些功能开发让你觉得比较有挑战性?

  • 我参与了整个学习中心的功能开发,其中有很多的学习辅助功能都很有特色。比如视频播放的进度记录。我们网站的课程是以录播视频为主,位了提供用户的学习体验,需要实现视频的续播功能。这个功能实现逻辑本身不复杂,但是我们产品提出的要求比较高:首先续播时间误差要控制在30秒以内。然后要做到用户突然断开或者切换设备,都可以继续上一次播放。要达到这个目的,我们必须把播放进度保存在服务端。其次要做到续播误差不超过30秒,那播放进度的记录频率就需要比较高。我们会在前端每隔15秒发起一次心跳请求,提交最新的播放进度,记录到服务端。这样用户下一次续播时直接读取服务端的播放进度,就可以将时间误差控制在15秒左右。
  • 现在面试官可能会追问,如果把播放数据存入到数据库,当用户量比较大时,前端每隔15秒就要提交一次请求,如果直接写入数据库,会对数据库造成的压力很大。请问你们是怎么解决的?我们当时也考虑到了这样的情况,我们思考了整个流程发现有问题没有解决。
    • 每个用户提交的播放记录数据,只有在视频关闭之前的那个提交才有效,其他的视频播放效率是无效的。
      • 解决办法:我们当时定义了一个延时任务类,将播放记录加入到延时队列里,每个任务倒计时20秒,20秒过后就会弹出,我们当时是这样想的一个逻辑,当用户在播放视频时,前端每隔15秒会提交一次请求,我们将前端提交的请求存到缓存中,然后再提交延时任务,延时任务每次出来的播放记录都会与缓存中的播放记录做一个比较,如果不相同,则播放记录在一直提交,如果相同则未提交,也就是视频暂停了。(我们使用JDK自带的DelayQueue,因为这种方案使用成本最低,而且不依赖任何第三方服务,减少了网络交互。但缺点也很明显,就是需要占用JVM内存,在数据量非常大的情况下可能会有问题。但考虑到任务存储时间比较短(只有20秒),因此也可以接收。)
    • 每个用户是同步提交的视频播放记录,所以整个播放记录的缓存业务的响应时间就是每一次数据库写业务的响应时间之和,并发能力肯定不会太好。
      • 解决办法:我们利用MQ将同步业务编程异步,我们将每个用户的播放记录先缓存到Redis中,然后定义一个定时任务,将这些数据合并写到数据库中。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com