艾宾浩斯遗忘曲线刷算法题

前言

自己从工作之后有很长一段时间没刷题了。上个月底提了离职,又赶上大量的面试需要用到算法题,所以自己把算法捡了起来。我们刷算法题有非常多的方式,可以帮助我们进步。一种是板刷,一种是按照分段刷,或者按照题目类型。我个人倾向于前两种。但是前段时间面试的时候,我发现我很多题目又忘记啦。有没有一种方式,可以让我长久的记忆呢。

🧠 艾宾浩斯遗忘曲线原理
德国心理学家艾宾浩斯发现,人的遗忘规律呈现指数衰减:
20分钟后遗忘42%
1小时后遗忘56%
1天后遗忘74%
1周后遗忘77%
1个月后遗忘79%
基于该算法,我开发了一个小项目:
开源地址:
*************************************
线上地址:
http://www.cnggboy.com/

功能介绍

这里简单介绍下核心的功能:
用户可以基于各大竞赛站点,一键创建对应分段的题目
拿牛客举例
创建好了题库,我们就可以基于题库,进行学习。创建学习计划,设定每天学习的题目数量
具体的学习,他会通过简单的调度算法,对用户题库中的题目进行打分,按照时间间隔和题目分数进行打分,筛选出用户最需要的 x 道题供用户学习。这里我们只是做了一个小卡片,具体做题目需要跳转到牛客进行。
当用户未掌握的题目,就会按照艾宾浩斯遗忘曲线来复习。

更新说明

7/19
🐛 热力图修复:修复热力图不更新学习题目数量的问题,优化数据聚合逻辑
🕐 时区问题修复:确保所有时间相关操作使用系统时区一致性
📊 学习计划重构:提高内聚性和降低耦合度,优化代码结构
🎯 竞赛题目导入优化:增强导入工作流程,支持分数范围选择
7/4
1、优化题目的调度策略
当用户需要复习的题目超过设定的阈值时,我们需要对待复习的题目进行打分,返回一批用户最需要复习的题目
时间维度:越长时间没有复习题目,该题目分数越大
难度维度:题目难度越大,题目分数越高
score = 0.5x+0.5y,将 x 和 y 的得分,通过对数函数映射到[0, 1],确保两个维度尽量公平,分布合理。
2、实现断点续学
当用户学习到一半,去做其他事情了。接着学习,能够保留之前的进度,实现断点续学。
3、优化写时复制
我们之前的写时复制,其实会影响到学习计划的使用。学习计划只是指向了对应题库,而之前的写时复制是有增加题目、删除题目、更新题目时,才会触发。而触发之后,新题库中的 questionID 和 题目学习进度中的 questionID 就不匹配了。所以我们还需要在写时复制的时候,更新其学习计划的 questionID。
6/23-7/3
1、优化遗忘曲线
用户第一次遇到题目时选择独立AC,该题目被标记为掌握,不再出现
用户选择不会做,那么缩短题目复习的时间间隔。
用户在其他情形下选择独立AC, 仍旧按照预计的时间间隔复习。
2、用写时复制优化题库 fork 功能
官方题单:
用户 fork 官方题单后,如果没有进行任何变更,那么就是和官方题单共享题目
当用户进行 crud,此时触发写时复制,给用户单独创建一份题库
共享题库:
用户 fork 其他用户共享的题库,也是类似的逻辑。但是用户可能会取消共享,此时触发写时复制
给所有 fork 该题库的用户,也创建独立的题库。
3、面试岛功能
代码编辑器禁止复制粘贴,模拟面试场景
由于时间有限,预计本周先上线 Hot100 中的 链表岛
每个关卡有三颗星,5,10,15 分钟内完成,分别获得,3,2,1颗星
目前支持 c++, py, go, java 四种语言
6/21-22:
1、后端代码重构,控制层-服务层-数据层。增加代码可读性
2、优化后端部分接口得性能,之前着实太暴力了。
3、前端增加热图功能,把打卡天数以热土形式呈现
4、增加错题本功能,用户学习时遇到不会的题目,自动加入错题本中。
6/19:
bug 修复:
前端 404, 字体缺失等 bug
需求:
美化前端,现在看起来可食用。
增加共享题库,用户可以对共享题库进行 star, fork。前端增加字段,可以对共享题库进行时间戳、star数、收藏数排序
前端修复暴力的题目更新,用无感的方式,进行题目的添加,删除等操作。
用户可以将自己的题库进行共享、取消共享。用户可以 fork 共享题库到自己的个人题库#牛客AI配图神器#
#打工人的精神状态##牛客竞赛##算法题##面试#
全部评论

相关推荐

07-17 13:09
已编辑
火炉中学 Java
本人27届菜鸡,实习入职四天了,我们组是开发一个教学平台,组长说暑假需求不多,让我慢慢熟悉项目。入职第一天是拿到了文档和一个项目的代码权限,把代码拉下来跑了起来,Maven下了一下午才把依赖下好。后面三天都在一直看代码,发现很多新东西,虽然项目框架基本上也就是我在黑马学的springboot和mabatis那一套,但是有很多别的东西或者一个人做项目没法接触到的点。我不知道我是不是对的,我感觉每天就是顺着前端发的请求看每个业务流程涉及到的东西,看到新东西我就去学,比如什么分布式id怎么生成的,excel怎么导入导出的,缓存级联删除逻辑什么的,我感觉看的很慢因为想搞懂没见过或者不熟悉的东西。我感觉这样下去一周都没法吃透这个项目,但组长人很好,跟我说刚实习多学点新东西,现在就慢慢看就行了,后面会给我发需求。我到底该怎么办,忽略细枝末节赶紧要需求吗,但是我感觉不学新东西很难做有亮点的需求,单做增删改查实习完了又不好包产出,我现在有点想把看懂的技术点包成自己的产出因为做的真的好厉害我自己肯定做不出来,唉我会的还是太少了,现在焦虑得不行,甚至后悔提前实习了,应该把分布式微服务学完再出来的😰我之前就只跟做了外卖和点评,背了一些juc jvm八股,微服务分布式都没学,真让我干活只能做增删改查吧,害怕组长骂我肺雾😭
火猴真君:评论区这么一致么 先把一些流程逻辑学通,记记笔记,不懂的问组长。 然后自己试着做 1,2 个功能跑跑看,来来回回几次,就慢慢熟悉业务代码了
点赞 评论 收藏
分享
头像
07-17 14:31
湖南大学 安卓
迷茫的大四🐶:搞不懂为啥呢,本来就是各自的不好的习惯,怎么就不能聊开了各自改正习惯呢
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务