一、三面(算法)
1. 给你50亿行字符串,机器4G内存(只能一台机器),找出重复次数最多的那行字符串?(以行为单位,每行不超过10个字符)
根据50亿和4G的限制,直接想到切割多少份文件后,争取这一份文件大小够加载4G内存进行解析(当然当个文件尽可能接近内存大小,充分利用内存读取速度,提供整体计算时间),@b@大概分为500比较合适(每个文件大概100m左右,加载内存解析够了),让后按照hash(行号)%500进行分配存储,分别对每个文件排序后再存在有序大小字符串文件,通过选择排序逐步递归筛累计结果
2. 一个圆上三个点形成钝角的概率是多少?
3/4;@b@1:在圆上任意取第一个点A;@b@2:再任意第二个点B,有AB重合、AB在同一条直径上两个特殊点,@b@但对于圆上的无数个点来说,B取到上面两个特殊点的概率为0; @b@所以可以使AB能够不重合且不在同一直径上的概率为1;以下叙述将不考虑上述两个特殊点;@b@由上所述,A、B两点的取法可以看做是任意取,概率为1;@b@3:再任意取第三点C,C有与A重合、与B重合两个特殊点,同上,可以忽略不计@b@设原点为O,则AO交圆于点D,BO交圆于点E,则C在弧DBAE时(D、B、A、E四点除外),三角形ABC为钝角三角形;@b@由AB的长度从趋近于零,到趋近于直径,弧DBAE的长度由趋近于圆周长1,到趋近于半圆周1/2,@b@所以弧DBAE的平均长度为(1+1/2)/2 = 3/4;@b@所以三角形ABC为钝角三角形的概率为3/4
3. 假如两个点和圆心形成的圆心角已经是直角,那么第三个和这两个点形成钝角的概率是多少?(接上一题)
4. 快速排序的平均复杂多少?最坏情况是什么?(这个题估计就是缓和一下尴尬的气氛)
O (nlogn),最坏情况,需要进行n‐1递归调用,其空间复杂度为O(n)