返回信息流说下问题吧:
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]);
}
}
}
大家有什么更好的优化算法吗?我还想请问,第一题怎么做呢?
这是一条镜像帖。来源:北邮人论坛 / java / #51260同步于 2016/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
刚才腾讯深圳的面试官电话面试+屏幕分享
nijian81
2016/6/28镜像同步32 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
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
1.粗看可以用快排思想的findKthLargest算法 log(n)
2.看草稿?要什么高大上的算法吗。。感觉这么小的数据量,迭代就好了 附加题目测量化对瓶盖 酒瓶 酒 三元方程组,解出来就可以了
3.逐一讲解方法?随便说一个。。hash吧,最简单
4.优化。。这个要看场景吧
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的总和最后的数就是重复的数
: ...................
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的总和最后的数就是重复的数
: ...................
那我也随便说说
【 在 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] 用自己熟悉的语言编写冒泡排序。(面试官全程观看编码调试过程)
这个就不说了,冒泡排序谈不上效率。
【 在 nuanyangyang 的大作中提到: 】
: 那我也随便说说
:
: SQL语句吧。排序是order by,但是取第11-20条数据,没有标准的做法,还是要看看具体的数据库。
: ...................
第二题我也是画图的,一步步算出来的...