risent / leetcode_mock_test_project Goto Github PK
View Code? Open in Web Editor NEWThis project forked from erik-chen/leetcode_mock_test_project
This project forked from erik-chen/leetcode_mock_test_project
一、说明 名称:设计文档 作者:陈志豪 作用:开发“模拟面试”功能 记录时间:2020年1月14日到1月20日 二、基本功能: 1.按照公司生成模拟面试。同一名用户每次打开同一家公司应该能看到不同的题目; 2.用户可以开始一场模拟面试,有规定时间; 3.用户可以根据公司回看自己的模拟面试记录。 三、项目目标 1.实现“模拟面试”基本功能 2.完成设计文档和配置文档 3.学习Django、Mysql、Redis等工具 四、需求分析和思路(以scrum形式书写) Scrum分为2个sprint。第一个sprint实现部分功能,第二个sprint实现全部功能。 该项目将以sprint的方式管理,分为两个sprint管理用户故事与项目进度。第一个sprint实现用户登录与做题的功能,第二个sprint实现用户回看做题记录,以sprint迭代的方式实现持续交付。 小明是一名大四的学生,正在为即将到来的校招做积极准备。小明知道算法是拿到理想offer的核心竞争力。但是,不管是看《算法导论》还是自己找题,都觉得效率好低,也坚持不下去,为此很苦恼…… Sprint 1 周期:1/14-1/17 (一)用户故事— 小明感到看算法书效率太低了,自己找题做又总是坚持不下去,如果有一个网站,可以刷题就好了! 用户需求:有个网站可以做算法题 (二)用户故事二 小明希望,在网站上做题尽可能模拟真实的面试环境。真实的面试环境最重要的是有时间限制。这样可以更专注、更投入,到了真正面试的时候也不会太紧张。另外,真实的面试环境也不会提醒难度等级。 用户需求:有个模拟做题的产品(功能),可以倒计时。 (三)工作内容 1.搭建一个网站 2.设计题目subject表、user表、user和题目subject的关系表 3.完成模拟面试功能 4.完成用户注册、登录功能 (四)内容细化(按时间顺序排列) 1.画主页、模拟面试功能的UI和跳转关系; 2.设计面试功能,明确出题逻辑(见sprint 1附件); 3.设计和建立题目subject表(所有表设计见后文); 4.设计和建立用户user表; 5.设计和建立user和subject的关系表,一条记录表示user做过这道subject; 6.实现模拟面试功能(从题目表调取title和description,放上1.5小时的倒计时,实现手动结束面试和到时间被动结束面试); 7.实现注册、登录功能。 (五)Sprint 1 附件:面试规则和出题逻辑 1.面试规则 一场面试1小时30分钟,3道题(时间和题数都是变量,可以改变)。 2.结束面试的两种方法 面试结束有两种方式:主动结束和到时结束。只有结束才会跳转到主页,不放“返回”之类的按钮。 3.出题逻辑 (1)一场面试会出现三道题,三道题各不相同。当下一次再考,这三题不会再出现。除非题库中所有的题目被刷完,那么之前的题目会再次出现; (2)三道题均从没有做过的题中随机抽取; (3)当所有题都做过时,开始新的一轮,所有题会被标记成未做过; (4)如果题库中只剩1题或2题,那么这1题或2题必出,同时在所有题中抽取新的题目(会检查是否跟这1题或2题重复,如果重复就去掉再抽)。新的题目会标记为已做过,其他所有题目标记为没做过。 Sprint 2 周期:1/18-1/21 (一)用户故事三 小明的dream company是腾讯,所以想主攻腾讯会出的题。小明想熟悉腾讯的出题风格和出题方式,为进入腾讯做努力,不想做腾讯从来没考过的题。 用户需求:根据公司做模拟面试 (二)用户故事四 小明现在可以只做腾讯的题了,但看不到已完成几次面试,每次做题花多少时间,当时提交了几道题,哪天做的,还是觉得不大方便。 用户需求:根据公司查看自己的做题记录(次数,用时,提交数,结束时间)。 (三)工作内容 1.设计company表、company和subject关系表 2.完成根据公司生成模拟面试的功能 3.设计面试quiz表、quiz和subject关系表 4.完成根据公司查看做题记录的功能 (四)内容细化(按时间顺序排列) 1.画出有company的主页UI和相关跳转; 2.在原先没有公司的出题逻辑的基础上加上公司的维度,明确出题逻辑(见sprint 2 附件); 3.设计和建立company表(字段包括id, name, status); 4.设计和建立company和subject关系表(字段包括id, company id, subject id); 5.实现选择公司模式的模拟面试功能; 6.画出回看面试记录的UI和相关跳转; 7.设计和建立面试quiz表(start time, finish time, status, company id外键, user id外键); 8.设计和建立quiz和subject关系表(submit time, status, quiz id外键, subject id外键); 9.实现回看面试记录(次数,用时,提交数,结束时间)的模拟面试功能。 (五)Sprint 2附件:有公司分类的出题逻辑 1.题目和公司是多对多的关系 以两家公司为例:百度和腾讯(可以添加任意多的公司) 题库中的题目和公司是多对多的关系,一道题目可能是:a.只有百度会考;b.只有腾讯会考;c.百度和腾讯都会考;d.百度和腾讯都不考(注:如果只有百度和腾讯这两家公司,那么情况d的题目永远不会被抽到)。 2.不同公司的互相影响 如果在刷百度面试题目时做了共有的题目,那么在腾讯面试时则不会碰到这道题,因为此时user和subject的关系是已经做过的关系。换言之,我们看的还是user和题目的关系。 如果把腾讯的题目都做完了,那么腾讯所有的题目和用户的关系都会重置,包括独属于腾讯的题和(不同公司)共有的题。 五、建议配置环境 Python==3.7.3 MySQL==8.0 asgiref==3.2.3 Django==3.0.2 PyMySQL==0.9.3 pytz==2019.3 redis==3.3.11 sqlparse==0.3.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.