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个赞稳坐第一,评论也有很多人都表示佩服,不愧是微软的程序员呀!

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

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

哈哈哈...



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

目录
相关文章
|
2天前
|
Java 程序员 图形学
程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩
《飞扬的小鸟》Java实现摘要:使用IntelliJ IDEA和JDK 16开发,包含小鸟类`Bird`,处理小鸟的位置、速度和碰撞检测。代码示例展示小鸟图像的加载、绘制与旋转。同时有`Music`类用于循环播放背景音乐。游戏运行时检查小鸟是否撞到地面、柱子或星星,并实现翅膀煽动效果。简单易懂,可直接复制使用。
|
12天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
27 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
22小时前
|
机器学习/深度学习 人工智能 算法
每个程序员都应该知道的 40 个算法(三)(1)
每个程序员都应该知道的 40 个算法(三)
7 0
|
1天前
|
算法 搜索推荐 程序员
程序员常用的几种算法
程序员常用的几种算法
5 0
|
2天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
16天前
|
存储 安全 Java
Java程序员必须掌握的数据结构:HashMap
HashMap底层原理实现是每个Java Boy必须掌握的基本技能,HashMap也是业务开发每天都需要遇到的好伙伴。如此基础且核心的底层数据结构,JDK也给其赋予了线程安全的功能,我们来看看~
30 2
Java程序员必须掌握的数据结构:HashMap
|
17天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
18天前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
7 0
|
22天前
|
JavaScript Java 测试技术
基于Java的企业员工岗前培训管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的企业员工岗前培训管理系统的设计与实现(源码+lw+部署文档+讲解等)
27 1
基于Java的企业员工岗前培训管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
22天前
|
机器学习/深度学习 数据采集 算法
使用 Java 实现机器学习算法
【4月更文挑战第19天】Java在数据驱动时代为机器学习提供支持,具备丰富的数学和数据结构库,适用于实现线性回归、决策树、SVM和随机森林等算法。实现时注意数据预处理、模型选择、评估指标和可视化。利用Java的库和编程能力可构建高效模型,但需按问题需求选择合适技术和优化方法。