加餐六 | 什么才是所谓的编程能力?如何考察一个人的编程能力?
王争
该思维导图由 AI 生成,仅供参考
在招聘要求里,我们经常看到“要求候选人有扎实的编程能力”。在面试反馈中,我们也经常看到面试官用“编程能力很强”来评价候选人。那到底什么是编程能力呢?如何考察一个人的编程能力呢?又如何提高编程能力呢?今天,我们就编程能力这个话题展开聊一聊。
话不多说,让我们正式开始今天的内容吧!
什么是编程能力?
所谓编程能力,指的是把“逻辑”(或者说“功能”“业务”)翻译成代码的能力。所谓编程能力强,指的是,不仅能编写正确的代码,而且编写代码的速度很快,写出来的代码 bug 很少、性能很好、质量很高。
更加具体点讲,一个编程能力强的人,能熟练使用编程语言、开发类库等工具,思路清晰,面对复杂的逻辑,能够编写出 bug free 的代码,能够合理地利用数据结构和算法编写高效的代码,能够灵活地使用设计思想、原则和模式,编写易读、易扩展、易维护、可复用的高质量代码。
相反,一个编程能力差的人,往往逻辑思维能力比较差,面对复杂的逻辑,编写代码的速度很慢,而且容易考虑不周,写出来的代码 bug 很多,更没有性能意识,不懂得如何分析代码的时间复杂度、空间复杂度,更不懂得如何借助现成的数据结构和算法来优化代码性能。除此之外,写代码的时候,几乎不考虑代码的可读性、可扩展性等质量问题,只追求能运行就可以。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
编程能力是指将逻辑转化为代码的能力,包括编写正确、高效、高质量的代码。考察编程能力主要包括编程语言、数据结构和算法、设计思想、原则和模式。面试中通过白板编程考察候选人的基本技术素养,重点考察数据结构和算法。建议不考察需要记忆特定算法或技巧的题目,而是考察基本编程素质。提高编程能力可通过刷LeetCode题目加强对数据结构和算法的掌握,锻炼逻辑思维、写出bug free代码的能力,同时在平时开发中练习设计思想、原则和模式。文章强调内功的重要性,提倡持续积累不变的能力。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》,新⼈⾸单¥98
《设计模式之美》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(37)
- 最新
- 精选
- Jie沟通能力很重要,和领导和同事和客户可以聊得起来。和机器打交道久了,人不能变得像机器一样。2020-07-0157
- J.Smile做人要务虚,做事要务实。程序员不懂得务虚在职场很吃亏,即便技术不差,但得出类拔萃,挺难。2020-07-01731
- 君哥聊技术技术上讲,数据结构,操作系统,网络,设计模式,数据库,这些都是不变的内功2020-07-0616
- enjoylearning产品意识也是一种内功,不能只是还原客户的需求,要了解客户需求背后的需求。2020-07-0116
- 守拙“写一个函数将 IPv4 地址字符串(仅包含数字、点、空格)转化成 32 位整数。另外,数字和点之间的空格是合法的,其他情况均为非法地址,要求输出合法地址的 32 位整型结果。” 思路: 1. 根据.和空格判定输入是否合法; 2. 将输入以.分割为4个8bit的十进制int值; 3. 遍历4个int值, 将其转为二进制值; 4. 拼接4个二进制值, 得到32位整型结果.2020-07-01414
- 程序员小跃最近一直在和同学聊如何提升自己的能力,因为他刚转行到 Java 开发不久,我零零碎碎的整理了一些知识点给他;恨自己没早点学习专栏,没有把这篇文章做一个观后感的整理。 还早现在还来得及,我反复读了几遍,顺带分享给我同学,希望他能转行找到心仪的工作。2020-10-247
- 业余爱好者量子计算普及之前,冯诺依曼架构的理论知识(如os,网络等)还是需要学习的,不过这些底层知识的学习最终还是要落到编程能力上,因为少有人去设计一个操作系统或编译器。 编程能力确实是一个衡量程序员水平的很好的指标,编程能力又可以拆分为算法能力,设计能力等。对程序员来说,一切工作都是围绕编程的,失去这一宗旨,一切都是扯淡,即使所谓沟通之类能力也是为了协作以完成编程目标而已。2020-07-017
- Geek_7f18ebprivate static String ipTo32(String str) { String result = ""; int length = str.length(); int i = 0; for (; ; ) { if (i > length - 1) { if (result.length() < 32) { result += "0"; continue; } else { break; } } char index = str.charAt(i); Boolean last = Character.isDigit(index); Boolean lastPoint = ".".equals(String.valueOf(index)); if (last) { result += String.valueOf(index); } int j = i + 1; if (j < length && " ".equals(String.valueOf(str.charAt(j)))) { Boolean nextPoint = ".".equals(String.valueOf(str.charAt(j + 1))); Boolean next = Character.isDigit(str.charAt(j + 1)); if ((last && nextPoint) || (lastPoint && next)) { } else { result = "false"; break; } } i++; } return result; }2020-07-036
- 我能走多远底层得知识是内功,计算机理论基础;内核的内存管理及文件管理;数据结构与算法等等吧2020-07-0134
- 全炸攻城狮合法字符串trim后,按照.分割成4个串,再分别转换成二进制,最后合并。这道题关键应该是对于字符串是否合法的判断吧,比较能体现出一个人逻辑思维是否缜密2020-07-023
收起评论