【总结】1637- 如何利用 ChatGPT 提升 JavaScript 编程能力?

最新文章:

【工具】1636- 高效办公!5款腾讯免费AI工具

【工具】1634- 提高工作效率,这 10 款 AI 工具不能错过!

【分享】1632- 推荐 20 款顶级 AI 聊天机器人,轻松畅聊未来

最近几天,GPT-4ChatGPT PluginCopilot X 等多个强大的 AI 产品陆续发布,相信很多小伙伴都有一种迷茫的感觉,又一次技术爆炸到来了,我们该何去何从呢?

市场里充斥着前端已死的言论,我对这个观点不完全认同,但是我认同其中的一部分,我认为以后用不好 AI 的程序员必定淘汰,不仅仅是前端。我们不应该过度悲观,现在应该做的是好好想一想如何利用好这些强大的 AI 的产品来提高我们的生产力!

后面我会持续分享一些 ChatGPT 在软件开发领域的应用相关经验,包括社区一些比较好的资源和最佳时间,大家可以持续关注。

本公众号回话也已经接入了 ChatGPT 欢迎大家体验。

下面开始正文,今天我来跟大家聊一下如何利用 ChatGPT 来提升我们的编码能力。

我们每个人都是从一名小白走过来的,在你成长为一名独当一面的工程师之前,你的成长之路上一定少不了一位 “编程导师” ,这个角色的人选可能直接影响你的编程能力,甚至后面的职业生涯。

但是不是所有的同学都能有这样的 “机缘” ,今天我来教大家如何让 ChatGPT 来充当你的编程导师,或者说学习编码的工具。

下面是社区大神已经总结好的一段 prompts,可以让 ChatGPT 帮你出一些 JavaScript 编码题目,并且分析你的回答,给出帮助。

我们可以直接拿来用:


Let’s roleplay. You are an online JavaScript course. Your task is to quickly assess the student’s current JavaScript skill level and present concepts and challenges that will keep the students learning at the edge of their current capabilities, keeping them interested, while also keeping their motivation and enthusiasm for the learning high.

Present questions and help them think through questions and learn interactively. If they ask a question, rather than answer directly, try to ask questions that will lead the student to correct answers.

Begin by welcoming the student and presenting a syllabus of topics to test the student on. If the student tests well on all of the topics, keep going with a follow-up syllabus, diving deeper into more complex JavaScript learning challenges.

Stay on task, and keep track of the lessons that the student has completed. Don’t ask the student to rate themselves. Instead, start asking questions which test their grasp of the concept. You should prepare the student to run the JavaScript in VSCode with the Quokka extension so they get interactive JavaScript console feedback. For each question, present the student with tests that their functions must pass to move on to the next challenge. Present the tests as JavaScript code they must execute to test their solution using Quokka.


因为我们给定的 prompts 为英文,所以 ChatGPT 也会用英文回答,下面我们让他改成中文回复:

9d23abee3f41e9f077fb36a144e0edc5.png

这里我没有注意到 ChatGPT 已经给了我一道题目,所以又多说了一句开始挑战,所以下面 ChatGPT 开始给出新的题目。

第一题

后面为了方便阅读,ChatGPT 的回答我都会标注成红色。

ChatGPT:

太好了,让我们开始挑战吧!第一个挑战是编写一个函数,将传递给它的字符串反转并返回。例如,如果传递给函数的字符串是"hello",则应该返回"olleh"。以下是该函数的测试:

console.log(reverseString("hello")); // "olleh"
console.log(reverseString("JavaScript")); // "tpircSavaJ"
console.log(reverseString("12345")); // "54321"

请在 Quokka 中编写您的解决方案,并确保您的函数通过了以上所有测试。

我的回答:

function reverseString(str) {// 将字符串转化为数组,反转数组,然后将其转化回字符串return str.split("").reverse().join("");
}

ChatGPT:

很好,您的解决方案是正确的!通过使用 split 方法将字符串转换为字符数组,然后使用 reverse 方法反转该数组,最后使用 join 方法将字符数组转换回字符串,您成功地编写了一个反转字符串的函数。

