7.30一面:
1.自我介绍,聊了一会儿项目
2.介绍一下MR的shuffle机制
3.编程题:
有一文件a.txt 文件内容为每行由字符串数字用逗号分隔,
例:
abc,1
abc,3
lsl,9
ash,10
flu,11
…
例:
abc,1
abc,3
lsl,9
ash,10
flu,11
…
现在要求实现一个单机程序,统计出这个文件中相同字符串出现的次数和对应数字的总和
用java统计词频问题,,我用了HashMap来统计
4.场景设计,还是刚才那道题,如果有文件中一亿条数据,怎么办?
我回答考虑多线程,还是用Map,但是不能用HashMap,需要用多个ConcurrentHashMap,
使用分区锁,能够保证线程安全,将线程分为Map线程和Reduce线程,Map线程用来map数据,
reduce线程用来进行数据合并。
5.多个线程怎么读取文件,都是从头读吗?
可以用bufferedReader按照字节分开读。
6.那你怎么保证读整行的数据呢?
可以通过\n’来判断是不是一行,如果不是知道找到前面是‘\n’的字节
5.reduce任务什么时候开始呢?
只要有map任务完成,就可以开始reduce任务
6.用过Spark吗?刚才的词频统计用spark怎么实现?
用scala写的,就一行代码:line.map(_.split(",")).map(x=>(x(0),x(1).toint,1)).reduceBykey((x,y)=>(x._1+y._1,x._2+y._2))
8.8二面:
1.自我介绍,其中一个项目是一个科研项目,面试官估计比较感兴趣,唠了一会儿
2.MR提交job到YARN的流程
3.MR运行过程中会发生OOM,OOM发生的位置?
4.比如Hive任务报OOM,如何进行优化?
我回答了对Map Task数量进行重新配置,以及影响Map Task数量的几个参数,块大小,切片大小,默认mapper数量等。
5.YARN的有哪些调度策略?讲一讲Fair调度策略?哪一种调度策略会发生饿死?capacity
FIFO 、Fair、Capacity
6.编程题:
给定一个字符串
判断是否为IP格式
是=>True
不是=>False
用python写正则表达式,一行搞定,无奈忘记ip地址的正则表达式怎么写了
就硬着头皮来,先按照”.“切成段,不等于四段的话肯定就不是了
是四段的话再把每一段转成数字判断是否在0-255之间,当时有点投机了,我直接用parseInt转数字了,不能转我抛出个异常,这点让面试官不太满意
不过后来我又解释了可以用ASCII码判断是不是数字并把串转成数字
7.问了我写的算法的复杂度
8.问了点kafka的问题,遇到过什么问题?
9.场景:使用kafka时候发生宕机,重启后怎么从上次消费的地方接着处理?
不太清楚,但是我觉得kafka是高可用容灾备份机制的
10.解释一下mysql的索引?索引为什么会快?
11.如何判断查询是否命中索引?太菜了,没答上来
全部评论
(1) 回帖