如何成为百度 offer 收割机

百度实习生面试即将开始,很多同学好奇百度面试到底问了些什么呢?今天小编总结了一篇关于百度面试题目的面经和大家分享。 这个面试不寻常,因为真的很面试官很对胃口,不过为了后面的更多面试,还是和总结了很多小伙伴遇到的问题给大家进行参考。 面试是在一个大房间里面进行的,有非常多的桌子,大几十号面试官,几个岗位同时面的,软件研发,web 前端,Android 等,每个人找一个面试官,然后就是一对一的面试。

一面——技术面

面试官先让我写了一个算法,本来想让我写 C 的,但是我说我不会 C(其实 用过一点,不太熟),然后用我最熟悉的 Java 写的。前面已经说了,我算法比较菜,所以用 for 循环写了一个烂算法,然后还是面试官一点一点提示我,然后降复杂度,做出来的。之后又问了一些计算机网络的 ISO 七层架构和操作系统的多线程等问题,然后我就出去等消息了。 在休息室等待直到收到二面通知。

别的小伙伴被问到的问题(大致分成了一下几个方向):

Java Collection 框架

  • ArrayList, LinkedList 介绍, 二者的区别?
  • 主要是数据结构定义方式, 以及增删改查时间效率上的区别;
  • Set 介绍?讲讲功能和用法.
  • HashMap 介绍, 实现方式是什么?
  • HashCode 默认怎么计算的?
  • final 关键字的作用?
  • String 类能否被继承?为什么?
  • 讲讲 JSP 和 Servlet 的区别?
  • cookie 和 session 的区别?
  • Spring 框架的特色?

    多线程

  • threadLocal 是什么?原理呢?一般怎么用它?
  • 线程池用过吗?
  • 线程池实现原理?
  • 线程池队列数据结构? 溢出策略?
  • 为什么需要使用线程池?

    数据结构

    是否了解树? 介绍一下树的原理和你所知道的应用 场景?

    数据库

  • 数据库的事务是怎么回事?为什么得有事务?
  • 数据库的索引是怎么一回事? 为什么不所有的列做上索引?

    手写代码

    写一个合并两个有序数组的算法?

    二面——技术面

    二面是另一个面试官,这次的话先让我自我介绍,问了一下我做的项目,因 为之前主要是做网站的,所以我比较大胆,觉得讲讲不明白,直接问面试官要了 他的电脑上网站给他讲的,可能加分不少。 面试官主要问了项目相关的 redis 和事件队列:
  • 事件队列如果生产者生产过快, 要怎么处理? redis 怎么做阻塞队列 的?
  • java 多线程: 请介绍下同步的几种方法? Lock 和 synchronized 有什么不一样吗? 优势在哪里?
  • 写一个简单的二叉树 reverse 算法
  • 输入 String str1, String str2, 写出加法算法(这里是要求返回 str1, str2 作为数字的和, 注意输入都很长, 无法放在常规的 int 型中)之后又是算法题,Oh, my God!这次压根就没思路,是的,没思路! 然后我就假装我有思路的样子,写写画画,试图做出来,但是做不出来,然后面试官就开始提示我,然后慢慢的思路就清晰了。最后,面试官和我说,快到中午了,我要去吃饭了,好任性!!!你十分钟之后给我把这个题用代码实现了,写对了我就让你二面过。然后我就鼓足马力,狂写,写出来了,二面就这样过了。然后,我就嗨了!因为我之前好像听说百度是两轮技术面一轮 HR面,HR面还不是洒洒水的事情。我就去吃饭了,下午吃完饭一点开始第三轮面试!

    三面居然还是技术面

三面的时候,我很 High 啊,技术面通过了,就剩下 HR 面了,那不是妥 了?但是,当我看到面试官是一个三十多岁的中年男人,我就有一种不好的预感。

  • 我问:这一轮是技术面还是 HR 面?然后面试官用充满磁性的声音告诉我: 技术面!!! 我当时心中千万匹羊驼啊!然后战战兢兢的开始了最难的第三轮面试。 面试官问了很多比较难的问题:比如 Map Reduce 啊,数据库索引啊,网站 的账号存储怎样保证不被黑客偷到啊,包括 session 和 cookie 有什么区别,还有 Java 的垃圾回收机制啊。是有一些不会的,但是我抱着知之为知之,不知为不知的态度。然后对于不会的题,先告诉面试官我不知道,然后说我觉得它可能是这样的,吧啦吧啦说自己的想法。然后,最后,问了面试官几个关于公司的问题。
  • 最后的最后,我问:请问我通过面试了吗?面试官说:这得和前面几个面 试官商量之后再决定。 就这样,百度面试结束了,静等通知!

经验总结

小细节决定成败

  1. 校招笔面试之前对于自己的技术一定要准备,只有学校课堂的知识 90%是过 不了校招的,尤其是一些好的公司。准备的时候多准备知识点性质的东 西,比如 Java 的垃圾回收等。算法是一个积累的过程,是很难短期内提高 的。(如果你离找工作还有蛮长时间的,那就多看算法书吧,ACM 队员找工 作真是天然优势啊)
  2. 一般互联网公司从老板到员工基本上不穿正装,面试官也从没穿过正装。 但是不穿正装并不代表不正式,首先要干净,其次要有尊重面试官的感 觉。
  3. 放轻松,面试时你紧张没有任何帮助,只会让你表现更差。可以提前去面 试地点熟悉熟悉环境,和同来面试的人聊聊天。
  4. “知之为知之,不知为不知”。面试官不可能什么都知道,但是你不知道 你那一句装逼就会败露。
  5. 算法题不会写好的算法,先用循环或递归写一个傻逼算法,然后一步一步 降低时间复杂度。实在写不出来就试图想方法,随便说,等待面试官提 示。一步步解决的过程一方面体现了你对于未知问题的解决能力,以及你 的思考过程。
  6. 自我介绍要突出重点,也叫给面试官挖坑。(可能在写简历的时候就开始 挖了)你的自我介绍要突出重点,然后面试官很可能就对着这个来提问 你,然后你不是就可以用你准备好的东西来回答了!!!
  7. 当面试官问你你有什么要问的的时候,千万不要说没有!然后你的面试很