百度LBS面试

来源:互联网 发布:淘宝坑店知乎 编辑:程序博客网 时间:2024/05/15 01:04

历时半个月的百度LBS电面终于结束,没想到在终面的今天,面试官给我个big surprise--电面后2个小时直接给正式offer,在此感谢三面的面试官GG。言归正传,这次百度LBS面的是研发部PHP研发工程师。虽然PHP开发是我之前没有怎么考虑的方向,但曾经有做过PHP网站的开发,当时是为一家公司做一个官方网站,采用PHP语言基于CI框架进行开发。此前,一直想从事C++方面的工作,经历过4月份腾讯与阿里面试的失败,让我明白了即使你有再扎实的语言基础离开了具体的项目未必能够给你在面试中加分。背后也曾迷茫过,不知道自己以后想要从事什么方向,此次内推到LBS的PHP开发有点惊讶,不过无论从事什么语言的开发,逻辑思维才是王道。既然选择了就好好坚持,语言仅仅是一个开发的工具,相信自己选择的路是正确的,加油!

先回到百度LBS电面。

 一面 5月27 星期二

印象很深一面的GG很和蔼,非常nice。按照电面的套路首先做了下自我介绍(这个要好好准备,但不要太官方,今天三面被GG说了我的自我介绍好官方,囧啊)。然后GG看到我用CI框架开发过一个官方网站,叫我说了下CI框架的机制,我大致说了下CI框架响应用户请求的处理过程。GG抓住CI框架中的Cache问我,问我Cache是CI提供的还是我们在开发中实现,答CI自带。问Cache如何实现,这个真没有了解,答不清楚。

在介绍CI框架中我说到了MVC框架,GG抓住MVC框架这点问我MVC框架的好处,我从软件工程角度说了MVC符合了“高内聚,低耦合”的思想,然后介绍了MVC中每层的主要的职责。在介绍MVC框架的过程中提到了MVC是一种设计模式,GG又抓住设计模式问我了解多少设计模式,我说了单例模式、工厂模式、观察者模式,然后GG问我能不能举个例子介绍下观察者模式,我用一个多个窗口监控一个窗口输入框的变化的例子阐述了观察者模式。我在说的过程中GG一直恩表示赞同。

接下来,还是回归百度传统面试题型--算法题考查。不过GG问的问题是传统的海量数据排序问题。问:10G数据,100M内存,对数据进行排序。第一反应外排序,但当时忘了外排序的具体思路。只能用传统的hash映射,将10G数据分到小文件中,然后再对小文件中的数据采用快排或者堆排进行选出最大的值,其余文件也采用这种方式选择最大值,然后对各文件选择出来的最大值在继续用堆排。同理第二大......第n多大值也可以采用这种方式选出。GG说这个时间复杂度太高有没有其他改进的方式。然后我还是硬着头皮说了外排序的思想,但没有说清楚。外排序思想也将10G的数据拆分到小文件中,然后对每个小文件进行排序,构造败者树,最终将数据排好序。

算法题考查后,GG说我们放个轻松的话题。问我想让他问我什么,我说问语言方面的知识吧。GG说语言啊(估计GG心理在想什么),然后说我还是问你一下HTTP协议吧(囧,自认为比较擅长的地方不问,偏问这个我了解不多的)。然后我说我对HTTP了解不是很多,但是HTTP协议是基于TCP协议之上的,balabala介绍了TCP的三次握手,四次挥手,建立连接过程中函数的调用等。GG说TCP和UDP有什么区别呢,我又balabala说了一堆。

最后,GG扫描我的简历,再次揪着PHP的那个项目问我负责部分的数据库是怎么设计的。我回答完后,GG又问你们在团队开发的过程有用过SVN吗?答有。接着问SVN是如何解决修改冲突的,这个没答好,老实交代要是遇到提交冲突用手动撤销方式解决。

一面总体感觉一般,感觉GG一直在考察我是否对我说出来的专业名词有所了解,一直抠我的PHP项目。难度应该算适中吧。在面试后的1个小时内HR GG给我电话,说一面过了,约好了二面的时间。


 二面 5月29 星期四

 二面感觉很深的一点是面试官一直问基础的问题,然后还是问我擅长的语言问题,不知道是不是一面的GG和二面的GG有交流过。

