关系经济人类预测化学自然
中准网
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

让GPT4设计一个分布式缓存系统,它从尝试到被逼疯!

5月9日 鬼神氏投稿
  整理屠敏
  出品CSDN(ID:CSDNnews)
  比ChatGPT背后GPT3。5更为强大的模型GPT4,已在上周正式对外发布。在OpenAI官方发布的GPT4DeveloperLivestream(https:www。youtube。comwatch?voutcGtbnMuQ)视频中,我们亲眼见证了OpenAICTOGregBrockman演示了GPT4将一张手绘草稿架构图变成一个现实可滑动的网站;同时,它也能帮助我们直接生成代码,甚至当我们把代码运行报错的界面截一个图发给GPT4时,它就能给出相应的解决方案提示。
  这种直接对标程序员饭碗的工具,在日常开发场景下,生成的代码是否真的可用?如果说ChatGPT达到了GoogleL3级别工程师,能拿到18。3万美元的薪资,那么GPT4处于一个什么样的编码地位?
  近日,前Google软件开发工程师、现任IT在线学习平台Scaler的教学系统设计师NamanBhalla模拟了GPT4去参加Uber这类公司面试会遇到的问题,其以设计一个分布式缓存系统为主题,探讨GPT4在面试环节中的表现情况。
  目前,他还把包含所有测试用例的完整代码放到GitHub上公开了出来:https:github。comNamanBhallalldassignmentstreemastersrcmainjavadevnamanlldassignmentscasestudiesdistributedcachesolution
  整体而言,在写需求、回答问题、写代码环节中,GPT4能力达到普通工程师级别。不过,在测试用例环境,GPT4似乎失去上下文的逻辑性,甚至一度把自己搞懵。
  接下来,我们将分享NamanBhalla测试的全过程。
  面试环节第一步回答问题,写软件需求
  软件项目开发过程中,对于程序员而言,实施软件开发的基础就是要先写一份软件需求说明。
  因此,在开始时,NamanBhalla提出要求GPT4为Uber构建一个分布式缓存,给我写一份问题需求。
  一句话之后,GPT4快速地给出了标题、问题描述、具体的要求:
  标题:Uber的分布式缓存系统
  问题描述:
  设计并实现一个分布式缓存系统,可以有效地存储和管理Uber服务的数据。该缓存应支持高可用和可扩展的架构,以满足Uber不断增长的对快速和高效数据检索的需求。
  要求:
  1。设计一款分布式缓存系统,可以支持以下操作:
  a。Put(key,value):将键值对存储在缓存中。
  b。Get(key):如果它存在于缓存中,检索与给定键相关的值。
  c。Delete(key):从缓存中删除与给定键相关的键值对。
  2。缓存应该有一个可配置的大小(键值对的数量)和一个可配置的生存时间(TTL,Timetolive)。当缓存达到最大容量时,系统应该删除最近使用最少的项目(LRU)来为新的项目腾出空间。
  3。确保缓存分布在多个节点上,以提高可扩展性和可用性。设计系统能够良好地处理节点故障和网络分区。
  4。实施一致性散列的机制,将键值对均匀地分布在缓存的各个节点上。
  5。系统应该支持水平扩展。它应该很容易地从缓存中增加或删除节点,而不会有明显的停机时间或数据损失。
  6。为数据的一致性和容错性实施读和写的法定人数。该系统应该能够处理并发的读和写,而不会造成数据的不一致。
  7。包括监控和记录功能,可以跟踪高速缓存系统的健康和性能。
  8。设计一个简单的用户界面或命令行界面来与缓存系统进行交互,允许用户执行诸如放、取和删除等操作
  9。编写测试案例来验证缓存系统的正确性和可靠性
  GPT4能够说出基本要求,准确度也不错。可以说,过了第一关。
  紧接着,NamanBhalla针对分布式缓存中一些经典的问题进行了提问,比如:如何确保代码中支持类似于读取自己的写入数据(Readingyourownwrites)的一致性问题?、缓存可以支持哪些功能?是不是包括一些优化、可扩展性和对客户可用性的保证?
  对于提供一些文字解答方面,GPT4给出的答案都很充分,还列出了多个小点,便于大家很直观地看出回答的错与对。
  针对第一问时,其答复道:
  读取自己的写入数据(Readingyourownwrites)的一致性保证了一旦客户端进行了写操作,所有来自同一客户端的后续读操作都会返回更新的数据。为了保证分布式缓存系统的这种一致性水平,你可以实施以下策略:
  1。基于Session的方法。
  2。客户端缓存。
  3。粘性路由。
  4。读后写的一致性。
  5。版本管理或时间戳。
  6。因果一致性。
  第二个问题,GPT4回答,缓存可以支持各种功能、优化和保证,以提高它的性能、可扩展性和对客户的可用性。其中一些功能包括驱逐策略、生存时间(TTL)、数据一致性、缓存分区、缓存复制、缓存的持久性等等。
  面试环节第二步上手写代码
  当问题以不错的结果完成之后,接下来,所谓是骡子是马,拿出来溜溜,由此也进入了程序员岗位最为重要的实操环节写代码。
  NamanBhalla给出的要求是,让GPT4用Java编写一个分布式缓存的代码,支持以下要求:
  值得注意的是,上文解答过程中,足以让GPT4能够把NamanBhalla提出的5项要求弄懂。
  不过,当拿到最新写代码需求时,GPT4首先还是有些懵,其表示,由于问题的复杂性和和响应格式的限制,我不能提供分布式缓存系统的完整代码。但是,我可以给你一个系统组件的大纲和一些代码片段,由此可以帮助你开始实施这个系统。你可以根据你的要求修改和扩展这些代码片段。
  于是它提供了四个部分的代码片段:
  1。CacheNode
  2。DistributedCache
  3。ConsistentHashing
  4。CacheClient
  当然,这对于想要坐享其成的程序员而言,未必是一个好消息,大家都想要拿来就能用的代码,必然不想听到只给代码片段的回复。
  因此,当NamanBhalla继续要求GPT4实现CacheNode的完整代码时,GPT4还是满足了他的小心思,提供了完整的算法和代码:
  除了CacheNode这部分的代码之外,NamanBhalla相继得到了GPT4提供的DistributedCache、ConsistentHashing、EvictionStrategy(接口以及LRU和LFU实现)的代码。
  不知道什么原因,GPT4决定不再提供关于RequestCollapsing、AsyncProcessing、Prefetching的代码。不过,如果进一步跟它提要求,支持这些功能时,它还是嗒嗒嗒地敲下了这些代码。
  当然,在这过程中,站在程序员的角度来看,想要GPT4生成的代码即可用,首先要看得懂这些代码,知道分布式缓存系统实现的具体逻辑,否则,缺失哪一块都不知道,更别论拿着代码去运行了。
  测试用例
  完整的代码有了之后,便进入了写测试用例的时候了。NamanBhalla直接要求GPT4编码每个部分的junit测试示例。
  GPT4的回复是:
  为了测试DistributedCache的实现,我们将创建一个名为DistributedCacheTest的JUnit测试类。这个测试类将涵盖以下情况:
  1。测试基本的put和get功能。
  2。测试删除功能。
  3。测试添加和删除一个缓存节点。
  4。测试请求合并。
  5。测试prefetching。
  很显然,GPT4知道要测试哪些用例,也写了正确的测试用例。
  不过,它并没有写最后一个关于prefetching的测试用例。因为它的逻辑没有被定义。为此,GPT4提供了一些建议,如你需要在DistributedCache类中实现prefetchKeys方法,该方法根据给定的键生成一个prefetch的键列表。一旦你实现了这个方法,你就可以添加一个测试案例来验证prefetch是否按预期工作。
  承接上文,NamanBhalla建议GPT4还是自己直接给出一个自定义prefetch的示例。不出意料,GPT4照做了,然后实现了测试。
  NamanBhalla表示,由于在面试过程中,面试官经常问程序员如何在代码中支持XXX。于是,他本着好奇的性子,就问GPT4在实现中如何支持读取自己的写入数据(Readyourownwrites)。
  NamanBhalla注意到,GPT4所写的一个测试用例是不稳定的,因为它产生了非确定性的输出。由于并发性,它产生了非确定性的输出。当NamanBhalla进一步向GPT4问了这个问题,它很快就纠正了错误。
  然而,当要求GPT4实现对给定线程的密钥请求的粘性,以确保没有一致性问题。
  GPT4答复道:为了确保每个键的请求都进入同一个线程,你可以在CacheNode类中使用ExecutorService创建一个线程池。每个键将根据其散列代码被散列到一个特定的线程,以确保对一个特定键的所有操作都由同一个线程执行。
  事实上,它提出了一个非最佳的ExecutorService,但告诉NamanBhalla最佳的解决方案是什么,并且也进行了编码。
  不知何故,GPT4在这里开始发狂了。开始不断重复自己的代码,而不是完成代码。另外,ExecutorService的实现是错误的。它没有扩展超类,也没有实现它的所有方法。
  当NamanBhalla要求GPT4修复这个问题时,它似乎已经疯了,NamanBhalla无奈地说道。
  因为,GPT4不仅没有修复上面的问题,反而又创建了一个新的Cache类,它基本上在做与CacheNode相同的工作。NamanBhalla称,最初认为GPT4这样做可能是为了提高代码质量。但似乎它已经开始忘记上文了,再次定义了许多先前已经定义的类。
  为了让GPT4回归正轨,NamanBhalla复制粘贴了它之前写的CacheNode的代码,并要求它为新的ExecutorService修改它。
  最终,GPT4虽然犯了一些错误,但在提示下得到了修复。修复完成之后,NamanBhalla又要求GPT4再写一些测试用例来全面测试。特别是针对并发请求。但由于GPT4已经开始失去上文背景,所以它不可避免地又犯了错误,NamanBhalla不得不告诉它之前写的代码。
  几经折腾,GPT4终于实现了正确的测试用例:
  写在最后
  整体而言,GPT4提供了完整的分布式缓存系统代码,其能力处于一个不错的水平。不过,距离理想中的一键就能生成可用的代码,还有很长的距离,仍然需要程序员从中不断提供提示语,并优化纠错。
  那么,如果让GPT4作为工程师入职,你会支持还是拒绝?
  参考:
  https:twitter。comNamanBhallastatus1637578030536093697
