论坛首页 招聘求职论坛

昨天的JAVA面试题,感觉挺难大家帮忙看看!

浏览 47030 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-23  
昨天的JAVA面试题,感觉挺难大家帮忙看看!新手第一次发帖!
2.1  下图是电话机键盘

从图中,我们可以发现26个字母分布在2-9这8个数字键上。某人的电话号码是65967427,观察单词“olympics”,可以发现:字母o位于数字键6上,字母l位于数字键5上,… 字母s 位于数字键7上。此时,我们说olympics是65967427对应的一个字母组合。65967427还可以对应其它很多种字母组合,例如:mjwmpgap也是其中之一。以C语言编写函数 :int transfer(int number)。该函数的输入为一个电话号码(允许输入为3位到11位的十进制数),在屏幕上输出该数字对应的所有字母组合,并返回组合的总数。如果数字中包含1或者0,由于没有与之对应的字母,则直接返回0。当数字小于3位或者大于11位时,亦没有对应字母组合,返回0。

2.2  求解:有一个文本文件,记录了某个学校所有人的姓名、出生日期(假设没有人重名,该校大约有2万人)。记录格式如下:
。。。。。。
张三    19800120
李四    19810321
王五    19800122
赵六    19830321
。。。。。。
    现在需要在某天举办一场生日晚会,邀请生日在当天的人员参加。如果期望这场生日晚会参加的人员尽可能多,那么应该选择在哪一天?在解答时,需要注意代码的效率、质量。当不能给出完整代码时,可以描述解题思路。


2.3求解:在一份文本文件中,查找其中所有的anagram。例如,如果这份文件中包含了stop、tops、pots这样三个单词,这三个词就是一组anagram,这三个单词都是由s、t、o、p这四个字母组成的。这份文件中可能存在多组anagram,大小写视为同样字符。在解答时,需要注意代码的效率、质量。当不能给出完整代码时,可以描述解题思路。
   发表时间:2008-04-23  
第一题,估计是类似手机的键盘吧。我只想到根据号码得到每个号码可能出现的字母,然后多重循环一下。。。

第二题,一个map,key是生日,value是生日出现的次数。读一条,看看看有没有key,没有key就put(key,1)有key就把value+1.最后看哪个key的value最大

第三题,我暂时想到的是由单词对应到bitset上,如果含有某个字母,那么bitset的某位就应该置1,这样可以解决字母顺序的问题,但是冗余较大,bitset得26位。
然后搞一个map,key放bitset,value是存放对应该bitset单词的list。
然后,只要一个一个单词处理就行了,不多说了。
2 请登录后投票
   发表时间:2008-04-23  
No.1:
step1:建立每个数字与对应字母的对应关系集合
step2:首先用正则表达式进行输入筛选,对正确的输入进行step3处理
step3:遍历处理咯,另外问下为什么要用c写用意何在?

No.2:
step1:首先注意是文本文件,所以要建立读文本的一个toolClass
step2:因为不能确认生日重复情况,所以建立动态数组,容量<365
step3:利用toolClass依次解析文本存入step2数组中,元素名为生日,内容为容纳一个到多个生日的集合
step4:每次读取的(姓名,生日)对,取出生日与之前的比较,如果已存在相同数组名元素,就存入相应集合,如果没有就新增一个元素
step5: 遍历数组取出当前最大容量元素

No.3:等一会想
0 请登录后投票
   发表时间:2008-04-23  
Joo 写道
No.1:
step1:建立每个数字与对应字母的对应关系集合
step2:首先用正则表达式进行输入筛选,对正确的输入进行step3处理
step3:遍历处理咯,另外问下为什么要用c写用意何在?
No.2:
step1:首先注意是文本文件,所以要建立读文本的一个toolClass
step2:因为不能确认生日重复情况,所以建立动态数组,容量<365
step3:利用toolClass依次解析文本存入step2数组中,元素名为生日,内容为容纳一个到多个生日的集合
step4:每次读取的(姓名,生日)对,取出生日与之前的比较,如果已存在相同数组名元素,就存入相应集合,如果没有就新增一个元素
step5: 遍历数组取出当前最大容量元素

No.3:等一会想

校园招聘题目用C,C++,Java都可以,No.2我也是这么想的,不知道有没有更好的方法。
0 请登录后投票
   发表时间:2008-04-23  
呵呵,,和我现在工作内容倒是吻合的。

lz应聘的公司干嘛的啊
0 请登录后投票
   发表时间:2008-04-23  
第一题,估计是类似手机的键盘吧。我只想到根据号码得到每个号码可能出现的字母,然后多重循环一下。。。

电话号码为3到11位,套11个循环?
0 请登录后投票
   发表时间:2008-04-23  
imjl 写道
呵呵,,和我现在工作内容倒是吻合的。

lz应聘的公司干嘛的啊


浙大网新
0 请登录后投票
   发表时间:2008-04-23  
第一题和这个帖子相当地像

http://www.iteye.com/topic/183412
0 请登录后投票
   发表时间:2008-04-23  
253620236 写道
imjl 写道
呵呵,,和我现在工作内容倒是吻合的。

lz应聘的公司干嘛的啊


浙大网新



噢噢。。
0 请登录后投票
   发表时间:2008-04-23  
第一个题和论坛ruby版里那个“容易记的电话号码”有些类似
第二个,就是统计生日最多的哪一天,但是生日里面的年可以直接忽略掉,需要的就只有月日。月和日不要一起统计,先算月。先把生日最多的那个月份找到,再去统去到底是哪一天。呵呵,这样最后需要计算个数的人就少了很多了吧。直接去算每天出现的人数还是有点笨。如果数据量再多的话,可以借用下数理统计的知识。
第三个,使用正则表达式\b(?i)[s|t|o|p]{4}\b,搞定~~
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics