刷题打卡学习

96 阅读2分钟

day3

一、【多选】绝大多数硬盘可以提供哪些写入保证?

a. 单个sector原子写入
b. 单个page原子写入
c. 硬盘顺序执行文件系统发送的操作
d. 以上都不可以
解析:
文件原子写入: 指一次写入操作,要么是全部数据都写入文件,要么是全部数据都没有写入文件
A: sector 意为扇区 ,是磁盘划分的最小单位 仅有少部分硬盘不能保证原子写入
B: page 页码 可以对应多个 sector ,基本不能保证原子写入
C: 绝大多数硬盘 都可以保证顺序执行

二、判断一棵二叉树是否是平衡二叉树。(平衡二叉树要求:树中节点左右子树树高差不超过1。

    def __init__(self,x):
        self.val=x
        self.left=None
        self.right=None
        
class solution:
    #判断二叉树
    def IsBalanced_solution(self,pBoot):
        def balanced(root,height=0):
            if not root:
                height=0
                return True,height
            #向下迭代
            balanceleft,left=balanced(root.left)
            balanceright,right=balanced(root.right)
            #判断左右子树是否是平衡二叉树
            if balanceleft and balanceright:
                if abs(left-right)<=1:
                    if left>right:
                        height=left+1 
                    else height=right+1
                    return True,height
                return False,height
            balance,height=balanced(pBoot)
            return balance

day4

一、【单选】go test 默认是以什么顺序执行测试的?

a. 多个module并发执行,单module下多个测试并发执行
b. 多个module并发执行,单module下多个测试串行执行
c. 多个module串行执行,单module下多个测试并发执行
d. 多个module串行执行,单module下多个测试串行执行

解析: 未学过Go语言,记录下别的大佬的分析,默认情况下 go test 在不同的 package 之间是并行执行测试,在每个 package 内部是串行执行测试。
多个moudle有影响的概率极低,所以并发提高整体效率,单个模块有可能有依赖的概率更大,所以串行保证执行顺序

二、【分布式文件处理,获取最多的URL】如果有一个20g的日志文件,日志文件记录着用户访问过的url,每一行为一个url,给你一台512M的主机,找出出现次数最多的10个url。

解析:利用哈希分治法,主要是分化的思想,把规模大的问题化小,然后解决各个小的问题,最后得出结果。先映射,而后统计,最后排序。 将大文件分化成若干个大小为512M的文件,使其能够装入内存,然后,采用常规的hashmap(url,value)对小文件进行频率统计,统计完后,进行排序找出出现次数最多的10个url。

# 大数据量的五种处理方式这篇博客很好,记录一下