郁闷..下午收到了百度的拒信,大家帮我分析分析原因

Blueion 2007-04-28 02:47:46
我们很遗憾的通知您,您未在指定的时间内答题,或未能通过我们的笔试(Java软件工程师)。您的简历和笔试记录将被转入您所申请的备选职位,并进入百度人才库保存。

百度 人力资源部
==========================================================
题目居然跟这个一模一样,早知道先搜着看看了。虽然事先有协议,但这不能算我发的吧
http://hi.baidu.com/termite/blog/item/67f652c2b33c9434e4dd3b62.html
不知道百度怎么阅卷的,我觉得做得还可以的,唉,谁帮我看看为什么没通过..
是不是编程题应该调试一下再发的?我写好了直接发的,今天调试了一下还发现了几个错误,后悔当初没直接在IDE里写。


1、保存URL的文件为C:\url.txt
//假设文件记录数量不是非常大(1万条之内)
代码如下:
import java.io.*;
void readfile()
{
String line = "";
FileReader fr = new FileReader(c:\url.txt);
BufferedReader br = new BufferedReader(fr);
ArrayList filelist = new ArrayList();
try
{
line = br.readLine();
while(line!=null)
{
String tempStr = line;
urlFile= "";
if(tempStr.contains('?'))//带有参数
{
tempStr = tempStr.substring(0,tempStr.indexOf("?")-1) //将?后面的字符串去掉
urlFile = tempStr.substring(tempStr.lastIndexOf("/")+1);

}

else
if(tempStr.lastIndexOf("/")==tempStr.length-1)//以域名结尾无文件名,”/“在URL最后
{
urlFile = "空文件名";
line = br.readLine(); //读下一行
continue;
}
else //不带参数且不是域名
{
urlFile = tempStr.substring(tempStr.lastIndexOf("/")+1);
}
///////////以下进行数量记录////////////////////////
int position = filelist.indexOf(urlFile); //查找是否有相同的文件名
int count = 0;
if(position==-1) //没有相同的文件名
{
filelist.add(urlFile); //增加文件名
count = 1;
filelist.add(count); //增加数量
}
else //有相同的文件名
{
count = filelist.get(position);
count++;
filelist.set(position,count); //数量加1
}
}
resultPrint(filelist); //结果输出
}
catch(FileNotFoundException e)
{
system.out.println("file not found!");
}

}

void resultPrint(ArrayList al)
{
for(int i = 0; i<al.size();i++)
{
system.out.println(al.get(i).toString); //结果打印
}
}



2、设计三个数据表:userInfo,userTitle,userReplyTitle;结构如下:
userInfo: userName,email,homePage,phone,address. 存储用户基本信息
userTitle: userName,title,context. 存储发帖信息
userReplyTitle: userName,rtitle,rcontext. 存储回复信息
分析:首先userName与其他数据项都有联系,
其次(title,context)(email,homePage,phone,address)(rtitle,rcontext)这三组数据互相没有联系。
分成三个表不会造成传递依赖,三个表以userName连接查找。这样的设计是符合第三范式的。


3、设计思路:考虑先将数据文件B进行内排序,再对A替换关键词后生成新的文件C。
基本算法:
1、读文件B到内存中(ID和关键词的大小*100万 < 1G),可以用数组B保存。
2、根据关键词的Unicode码进行排序(假设数据文件的编码为unicode码),采用快速排序算法。
3、读数据文件A的一条记录,跟据关键词在排好序的数组B中查找ID(二分查找),
4、替换这条记录的关键词为ID。
5、追加到数据文件C中。
6、重复步骤3,直至读完文件A。

空间复杂度:主要是读文件B所占用的空间。
时间复杂度:快速排序的复杂度为O(log2 n)、二分查找为O(log n)和读取文件A的I/O操作时间。
其他时间基本可以忽略。
...全文
6869 73 打赏 收藏 转发到动态 举报
写回复
用AI写文章
73 条回复
切换为时间正序
请发表友善的回复…
发表回复
herosea_xuj 2007-05-09
  • 打赏
  • 举报