接下来,我们将挑战您编写一个函数,该函数接受一个数字并返回其阶乘。例如,如果传递给函数的数字是 5,则应该返回 5 x 4 x 3 x 2 x 1 = 120。以下是该函数的测试:

console.log(factorial(5)); // 120
console.log(factorial(3)); // 6
console.log(factorial(1)); // 1

请在 Quokka 中编写您的解决方案,并确保您的函数通过了以上所有测试。

ChatGPT 非常聪明,不仅分析了我们答案的准确性,还顺便给出了在一道题目。

第二题

我的回答:

function factorial(num) {// 如果数字为 0 或 1,则阶乘为 1if (num === 0 || num === 1) {return 1;} else {// 否则,使用递归计算阶乘return num * factorial(num - 1);}
}

ChatGPT:

非常好,您的解决方案是正确的!您使用了递归的方法计算了阶乘,如果数字为 0 或 1,则函数返回 1。否则,函数将调用自身以计算 num x (num-1) x (num-2) x ... x 2 x 1 的结果。

接下来,我们将挑战您编写一个函数,该函数接受一个字符串,并返回该字符串中出现最频繁的字符。例如,如果传递给函数的字符串是 "hello",则应该返回 "l",因为 "l" 在该字符串中出现了 2 次,而其他字符只出现了 1 次。如果有多个字符出现的次数相同,则返回任何一个即可。以下是该函数的测试:

console.log(mostFrequentChar("hello")); // "l"
console.log(mostFrequentChar("JavaScript")); // "a"
console.log(mostFrequentChar("Hello, world!")); // "l"

请在 Quokka 中编写您的解决方案,并确保您的函数通过了以上所有测试。

第三题

我的回答:

function mostFrequentChar(str) {// 用对象存储每个字符出现的次数const charCounts = {};for (let char of str) {if (charCounts[char]) {charCounts[char]++;} else {charCounts[char] = 1;}}// 找到出现次数最多的字符let maxCount = 0;let mostFrequentChar = '';for (let char in charCounts) {if (charCounts[char] > maxCount) {maxCount = charCounts[char];mostFrequentChar = char;}}return mostFrequentChar;
}

ChatGPT:

太好了,您的解决方案是正确的!您使用对象来存储每个字符出现的次数,然后遍历该对象以查找出现次数最多的字符。在找到每个字符出现的次数之后,遍历对象,查找出现次数最多的字符并返回该字符。

接下来,我们将挑战您编写一个函数,该函数将接受一个包含数字的数组,并返回一个新数组,其中只包含那些在原数组中出现一次的数字。例如,如果传递给函数的数组是 [1, 2, 3, 2, 1, 4],则应该返回 [3, 4],因为 3 和 4 都只在原数组中出现了一次。以下是该函数的测试:

console.log(findUnique([1, 2, 3, 2, 1, 4])); // [3, 4]
console.log(findUnique([1, 2, 3, 3, 4, 4])); // [1, 2]
console.log(findUnique([1, 2, 3, 4, 5, 6])); // [1, 2, 3, 4, 5, 6]

请在 Quokka 中编写您的解决方案,并确保您的函数通过了以上所有测试。

第四题

我的回答:

function findUnique(arr) {// 用对象存储每个数字出现的次数const numCounts = {};for (let num of arr) {if (numCounts[num]) {numCounts[num]++;} else {numCounts[num] = 1;}}// 遍历数组,将只出现一次的数字存储在结果数组中const result = [];for (let num of arr) {if (numCounts[num] === 1) {result.push(num);}}return result;
}

ChatGPT:

非常好!您正确地解决了此问题。您使用对象存储了每个数字的出现次数,然后遍历了数组,将只出现一次的数字存储在结果数组中并返回该数组。

接下来,让我们挑战您编写一个函数,该函数将接受一个字符串并返回该字符串中所有单词的字母顺序相反的字符串。例如,如果传递给函数的字符串是 "hello world",则应该返回 "olleh dlrow"。以下是该函数的测试:

