写点什么

Ruby on Rails 之父自认为写不了冒泡排序

  • 2019-11-07
  • 本文字数:1637 字

    阅读完需:约 5 分钟

Ruby on Rails之父自认为写不了冒泡排序

David Hansson 是 Ruby on Rails 语言的发明者,他在一条推特信息中坦承,他无法在白板上写出冒泡排序算法。David 总是在网上搜代码:



他的几个同事也都支持他的观点:



这个话题一次又一次地出现在不同的地方,正好我自己也有类似的经历:这周以及之前的几周,我参加了几家公司的技术面试,所以怎样准备面试这个问题现在对我来说是最重要的。


面试官会经常性地问到包括算法在内的所谓编程语言基础知识(于我,那就是 JavaScript 啦),这已经不是秘密了。任何平均水平的(对“平均水平”这个词语的定义,人们经常有一些讨论,但是我坚持使用“平均水平”这个词,而不引用别人的定义)工程师都面临两大难题。但首先,我想先稍微解释一下“平均水平”这个词语:一位普通的开发者在商业开发中,应使用其领域最先进的技术方案(例如,最好的算法),这是开发者的责任所在。但是,一位普通的、平均水平的开发者是否需要记住最好算法代码上的某些实现,这仍然是个有争议的话题。


所以,两大难题出现了:


1)通常在面试中,面试官会给你一张纸,一支铅笔,或者一个白板和一只记号笔。在真实的开发环境中,我们使用大量的工具,减少一些常规的开发任务:比如,代码自动补全工具。所以,你需要考虑到面试中的压力环境,也许你并不总是能够凭空写出来精确的、语法正确的代码。


2)第二大难题是数字化时代的基本特点所带来的后果。我会用一个小例子来说明。


过去十几年,我一直在学习汉语。学习汉语最主要的难点在于记住这些汉字的象形写法。这和我们欧洲的语言不同,我们已经习惯了字母表式的语言,而汉语,即使你知道一个汉字的发音,也不一定能帮助你准确地写出这个汉字。现代化的电子助手——手机应用程序——通过输入拼音能够降低写出汉字的难度,因为它能让你快速找到你需要的汉字。


我时不时地会去想人们在过去是怎样做的。那时候,每次为了找到某个汉字的正确拼写方式,最多就只能是去翻一翻厚重的汉语字典。这对于他们记忆象形文字的能力,对于他们反复记忆学习所花费的时间等等,都提出了完全不同的挑战。


简而言之,粗略地说,我们大脑的部分功能会不由自主地被带到外部世界来,被带出来的并非记忆本身,而是,比如说对记忆构建的哈希表,从这张哈希表我们可以快速找到大量的、在加速前进的职业生涯中所获取到的知识。


而对于编程知识来说,情况一模一样。坦率的说,每个人都会承认:他迟早都会忘记一些最基本的东西。例如,每个优秀的 JavaScript 课程都会介绍 OOP 的概念,讲解继承这个主题,如何创建“类”等等。但是,在现代化项目里,特别是那些基于框架的项目,程序员并不经常直接使用 OOP 的特性,其使用频率并不像 OOP 在面试中被问到的那样频繁(面试中几乎总是会被问到)。所以自然地,你实际记住了的和你自己以为记住的(通常却被忘得一干二净),这两者之间会产生冲突。


换句话说,成功的程序员能够了解从哪里以及怎样找到应对当前话题的知识,他们每天都写很多代码,甚至能够解决很多复杂的问题(例如,创建 RoR),但却会在面试中挂掉,不能清晰明了地解答面试题目,只能对着看似“幼稚”的面试任务发呆。那么问题来了,这样的面试究竟是在定义什么?


