2015年百度校园招聘笔试总结

描述TCP/IP的三次握手和四次挥手,以及为什么需要四次挥手

可以参考耗子叔的博客:http://coolshell.cn/articles/11564.html

Why四次挥手:
因为在断开连接的时候,某一方(主动方)发送FIN消息,只是表示主动方没有数据需要想被动方发送,但是并不意味着被动方的所有数据都已经发送完毕。所以需要在被动方的所有数据都发送完毕后,被动方发送FIN给主动方,确认断开连接。

数据库的常用范式

1NF、2NF、3NF、BCNF

简述内存的调度算法

常用:FIFO、LFU、LRU、OPT

FIFO:根据页面进入内存时间的长短作为置换标准。总是淘汰在内存中停留时间最长的页面,即最先进入内存的页面。这个算法的实现很简单:把一个进程所有在内存中的页按照进入内存的时间顺序组成队列,选择淘汰页面时,总是选择队首的页面,新的页面进入内存,将其放置在对尾。

最不经常使用法,即LFU算法(Least Frequently Used algorithm)。这种算法选择近期最少访问的页面作为被替换的页面。显然,这是一种非常合理的算法,因为到目前为止最少使用的页面,很可能也是将来最少访问的页面。该算法既充分利用了主存中页面调度情况的历史信息,又正确反映了程序的局部性。但是,这种算法实现起来非常困难,它要为每个页面设置一个很长的计数器,并且要选择一个固定的时钟为每个计数器定时计数。在选择被替换页面时,要从所有计数器中找出一个计数值最大的计数器。因此,通常采用如下一种相对比较简单的方法。

LRU(最近最久未用Least Recently Used):当需要置换一个页面时,选择在最近一段时间最久没有使用过的页面予以淘汰。

OPT:根据今后使用页面的时间作为置换标准。

Clock:利用Clock算法时,只需为每页设置一个引用位,再将内存中所有页面都通过链接指针链接成一个环形队列,由一个指针指向最老的页面

详细参见:http://www.cnblogs.com/followyourdream/p/3397337.html

编程题1,链表中项

思路:快慢指针。

编程题2,集合中最大C值

在正整数集合中求解最大的C,满足C=A+B,且C、A和B都是集合中的元素。

编程题3,栈实现队列

题目:利用栈stack模拟队列(FIFO)的enqueue、dequeue、isEmpty三个功能,并给出单元测试

思路:

  • 两个栈实现一个队列,队列入队的时候对inStack压栈
  • 队列出队的时候,首先对另一个栈outStack判空
    • 非空:直接弹栈
    • 为空:将inStack元素全部弹栈,然后再次对outStack判空、弹栈

你可能感兴趣的:(2015年百度校园招聘笔试总结)