百度招聘实习笔试题和面试题答案(2)

招聘笔试题2018-11-22三水老师

  3.前段时间腾讯笔试时有道选择题也是考TCP的几个状态,当时做错了。回来后看了下TCP的连接和释放,这次还真用上了。time_wait是TCP释放四次握手中的一个状态,当第三次握手完成时,即客户端收到来自服务器的FIN后,再发送一个ACK,客户便开始了time_wait状态。

  同时一个记时器开始记时,当达到2倍一个报文段在因特网中最大的生存期时代表超时。如果在超时前客户端再次收到FIN,则表示是服务器重发的FIN,客户端需重发送ACK。

  4.依题目得知是求有向图的一个拓扑序列。

  5.直接扫描一遍。

  int count_prefect_sentence(string str) { int i = 0, cnt = 0, hasOneLetter = 0; while(str[i]) { if(str[i] == '.') { if(hasOneLetter) cnt++; hasOneLetter = 0; } else if(isalpha(str[i])) hasOneLetter = 1; i++; } return cnt; }

  6.海量数据处理题,当时花了很长时间在想这两题,感觉没有想到什么好的思路。这样的系统应当是实时性优先吧,在时间空间上首先考虑时间。

  a、建个二维映射Map[time].bitset\, time代表某一时间点,将时间点表示为

  时间秒差数字作为映射索引。第二维考虑bitset的方式, 建立一个2^32(整型的最大位数)的数组(bitset),每一个bit位0或1代表该位上代表的IP整数是否访问过. 统计时枚举每个时间点,再按位和indexIP进行与运算进行统计,时间效率应该不差。以保存30天为例,空间为(30*24*3600)*(2^32)bit = 2^50B = 1000TB = 1PB

  b、时间以分钟为单位,第二维直接为IP, 映射值为该分钟访问量。(30*24*60)*(2^32)B= 2^50B = 1000TB = 1PB

  7、映射Map[url][time],将url进行字符串hash,再进行枚举统计。

  这两题如果做成两维映射,内存吃不消,既然两题中的一维是已经指定的,变化的只是时间段,因此可以用一维表示,先预处理,再进行统计。

相关推荐

猜你喜欢

大家正在看

换一换