百度面试记

     等待几天终于赢来我人生中的一大挑战——百度,这个牛叉的技术公司的面试确实让我有点胆战心惊啊,鄙人愚钝,诸位莫笑!蹭蹭蹭!来到位于张江高科微电子港的上海百度研发中心,果真气势非凡,哈哈,虽然不是一幢楼房。不过里面布局清新,还有个特别漂亮的前台mm,让我感觉不错。。。呵呵!美女的力量是强大的,“哪位是XX”!,啊 美女叫我了,难道她是隐藏人物,我的猜想果真很水,面试我的不是mm,是个大叔,哈哈年纪是看起来有点大,一双拖鞋,一件体恤,一件大裤衩,乱糟糟的头发,带个高度近视眼镜!ca!难道这就是传说中的牛人吗?我这下算是栽倒这里了,肯定忽悠不了他呀!这次我的猜想没错,真的被他问的是目瞪口呆了!
   好转入正题,坐下开始面试了!恐怕这也是各位观众最想要知道的内容,第一个当然是自我介绍,他强调了一下着重介绍项目经验,我本能的巴拉巴拉说了一通,正想着经历还能说的过去,被牛人一句话打倒:请说一下重点,项目!好吧我只能乖乖回答了一下重点的项目经历,貌似还凑合。马上又迎来挑战,开始问我这个项目干了啥,为什么要这么么干,有的不是我干的,他也问为什么要这么干,我狂汗啊,我哪里知道那些大牛为啥真么干呢?肯定有理由,可我不能说清楚呀,只能搪塞了几句万金油——避免系统复杂性等等。总结一下:涉及到数据库问题比较多,特别是索引,系统采用什么索引,数据表大有无考虑分表等。
   第二大题是设计模式题,我刚说出单例模式,好家伙让我手写一个,好吧,这个我实实在在弄过,我不怕,写好了,嗖得交了上去,还附赠一句,还有另一种方式,好家伙不放过我,又说接着写呀。写好了,还不行,如果是多线程呢,如何写单例模式,我只能在写一遍,居然结果是你觉得写的没问题吗?我又一次被他打败!
   第三关是多线程同步问题,问了i++是不是原子操作,i=7是不是原子操作,第一个我见过是不安全的,当然不是,可第二个我也想当然的以为不是,可结果有时让我下不了台,后来想想是我太愚钝了,赋值操作咋不是原子操作啊。还有就是问了synchronize的一些问题
   第四关是数据结构了,一问我了解hashmap的机制吗,这可糟糕,只是会用,去了解吗?真还没有,我只能说我大致知道点,又问我hash是如何解决冲突的,我简单回答线性冲突解决,当然他不满意,说具体java是如何实现冲突解决的,后来提示java的object有hashcode和equals方法,我才大彻大悟,原来如此。
    第五关还是数据结构不过这次是实现一个查找问题,具体问题是这样:
    有一个有序数组,中间切一刀,将后半部分移到前面构成新的无序数组,问如何最快的查找到s这个元素?
    我天真的想了一下,先用快速排序给排个序然后用二分查找s,哈哈速度够快了吧!正自鸣得意,时间复杂度为O(nlogn)呢!大牛冷冷地说了一句:你扫描一下数组,找出这个s元素,时间复杂度是多少?由于炸雷一般,O(n)啊,难道是脑筋急转弯,我又错了,原来他是要我找出一个时间复杂度比O(n)还小的方法,我思来想去,后来噼里啪啦说了一通,终于让我回答了出来。
    一面结束,大牛说了等2面通知吧,我就只能握个手暂时告别百度上研了。结果如何,天定!

你可能感兴趣的:(设计模式,多线程,数据结构,面试,百度,HashMap)