console.log(reverseWords('hello world')); // 'olleh dlrow'
console.log(reverseWords('JavaScript is awesome')); // 'tpircSavaJ si emosewa'

请在 Quokka 中编写您的解决方案,并确保您的函数通过了以上所有测试。

第五题

我的回答:

function reverseWords(str) {// 将字符串按空格分割成单词数组const words = str.split(' ');// 遍历单词数组,将每个单词反转const reversedWords = words.map(word => {return word.split('').reverse().join('');});// 将反转后的单词数组拼接成字符串return reversedWords.join(', ');
}

这里我准备考验一下 ChatGPT,于是给出了有点瑕疵的答案,最后在将反转后的数组拼接成字符串时我使用了 ', ' 进行拼接,看看 ChatGPT 能发现吗?

ChatGPT:

很好!您正确地解决了此问题。您将字符串按空格分割成单词数组,然后遍历单词数组,将每个单词反转。最后,您将反转后的单词数组拼接成一个新字符串并返回该字符串。

以下是一些优化建议:

在拼接字符串时,可以使用空格而不是逗号作为分隔符,这样输出的字符串会更符合正常语法。

为了避免输入字符串中的多个空格导致输出字符串中出现多个连续空格的情况,您可以在拼接单词时使用一个空格字符串来代替单个空格符。

这是您的代码进行了上述优化后的版本:

function reverseWords(str) {// 将字符串按空格分割成单词数组const words = str.split(' ');// 遍历单词数组,将每个单词反转const reversedWords = words.map(word => {return word.split('').reverse().join('');});// 将反转后的单词数组拼接成字符串,用一个空格分隔return reversedWords.join(' ');
}

Nice ,ChatGPT 发现了这个问题并且给出了优化后的代码。

对我的评价

做了一些题目,我们让 ChatGPT 对我进行一下评价,并给一些建议。

9e861bbc1e8e9cf12323b0e59c8858db.png

让 ChatGPT 讲解题目

我们让 ChatGPT 出一道有难度的题目,然后让他来讲解一下:

beaa86025d80b8e406fae58bc79e0f4c.png

ChatGPT

好的,以下是一道更加困难的 JavaScript 编程题目:

给定一个由 0 和 1 组成的二维矩阵,其中 0 表示海洋,1 表示陆地。如果两个陆地格子上下或者左右相邻,则认为它们属于同一个岛屿。我们只考虑上下左右相邻的情况,不考虑对角线相邻的情况。

请编写一个函数 numIslands,计算出该二维矩阵中岛屿的数量。

函数的输入参数为一个二维数组,其中数组中的每个元素都是一个字符串,表示矩阵中的一行。每行中的字符串由 0 和 1 组成,且字符串的长度相同。例如:

const grid = ["11110","11010","11000","00000"
];numIslands(grid); // 1

在上面的例子中,二维矩阵中只有一个岛屿,因此函数的返回值为 1。

要求:

在函数中实现深度优先搜索算法(DFS)。

提示:

  • 可以使用递归实现 DFS 算法;

  • 可以使用一个二维数组记录每个格子是否已经被访问过,避免重复遍历;

  • 可以使用 grid[i][j] 访问矩阵中第 i 行第 j 列的元素;

  • 可以使用 grid.lengthgrid[0].length 分别获取矩阵的行数和列数。

我们让 ChatGPT 来帮助讲解一下:

8402e4b448922ec901eca7497ee5503b.png

ChatGPT

本题可以使用深度优先搜索算法(DFS)来解决,具体思路如下:

  • 遍历整个二维网格,对于每个为 '1' 的点,都将其当作新的岛屿的起点,并调用深度优先搜索函数进行搜索。

  • 在深度优先搜索函数中,首先判断当前坐标是否越界或者当前位置是否为 '0',如果是则直接返回。

  • 否则,将当前位置的值修改为 '0',表示已经搜索过了,并对其上下左右四个方向进行递归搜索。

  • 在递归搜索过程中,如果继续发现为 '1' 的点,则继续向其上下左右四个方向进行搜索。

  • 当一个岛屿的所有点都被搜索完毕后,即可得到一个岛屿的数量。

  • 继续遍历整个二维网格,重复上述过程,直到所有岛屿的数量都被计算出来。

  • 返回岛屿的数量即可。

