今儿面试的几道题,大家帮看看

lys0410 2009-08-06 04:33:55
加精
1.有1亿个浮点数,请找出其中对大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。

2:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可。

3:有一篇英文文章(也就是说每个单词之间由空格分隔),请找出“csdn”着个单词出现的次数,要求效率最高,并写出算法的时间级。

4:给定一个日期2031-7-2,求出该日为星期几(已知2002-3-28为星期四)。只要求说明思路,不要写java code
...全文
9031 338 打赏 收藏 转发到动态 举报
写回复
用AI写文章
338 条回复
切换为时间正序
请发表友善的回复…
发表回复
一天zijie一夜 2012-09-07
  • 打赏
  • 举报
回复
4:给定一个日期2031-7-2,求出该日为星期几(已知2002-3-28为星期四)。只要求说明思路,不要写java code

问什么要自己做,有现成的时间工具不用,为了锻炼思维?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2031-7-2");
System.out.println(date.getDay());
li_zu_gen 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 77 楼 mooninwator 的回复:]

呵呵,我是一个菜鸟,刚学java十天,学了Date,来解答最后一题,思路从题中可以知道2002年3月21是周日
于是直接先将2031.07.02与2002.3.21解析成毫秒数,算出这段时间里相差多少毫秒,再将毫秒数除以一天的毫秒数(24L*60*60*1000)转换为天数,即求出了,这两段时间相差多少天,再%7即可。
省去了还要考虑闰年,平年等一些问题。
呵呵,刚学,有的还不会表达,附上……
[/Quote]

很不错...
刘大柱 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 85 楼 的回复:]

不错了,学习!
[/Quote]+1
caiwenzx2004 2012-08-09
  • 打赏
  • 举报
回复
第3题可以用" csdn "直接正则比配字符串,Matcher.find()到的次数加上文章头尾单词是否是csdn就行了。
时间复杂度O(6m),6是" csdn "的长度,m是文章的长度。
kldkn 2012-08-08
  • 打赏
  • 举报
回复
悲伤的编程。好好学了。
Barryzhong 2012-05-14
  • 打赏
  • 举报
回复
太高端了,学习学习
hezhao4444 2012-03-03
  • 打赏
  • 举报
回复
我只会二题啊,纠结啊。我都怀疑我自己的水准了
lezai001 2011-12-07
  • 打赏
  • 举报
回复
18大神!
wuyoutianxia2 2011-09-15
  • 打赏
  • 举报
回复
3题正则表达式
4题:

public static void main4(String[] str)
{

SimpleDateFormat sdm = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dt1 = sdm.parse("2031-7-2");
Date dt2 = sdm.parse("2002-3-28");
long timeM = dt1.getTime() - dt2.getTime();
long days = timeM/(24*3600*1000); //两者相差天数
System.out.println("2031-7-2 星期"+((days+4)%7));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
结果:2031-7-2 星期3
支持英文数字 2011-09-05
  • 打赏
  • 举报
回复
每5个数一组找出其中的中位数,就把数据量减为2G,然后2G的数再划分成每5个一组继续寻找。最后的中间数就是所有数的中位数。
start_boy 2011-07-27
  • 打赏
  • 举报
回复
看高手的代码。。
romanitc 2011-06-29
  • 打赏
  • 举报
回复
学习了!
华夏鹰 2011-06-02
  • 打赏
  • 举报
回复
向各位学习了
langlang520huahua 2011-05-26
  • 打赏
  • 举报
回复
学习!
牧之年华 2011-05-26
  • 打赏
  • 举报
回复
我觉得能把这几个问题回答出来了,直接可以要8K到10K的工资了。这题目还是有点难度的。
wan423016 2011-05-17
  • 打赏
  • 举报
回复
只对第一第四有感觉
bom 2011-03-01
  • 打赏
  • 举报
回复
什么垃圾面试题,面试官脑袋进水了。
huabing84 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xoxong 的回复:]
Java code

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
public static void main(String[] args) {
SimpleDateFormat……
[/Quote]
如果本来2010-10-01是周五,但是题目中说是周三怎么办?
huabing84 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 aywrenyue 的回复:]
1、将这1亿的数字,放在文件中,然后分段读取,每次读10000个,在10000个中取最大,跟下次10000个比较。这样依次。
2、通过BufferReader来读,预先分配适当的buffer,然后再根据排序算法找到中位数。
3、
4、通过Calendar来计算。
[/Quote]
1、有问题,这样你不能保证你每个10000中选的,最终组成的那10000个是最大的啊!
4、同意
yaojj_147258369 2010-09-17
  • 打赏
  • 举报
回复
学习!
加载更多回复(308)

67,518

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