几个面试的题目,求各位兄弟解答。谢谢!

minsky 2005-04-05 09:00:15
先是两个口头回答的问题:
1.用最高效的方法算出2乘以8等於几?
2.HashMap和Hashtable的区别。
我的回答是这样的:
1.我想应该是8<<1 或者 1<<8 给的回答是8<<1
2.HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),Hashtale的方法是同步的,而hashmap不是,由于非线程安全,效率上可能高于Hashtable.
--------------------------------------------
接下来是一个机试题,不使用任何ide,用记事本编写一段程序
把随机输入的一句话比如:It's only a test!存放在一个char[]的数组中,统计char[]中的单词个数和标点符号的个数。

当时我没有做出来,回家后用ide,还是没有做出来。
----------------------------------------------------------------------------------------
关于机试题,请高手多指教!谢谢!!

...全文
759 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
kualer 2005-04-06
  • 打赏
  • 举报
回复
不是很懂~
minsky 2005-04-06
  • 打赏
  • 举报
回复
呵,楼上兄弟给的程序考虑一下一些边界的条件看看会是什么?
比如连续的两个空格,或者bbb@#aaa这样的表达式,此式应该判断为非法单词而且不应计算有效字符。
pp918 2005-04-06
  • 打赏
  • 举报
回复
偶编译差点没及格。。。。。
还的学啊
donbing 2005-04-06
  • 打赏
  • 举报
回复
好像没必要去管什么ASCII码吧?直接比较字符就行了...上面已经给出程序了.
zyyhero2001 2005-04-06
  • 打赏
  • 举报
回复
2<<3,为什么效率是最高的,斑竹可不可以解释解释!!
mnbvc874 2005-04-06
  • 打赏
  • 举报
回复
学习
liuzhx 2005-04-06
  • 打赏
  • 举报
回复
HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
bhjsj 2005-04-05
  • 打赏
  • 举报
回复
题目三表述还是有些问题呀,那It's 算几个单词啊? s 既不是数组开头,也不是空格符之后.
private void count(char[] c){
int words = 0;
int ip = 0;
int character = 0;
boolean wordflag = false;
for(int i=0;i<c.length;i++){
if((c[i]>='a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')){
character++;
if(wordflag) {
continue;
}else{
words++;
wordflag = true;
}
}else{
wordflag = false;
if(c[i] != ' ')
ip++;
}
}
System.out.println("words=" + words);
System.out.println("ip=" + ip);
System.out.println("character=" + character);
}
minsky 2005-04-05
  • 打赏
  • 举报
回复
我是楼主,贴出这几个题目的本来用意也是希望大家能多指点兄弟一下。对于java语言本身我不是很熟悉,在此对楼上的各位表示感谢。

第一个问题,我的考虑应该是 8>>1或者1>>4,我不是很能理解2>>3这样的操作。8的右移一位操作一次可以得到16,1右移4位操作四次也是16,当然还有2>>3.为什么解释为2>>3是最高效的算法呢?从操作次数上它不是最少,存储空间分配不明白,底层的操作也不懂,高手解答一下疑惑。
第二个问题,书上看的比较多了。

--------------------------------
第三个问题的原题目是这样的:
编写一个函数,传入一个变量char[],在char[]中,从数组开头或者空格符之后认为是一个表达式的开始,表达式后接空格或者数组结束或者标点符号认为表达式结束,若表达式全为英文字符则判定为单词,统计char[]标点符号数目,单词数目和有效单词的字符总数。
此题目也期望能得到各位的指点
minsky 2005-04-05
  • 打赏
  • 举报
回复
是的,转换之后虽然可以得到ascii码的值,不过又有谁能记得具体的每个字符编码?
印象中好像是65->A,97->a,空格好像是32,其他都不记得了。
lemontree1010 2005-04-05
  • 打赏
  • 举报
回复
有意思,我也顶一下
ABCatai 2005-04-05
  • 打赏
  • 举报
回复
wo ding
007remember 2005-04-05
  • 打赏
  • 举报
回复
路过
学习ing
帮您顶
bhjsj 2005-04-05
  • 打赏
  • 举报
回复
import java.io.*;
public class Test{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
if(str == null) throw new Exception("");
char[] c = str.toCharArray();
int words = 0;
int ip = 0;
boolean wordflag = false;
for(int i=0;i<c.length;i++){
if((c[i]>='a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')){
if(wordflag) {
continue;
}else{
words++;
}
wordflag = true;
}else{
wordflag = false;
if(c[i] != ' ')
ip++;
}
}
System.out.println("words=" + words);
System.out.println("ip=" + ip);

}
}
watcher_shen 2005-04-05
  • 打赏
  • 举报
回复
好像是我理解错了……

我再看看。
topil 2005-04-05
  • 打赏
  • 举报
回复
编程题,就是定义一个输入流,每次读取一个字符,根据空格、标点符号作为一个单词结束的标志,然后把这几个字符进行合并,组成一个完整的单词,保存起来,可以用Arraylist作为保存单词的容器。
watcher_shen 2005-04-05
  • 打赏
  • 举报
回复
楼主需要对java的类有变通的认识。
watcher_shen 2005-04-05
  • 打赏
  • 举报
回复
char f[] = {'I','t'};
String s = new String(f);
int length = s.length();
topil 2005-04-05
  • 打赏
  • 举报
回复
1. 2<<3 位运算的效率最高
2. 看书上的就ok了。
3. 等会做出来再帖上来
bwsabc 2005-04-05
  • 打赏
  • 举报
回复
3,看看Ascii码.
加载更多回复(7)

62,630

社区成员

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

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