function numIslands(grid) {// 计数器let count = 0;// 遍历整个矩阵for (let i = 0; i < grid.length; i++) {for (let j = 0; j < grid[0].length; j++) {// 如果当前格子是岛屿,计数器加一,然后标记已遍历的岛屿if (grid[i][j] === '1') {count++;markIsland(grid, i, j);}}}return count;
}// 标记已遍历的岛屿
function markIsland(grid, i, j) {// 判断当前格子是否越界if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length) {return;}// 如果当前格子不是岛屿,直接返回if (grid[i][j] !== '1') {return;}// 将当前格子标记为已遍历的岛屿grid[i][j] = '0';// 标记当前格子上下左右的岛屿markIsland(grid, i - 1, j);markIsland(grid, i + 1, j);markIsland(grid, i, j - 1);markIsland(grid, i, j + 1);
}

知识点总结

7244f5688451d40b0c7d19c2df0d2b29.png

ChatGPT:

反转字符串

  • 字符串的基本操作:如获取字符串长度、获取某个位置的字符等。

  • 数组的基本操作:如将字符串转化为数组、数组反转、将数组转化为字符串等。

  • 函数的基本使用:如函数声明、参数传递、返回值等。

  • 算法思想:字符串反转。

计算阶乘

  • 函数的递归:如函数内部调用自身,以此实现重复操作。

  • 条件语句的使用:如 if...else 语句用于根据不同情况进行不同处理。

  • 算法思想:递归。

找出出现次数最多的字符

  • 对象的使用:如创建对象、对象的属性和方法等。

  • 字符串的基本操作:如获取字符串长度、获取某个位置的字符等。

  • for...in 循环:如遍历对象的属性。

  • 算法思想:使用对象存储每个字符出现的次数,遍历对象找到出现次数最多的字符。

找出数组中只出现一次的数字

  • 对象的使用:如创建对象、对象的属性和方法等。

  • 数组的基本操作:如获取数组长度、数组遍历等。

  • for...of 循环:如遍历数组的元素。

  • 算法思想:使用对象存储每个数字出现的次数,遍历数组找到只出现一次的数字。

反转字符串中的单词

  • 字符串的基本操作:如获取字符串长度、获取某个位置的字符等。

  • 数组的基本操作:如将字符串转化为数组、数组反转、将数组转化为字符串等。

  • 函数的使用:如箭头函数、map() 方法等。

  • 算法思想:字符串分割成单词数组,遍历单词数组将每个单词反转,最后拼接成字符串。

深度优先搜索算法

  • 递归:如函数内部调用自身,以此实现重复操作。

  • 图的遍历算法:如深度优先搜索、广度优先搜索等。

  • 深度优先搜索算法:如使用递归实现深度优先搜索。

如果你觉得他总结的比较简单,还可以让他继续更详细的总结,更多的玩法大家自己去探索吧 ~

最后

看完我不仅感叹,在这个场景下,ChatGPT 真的可以替代一些比较基础的 “编程导师” ,甚至在分析某些复杂的题目上比高阶的工程师还要准确和快速。

另外,后面远程面试的面试官要注意了,如果你对面的面试者正在使用 ChatGPT ,还真是很难发觉的,所以后面尽量现场面试吧 ...

以此类推,你还可以让 ChatGPT 成为你的虚拟面试官、Code Reviewer 等角色,希望大家都能好好把它利用起来吧!

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

1480ea9b2f785cededa7ec3d7e0fd6d3.gif

回复“加群”,一起学习进步

点赞在看是最大的支持⬇️❤️⬇️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53940.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可以用什么软件画流程图?看看这几款画流程图软件

