百度笔试题

来源:互联网 发布:集成吊顶边条价格淘宝 编辑:程序博客网 时间:2024/05/08 15:00

今天去百度笔试了,哎,情况不理想,题答得不好。题目主要有:

1、extern “C” 的作用

2、详细说出两种设计模式

3、tcp连接中time_wait 作用,好处和坏处?

1、任务执行器,调度执行多个任务,任务间有依赖但无循环依赖。 解决问题的算法?


一、简答(30分)

1、extern "C"{}是什么含义?用来解决什么问题。(10分)

 

2、至少说出两种经典设计模式,并举例说明使用场景,有伪代码更加.(10分)

 

3、TCP连接的time_wait是什么状态,描述其发生的场景,说明它存在的好处/坏处。(10分)

 

二、算法与程序设计(40分)

1.有一个任务执行器,每天需要定时执行很多任务(任务数N<1000),任务执行器每次只能执行一个任务而任务之间存在依赖关系,如A任务需要依赖于B任务完成后才能进行,虽然各个任务之间依赖关系复杂但是各个任务之间却没有循环依赖的问题。给出一个合适的任务执行顺序。

请详细描述你的算法思路(如需要,可给出伪代码来辅助描述),并分析其时间和空间复杂度。(20分)

 

2.编写函数:统计在某段英文文本完整句子的数目,文本只包括大小写英文字母、空格、点好(.)、逗号(,)。完整句子必须包含至少一个字母并以点好结束。

要求:请给出完整代码,在达到目标的情况下尽量高效,简介。(20分)

 


三、系统设计题(30分)
  某流量监控系统每天生成大量的数据记录,每条记录 包括url,访问IP,时间,这些数据记录需要进行存储和维护,并提供查询。
   请设计一个系统能够存储和维护1000亿条数据,实现实时监控,并能支持一下两种查询:
1、指定任意一个时间段(精确到分钟)和某个url,查出该时间段内对该url的总访问量。
2、指定任意一个时间段(精确到分钟)和某个ip,查出该时间段内对该ip的总访问量。


解答:

2 设计模式解答
   (1) 工厂设计模式
          (a) 简单工厂模式
            Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了。

 3 TCP 中的 time_wait 状态
    
    (1) 扩展 TCP建立连接的3次握手操作
       c ---------------  s
         SYN-------->
        <---------ACK-SYN----
         ----------ACK--->               
   (2) tcp关闭连接过程
       
       主动关闭方                                              被动关闭方
      
                           -------------FIN M ----------->
              TIN_WAIT1                                                
                         <---------------ACK-----------  
                                                                                 
             FIN_WAIT2                                                close_wait
                    
                         
                       <---------FIN    N-----------
                                                                                  LAST_ACK

                        -----------ACK ----------->
          TIME_WAIT                                               CLOSED
                                                                                    


         
           CLOSED          
  
    


      time_wait的作用:
        (1)  最后一个发送的ACK 很可能丢失,则服务器会重发一个FIN , 客户端可以在time_wait阶段再次接受。

       (2) 网络上可能还有一些没有到达的数据包,或者老的重复数据包,在该阶段可以接受。



   4 接下来的那个任务题,实质上就是为 一个拓扑排序问题。
   


 5 设计题解析


原创粉丝点击