面试遇到问大数据量的问题到底在考什么?这里讨论在程序中并非数据库中,也并不考虑借助数据库或者其他辅助工具。
他是考验你算法?会不会遍历?集合的使用?还是考验计算机内存大小的?我感觉都不是,是在考你思路。前面有人发表了“两个1000W个元素的数组,如何有效的找出他们的交集”,等会我说下思路,对的话大家顶下,谢谢。
先说我以前我也遇到过一道类似的题,4G大小的文件,里面全部是整数,求出最大,最小值。别告诉我拿8G内存的计算机用数组存储,然后遍历,比较。。。如果人家说8G的文件呢?16G的文件呢?当时我第一反应是把4G文件分开,但是后来马上想到的是多线程,最后说出了思路,描述如下:
A,B两个线程
定义两个变量int max,min;
一个int数组,大小任意(决定大小的因素,计算机,语言等因素,这里不详细说了),例如大小10000的数组X
A读取文件写入X,写满A暂停,B启动在数组X种找到最大最小分别赋值给变量max,min
遍历完后清空X,暂停B,然后启动A同样是读取文件,写入数组,之后暂停A,遍历和max,min比较,遍历完最大和最小值分别赋值给变量max和min
重复操作,直到全部读取比较完,结束。
这只是个思路,其中多线程的操作和IO等操作不做详细说明了。
下面来说下前面有人说到的“两个1000W个元素的数组,如何有效的找出他们的交集”,如果内存够大,当然好了,直接操作最好。如果元素的最小值是,1E呢?内存怎么办?如果是几个亿的元素呢?
看题来说,两个数组元素不太可能存在内存中,就假设存在文件一和文件二中吧。
给个简单思路,两个数组的数据存在文件一,文件二
定义A,B,C三个线程
X,Y两个数组,每个大小就拿10000个来说吧(决定大小的因素,计算机,语言等因素,这里不详细说了)
A读文件一写入X数组写满A停止,B读取第二个文件写入Y数组写满B停止,这时候C启动,在X,Y两个数组找出交集,大小10000的两个数组怎么找交集这个大家自由发挥总之取到后写入另外个文件中,就当是文件三吧。
比较完后,清空Y,然后C停止,启动B接着读取写入Y,然后再启动C去重复上面的步骤,直到文件二完全操作完。
文件二操作完成后,再清空X再启动A,再重复上面的步骤,直到文件一全部操作完。
这个时候文件三就是结果了,记得别忘了去除重复元素。如果文件小,很好去除,如果文件依旧很大,那么还是按多线程的思路去解决。
取最大最小值的算法和取交集的算法本人不发表了,本人虽然是个程序员但是非数学,计算机专业,算法不敢和各位大虾去比,当然多线程和IO等其他操作中的问题,各自去解决吧,以上的思路觉得对的大家顶下,觉得不对的尽管提出,有更好思路的还望赐教。
MSN:flysunmicro@hotmail.com
分享到:
相关推荐
熟悉集合框架的底层实现,以便在处理大数据量时做出合理选择;掌握多线程编程,解决并发问题;理解设计模式,能够灵活运用到项目中提高代码质量;同时,对算法和数据结构的掌握也是必不可少的,它们在面试中往往通过...
本资源“笔面试常考算法—数据结构篇(java版)”专注于Java实现的数据结构相关的经典算法,涵盖了线性表、栈、树和图等多种基本数据结构,这些都是程序员面试和工作中经常遇到的问题。 1. **线性表**:线性表是最...
《程序员最常见的笔试面试题合集》是一份涵盖了程序员在求职过程中可能会遇到的各类笔试和面试问题的综合资源。这份合集旨在帮助程序员提升技术素养,准备面试,以便在竞争激烈的IT行业中脱颖而出。以下是对这份合集...
1. 实战经验:面试官可能会询问你在数据中心项目中的角色,遇到的问题以及解决办法,以此评估你的实践经验。 2. 设计能力:考察你如何根据业务需求设计高效、可扩展的数据中心解决方案,包括网络拓扑、存储架构和...
26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 ...
这些代码实现不仅有助于理解算法和数据结构,还能帮助读者熟悉面试中可能遇到的各种问题类型,以及如何在有限的时间内写出高质量的代码。通过深入研究这些代码,程序员可以提升自己的算法思维和编程技巧,从而在面试...
此外,针对常考题目,可能会涵盖一些经典的面试题,如二叉树的镜像翻转、最小生成树的Prim或Kruskal算法、最长公共子序列问题等。学习者需要通过这些习题来理解和掌握数据结构的精髓,提高解决问题的能力。 总之,...
26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC...
【计算机专业笔试面试题】是计算机领域中求职者在应聘时常常遇到的一种考核形式,涵盖了C、Java等编程语言的基础知识、数据结构、算法、操作系统、网络等多个方面。以下是根据提供的部分内容,对相关知识点的详细...
《Java面试必知必会》一书中,针对海量数据处理的部分涵盖了多个重要知识点,这些都是Java开发者在求职面试中经常遇到的问题。以下是对这些知识点的详细解释: 1. **基础知识** - **Bit与Byte**:计算机中最基本的...
26、大数据量下的分页解决方法。 121 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 122 28、这段代码有什么不足之处? 123 29、说出数据连接池的工作机制是什么? 123 30、为什么要用 ORM? 和 JDBC...
26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC...
HCIE-R&S认证不仅考查考生的理论知识,还包含面试环节,用以评估考生在实际问题分析和解决方面的综合能力。 ICT行业正快速发展,其中数通(数据通信)是其基础,也是推动其他方向如云计算、存储和大数据等领域发展...
Java面试题资料包含了大量的Java程序员在面试过程中可能会遇到的问题,这些问题涵盖了Java语言的基础、进阶、框架、设计模式以及常见的编程思维等多个方面。以下是一些关键知识点的详细说明: 1. **Java基础**:这...
26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 ...
26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 ...
2. 性能测试:评估软件在高负载、大数据量或长时间运行条件下的性能表现。 3. 安全性测试:确定软件是否存在可能导致数据泄露、非法访问或其他安全风险的漏洞。 4. 兼容性测试:验证软件在不同硬件、操作系统、网络...
这份"安卓面试题精华"包含了大量面试中可能会遇到的问题,旨在帮助应聘者全面提升对安卓开发的理解,从而在竞争激烈的求职市场中脱颖而出。以下是对这些面试题核心知识点的详细解读: 1. **安卓基础知识**:面试...