西安尚学堂 练习09.03|Java编程笔试面试题

  • 在2.5亿个整数中找出不重复的整数,内存不足以容纳这2.5亿个整数。
    方案1:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存 内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。
    方案2:也可采用上题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素。
  • 海量数据分布在100台电脑中,想个办法高校统计出这批数据的TOP10。
    在每台电脑上求出TOP10,可以采用包含10个元素的堆完成(TOP10小,用最大堆,TOP10大,用最小堆)。比如求TOP10大,我们首先取前 10个元素调整成最小堆,如果发现,然后扫描后面的数据,并与堆顶元素比较,如果比堆顶元素大,那么用该元素替换堆顶,然后再调整为最小堆。最后堆中的元 素就是TOP10大。
    求出每台电脑上的TOP10后,然后把这100台电脑上的TOP10组合起来,共1000个数据,再利用上面类似的方法求出TOP10就可以了。
  • 怎么在海量数据中找出重复次数最多的一个?
    先做hash,然后求模映射为小文件,求出每个小文件中重复次数最多的一个,并记录重复次数。然后找出上一步求出的数据中重复次数最多的一个就是所求(具体参考上期IP那题)。
  • 上千万或上亿数据(有重复),统计其中出现次数最多的钱N个数据。
    上千万或上亿的数据,现在的机器的内存应该能存下。所以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数。然后就是取出前N个出现次数最多的数据了,可以用第2题提到的堆机制完成。
  • 1000万字符串,其中有些是重复的,需要把重复的全部去掉,保留没有重复的字符串。请怎么设计和实现?
    这题用trie树比较合适,hash_map也应该能行。
  • 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
    这题是考虑时间效率。用trie树统计每个词出现的次数,时间复杂度是O(nle)(le表示单词的平准长度)。然后是找出出现最频繁的 前10个词,可以用堆来实现,前面的题中已经讲到了,时间复杂度是O(nlg10)。所以总的时间复杂度,是O(nle)与O(nlg10)中较大 的哪一个。
  • 原文地址:https://blog.51cto.com/14512197/2435131

    时间: 2024-10-03 05:00:06

    西安尚学堂 练习09.03|Java编程笔试面试题的相关文章

    练习09.09|Java编程笔试面试题

    1.如果程序代码为:public class Demo{public static void main (String[ ] args){String a=args[1];System.out.println(a);进行编译后,执行以下命令将得到什么结果?java Demo a1 a2 a3结果:a22.现有一个类定义如下,请回答问题:class Employee{String name;int age;double wage;static int No=0;Employee(String a1

    西安尚学堂练习09.11|Java编程笔试面试题

    功能描述:删除字符串中字符个数最少的字符,最少字符串有多个,最少的要全部删除,然后返回该子字符串.输入:asdasdas输出:asasas解答:import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry

    西安尚学堂练习09.17|Java编程笔试面试题

    下列哪些类型能被throw语句抛出? A. Error B. Exception C. Throwable D. Object [解]注意Error也是可以被throw的,只是通常Error出现程序就中断了,我们并不会去捕获. 2.编程:给定两个字符串A,B(只包含26个英文字母),输出所有公共的最长子字符串(如果出现重复子串,则输出多次) 输入包括两行,每行为一个连续字符串(大小写敏感) 输出包括多行,每行为扫描到的最长公共子串,按照该子串在字符串A(即第一行输入字符串)中出现的先后次序输出

    西安尚学堂练习09.12|Java编程笔试面试题

    一. 简述springMVC的执行流程. 用户发起请求到前端控制器(Controller)前端控制器没有处理业务逻辑的能力,需要找到具体的模型对象处理(Handler),到处理器映射器(HandlerMapping)中查找Handler对象(Model).HandlerMapping返回执行链,包含了2部分内容: ① Handler对象.② 拦截器数组前端处理器通过处理器适配器包装后执行Handler对象.处理业务逻辑.Handler处理完业务逻辑,返回ModelAndView对象,其中view

    西安尚学堂练习09.10|Java编程笔试面试题

    1.给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G.所以不可能将其完全加载到内存中处理.考虑采取分而治之的方法.遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中.这样每个小文件的大约为300M.遍历文件b,采取和a相同的方式将url分别存储到1000各小文件(记为 ).这样处理后,所有可能相同的url都

    西安尚学堂练习9.5|Java编程笔试面试题

    1.常用中间件RabbitMQ,kafka等,原理.区别.优缺点. RabbitMQ是一个AMQP实现,传统的messaging queue系统实现,基于Erlang.老牌MQ产品了.AMQP协议更多用在企业系统内,对数据一致性.稳定性和可靠性要求很高的场景,对性能和吞吐量还在其次. Kafka是linkedin开源的MQ系统,主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,0.8开始支持复制,不支持事务,适合产生大量数据的互联网服务的数据收集业务.

    尚学堂练习9.7|Java编程笔试面试题

    1.如果程序代码为:public class Demo{public static void main (String[ ] args){String a=args[1];System.out.println(a);进行编译后,执行以下命令将得到什么结果?java Demo a1 a2 a3结果:a22.现有一个类定义如下,请回答问题:class Employee{String name;int age;double wage;static int No=0;Employee(String a1

    练习08.31|Java编程笔试面试题

    如何确保N个线程可以访问N个资源同时又不导致死锁?使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁.因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了.2.如何权衡是使用无序的数组还是有序的数组?有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n).有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置.相反,无序数组的插入时间复杂度是常量O(1).3.串行(seri

    2015.09.03 Java设计模式

    通常,一个设计模式描述了一个被证实可行的方案.这些方案非常普遍,是具有完整定义的最常用的模式.一般模式有4个基本要素:模式名称(pattern name).问题(problem).解决方案(solution).效果(consequences). 常见的Java设计模式有以下23种: 1.抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.适配器模式使得