回复
mark一下

mathematician 2007-05-09
  • 打赏
  • 举报
回复
表结构同意litcat(里子),补充一点:
如果考虑性能等因素还应设计历史信息表,定期将一个月前的帖子信息导入历史表,毕竟这部分帖子访问量较小。

另外,提出改名问题的网友,应该回头看看数据库教材,特别是关于外键的部分。
unika_ly12 2007-05-09
  • 打赏
  • 举报
回复
学习~~~
dlxu 2007-05-08
  • 打赏
  • 举报
回复
我觉得第一题还是考正则式,因为虽然正则式慢一点,但是这题并没有性能要求啊。而后面两题都写了性能方面的东西,所以肯定后面两题要你重点注意性能。
samwzhang 2007-05-08
  • 打赏
  • 举报
回复
up
sunangle 2007-05-08
  • 打赏
  • 举报
回复
up
huheng_0_0 2007-05-08
  • 打赏
  • 举报
回复
mark
hy_lihuan 2007-05-08
  • 打赏
  • 举报
回复
http://blog.csdn.net/hy_lihuan/archive/2007/05/08/1600034.aspx

这个是我对第二道题目的详细分析,不知道是否对错,有错误请提出
omtf 2007-05-08
  • 打赏
  • 举报
回复
为什么不把userName做为关联内容,而要在userTitle表中也放一个userName呢,因这样可以令读取帖子列表及帖子内容时只读userTitle表而不用inner join,只有点击查看用户资料时才取userInfo表。效率第一,牺牲几个字节存放userName,是可以的吧
=========================================================
万一发贴后人家改名了呢?还得去更新所有他发过的帖子,抑或显示错误的名字?
=============================================================================
在一定的时间,都需要对数据库进行维护,在这个时候进行改名

===================
这种设计是现实的。
关于改名的问题,这个频率较低,可以说非常低。。。 如果数据库支持触发器的话,建议用这个
wkefeng 2007-05-08
  • 打赏
  • 举报
回复
好东西 我去百度
LVOLCANO 2007-05-05
  • 打赏
  • 举报
回复
mark
hahawen 2007-05-05
  • 打赏
  • 举报
回复
第一道题,不一定是要考正折表达式的,因为他慢。

第二道题的表结构都设计的不合理

首先发帖、发帖回复的回复其实是一类的东西,不应该分表,帖子内容和标题等的摘要信息不应该放到一个表中,

第三道题、说实话,太高深,不会。
Smellyfish 2007-05-04
  • 打赏
  • 举报
回复
学习到不少,看来ACM还是挺重要的哈,可惜没有机会参加了
yeshucheng 2007-05-04
  • 打赏
  • 举报
回复
这个帖子有学习意义!
顶一个
weky 2007-05-04
  • 打赏
  • 举报
回复
很多理论知识我都忘了
要是换我去面试恐怕也过不了关~~
Blueion 2007-05-04
  • 打赏
  • 举报
回复
谢谢各位的帮助,当时做题目时觉得太简单 也没仔仔细细的想 只顾看题答题了:(
看来自己还是经验不足啊~~ 过几天我会把帖结了 再次谢谢大家了!
Love_My 2007-05-03
  • 打赏
  • 举报
回复
.. 看来我是进入了纯Coding阶段 ;

我想看看2.3题到底应该怎么做 ...
huzhangyou 2007-05-01
  • 打赏
  • 举报
回复
sorry
打错了
应该是 而不是仅仅的一个coder
huzhangyou 2007-05-01
  • 打赏
  • 举报
回复
呵呵 大的公司看中的是算法 效率
而不是仅仅的一个code

空间换时间 时间换空间 特定的时候特定的选择
Baidu的出题还是考虑的比较好 很喜欢这种出题方式

如果是ACM的队员 我想应该能够做的很好
lukziliary 2007-05-01
  • 打赏
  • 举报
回复
原来俺什么都不会,整来整去就是mis
加载更多回复(53)

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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