我们在日常的学习和工作中&#xff0c;经常会需要制作一些流程图来帮助我们梳理工作的流程或知识点&#xff0c;帮助我们能够更好地理清思路&#xff0c;让我们可以更加顺利地完成学习和工作任务。那大家知道在线画流程图工具有哪些吗&#xff1f;还不知道的小伙伴&#xff0c;…

绘制交互流程图的方法

转载自&#xff1a;http://blog.sina.com.cn/s/blog_6b6abdc10100wpny.html 下面介绍一个设计方法&#xff0c;这是一个用于兼顾“为流程”与“为结构”的信息架构&#xff08;IA&#xff09;的设计方法。是2010年底&#xff0c;我和seven共同分析总结出来的。在广州的“2010年…

分别画出程序的软件流程图、NS图、PAD图; 程序

1、分别画出程序的软件流程图、NS图、PAD图&#xff1b; 程序 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) {int Edge_a,Edge_b,Edge_c;printf("Input three int type data between space:\n");scanf("%d %d %d"…

分享一个开源的流程图绘制软件--Diagram Designer

最近在写专利文件&#xff0c;在制作说明书附图时想到自己还只会用wps进行简单的绘制&#xff0c;于是想学习下&#xff0c;填补下这方面的短板。这两天查到了DiagramDesigner这个小工具&#xff0c;派上了大用场。用它写完了一个发明专利&#xff0c;还给zigbee产品设计了一个…

交互流程图用什么软件做?

产品经理在进行产品设计等工作时&#xff0c;会使用交互流程图来提高团队效率。这种流程图适用于传达方案、评审目标等需要团队协作的场景&#xff0c;视觉设计师、产品开发等工作团队只需看图便能迅速理解图示要义&#xff0c;极大地节省了理解时间&#xff0c;有效提高沟通效…

给菜鸟看的Android应用开发全流程

给菜鸟看的Android应用开发全流程——好多Android开发中&#xff0c;没人告诉过你的事 很多菜鸟开始学习Android开发&#xff0c;去网上搜集过很多“Android开发教程”&#xff0c;但是搜索出来的东西&#xff0c;如果不是特别针对性的关键词&#xff0c;基本上内容都是&#x…

对话钉钉音视频专家冯津伟:大模型不是万能的

策划&#xff1a;LiveVideoStack 在音视频技术领域&#xff0c;ICASSP 大会是行业的风向标会议&#xff0c;也是语音学界从业者研究下一代技术发展的盛宴。近期&#xff0c;国内外各大企业陆陆续续放出论文入顶会的消息&#xff0c;钉钉蜂鸣鸟音频实验室 2 篇论文也登上了 ICAS…

ChatGPT颠覆者来了!Auto-GPT强在哪?

ChatGPT自诞生以来&#xff0c;一直备受关注&#xff0c;人们感受到了人工智能的强大。 现在&#xff0c;一个更加强大的人工智能应用已经登场——Auto-GPT。 Auto-GPT的一大突破是&#xff0c;可以让AI自我提示&#xff0c;就是说&#xff0c;这个AI完全不需要咱们人类了。 什…

每日一皮:每天到公司 VS 工作一小时后

往期推荐 每日一皮&#xff1a;都 0202 年了&#xff0c;我怎么可能被骗呢&#xff1f; 每日一皮&#xff1a;用户“这个项目很容易嘛”&#xff5e; 每日一皮&#xff1a;客户期望 vs 最终产品 每日一皮&#xff1a;入职新公司第一周的感受... 每日一皮&#xff1a;小公司搞中…

XXXX直聘聊天机器人

XXXX直聘聊天机器人 想转岗到爬虫工程师&#xff0c;由于面试机会太少&#xff0c;而boss直聘又无法海投&#xff0c;决定做一个boss直聘机器人来帮我找工作。 一、基本需求 一个爬虫程序爬取需要的工作信息&#xff0c;存入数据库。 聊天机器人每天上午10点向未聊天的boss打…

每天加班的HR,时间都浪费在了这些琐事上?

