2019.10.8

题目:输入两个链表,找出它们的第一个公共结点。

思路:公共链表部分长度一定一样,而且一定在最后部分,故先判断链表长度。若长度不一样则让长者先走到与短者相同位置,再对节点进行判断,若不同则两者共同往后走,直到有共同节点或者到末尾返回空节点。(注:手撸链表得提上日程)

代码:

public class Solution {
	
	public static void main(String[] args) {
		
	}

	
	public static ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
		
		ListNode p1 = pHead1;
		ListNode p2 = pHead2;
		
		int len1 = getLength(p1);
		int len2 = getLength(p2);
		
		if(len1 > len2){
			int len = len1 - len2;
			while(len > 0){
				p1  = p1.next;
				len--;
				}
		}else if(len2 > len1){
			int len = len2 - len1;
			while(len > 0){
				p2 = p2.next;
				len--;
			}
		}
		
		while(p1 != p2){
			p1 = p1.next;
			p2 = p2.next;
		}
		
		return p1;
		
	}
	
	public static int getLength(ListNode listnode) {
		
		int length = 0;
		while (listnode != null) {
			listnode = listnode.next;
			length++;
			
		}
		
		return length;
	}
}

面试题:

1、MapReduce原理:
inputformat按行读取数据,返回K,V值传到map方法中,context和write方法将处理后的数据输出到outputcolollector中,当outputcollector中的数据累计到一定数量后再将数据传到内存的环形缓冲区做处理,当环形缓冲区的数据累计到一定数量后再将数据通过split多次溢出到本地磁盘的多个文件中,期间会对各个溢出的数据进行分区,排序,然后对多个文件进行merge(归并排序)形成一个输出结果大文件,reduceTask根据自己的分区号去各个mapTask机器上取输出结果文件,将得到结果文件进行merge,然后进入reduce阶段,context和write将最终的结果输出到outputformat上,进而输出到本地文件系统。

2、什么是yarn?
yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式操作系统平台,而mapreduce等运算程序则相当于运行在操作系统之上的应用程序。

3、namenode的safemode是怎么回事?如何才能退出?
namenode在刚启动的时候元数据只有文件块信息,没有文件所在datanode的信息,需要datanode自己向namenode汇报。如果namenode发线datanode回报的文件信息没达到namenode内存文件块的总阈值的一个百分比,namenode就会处于安全模式,只有达到阈值或者强行退出。

4、secondarynamenode的主要职责
sn的主要职责是执行checkpoint操作,每隔一段时间,会由sn将namenode上积累的所有edits和一个新的fsimage下载到本地,并加载到内存进行merge。

5、如果namenode宕机,datanode节点是否也会跟着挂掉?
datanode宕机后,如果是短暂的宕机,可以实现写好脚本控制,将他启动起来。如果长时间宕机,那么datanode上的数据应该已经备份到其他机器了,那么这一台datanode就是一台新的datanode,删除其他的所有数据文件和文件状态后,重新启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值