J***n 发帖数: 391 | 1 【 以下文字转载自 Java 讨论区 】
发信人: JAlan (Alan), 信区: Java
标 题: 几个Java面试题
发信站: BBS 未名空间站 (Tue Sep 27 23:34:20 2011, 美东)
1. 如果数据查找多的话,需要使用哪种数据结构?
// 我复习下来,一直认为插入修改多用LinkedList,查询多的话用ArrayList. 但是好
像都不是正解。ArrayList如果查找value的话,也需要遍历整个列表。后来想了想,查
找最快的话就是binarySearch了,但是要基于sorted list的基础上,那是不是应该使
用SortedLinkedList呢?
2. 1 million的数据 (key-value),多查找,需要使用哪种数据结构?
// TreeMap 吗?
3. 使用线程实现1 billion 整数的求和,最后返回一个数
// 我把数据分成10份,定义10个线程来分别来做求和,最后把每个线程所得数相加,
得到最后的数。不知道思路对不对?
不过我困惑的是,如果是单一任务的话,难道不是单线程要比多线程快吗?可以一口气
运行,为什么还要浪费切换的时间呢?这道题的用意是什么呢?
谢谢。 |
S**I 发帖数: 15689 | 2 我得说你对Java和多线程的理解还停留在很粗浅的水平上。第一题是HashTable,第二
题是HashMap;至于第三题,你好好想一想为什么多线程快。
【在 J***n 的大作中提到】 : 【 以下文字转载自 Java 讨论区 】 : 发信人: JAlan (Alan), 信区: Java : 标 题: 几个Java面试题 : 发信站: BBS 未名空间站 (Tue Sep 27 23:34:20 2011, 美东) : 1. 如果数据查找多的话,需要使用哪种数据结构? : // 我复习下来,一直认为插入修改多用LinkedList,查询多的话用ArrayList. 但是好 : 像都不是正解。ArrayList如果查找value的话,也需要遍历整个列表。后来想了想,查 : 找最快的话就是binarySearch了,但是要基于sorted list的基础上,那是不是应该使 : 用SortedLinkedList呢? : 2. 1 million的数据 (key-value),多查找,需要使用哪种数据结构?
|
c****p 发帖数: 6474 | 3 单处理器环境和多处理器环境的原因不一样吧
【在 S**I 的大作中提到】 : 我得说你对Java和多线程的理解还停留在很粗浅的水平上。第一题是HashTable,第二 : 题是HashMap;至于第三题,你好好想一想为什么多线程快。
|
k****n 发帖数: 369 | 4 尽量不要用Hashtable。
【在 S**I 的大作中提到】 : 我得说你对Java和多线程的理解还停留在很粗浅的水平上。第一题是HashTable,第二 : 题是HashMap;至于第三题,你好好想一想为什么多线程快。
|
J***n 发帖数: 391 | 5 是啊,对于多线程没有实际的经验。如果是单核的情况下的话,我的理解有问题吗?
【在 S**I 的大作中提到】 : 我得说你对Java和多线程的理解还停留在很粗浅的水平上。第一题是HashTable,第二 : 题是HashMap;至于第三题,你好好想一想为什么多线程快。
|
J***n 发帖数: 391 | 6 那到底搜索多的话用什么数据结构呢?
【在 k****n 的大作中提到】 : 尽量不要用Hashtable。
|
g**********y 发帖数: 14569 | 7 I don't get it either: if single CPU, how come multi-thread runs faster?
【在 S**I 的大作中提到】 : 我得说你对Java和多线程的理解还停留在很粗浅的水平上。第一题是HashTable,第二 : 题是HashMap;至于第三题,你好好想一想为什么多线程快。
|
B*******1 发帖数: 2454 | 8 Agree. I think for multicore cpu with hardware thread, multithread will run
faster. For single core cpu, single thread is faster.
【在 g**********y 的大作中提到】 : I don't get it either: if single CPU, how come multi-thread runs faster?
|
J***n 发帖数: 391 | 9 那回到我的那个问题,1b的数据用多线程求和,到底什么是最佳答案 ? |
S**I 发帖数: 15689 | 10 If a processor supports multi-threading, it can split itself into multiple
logical cores. In this case, multi-thread could be faster.
【在 g**********y 的大作中提到】 : I don't get it either: if single CPU, how come multi-thread runs faster?
|
|
|
g**********y 发帖数: 14569 | 11 no matter how many logical cores you have, how could it run faster?
【在 S**I 的大作中提到】 : If a processor supports multi-threading, it can split itself into multiple : logical cores. In this case, multi-thread could be faster.
|
e***l 发帖数: 710 | 12 即使是单核单线程CPU,也有可能多线程快。考虑方法会阻塞的情况。 |
k****n 发帖数: 369 | 13 sounds not true
【在 S**I 的大作中提到】 : If a processor supports multi-threading, it can split itself into multiple : logical cores. In this case, multi-thread could be faster.
|
c****p 发帖数: 6474 | 14 如果线程遇到cache miss或者等待IO,会有几百个周期处于闲置,可以把其他线程唤醒
运行;cahce miss或者IO请求返回之后,再把原线程唤醒。
【在 g**********y 的大作中提到】 : I don't get it either: if single CPU, how come multi-thread runs faster?
|
y*******g 发帖数: 6599 | 15 HashMap
【在 J***n 的大作中提到】 : 那到底搜索多的话用什么数据结构呢?
|
B*******1 发帖数: 2454 | 16 Why?
Thanks
【在 k****n 的大作中提到】 : sounds not true
|
y*******g 发帖数: 6599 | 17 hyper threading不就是这个意思吗?
没什么问题吧
求详解
【在 k****n 的大作中提到】 : sounds not true
|