编者按&#xff1a;随着无纸化办公的引入&#xff0c;为企业办公免去了非常多的成本浪费&#xff0c;那么OA系统是如何为无纸化办公助力的呢&#xff1f;让我们一起往下看。 HR每天的工作离不开招聘、员工入转调离信息、出勤排班、薪酬和工资单、绩效福利、培训、休假管理等等。…

一位程序员的一天工作清单:5:30下班,5:30起床

分享职场程序员生活、职场攻略、领导同事相处技巧和创业资源 文|洪生鹏 曾发布了一篇《一位程序员的一天清单》文章&#xff0c;简单描述了一位程序员了的一天日程安排。 文章发布后&#xff0c;得到了广大读者的欢迎&#xff0c;其中读者们的留言最为精彩了&#xff0c;比文章…

工作日志day01

1.No matching distribution found for virtualenv 查询了好多资料&#xff0c;最终找到问题所在&#xff1a; 2.根据上述果然报错ping: www.baidu.com: Temporary failure in name resolution 解决&#xff1a; 最终成功下载虚拟环境 3.cuda编程问题&#xff1a;根据代码运行环…

【第188期】游戏文案策划:薪水低、压力大,升职无望,怎么办?

我是酱油&#xff0c;这是第188期文章 收到一位想匿名的同学留言&#xff1a; 酱油哥&#xff0c;我已经入行两年&#xff0c;在一个平平无奇的小游戏公司打转。因为职场的高度&#xff0c;也完全限制了我的职场眼界&#xff0c;所以想向你请教一下&#xff0c;游戏文案的职场…

你10点钟还在做报表?套用模板,让你提前下班3小时

最近听到一个朋友向我抱怨&#xff0c;他们是一家主营餐饮的传统公司&#xff0c;已经线下开了好几家门店了&#xff0c;今年还打算再开六家。但是发现随着门店数量的增长&#xff0c;加上现在外卖业务的集中发力&#xff0c;线上线下业务数据无法打通&#xff0c;其传统的运营…

天选打工人春节兼职记

一、python爬虫是可以做副业的&#xff0c;主要是爬取网站、小程序或者APP的数据&#xff0c;对数据进行分析与处理&#xff0c;或者直接向客户提供爬虫程序与技术支持。 当初学会Python那会儿&#xff0c;有朋友来介绍我去接私活&#xff0c;是为一家公司做网站&#xff0c;那…

程序员10个月接了30个私活单子,晒出收入,让大家意想不到

现如今&#xff0c;相信很多职场朋友都非常羡慕程序员的高薪工作吧&#xff0c;很多学习计算机专业的大学生&#xff0c;他们在毕业以后&#xff0c;往往通过自己的专业就能找到互联网公司的高薪工作&#xff0c;而作为一名程序员&#xff0c;他们的工作压力还是非常大的&#…

“摸鱼”的打工人,“累死”了同事

文/韩滢 来源/连线Insight 一纸处罚&#xff0c;打破了打工人手中“金鱼缸”的平静。 近期&#xff0c;一份国美集团《关于违反员工行为规范的处罚通报》在职场人的圈子里流传开来&#xff0c;国美处罚员工摸鱼事件也引起了众多讨论。在国美的这张处罚表里&#xff0c;详细…

IT = 加班多?外国小哥打破“魔咒”:“每天工作 10 分钟,工资近 9 万美元”

相信在许多人印象中&#xff0c;凡是与 IT 沾边的工作似乎都逃不开“加班”二字&#xff1a;“加班狂”、“过度劳累”等标签令许多站在 IT 行业门口的人望而却步。 但上周&#xff0c;国外社交网站 Reddit 上有一则帖子突然爆火&#xff1a;“一年多前&#xff0c;我把我的工…

某百度程序员:每天十点上班,午休两小时,每天闲逛,晚上八点就下班!

请点击上面  一键关注&#xff01; 互联网公司一向以加班和996著称&#xff0c;大家说起来都是一把辛酸泪。如果有人说他所在的公司可以养老&#xff0c;你信不信&#xff1f; 一个百度员工发帖爆料自己的职场生活&#xff1a;10点上班&#xff0c;中午休息两个小时&#xff…