一公司的面试题 看看你能做出来吗?

SZleoWang 2009-11-18 05:15:00
1.写一段正则表达式:匹配出<a></a>中有值的链接,但不包括空格和“ ;”
字符串如下:
“<a href=”http://www.abc.com”>这个有值<br /></a><a href=”http://www.aaa.com”> </a><a href=”http://www.aaa.com”> </a><a href=”http://www.aaa.com”></a>”
处理结果如下:
“<a href=”http://www.abc.com”>这个有值<br /></a>”
2. 处理一段字符串,将字符串中重复的记录去掉,并组成新的字符串。字符串内容如下:
“aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123”
注意:以逗号为分隔符,考虑效率(也可以用正则)
处理结果如下:
“aspnet开发,国内旅游,景点a,123,提供,”
3.如何保障平台的运行速度.,从代码到数据库,写写你的想法。
...全文
353 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwy000 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 virusfu 的回复:]
2楼的 split 都打错了
[/Quote]

嘿嘿,空手打的嘛。。有错难免,第2个for 是j <= tempStr.length; 不是i
VirusFu 2009-11-19
  • 打赏
  • 举报
回复
2楼的 split 都打错了
heroboy0923 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cangyingzhijia 的回复:]

2、
Java code
String s="aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
Set<String> set=new HashSet<String>();int i=0;int j= s.indexOf(",");
j= j==-1? s.length()-1 : j;do{
String tmp= s.substring(i, j).trim();
set.add(tmp);
i= j+1;
j= s.indexOf(",",i);

}while(i<j);for(String t : set){
System.out.println(t);
}


[/Quote]

不能保证顺序和原来一致,用LinkedHashSet更合适
不知道split的时间复杂度是多少……
苍蝇①号 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 amdgaming 的回复:]
引用 11 楼 cangyingzhijia 的回复:
引用 7 楼 amdgaming 的回复:
引用 6 楼 cangyingzhijia 的回复:
  引用 4 楼 amdgaming 的回复:
  1.

    2.  split 逗号分隔后 放入 linkedhashset 即可。。。。


  split效率太低了

  split 是是正则 实现的 效率会低么??


你们测试一下就知道了,这个是效率很低的,和我上面用的方法不是同一个数量级

我看你 真是不懂了, indexof 有正则快 啊,搞笑。。。。
[/Quote]
技术不是靠揣测来的,我说indexof快是我测试过后得出的结论。java的正则表达式并没有你想象的那么快,当然别的语言也不见得split就好多少;我同时测试过php,split慢index数十倍
amdgaming 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cangyingzhijia 的回复:]
引用 7 楼 amdgaming 的回复:
引用 6 楼 cangyingzhijia 的回复:
引用 4 楼 amdgaming 的回复:
  1.

  2.  split 逗号分隔后 放入 linkedhashset 即可。。。。


  split效率太低了

split 是是正则 实现的 效率会低么??


你们测试一下就知道了,这个是效率很低的,和我上面用的方法不是同一个数量级
[/Quote]
我看你 真是不懂了, indexof 有正则快 啊,搞笑。。。。
苍蝇①号 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 amdgaming 的回复:]
引用 6 楼 cangyingzhijia 的回复:
引用 4 楼 amdgaming 的回复:
1.

  2.  split 逗号分隔后 放入 linkedhashset 即可。。。。


split效率太低了

split 是是正则 实现的 效率会低么??
[/Quote]

你们测试一下就知道了,这个是效率很低的,和我上面用的方法不是同一个数量级
语速五块 2009-11-18
  • 打赏
  • 举报
回复
String s = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
Set<String> set = new HashSet<String>();
String[] strs=s.split(",");
for(int i=0;i<strs.length;i++)
{
set.add(strs[i]);
}

for(String t : set){
System.out.println(t);
}
ivfangwang_long 2009-11-18
  • 打赏
  • 举报
回复
帮顶~~~~~~~~~~~~~~~~~~
语速五块 2009-11-18
  • 打赏
  • 举报
回复
二楼的代码不正确啊
amdgaming 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cangyingzhijia 的回复:]
引用 4 楼 amdgaming 的回复:
1.

2.  split 逗号分隔后 放入 linkedhashset 即可。。。。



split效率太低了
[/Quote]
split 是是正则 实现的 效率会低么??
苍蝇①号 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 amdgaming 的回复:]
1.

2.  split 逗号分隔后 放入 linkedhashset 即可。。。。


[/Quote]
split效率太低了
amdgaming 2009-11-18
  • 打赏
  • 举报
回复
3. 代码 架构, 服务器分户式, 缓存些常用的东东。。。

还有 负载均衡,,,,
amdgaming 2009-11-18
  • 打赏
  • 举报
回复
1.

2. split 逗号分隔后 放入 linkedhashset 即可。。。。

苍蝇①号 2009-11-18
  • 打赏
  • 举报
回复
1、
		String s1 = "<a href=\"http://www.abc.com\">这个有值 <br /> </a> <a href=\"http://www.aaa.com\">  </a> <a href=\"http://www.aaa.com\"> </a> <a href=\"http://www.aaa.com\"> </a>";
Pattern p = Pattern.compile("(<a .+?>(.+?)</a>)");
Matcher m = p.matcher(s1);
while(m.find()){
String tmp = m.group(2).trim();
if(tmp.length() == 0){
continue;
}
else if(tmp.startsWith(" ")){
continue;
}
System.out.println(m.group(1));

}



2、

String s = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
Set<String> set = new HashSet<String>();
int i = 0;
int j = s.indexOf(",");
j = j ==-1 ? s.length() -1 : j;
do{
String tmp = s.substring(i, j).trim();
set.add(tmp);
i = j +1;
j = s.indexOf(",",i);

}while(i<j);

for(String t : set){
System.out.println(t);
}


3、要保证运行性能,最主要的方面要看架构,数据结构和所使用的算法,光从代码上提升不了多少性能
hwy000 2009-11-18
  • 打赏
  • 举报
回复
第1题:正则背不出
第2题:

String sampleStr = "aspnet开发,国内旅游,景点a,123,aspnet开发,提供,景点a,123";
String [] tempStr = sampleStr.spilt(",");
StringBuilder result = new StringBuilder();
for (int i = 0 ; i <= tempStr.length; i ++) {
for (int j = i ; i <= tempStr.length; j++ ){
if (!tempStr[i].equal(tempStr[j])) {
result.append(tempStr[i]);
result.append(",");
}
}
}

第3题:
这个问题好难回答.......范围太广....


3个问题只能做1个,惭愧.....




ehuaxing 2009-11-18
  • 打赏
  • 举报
回复
不错

62,621

社区成员

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

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