Java程序员3面小米,被俩算法题难倒,微软员工6分钟解决,真丢脸

简介: 前些天再网上看了很多网友再谈论一个很有意思的问题,有关算法的。然后小编追根溯源终于扎到了这篇帖子。说是有位网友在面试小米Java岗三次后,终于挺进了第三轮面试,结果还是败在了两道算法题上面。

前些天再网上看了很多网友再谈论一个很有意思的问题,有关算法的。然后小编追根溯源终于扎到了这篇帖子。说是有位网友在面试小米Java岗三次后,终于挺进了第三轮面试,结果还是败在了两道算法题上面。

1、写个读方法和写方法,实现读写锁

2、一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手机没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组



对于楼主所发的这个问题,网友们纷纷发表了自己的答案和看法。

有网友问道,是不是反着做一遍就行了。然后楼主把题目的意思又给他解释了一遍:“一副扑克牌中抽出13张从a到k然后把上面的一张抽出来放最低下,第二张是1拿出来摆桌上,再把最上面的一张抽出来放底下,第二张是2放桌上,以此类推把他们按照顺序都抽出来.怎么摆?”



这时就有为网友给出了自己的答案,第二个问题,第一步:从1开始循环到n递增num,第二部,在第一步的循环内,数组中从0到n-1循环,每次从数组中跳过一个空白位置,插入数字num。还说道,6,7有问题,要跳过一个空白位。至于怎么跳。就是arr[i]=0就跳过一次,跳过的次数局部变量记录下。但是楼主并没有回复他,貌似也是一脸懵逼的。



然后又蹦出来一名网友给出了一个不同的方法,第一遍从1开始步长为2,第二遍从2开始步长为4,第三遍从4开始步长为8,第m次从2的m-1次方开始,步长为2的m次方,m=(n+1)/2,直接出结果,模拟个蛋。这时,楼主也回复了他,觉得应该是正解。也有很多网友点赞,同时也表示是正解。



很显然,这应该是解决问题的一种方法。那我们还有没有其他方法解决呢?接着往下看。

这时,一位自称是微软的程序员发表了条评论。

“取一个1~n的数组,这里为了说明取n=5。按照题目中的规则变换,得到数组:[1 3 5 4 2],将该数组下标与值互换得到[1 5 2 4 3],即为答案。解释:[1 3 5 4 2]的意义是,经过变换,原数组中3号位置的数字现在2号槽,原数组中5号位置的数字现在3号槽... 现在已知变换后的槽存放的是1~n,故只需将下标与值互换即可得到待求数组。

这道题还可以继续扩展:

1.变换规则更复杂使得无法逆向模拟还原原数组;

2.最终得到的序列可以扩展为任意序列。请大家以后不要黑微软是养老院了”

但是楼主貌似没理解全,问道你这些数字是数组的下标吗

后面这位微软的程序员也补充了一下,[]括起来的所有元素都是实际的数字(题目中牌上的数字)。下标从1开始



小编看了下,63个赞稳坐第一,评论也有很多人都表示佩服,不愧是微软的程序员呀!

有人调了半小时才搞定这道题,思路是跟前面的微软大佬学的,确实这道题单纯逆向可解,但逆向确实有局限性,如果碰到难逆向的题就瞎了,多学一点思路,受教了。

不过有位网友表示,我一文科毕业的看大佬们回答好像看天书。

哈哈哈...



对于上面网友们的看法和答案。大家有什么想要表达的呢?欢迎再下方评论区吐槽!

目录
相关文章
|
6天前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
31 2
|
9天前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
13天前
|
存储 缓存 算法
如何管理员工上网:基于 Go 语言实现的布隆过滤器访问拦截算法应用
布隆过滤器以空间换时间,通过多哈希函数实现黑名单的高效存储与毫秒级检索,解决传统方案内存占用大、响应慢等问题,助力企业低成本、高效率管理员工上网行为。
69 3
|
3月前
|
存储 监控 算法
公司员工泄密防护体系中跳表数据结构及其 Go 语言算法的应用研究
在数字化办公中,企业面临员工泄密风险。本文探讨使用跳表(Skip List)数据结构优化泄密防护系统,提升敏感数据监测效率。跳表以其高效的动态数据处理能力,为企业信息安全管理提供了可靠技术支持。
92 0
|
3月前
|
存储 监控 算法
企业上网监控场景下布隆过滤器的 Java 算法构建及其性能优化研究
布隆过滤器是一种高效的数据结构,广泛应用于企业上网监控系统中,用于快速判断员工访问的网址是否为违规站点。相比传统哈希表,它具有更低的内存占用和更快的查询速度,支持实时拦截、动态更新和资源压缩,有效提升系统性能并降低成本。
115 0
|
3月前
|
存储 负载均衡 算法
我们来说一说 Java 的一致性 Hash 算法
我是小假 期待与你的下一次相遇 ~
130 1
|
4月前
|
存储 算法 安全
Java中的对称加密算法的原理与实现
本文详细解析了Java中三种常用对称加密算法(AES、DES、3DES)的实现原理及应用。对称加密使用相同密钥进行加解密,适合数据安全传输与存储。AES作为现代标准,支持128/192/256位密钥,安全性高;DES采用56位密钥,现已不够安全;3DES通过三重加密增强安全性,但性能较低。文章提供了各算法的具体Java代码示例,便于快速上手实现加密解密操作,帮助用户根据需求选择合适的加密方案保护数据安全。
375 58
|
5月前
|
人工智能 算法 NoSQL
LRU算法的Java实现
LRU(Least Recently Used)算法用于淘汰最近最少使用的数据,常应用于内存管理策略中。在Redis中,通过`maxmemory-policy`配置实现不同淘汰策略,如`allkeys-lru`和`volatile-lru`等,采用采样方式近似LRU以优化性能。Java中可通过`LinkedHashMap`轻松实现LRUCache,利用其`accessOrder`特性和`removeEldestEntry`方法完成缓存淘汰逻辑,代码简洁高效。
236 0
|
5月前
|
监控 算法 安全
基于 PHP 的员工电脑桌面监控软件中图像差分算法的设计与实现研究
本文探讨了一种基于PHP语言开发的图像差分算法,用于员工计算机操作行为监控系统。算法通过分块比较策略和动态阈值机制,高效检测屏幕画面变化,显著降低计算复杂度与内存占用。实验表明,相比传统像素级差分算法,该方法将处理时间缩短88%,峰值内存使用量减少70%。文章还介绍了算法在工作效率优化、信息安全防护等方面的应用价值,并分析了数据隐私保护、算法准确性及资源消耗等挑战。未来可通过融合深度学习等技术进一步提升系统智能化水平。
83 2
|
5月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
555 33

热门文章

最新文章