顺便说一下,一些西方企业就这一主题(http://blog.interviewing.io/you-cant-fix-diversity-in-tech-without-fixing-the-technical-interview/)做了一些研究。


结论是:“它无法界定得那么清楚。”当然,任何平均水平的雇主首先想要在候选人身上看到的是其具备基础知识。由于我们的整个文化主要是写的文化,雇主也就有权要求候选人把他所知道的知识写在纸上。但是,对于编程(很可能在其他需要很多脑力的领域也是这样),一个简单的事实正变得显而易见:一个人不借助特别的线索和提示等,是很难使他所知道的所有知识在脑中重现。相反,让候选人解决一个实际的问题,综合评估其寻求解决方案的能力和技能,而并非只是测试他们是否记住了某些代码片段,这会让面试更有效果。


原文链接


Programmers can’t write algorithms without help: once more about the interview


2019-11-07 17:192505

评论 1 条评论

发布
用户头像
水平不够的面试官,需要问基础知识来辨别面试者
2019-11-08 15:29
回复
没有更多了
发现更多内容

效率提升300%?海外数据筛选的三大核心策略与一个被忽视的技巧

沃观Wovision

数据 数据提取与筛选 海外数据与筛选

AI 英语学习 APP 的运营

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

AI 原生应用开发实战营·深圳站丨限时报名开启!

阿里巴巴云原生

阿里云 Serverless RocketMQ 微服务 云原生

区块链游戏开发核心技术

北京木奇移动技术有限公司

区块链游戏 区块链开发 软件外包公司

互联网云签电子合同小程序:高效便捷的数字化签署解决方案

微擎应用市场

一拍即存!小红书爆款一键提取到飞书多维表格含快捷指令

阿星AI工作室

产品 AI 自媒体 小红书 选题

数据分析案例详解:基于smardaten实现智慧交通运营指标数据分析展示

数睿数据

Java 后端

KubeEdge 1.22.0版本发布!边缘资源管理能力提升!

华为云原生团队

云计算 容器 云原生 边缘计算

2026版出海舆情监测网站选型白皮书:四大核心维度评估模型

沃观Wovision

跨境贸易 出海 舆情监测网站 出海舆情

从数据噪音到商业信号:专业海外舆情分析服务的价值转化路径

沃观Wovision

舆情分析 舆情监测 海外舆情

电商图片搜索:技术原理与商业落地场景深度解析

Noah

区块链 NFT 项目的上线

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

区块链技术在游戏中的应用

北京木奇移动技术有限公司

区块链技术 区块链游戏 软件外包公司

微网红矩阵正在颠覆传统的海外红人营销新模式

Wolink

海外社媒营销 海外营销推广 海外红人营销 品牌推广

海外数据筛选实战指南:从杂乱信息到精准数据的五步法

沃观Wovision

数据分析 数据 海外数据与筛选

数据堂电力行业AI平台建设与高质量多模态数据赋能实践

数据堂

人工智能 数据标注 标注平台 能源电力 高质量数据集建设

区块链/Web3 项目开发和运营

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

超级服务商城 O2O 小程序系统:一站式服务交易解决方案

微擎应用市场

【跨国数仓迁移最佳实践11】基于 MaxCompute Resource & Quota策略优化实现资源管理性能与成本最优平衡

阿里云大数据AI技术

阿里云 数据仓库 数据迁移 MaxCompute

出海舆情监测网站选型必须考察的8个关键要素

沃观Wovision

舆情监测 舆情监测网站 出海舆情

2025中国密码学会年会“人才培养论坛”成功举办,产学共探密码人才培育新路径

隐语SecretFlow

重磅认可! 绿盟科技荣获 2024 年度北京市科学技术进步一等奖

科技经济

平台亮点 | 数据堂位姿标注工具:助力具身智能理解真实世界

数据堂

人工智能 数据标注 标注平台 具身智能 位姿估计

交易所开发Java交易所RWA交易所开发不动产上链发行app开发公司

西安链酷科技

中国燃放生命健康国际创新研究院揭牌成立

科技汇

即时通讯软件泄密不止,国产化企业IM软件BeeWorks保证企业数据安全

BeeWorks

即时通讯 IM 私有化部署

百度智能云发布新一代昆仑芯和天池超节点,打造最硬AI云

新消费日报

大模型幻觉挑战凸显,企业级应用如何破局?

EasyLink_ai

人工智能 OCR rag 大模型幻觉

从 Transform 到 Transformer,用 EventBridge 与百炼构建实时智能的 ETL 数据管道

阿里巴巴云原生

阿里云 云原生 EventBridge

助力企业构建 AI 原生应用,函数计算 FunctionAI 重塑模型服务与 Agent 全栈生态

阿里巴巴云原生

阿里云 Serverless 云原生 Function AI

微预约影楼版小程序系统:高效赋能摄影行业预约管理

微擎应用市场

Ruby on Rails之父自认为写不了冒泡排序_文化 & 方法_Maksim_InfoQ精选文章