字节剪映二面

1. 你两个练手项目中遇到过什么难点?或者有思考过参考资料范围外的问题吗?

2. 缓存不一致出现的场景、原因及具体解法是什么?

3. 先更新数据库再删除缓存的策略,存在哪些边界 case?会怎么发生?

4. 延迟双删的第二次删除是在什么时候?该怎么设计逻辑?

5. 删掉缓存后,只允许第一个请求读数据库并更新缓存,其他请求被锁住,这个设计是为了实现什么?

6. 构建缓存的请求失败了怎么办?

7. 为什么选择让未拿到锁的请求直接返回旧数据,而不是让它们等待锁或重试?这种方案的好处和坏处分别是什么?

8. 构建缓存请求失败时,继续等锁和直接返回旧数据哪种方案更占优?

9. 你实现缓存相关的锁时,用的是什么方式?

10. Java 中 HashMap 的底层数据结构是什么?

11. 直接用红黑树实现 Map 功能是否可行?HashMap(哈希表+开链/红黑树)与全红黑树实现的 Map 各有什么优劣?

12. HashMap 如何解决容量不够的问题?Java 中的扩容是怎么做的?

13. 如何避免触发扩容阈值的那次写操作承担所有数据搬迁开销?

14. 有办法将扩容的开销均摊出去吗?具体怎么操作?
全部评论

相关推荐

1.确定总体需求在开发前我们需要明确需求,知道我们要做什么,怎么做,得到什么交付件。2.需求描述这一步就是要求我们说清楚我们要做什么。最重要的就是我们需要列出我们的核心功能,例如基本的用户登录注册功能,也可以在一个用户的视角说明功能,通过说明用户可以进行什么操作说明。我们也可以说清楚我们所需要的性能要求,安全要求,并且我们需要适配什么平台。3.技术描述这一步如果你知道什么功能使用什么技术背景。正向使用技术:我们要求工具使用指定的技术进行开发,前端(Vue3/Vite/TS)、后端(Node.js/Express、Python/FastAPI)等等。反向技术:我们要求不要模型不要使用某些工具开发,例如数据库不是用原生SQL语句等等。4.交付件描述这一步就是我们需要得到的内容是什么,主要包括以下几个方面:项目的结构目录,Readme,单元测试,执行和部署步骤,API文档等内容。------------------以上我们可以得到一个基础的prompt内容:我需要开发一个法律隐私生成项目,该项目是前后端分离的。功能要求如下:要求有一个前端界面,该界面包含2个输入模式,问卷模式和自由输入模式,并且具备用户登录功能。后端界面对接dify后端workflow接口,完成法律隐私的生成。技术要求如下:前端使用react框架完成,后端使用python/FastAPI完成。交付件要求如下:交付物:项目的结构目录,Readme,单元测试,执行和部署步骤,API文档。额外步骤:1.首先让AI输出设计方案,然后再编码可以添加额外的提示词:请根据我提出的以上需求,首先输出以下内容:项目的目录结构,核心模块的交互逻辑,关键接口的定义,核心算法的逻辑等。这样的好处在于,我们可以适当调整他的项目架构和逻辑,是否合理是否考虑周全。2.分模块生成代码让AI根据模块生成代码:例如首先生成前端的自由写入模块的代码,再生成登录模块,随后生成和Dify的交互模块。每一次完成一个模块的生成,需要干2个事情。输出该模块的实现逻辑,避免维护困难。如何验证,生成测试用例,查看功能是否可验证。期间遇到问题或者不对的地方都可以让他修复,并且修改。纠错与修复当我们遇到报错的内容的时候,我们只需要讲完整的错误日志以及相关的出错的代码,以及是如果出错的操作步骤告诉AI,然后说明一下:请帮我排查问题并且修改代码即可。🤔 我在执行xxxxxx动作的报错:报错日志:xxxxxxx请帮我排查问题并修改代码。最好的办法就是没生成一次步骤就让他生成一次单元测试,并且手动检查一下接口的问题。增加维护性因为我们每一步都会让它生成一次功能的描述和项目的结构,因此我们对项目的整体的逻辑一定是有一个整体的把控的。因此我们需要让AI生成Readme文档,里面说明了项目的部署情况,API情况,以及每个模块的交互和内部实现逻辑等。如果后续有更新那个也可以使用一下提示词:现有法律隐私生成Agent已实现xxxxx功能,现在需要新增xxxxx功能:1.需求描述:xxxxxx2.技术描述:xxxx3.交付件描述:xxxxxx4.约束:请注意xxxxx请基于现有项目结构,生成响应的代码,解释内部逻辑,并且补充测试用例以及模块交互说明在对应文档中。总结:明确需求 → 设计方案 → 分模块生成(期间逐段验证)→ 调试优化 → 文档补全(可维护性)
AI Coding的使用...
点赞 评论 收藏
分享
评论
3
6
分享

创作者周榜

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