加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

BAT大数据的口试题 快保藏!

发布时间:2018-09-12 14:04:44 所属栏目:教程 来源:千锋大数据开发学院
导读:9月15日技能沙龙 | 与东华软件、AWS、京东金融、饿了么四位大咖切磋精准运维! 1、kafka的message包罗哪些信息 一个Kafka的Message由一个牢靠长度的header和一个变长的动静体body构成 header部门由一个字节的magic(文件名目)和四个字节的CRC32(用于判定body

a、修改最大槽位数:槽位数是在各个 tasktracker 上的 mapred-site.xml 上配置的,默认都是 2

  1. property  
  2. namemapred.tasktracker.map.tasks.maximum/name  
  3. value2/value  
  4. /property  
  5. property  
  6. namemapred.tasktracker.reduce.tasks.maximum/name  
  7. value2/value  
  8. /property 

b、调解心跳隔断:集群局限小于 300 时,心跳隔断为 300 毫秒

  • mapreduce.jobtracker.heartbeat.interval.min 心跳时刻
  • mapred.heartbeats.in.second 集群每增进几多节点,时刻增进下面的值
  • mapreduce.jobtracker.heartbeat.scaling.factor 集群每增进上面的个数,心跳增几多

c、启动带外心跳

  • mapreduce.tasktracker.outofband.heartbeat 默认是 false

d、设置多块磁盘

  1. mapreduce.local.dir 

e、设置 RPC hander 数量

  • mapred.job.tracker.handler.count 默认是 10,可以改成 50,按照呆板的手段

f、设置 HTTP 线程数量

  • tasktracker.http.threads 默认是 40,可以改成 100 按照呆板的手段

g、选择吻合的压缩方法,以 snappy 为例:

  1. property  
  2. namemapred.compress.map.output/name  
  3. valuetrue/value  
  4. /property  
  5. property  
  6. namemapred.map.output.compression.codec/name  
  7. valueorg.apache.hadoop.io.compress.SnappyCodec/value  
  8. /property 

17、计划题

1)收罗nginx发生的日记,日记的名目为user ip time url htmlId 天天发生的文件的数据量上亿条,请计划方案把数据生涯到HDFS上,并提供一下及时查询的成果(相应时刻小于3s)

A、某个用户某天会见某个URL的次数

B、某个URL某天被会见的总次数

  • 及时思绪是:行使Logstash + Kafka + Spark-streaming + Redis + 报表展示平台
  • 离线的思绪是:Logstash + Kafka + Elasticsearch + Spark-streaming + 相关型数据库

A、B、数据在进入到Spark-streaming 中举办过滤,把切合要求的数据生涯到Redis中

18、有 10 个文件,每个文件 1G,每个文件的每一行存放的都是用户的 query,每个文件的query 都也许一再。要求你凭证 query 的频度排序。 照旧典范的 TOP K 算法 ##,

办理方案如下:

1)方案 1:

次序读取 10 个文件,凭证 hash(query)%10 的功效将 query 写入到其它 10 个文件(记为)中。这样新天生的文件每个的巨细约莫也 1G(假设 hash 函数是随机的)。 找一台内存在 2G 阁下的呆板,依次对用 hash_map(query, query_count)来统计每个query 呈现的次数。操作快速/堆/合并排序凭证呈现次数举办排序。将排序好的 query 和对应的 query_cout 输出到文件中。这样获得了 10 个排好序的文件(记为)。 对这 10 个文件举办合并排序(内排序与外排序相团结)。

2)方案 2:

一样平常 query 的总量是有限的,只是一再的次数较量多罢了,也许对付全部的 query,一次性就可以插手到内存了。这样,我们就可以回收 trie 树/hash_map等直接来统计每个 query呈现的次数,然后按呈现次数做快速/堆/合并排序就可以了。

3)方案 3:

与方案 1 相同,但在做完 hash,分成多个文件后,可以交给多个文件来处理赏罚,回收漫衍式的架构来处理赏罚(好比 MapReduce),最后再举办归并。

19、在 2.5 亿个整数中找出不一再的整数,注,内存不敷以容纳这 2.5 亿个整数 。

  • 方案 1:回收 2-Bitmap(每个数分派 2bit,00 暗示不存在,01 暗示呈现一次,10 暗示多次,11 有时义)举办,共需内存 2^32 * 2 bit=1 GB 内存,还可以接管。然后扫描这 2.5亿个整数,查察 Bitmap 中相对应位,假如是 00 变 01,01 变 10,10 保持稳固。所描完过后,查察 bitmap,把对应位是 01 的整数输出即可。
  • 方案 2:也可回收与第 1 题相同的要领,举办分别小文件的要领。然后在小文件中找出不一再的整数,并排序。然后再举办合并,留意去除一再的元素。

20、腾讯口试题:给 40 亿个不一再的 unsigned int 的整数,没排过序的,然后再给一个数,怎样快速判定这个数是否在那 40 亿个数傍边? ##

方案 1:oo,申请 512M 的内存,一个 bit 位代表一个 unsigned int 值。读入 40 亿个数,配置响应的 bit 位,读入要查询的数,查察响应 bit 位是否为 1,为 1 暗示存在,为 0 暗示不存在。

方案 2:这个题目在《编程珠玑》里有很好的描写,各人可以参考下面的思绪,切磋一下: 又由于 2^32 为 40 亿多,以是给定一个数也许在,也也许不在个中; 这里我们把 40 亿个数中的每一个用 32 位的二进制来暗示 ,假设这 40 亿个数开始放在一个文件中。 然后将这 40 亿个数分成两类:

  • 1.最高位为 0
  • 2.最高位为 1

并将这两种别离写入到两个文件中,个中一个文件中数的个数=20 亿,而另一个=20 亿(这相等于折半了); 与要查找的数的最高位较量并接着进入响应的文件再查找 再然后把这个文件为又分成两类:

  • 1.次最高位为 0
  • 2.次最高位为 1

并将这两种别离写入到两个文件中,个中一个文件中数的个数=10 亿,而另一个=10 亿(这相等于折半了); 与要查找的数的次最高位较量并接着进入响应的文件再查找。

.....

以此类推,就可以找到了,并且时刻伟大度为 O(logn),方案 2 完。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读