投诉 评论 转载

让GPT4设计一个分布式缓存系统,它从尝试到被逼疯!整理屠敏出品CSDN(ID:CSDNnews)比ChatGPT背后GPT3。5更为强大的模型GPT4,已在上周正式对外发布。在OpenAI官方发布的GPT4Deve……德才兼备德在前张继科,是中国男乒历史上继刘国梁和孔令辉之后第三位大满贯选手,在国际乒坛拥有超高的人气,他的球风充满血性,素有藏獒之称。一直以来,他是人们心里中国乒坛的希望,帅气外表的加持,更……205岁的一家三口,来了场穿越1300公里的春节之旅今年是我国优化防控政策后的第一个春节。你最想去哪里?去温暖的地方。85岁的许阿姨给出了她的答案。1月21日,大年三十。在云南景洪市城郊的一间出租屋里,许阿姨和……美媒称赞北京奥运滑雪赛场的大烟囱很酷当地时间2月7日,美国《芝加哥论坛报》发布一篇题为《在北京,一个有着疯狂的大烟囱的钢铁厂将奥运会滑雪运动员送上了天空而不是烟雾》的文章。文章称,美国自由式滑雪选手亚历山大……欧洲转会曼联准备1亿欧元报价巴西国脚,穆里尼奥相中韩国前锋夏季转会窗口大概还有一周时间就要关闭,除了几支超级豪门基本不会再签人之外,一众知名球队仍然在市场上表现活跃,他们期待引进新援来提升战斗力或者解决困境。1。泰晤士:曼联准备……一日太白南南,经典太白徒步路线,感受绝美风光【每周一条线】路线:一日太白南南,厚畛子的铁甲树三合宫老君殿南天门玉皇池三爷海二爷海拔仙台大爷海跑马梁万仙阵将军石老子庙太白庙老县城的都督门,全程38公里,累计爬升2700米,……关于千岛湖那些事看了小红书,头脑一热去了一趟千岛湖也是不知道是天气原因影响,千岛湖没有想象的那么漂亮我是11月12号去的,这个季节千岛湖已经有点冷了,天气也下了点小雨体感温度就剩1……今日欧美明星时尚街拍图集(2022年11月19日)今日欧美明星时尚街拍图集(2022年11月19日)时尚欧美明星的街拍就是行走在马路上的秀场,明星们的街拍就是时尚界的潮流风向标。明星们身穿什么牌子的衣服、肩背什么大牌包包……5热闻!老詹反超库里成票王,欧文被罚2万5,湖人暂不解雇沃格北京时间1月21日,NBA早报,NBA全明星第三轮投票结果出炉,下周五正式公布结果,欧文被罚款,湖人暂时不解雇沃格尔,我们来看一下!老詹反超库里成票王詹姆斯成为新一……五一小长假来临,旅游股行情引爆每经记者:曾子建每经编辑:叶峰投基Z世代,Z哥最实在。还有半个多月,今年的五一节假期即将到来。而最近,旅游酒店板块也成为人工智能板块之外,另一个持续走强的板块……近场电商,电商巨头们的新长征过去几年,场景开拓是电商行业发展的主旋律,其中社交电商、直播电商、内容电商都取得了堪称惊艳的成绩。与这些如今耳熟能详的名词相比,大众对近场电商的概念仍然略感陌生。这也与近……俗语人贪三样,一生白忙,到底是哪三样左右着人生芸芸众生,众生之相皆有欲望。欲望面前人人不能免俗,有了欲望才有了追求。正因为欲望的存在,才能不顾一切的去奋斗。小到普通百姓,为了金钱的欲望,即使脏累差的工作,也奋不顾身的往前冲……
湖人重大利好,揭幕战胜勇士没有暖气也能过个暖冬?云米踢脚线取暖器,制暖效果真的可以吗?GooglePlay推出购买请求功能父母可轻松限制子女购买付想起小时候的一首儿歌日本队输球又输人,孙铭徽遭网暴,慢镜头细节还原事实你可以一无所有但绝不能一无是处最喜欢造句用最喜欢造句大全小儿阑尾炎具有哪些特点ins如何清理以往动态互动信息?批量取消贴文互动点赞教学!夜晚的操场销售人员常犯的项错误切勿忽略客户真正的需求解说合同物流中的仓配一体化
我的学习饮料吉格斯辞职,不再担任威尔士队主教练一手好牌打烂,劣迹斑斑走胶济一城记丨济南,火车一响流量万两成长是记忆的开始阿里巴巴:周期永远摆动,最重要的是定力热评聚热点网 衢州全城搜索抗日英雄于丕富之墓得偿遗属心愿作文写给爸爸的一封信我心中的作文怎么拍照更上镜换个方式拜年教小爱同学说土味年话能赢小米我国法学本科模拟法庭实践教学的问题与对策休假通知

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州