BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #51260同步于 2016/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

刚才腾讯深圳的面试官电话面试+屏幕分享

nijian81
2016/6/28镜像同步32 回复
说下问题吧: 1.一张数据表内,已知一个字段为日期时间类型,以此字段降序排序后,获取第11至20条数据。 2.第一题(10分钟):2元一瓶酒,4个瓶盖换1瓶酒,2个空瓶换1瓶酒,请问10元可以喝几瓶酒?(无需编程,将草稿照片发送给面试官)(附加题:如果可以允许借酒喝,最多可以喝多少) 3.有10001个数(最大值是10000,最小值是1),无序,其中有1个数重复,可以用多少种方法找出这个数值是多少(无需考虑算法复杂度)?请逐一讲解你找到的方法。(无需编程,如有需要可用代码证明算法的有效性,全程需要分享屏幕给面试官) 4.数组:[5,4,2,3,1,6,7,8,9] 用自己熟悉的语言编写冒泡排序。(面试官全程观看编码调试过程) 第一题我不会做,最后一个题问到了,如何优化冒泡算法,因为这个数组最后4个数是有序的,因此没有必要全部遍历冒泡,我给出的算法是: public class Maopao { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a[] = { 5, 4, 2, 3, 1, 6, 7, 8, 9 }; int temp = 0; int endIndex = 8; for (int i = 0; i < 8; i++) { if (a[i] > a[i + 1]) continue; if (a[i] < a[i + 1]) { int j = i + 1; for (; j < 8; j++) { if (a[j] > a[j + 1]) { break; } } if (j == 8) { endIndex = i; break; } } } System.out.println(endIndex); for (int i = 0; i < endIndex; i++) { for (int j = 0; j < 8 - endIndex; j++) { if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for (int i = 0; i < 9; i++) { System.out.println(a[i]); } } } 大家有什么更好的优化算法吗?我还想请问,第一题怎么做呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wht机器人#1 · 2016/6/28
不懂帮顶
wht机器人#2 · 2016/6/28
无需编程那不就是自己在纸上先画画,全程分享屏幕有啥用。。。原谅一个根本没经过面试的渣渣的渣问题
jh1机器人#3 · 2016/6/28
1. select * from table_name order by date desc limit 10, 10; 2. 10元+30元(借)=40元 可以买20瓶酒,20瓶酒可以换5瓶(4个瓶盖)+10瓶(2个瓶)=15瓶;15瓶*2 = 30元,还掉借的钱,正好可以买20瓶酒 3. 暴力,两次遍历;map统计次数;全部相加,减去1到10000的总和最后的数就是重复的数 4. 上网搜冒泡优化,无非就是标记一下。http://blog.csdn.net/tjunxin/article/details/8711389
ml3615556机器人#4 · 2016/6/28
1.粗看可以用快排思想的findKthLargest算法 log(n) 2.看草稿?要什么高大上的算法吗。。感觉这么小的数据量,迭代就好了 附加题目测量化对瓶盖 酒瓶 酒 三元方程组,解出来就可以了 3.逐一讲解方法?随便说一个。。hash吧,最简单 4.优化。。这个要看场景吧
zhangfulin机器人#5 · 2016/6/28
666 【 在 jh1 (邯是郸身|土豆|鱼欲遇雨|儿时吹过的牛逼) 的大作中提到: 】 : 1. select * from table_name order by date desc limit 10, 20; : 2. 10元+30元(借)=40元 可以买20瓶酒,20瓶酒可以换5瓶(4个瓶盖)+10瓶(2个瓶)=15瓶;15瓶*2 = 30元,还掉借的钱,正好可以买20瓶酒 : 3. 暴力,两次遍历;map统计次数;全部相加,减去1到10000的总和最后的数就是重复的数 : ...................
icyfox机器人#6 · 2016/6/29
re 【 在 jh1 的大作中提到: 】 : 1. select * from table_name order by date desc limit 10, 20; : 2. 10元+30元(借)=40元 可以买20瓶酒,20瓶酒可以换5瓶(4个瓶盖)+10瓶(2个瓶)=15瓶;15瓶*2 = 30元,还掉借的钱,正好可以买20瓶酒 : 3. 暴力,两次遍历;map统计次数;全部相加,减去1到10000的总和最后的数就是重复的数 : ...................
a206206机器人#7 · 2016/6/29
计数
nuanyangyang机器人#8 · 2016/6/29
那我也随便说说 【 在 nijian81 的大作中提到: 】 : 说下问题吧: : 1.一张数据表内,已知一个字段为日期时间类型,以此字段降序排序后,获取第11至20条数据。 SQL语句吧。排序是order by,但是取第11-20条数据,没有标准的做法,还是要看看具体的数据库。 : 2.第一题(10分钟):2元一瓶酒,4个瓶盖换1瓶酒,2个空瓶换1瓶酒,请问10元可以喝几瓶酒?(无需编程,将草稿照片发送给面试官)(附加题:如果可以允许借酒喝,最多可以喝多少) 我想,画图就行了。 : 3.有10001个数(最大值是10000,最小值是1),无序,其中有1个数重复,可以用多少种方法找出这个数值是多少(无需考虑算法复杂度)?请逐一讲解你找到的方法。(无需编程,如有需要可用代码证明算法的有效性,全程需要分享屏幕给面试官) 所有的数xor,然后再和1-10000之间的所有数xor。 : 4.数组:[5,4,2,3,1,6,7,8,9] 用自己熟悉的语言编写冒泡排序。(面试官全程观看编码调试过程) 这个就不说了,冒泡排序谈不上效率。
nijian81机器人#9 · 2016/6/29
【 在 nuanyangyang 的大作中提到: 】 : 那我也随便说说 : : SQL语句吧。排序是order by,但是取第11-20条数据,没有标准的做法,还是要看看具体的数据库。 : ................... 第二题我也是画图的,一步步算出来的...