阿里面试题:阿里代码库有几亿行代码,但其中有很多功能重复…

阿里面试题:
阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。
请设计一个程序,能够将代码库中所有功能重复的代码找出。
各位大佬有啥想法,我当时就懵了,然后就挂了。。。

曹彰:要是能找出的话,他们自己早特么就去找了。

科大讯飞股份有限公司员工:这不就是编译器优化的事?

程序猿.道明寺:m

楼主:是啊,关键是怎么找出来

程序猿.曲洋:m

科大讯飞股份有限公司员工:函数的语法树优化后同构

阿里巴巴员工:你面试的研发效能?

程序猿.曲洋:train个模型,机器扫一遍,再人工校验一下[害羞]

饿了么员工:M

阿里巴巴员工[2]:感觉是骗方案[笑哭],里面到处是重复的代码,一个Result类都有几十个[坏笑]

科大讯飞股份有限公司员工:[坏笑]找出来怎么刷kpi

阿里巴巴员工[3]:所有行吗?还是方法?如果是方法,可以把每个方法编译成字节码,然后先匹配方法签名,一样的话再匹配字节码。

湖南泛联新安信息科技有限公司员工:形式验证[哈哈]

科大讯飞股份有限公司员工:实际上不怎么好,相似不等于等价。不过确实是个方案[奸笑]然后你入职后就负责这个吧

程序猿.朱仝:咋觉得不靠谱呢

时迁:1. 字符串匹配查找所有函数名称包含sort的,将函数的代码段和文件夹路径提取出来 2 从这些代码段函数名称,或者开头注释里边查找包含quick字符串的即为重复的代码段。为什么这样有效?因为你是程序员,我是程序员,写代码的时候quicksort函数名称或者注释里边,肯定有quick,sort两个单词,用这个规律找出来非常高效,只需要扫描一遍代码库。更详细点,可能是中文注释,那就匹配中文的 快速,快排,排序再几个词就行[哈哈][哈哈][哈哈]

时迁:这个题考查的是搜索匹配问题,即看你是否能找到需要的结果的共同特征,用逆向思维,大家都经常有的习惯去解题即可。[微笑][微笑]

程序猿.安东尼奥刘能:m

前阿里妈妈员工:好吧,这是之前一个内部项目。。

时迁:看看我的回复啊,这个感觉不难啊,考察一个程序员的逆向思维[害羞][害羞]

海尔集团员工:重复就重复呗,也不影响什么

时迁:看看我后面的回复,很简单啊,你们别陷入代码底层细节逻辑匹配,而是上层的快排结果匹配就行了[哈哈][哈哈]

嵩山弟子:M

徐庶:我在想什么项目需要重写快排,是标准库的快排不好用,还是自己太飘?

司马昭:m

沉默是银:考察海量数据切割,以及文本分析吧

张飞:m

程序猿.药匣子:你觉得可能有注释?

衡山弟子:静态检查

时迁:你觉得有人会恶意写函数名称?给自己之后调用增加工作量?

程序猿.廖化:m

蒋琬:这个馊主意写这么多字干嘛

时迁:[哈哈][哈哈][哈哈]解释清楚点

腾讯科技(深圳)有限公司员工:我就是做这个的

腾讯员工:大佬请问用到哪些技术?

假意或真心:算md5吗

微软亚洲研究院员工:nlp技术很容易。

低压锅蒂亚戈:这是钓鱼来的

程序猿.风波恶:基于注释?

昆仑弟子[2]:m

中国银联员工:各种特征:包括函数定义的文本,调用它的上下文,可能有的运行时日志,运行时输入输出,编译后的字节码

美团点评员工:它说的是功能,不是代码相似度...nio和bio只差一行代码,功能却大相径庭

滴滴出行员工:面试官是孤尽不?[哈哈][哈哈]

字节跳动员工:这就是一个code 风格检查,例如代码重复,函数过长, if过多,变量过多

滴滴出行科技有限公司员工:M

腾讯科技(深圳)有限公司员工:静态分析加搜索引擎那一套

测试.阮小五:可以用判断代码相似度的方法,也可以直接随机输入看输出是否一样来判断

李逵:m

萧峰:最后落地了吗

美团点评员工[2]:m

曹彰:要是能找出的话,他们自己早特么就去找了。

阿里巴巴员工[2]:感觉是骗方案[笑哭],里面到处是重复的代码,一个Result类都有几十个[坏笑]

蒋琬:这个馊主意写这么多字干嘛

时迁:这个题考查的是搜索匹配问题,即看你是否能找到需要的结果的共同特征,用逆向思维,大家都经常有的习惯去解题即可。[微笑][微笑]

徐庶:我在想什么项目需要重写快排,是标准库的快排不好用,还是自己太飘?

海尔集团员工:重复就重复呗,也不影响什么