2014.10.13面试总结

1.一个文件里有许多单词,每行一个词,统计出现频率最高的前100个单词

    Linux一条指令:cat input.txt | sort | uniq -c | sort -k1 -n -r | head -100


    小数据情况:

    遍历文件中的所有单词,用一个map<string,int>存储每个单词及其出现的次数

    构造一个含有100个元素的小顶堆,遍历一次map找到出现次数最多的前100个单词


    大数据情况:

    根据系统可用内存,将大文件分隔成N个小文件,分隔方式为Hash(string)%N,使得每个小文件中的数据能够读入内存

    对每个小文件,用小数据情况中的方法处理,得到小文件中的TOP100单词

    N个小文件一共会得到100N个单词,再用一个100大小的小顶堆从中选中TOP100


2.设计电梯调度系统,一台、两台、多台电梯时各有什么特点,为什么要设计多台电梯?

    常见的电梯调度算法:

    先来先服务(FCFS):根据乘客请求乘坐电梯的先后次序进行调度

    最短寻找楼层时间优先算法(SSTF):请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象

    扫描算法(SCAN):响应处在于电梯运行方向相同的各楼层上的请求

    LOOK算法:在SCAN上有所改进,电梯所移动的方向上不再有请求时立即改变运行方向

    SAFT算法:与SSTF算法的思想类似,唯一的区别就是SATF算法将SSTF算法中的寻找楼层时间改成了访问时间

    

你可能感兴趣的:(面试,设计)