该题我采用的哈希散列的方法,以站点为关键字进行散列,设计了一个数据结构表达一个站点、定长属性、非定长属性,设计一个路径链表存储所有的路径。然后对各个要求的功能算法进行了一下简单的说明。
百度笔试的题目较多,体量较大,不要求全部做完,一般说来能写出思路来,并且思路正确就OK了,关键是要想好怎样表达。笔试完毕后,我感觉比较好,觉得应该是可以进入第一次面试的。
技术一面:
在笔试后的第二天,我收到了百度的面试通知,因为我算法方面不是很在行,不过在Windows编程上还行,于是我报的方向是客户端软件开发。面试地点安排在洛迦山国际酒店,百度的面试都是一对一地面试,百度的技术面试据说非常难,会问一些很难的问题,也会叫当场写代码。当时得到面试通知是又喜又担忧,估计自己是凶多吉少。我被安排在四点半面试,而晚上六点是迅雷的二次笔试,当时都想放弃算了,有点觉得自己就是炮灰。后来权衡半天,还是打算去试试,见识一下也好啊。我提前了一个小时来到珞珈山酒店,在二楼,绝大多数房间都是开着的,面试官和面试者一对一,有的房间在谈话,大概说的是项目,或者面试官问,面试者答;有的房间面试官在干其他事,面试者趴在桌子上,应该是在写程序。也有几个面试者等在各自的房间外,费劲地听着里边的谈话内容,我利用先到的时间,迅速和其中几个在我之前的面试者聊了聊,大概了解了面试的内容和形式,过了一会儿,那些先到的面试者都进入各自的房间面试去了,走廊就只剩下了我一个人,这是脑袋里边什么东西都想不了,索性我就不想了,反正我觉得自己就是来玩的,于是我一个人就在二楼所有的面试房间外晃来晃去,看里边面试的情况。四点半的时候终于轮到我了。
面试我的是一个非常好的技术面试官,据介绍是百度客户端业务部的主管,刚开始做了个自我介绍,然后就开始问一些项目的问题,围绕项目问了很多很细的问题,包括Windows内核的一些东西,如多线程,进程通信,WM_COPYDATA原理,内存映射文件等。我都一一予以作答,看上去他比较满意。后来最终还是逃不过写程序,他出了一道程序题让我写,题目比较简单,我立即下笔,三分钟后我写出来了并且注上了完整的注释,自认为写得很规则。面试官看了一下,没有找出任何错误,饶有兴趣地问了一个关于编程习惯的问题,他问我为什么喜欢把判断一个字符指针是否终结的语句写成if(0x00==*pStr),而不是if(0==*pStr),我说0看上去太单薄了,和数字0差不多,’\0’写起来太麻烦,0x00写起来感觉好,和字符在内存的存储也符合。技术上边的面试大致就是这些,远没有腾讯那么难,面试官也么有过于难为我,估计是因为我是机械专业的学生,非计算机科班专业的缘故。