百度2015笔试心得

就像网上说的一样,百度的笔试试题确实是高大上,就只有7道题。不同岗位试题是不一样的,考场上不同职位的同学挨边,相同的错开的,我报的是基础平台开发岗位。

闲话少扯,由于并没有签啥保密协议(所以某讯的我就没发),也不是用手机拍的,凭印象写出来,就发出来攒攒人品吧。


第一大题是简答题,有3小道。

1. 解释说明TCP3次握手和4次挥手过程,并说明为什么需要4次挥手?

这个题是老生长谈了,大家可以“百度”去。

2. 列出几种操作系统使用的内存淘汰算法,并简要说明。

3. 列出数据库设计采用的几种范式,并举例说明。



第二大题是算法题,个人感觉今年的算法题比较简单。

1. 一条链表,找出中间项,如果存在两项的话,取前面那一个。写出算法思路及代码。

这题比较简单了,用快慢指针,快的走两个,慢的走一个,这样快的走到终点时,慢的就走到中间了,细节之处处理一下偶数项问题就行了。


2. 找出正整数集合S中最大的C,使得A+B=C,A、B是S中的元素。写出算法思路、分析时间复杂度并写出代码。

这个也是比较常见的题目了,我这里的方法是O(n2)的,有更好的方法,欢迎交流。

  1. 先排序,将S升序排列   (O(nlogn))

  2. 设定一个指针max指向最大(最后)一个数,表示C

  3. 设定指针i, j 分别指向第一个元素和max前一个元素,分别表示A、B

  4. 如果i >= j ,max--,回到3

      如果A+B>C,j--

      如果A+B<C,i++

      如果A+B=C,return max指向的值就行了。

  5. 就是没找到了,返回-1(或者其它什么值代表不存在)     

           (2、3、4步需要O(n2)复杂度,所以总体是O(n2))

3. 利用栈来实现队列的功能,要求数据必须在Stack内。并提供enquene、dequene、isEmpty的实现和单元测试。

    这个也是比较常见了,用两个栈来模拟队列,A、B

     刚开始,A、B都为空,enquene操作就往A栈里压就行了,需要dequene的时候,把A栈里的数据排到B栈里,这样最先进入的就在最外面了,直接弹出就好了。

     这样的话,在enquene之前,先把B栈的内容清理到A栈中,再执行入栈命令就行了。

                       在dequene之前,先把A栈的内容清理到B栈中,再执行出栈命令就行了。

                       isEmpty最简单了,如果A、B都为空的话,返回true。



第三大题就比较屌了,是架构设计题。水平太菜,直接被秒杀。

大概内容是:

手机平台App通常要有云控制能力,我们可以从服务端对移动端进行推送。

1.比如控制手机端进行强制更新、更新配置数据、向某些人发送短信等功能。

2.定向、定量进行推送。

3.我们采用长链接方式与手机通信,此处忽略手机慢速2g网、设备低速等因素。


a) 画出模块图。

b) 设计链接管理。我们需要一台机器处理更多的链接,如何管理链接才能使得链接查询、连接中断更高效。

c) 设计更高的容错能力,比如一台机子被敲了还是可以正常工作。

(我知道你们在说我不知所云,确实我也不知道我在说什么)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值