几个面试的题目,求各位兄弟解答。谢谢!
先是两个口头回答的问题:
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,还是没有做出来。
----------------------------------------------------------------------------------------
关于机试题,请高手多指教!谢谢!!
问题点数:100、回复次数:27Top
1 楼wanghongtaoleifeng(小声点)回复于 2005-04-05 09:25:54 得分 5
1 没学过C吗?2的三次方啊 2<<3
2说的多了好
3一时写不出来啊 不过用JS到是能啊
Top
2 楼matianyi(黑灵)回复于 2005-04-05 09:33:15 得分 5
3 先用 String.split(" ");
在得到的String数组中又没有标点Top
3 楼bwsabc(javavaj)回复于 2005-04-05 09:34:15 得分 5
3,看看Ascii码.Top
4 楼topil(认认真真学习,塌塌实实工作)回复于 2005-04-05 09:35:24 得分 5
1. 2<<3 位运算的效率最高
2. 看书上的就ok了。
3. 等会做出来再帖上来Top
5 楼watcher_shen(吉吾)回复于 2005-04-05 09:40:44 得分 5
char f[] = {'I','t'};
String s = new String(f);
int length = s.length();Top
6 楼watcher_shen(吉吾)回复于 2005-04-05 09:41:31 得分 0
楼主需要对java的类有变通的认识。Top
7 楼topil(认认真真学习,塌塌实实工作)回复于 2005-04-05 09:51:18 得分 5
编程题,就是定义一个输入流,每次读取一个字符,根据空格、标点符号作为一个单词结束的标志,然后把这几个字符进行合并,组成一个完整的单词,保存起来,可以用Arraylist作为保存单词的容器。Top
8 楼watcher_shen(吉吾)回复于 2005-04-05 09:55:37 得分 0
好像是我理解错了……
我再看看。Top
9 楼bhjsj(南南)回复于 2005-04-05 10:03:05 得分 5
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);
}
}Top
10 楼007remember(绿原)回复于 2005-04-05 10:08:48 得分 5
路过
学习ing
帮您顶Top
11 楼ABCatai(ABCatai)回复于 2005-04-05 10:23:48 得分 5
wo dingTop
12 楼lemontree1010(小宝)回复于 2005-04-05 11:07:49 得分 5
有意思,我也顶一下Top
13 楼minsky()回复于 2005-04-05 11:36:32 得分 0
我是楼主,贴出这几个题目的本来用意也是希望大家能多指点兄弟一下。对于java语言本身我不是很熟悉,在此对楼上的各位表示感谢。
第一个问题,我的考虑应该是 8>>1或者1>>4,我不是很能理解2>>3这样的操作。8的右移一位操作一次可以得到16,1右移4位操作四次也是16,当然还有2>>3.为什么解释为2>>3是最高效的算法呢?从操作次数上它不是最少,存储空间分配不明白,底层的操作也不懂,高手解答一下疑惑。
第二个问题,书上看的比较多了。
--------------------------------
第三个问题的原题目是这样的:
编写一个函数,传入一个变量char[],在char[]中,从数组开头或者空格符之后认为是一个表达式的开始,表达式后接空格或者数组结束或者标点符号认为表达式结束,若表达式全为英文字符则判定为单词,统计char[]标点符号数目,单词数目和有效单词的字符总数。
此题目也期望能得到各位的指点Top
14 楼bhjsj(南南)回复于 2005-04-05 11:54:00 得分 5
题目三表述还是有些问题呀,那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);
}Top
15 楼hongyan2004(spring+hibernate)回复于 2005-04-05 13:17:38 得分 5
第二问题:
hashtable ->dictionary class,是线程不安全,增长为原来的一半
hashmap是map接口,是线程安全的, 增长时增长为原来的一倍Top
16 楼lasthope(学生)回复于 2005-04-05 13:56:57 得分 5
1.放入string中
2.String.split(" ")求出单词数
3.用replace函数,将26个字母,\r,\n,' ',分别替换为'',即空串
4.此时求string的长度,即是标点数Top
17 楼minsky()回复于 2005-04-05 14:22:50 得分 0
to bhjsj(南南)
程序中,若碰到非标点符号的特殊符号应予以处理。此表达式不能算做单词,比如bee$%ble.
凭我的理解,$%这一类的特殊符号不应该算标点。Top
18 楼minsky()回复于 2005-04-05 14:25:39 得分 0
to lasthope(学生)
原题目要求在char[]中进行操作,所有对String对象的方法属性都不能使用。
再者,String的长度怎么都不是标点数。Top
19 楼bhjsj(南南)回复于 2005-04-05 15:23:19 得分 5
这样的面试我感觉确实有些为难人呵.是不是得对ASCII码得特别熟啊,哪些算标点符号,哪些是特殊符号,在ASCII码中是什么位置得清楚吧,
等待高人.Top
20 楼minsky()回复于 2005-04-05 23:19:16 得分 0
是的,转换之后虽然可以得到ascii码的值,不过又有谁能记得具体的每个字符编码?
印象中好像是65->A,97->a,空格好像是32,其他都不记得了。
Top
21 楼kualer(散落的烟灰)回复于 2005-04-06 00:55:10 得分 5
不是很懂~Top
22 楼liuzhx(钟情java)回复于 2005-04-06 01:14:50 得分 5
HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
Top
23 楼mnbvc874(Java EE)回复于 2005-04-06 13:46:06 得分 5
学习Top
24 楼zyyhero2001(风之传说)回复于 2005-04-06 16:32:50 得分 5
2<<3,为什么效率是最高的,斑竹可不可以解释解释!!Top
25 楼donbing(神意)回复于 2005-04-06 16:41:00 得分 5
好像没必要去管什么ASCII码吧?直接比较字符就行了...上面已经给出程序了.Top
26 楼pp918(pp)回复于 2005-04-06 18:15:44 得分 5
偶编译差点没及格。。。。。
还的学啊Top
27 楼minsky()回复于 2005-04-06 21:55:44 得分 0
呵,楼上兄弟给的程序考虑一下一些边界的条件看看会是什么?
比如连续的两个空格,或者bbb@#aaa这样的表达式,此式应该判断为非法单词而且不应计算有效字符。Top