还是自我介绍,然后开始了语言基础的轰炸,具体问题如下:

1.C语言和C++语言的区别及其应用场景

2.指针和引用的区别,哪个更高效

3.static的作用,作用在变量、函数、类中方法中有什么不同

4.PHP数据库连接有几种方式

5.PHP中mysql_fetch_array、mysql_fetch_row、mysql_fetch_object有什么区别

6.是否有用过mysql_fetch_assoc函数

7.不用临时变量交换两个整数

针对上面1-3题我balabala了一通,然后对于第4题我说我只了解一种方式(即mysql_connect()函数的连接),面后百度了下PHP连接数据库还有mysqli,PDO等方式。对于第6题当时忘了,后来看了PHP有关笔记才知道原来是采用键值对的方式访问数据库结果集。对于第7题之前有看过原题,所以答得很快。

接下来GG问了我一些Linux方面问题。

1.截取文中的100-1000行,将其输入到一个文件中。用C语言如何实现这种功能。

2.awk中分隔符的设置?

针对第一个问题答sed命令,C语言遍历文件中的每行。面试官很惊讶问我为什么第一反应会是用sed命令而不是head和tail之类的命令,我说我对grep,sed,awk,vim等命令比较熟悉。然后面试官就问我第二题了,答通过FS设置。

最后GG还是回到百度的传统套路,数据结构和算法考察

1.逆序数组元素

2.两个有序数组中找交集

3.无序数组找交集

对于第1问题实在简单,GG叫我用多种方式实现,我说了两种方法。然后对于2,3两题当时用了统一的hash表和bitmap的方式求解交集。后来想想第2题其实很简单利用归并排序思想就可以找出交集。

二面总体感觉很基础,可以看出百度面试对基础的考察还是很看重的。在面完后,面试官问我有什么问题要问他,我问了个对我的评价,GG不肯正面回答。然后我问了如果我想进入百度LBS还需要做哪些努力,GG说你有良好的项目基础和语言基础之类的,哈哈终于被我问出他对我的评价了。

三面 6月10日 星期二

在三面前有发过Email给HR,因为百度一般都是一周之内给上一次的面试结果。感谢HR GG在晚上7点多还及时的回复我邮件,再次感觉到Baiduer的敬业。

早上10点面试官准时打电话过来,估计是因为终面的原因,感觉比较紧张。我还是进行了自我介绍(结果被GG说了太官方)。然后给我三分钟的时间介绍我参加的PHP项目,我balabala,GG说我只说了2分钟,没想到GG还在计时啊。接着问PHP和C++的区别;然后问我一些和技术无关的问题。问我的规划,答成为一名优秀工程师;问成为优秀的工程师什么东西最重要,答思维逻辑、技术、自学能力。。。。;问其中什么东西最重要,答逻辑思维,GG问为什么,我balabala,然后他和我说他在面其他人的时候,其他人都是说技术技能。GG又问你最近看了什么技术的书籍,我说了C++基本经典的著作。GG直接问我是不是为了面试才看,我说一方面是是自己喜欢技术,另一方面是为面试准备。然后问我百度LBS和其他LBS应用有什么优势和劣势。说实在我用的最多的是百度的LBS,然后就简单和老虎地图做了比较。GG又问百度地图有哪些功能做得好的,哪些功能需要改进的,我又balabala起来。最后GG问我有没有关注前沿互联网技术,当时脑子空白,只说了很大的概念:云计算和大数据。GG说你对nodejs之类的有了解吗?我说没有。最后GG问我有什么问题想问他的(前提是什么问题都可以问)。我直接切入主题问,什么时候可以知道面试结果,GG说很快。再次问:有多快?GG答一周之内。GG又说还有没有想知道的,抓住机会问。我就问了自己需要在哪方面加强之类的问题。最后和GG拜拜了。

没想到,在吃中饭的时候,HR GG打电话过来说我过了,跟我谈offer的事。感觉好惊讶,三面的GG说很快可以知道面试结果,没想到是这么快。最后,感谢女朋友同学的内推,感谢面试官,感谢女朋友、家人以及自己的付出。希望自己在未来的道路中不断地加油,让自己变得更加优秀。

写在后面:希望此文对大家有所帮助。



      

        

1 0
原创粉丝点击