- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章用这个奇葩的语言来面试,绝对会毙掉90%的人......由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
先给大家看一幅图 。
这是什么鬼?这些层层叠叠、奇奇怪怪的文件夹是干嘛的?
我如果告诉你它实际上是一个程序,你相信吗?
它还真是一段程序, 相当于Python代码:
这段代码使用一种叫做Folder的编程语言写成,也就是说,完全用“文件夹”实现代码.
这些文件夹只要保证一定的次序,每个文件夹中有一定数量的子文件夹,它就是程序了! 根本不关心文件夹下有什么内容.
文件夹的名称根本不重要,所以我们可以把上面的转化成这样一幅图:
还是没有感觉?我用文件夹语言的语法来拆解一下.
这个文件夹表示一个程序的开始,我们暂时把它称为root 。
但是这个程序要做什么事情?
我们得看看root的第一个子目录下有多少个目录 。
根据print语法的规定,它后面要跟一个表达式,在root的第二个子目录中描述:
expr的第一个子目录是这样的:
那这个“字面量”的类型到底是字符,数字,还是字符串呢?
根据文件夹编程语言的语法,需要看expr的第二个子目录:
那这个字符的值具体是什么呢?需要看expr的第三个子目录 。
最后再简化一下:
稍微学过一点儿编译原理知识的同学,估计早就明白了,这不就是一颗抽象语法树(AST)吗?
有了AST,我就可以写个程序,解释执行它了.
针对这个AST,它就是 print('h').
真相大白,这个所谓的文件夹编程语言就是把代码编码到了文件夹当中.
用文件夹之间的次序关系,和文件夹中的子文件夹的数量来表示信息.
当然, 这是一种非常繁琐的编程语言,如果要写个Hello World是这个样子的:
这个Hello World 需要208个文件夹.
你要是用这种方式编程,肯定会发疯的.
如果用Folder来做白板编程面试,估计一个Hello World就能毙掉90%的人吧图片 。
不过“文件夹编程语言”的作者Daniel Temkin“炫耀”说,虽然文件夹很多,但是却有一个好处:不占用空间.
当然这是不可能的,文件夹的元数据肯定是要占据硬盘空间的.
这样的编程语言有实际的用处吗?
恐怕是没有吧.
但是,它应了Linus Tovarlds那句话:Just for Fun .
自己找点儿乐子,然后从中学习一点编译的知识,这就够了.
Reddit有个网友评论说,他是一个学校高性能计算机中心的管理员, 学生想存储数据的话可以使用免费空间, 超过配额就需要付费.
其中有个学生想了一个天才的想法,他把要存储的数据,编码成了数十亿个空文件,这样一分钱都没有花!因为metadata并不计费.
但是这个计算中新的metadata服务器就挂掉了,任何人都没法用高性能计算机了...... 。
这个故事和Folder编程语言有异曲同工之妙.
文件夹编程语言再次提醒我们,我们看到的Python, Java源代码不过是一种编码形式,你完全可以用其他编码形式来存储信息,例如文件夹,空文件.
所以,发挥你的想象力,尽情地去找乐子吧 .
Folder语言的具体语法可以到这里查看:
https://esolangs.org/wiki/Folders 。
代码在GitHub:
https://github.com/rottytooth/Folders 。
Python版本不到500行.
原文地址:https://zhuanlan.51cto.com/art/202112/695340.htm#topx 。
最后此篇关于用这个奇葩的语言来面试,绝对会毙掉90%的人......的文章就讲到这里了,如果你想了解更多关于用这个奇葩的语言来面试,绝对会毙掉90%的人......的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
总览 数据库的数据存储有两种类型,一种是面向行的(row-oriented)数据库,另一种是面向列的(column-oriented )数据库。 面向行(事务型) 数据库 该类数据库是根据
starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第1、把冰箱门打开,第2、把大象放进去,第3、把冰箱门带上。 问:实现spring事务,分几步? 答:三
在最近的一次采访中,我有这个问题。 这里有什么错误?我知道足够的 c#,但我看不到错误。可以吗? Class x { protected string t1; public int
我在面试中被要求设计一个文件系统,允许用户将自己的属性添加到文件和文件夹中。我刚刚说过要将属性添加到文件描述符并允许根据此属性标准搜索文件,以及添加此属性以显示在文件/文件夹详细信息中。 看起来面试官
我一直在面试,下面应该有什么问题? 我可以假设这是您无法检查类是否为空的问题,对吗?!谢谢! public class NiceActivity extends Activity { priv
给定一个数组,如何返回总和为偶数的对数? 例如: a[] = { 2 , -6 , 1, 3, 5 } 在这个数组中,偶数和的对数是(2,-6), (1,3) , (1,5), (3,5) 函数应返回
这个问题是在面试中被问到的 Assume you have a dictionary of words: (use if you have /usr/share/dict/words). Given
我被要求实现 invert(x,p,n) 返回 x 的 n 位开始于位置 p 反转(即 1 变为 0,反之亦然),其他不变。 我的解决方案是: unsigned invert(unsigned x,
有人问我这个问题:给定一个大小为 n 的 int 和 int sum 的数组,我需要返回数组元素的所有对,其总和等于 总和 std::vector > find(int* arr,size_t n,i
我在一次面试中遇到了这个问题。有一组对象与起始值和结束值相关联。与每个对象相关联的计数是具有较长开始时间和较短结束时间的其他对象的数量。所以我必须找到与每个对象关联的计数。 我提出了 O(n^2) 解
我今天在采访中被问到这个问题。我已经尝试了一种解决方案,但想知道是否有更好的方法来解决这个问题: 问题:我有一个包含 500,000 个元素的数组列表,这样数组列表的每个元素的值都与索引相同。例如:l
有一个包含白色单元格,黑色单元格和只有一个灰色单元格的矩阵,需要从 (0,0) 到 (N-1, N-1) 如果 Arra[N][N]约束:A。该路径应该只覆盖白色单元格并且应该通过灰色单元格。b.访问
给定一个正整数数组,找出排列的任意排列可以形成的最大值。我想知道是否有更好的数据结构可以为问题提供更优雅的解决方案。 import java.util.ArrayList; import java.u
我在面试中被问到以下问题(不幸的是我找不到比 N^2 更好的答案) 对于大小为 N 的 unsigned int 的给定数组 arr,对于每个元素(在索引 i 中)我应该返回一个元素在索引 j (j
极点:数组中左侧元素小于或等于它且右侧元素大于或等于它的元素。 示例输入 3,1,4,5,9,7,6,11 期望的输出 4,5,11 面试时被问到这个问题,要返回元素的索引,只返回第一个满足条件的元素
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我今天被问到这个问题,我知道答案很简单,但他让我一直到最后。 问题 编写程序删除存储在 ArrayList 中的偶数,其中包含 1 - 100。 我只是说哇 给你,这就是我的实现方式。 ArrayLi
我在一次采访中遇到了这个问题,完全被难住了。我能想到的唯一解决方案是将 currentAngle 存储在 NSArray 中以计算下一个角度。 问题:使用 iPhone 的指南针在屏幕上移动一个 35
我必须在接下来的几周内采访一些 C++ 候选人,作为公司最资深的程序员,我应该尝试弄清楚这些人是否知道他们在做什么。 那么有人有什么建议吗? 就我个人而言,我讨厌被留在房间里填写一些 C++ 问题,所
消息队列(MQ),一种能实现生产者到消费者单向通信的通信模型,这也是现在常用的主流中间件。 常见有 RabbitMQ、ActiveMQ、Kafka等 他们的特点也有很多 比如 解偶、异步、广播
我是一名优秀的程序员,十分优秀!