百度在线网络技术(北京)有限公司软件研发工程师面试经验

面试准备来自 25495 份面经

面试感受
一般 很好
面试难度
简单 困难

常见面试流程

主要面试来源

校园招聘

29.0%

内部推荐

10.0%

猎头推荐

4.0%

社会招聘

13.0%

BOSS直聘

38.0%

其他网络平台

5.0%

推荐
软件研发工程师
地区
匿名用户
软件研发工程师
感觉没戏
一面: 给你一棵二叉树,如何判断它是否是完全二叉树? 最开始我连完全二叉树的定义都忘了,面试官提醒我之后我才明白是啥。。汗。我当时回答的是先把它转化成数组的形式存储(就是2*n存左孩子,2*n+1存 右孩子的存法),然后循环判断一下是不是所有的结点都是在数组的前m个位置。 给你一个数组,求它的一个子串,使该子串的和最大。 这是典型的最大子串和问题,我直接就说这是个经典的动态规划问题:令F[m]表示以第m个数为结尾的所有子串中和最大的子串的子串和。则若F[m- 1]>0,则F[m]=F[m-1]+a[m],若F[m-1]<0,则F[m]=a[m]。求出所有F[m]中最大的一个就行了。 vector是如何实现的? 这个简单到爆了,我寥寥几句说完了。 C++里,虚函数是如何实现的? 我一听就明白想说的是vptr和vtable,直接说:如果一个对象含有一个以上虚函数,则它的对象中有一个vptr,指向该对象所属类型的虚拟函数地址表(vtable),这样,就能根据一个对象的实际类型来确定要执行的函数地址了。 C++里动态申请一个数组是用的int *p=new int[10]类型的方法,而销毁时,则是用delete [] p ,请问,delete时,没有指明销毁空间有多大,它是如何知道要delete的数组是多大的?如果你来设计C++,你会如何来实现? 这个我之前确实没思考过,我想了会儿,说可能是new时在前面多申请出几个字节,用来存该申请出区域的大小。这样,返回的p可能不是申请出的首地 址,delete时,用p往前几个字节,就能知道数组有多大了。后来网上查了查,似乎确实是用差不多的方法实现的。 给你一个随机数发生器,它有p的概率生成0,1-p的概率生成1,现在让你设计一个随机数发生器,有1/2的概率生成0,1/2的概率生成1. 这个想了好一会儿没想出来好方法。后来面试结束后,让大二大三的想,他们找到了个方法:用给出的随机发生器,随机生成两次数字,由于先1后0和先0后1的 概论是相同的,都是p(1-p)的概率,所以,如果先1后0,就输出1,如果先0后1,就输出0.如果同1或者同0,就重复试验,直接两次生成的数不相同 为止。 给你一棵树,并给你两个结点,如何求它们的最近公共祖先? 我一听最近公共祖先(LCA问题),直接说能用tarjan算法来算,然后他又让我说明具体怎么算,我想了好一会儿才想清楚具体的过程。说完才意识到他现 在只是问求一次最近公共祖先如何求,我又说,如果只求一次的话只需要简单的一次搜索就可以了。。而求多次的话,每次都搜索太慢,可以用上面说的 tarjan算法或者用一次搜索先转化成+-1RMQ问题来求解。 请详细说明如何使用socket。 这个我以前我用C语言和C#都写过socket程序,所以对这个很是熟悉,又是直接说了一通。 TCP和UDP的区别是什么? 我说TCP是面向连接的,UDP是无连接的。 请详述TCP的三次握手的过程 这个我当时确实不会,就直接说没了解过。 关于虚拟内存管理,说说你的看法。 这个,我当时不太了解,不过猜测和cache管理比较类似,然后就按cache管理答了些东西,后来看看,大致还算比较靠谱。 你有什么问题想要问的没有? 这个说是问题也可以算是个问题吧,我就随便扯一点点,然后帮同学问问一个同学为什么还没接到电面通知,他说他会帮我问问的。 然后,面试完和面试官闲谈了谈,谈到我在大连理工参加的大连赛区的ACM比赛,面试官似乎之前在大连理工上过学,他说似乎大连赛区这个比赛的申办和他还有些关系…
电话面试
一年前
6人
匿名用户
软件研发工程师
感觉靠谱
面试官挺好的,问的问题也很专业,工作环境好,企业氛围好,是一个很有文化的公司。 BPIT分为四、五个大组,分别负责ERP、网络控制(包括邮件组、身份认证这些)、hi(内部聊天工具)、内搜(内部搜索)等(主要就了解这几个大方向,当然还有一些如内网主页、UEFE这些内容)。 牛人肯定是有的,但不多(bpit总共也就300来号人),好像级别最高的是一个T8,T7也有好几个。 应届生是可以学习到很多东西的,毕竟不是大神,第一次很难找到完全适合自己的职位。
包含 1 个问题 · 1 个回答
谈一下java集合类
一年前
匿名用户
软件研发工程师
面试通过
第一轮面试,首先是基础的编程知识,主要考察对C语言的理解程度,比如写个strcpy函数,谈谈static关键字的用法等。随后会有一两道有点难度的算法题,主要考察逻辑思维能力。比如有一T个整数,怎么找到它的中位数。 第二轮领导面试,问的问题比较开放性。比如用户在使用百度搜索时输入一个关键字,如何根据这个关键字向他推荐他可能感兴趣的广告。 第三轮就是HR面试了,主要了解下工作背景,对薪资的期望等,再介绍一下百度的相关福利待遇。
部门主管面
一年前
7人
匿名用户
软件研发工程师
感觉靠谱
原先百度网投的时候,我用网易的邮箱注册,老是收不到激活信息,后来换了个QQ邮箱,注册居然成功了。众所周知,在找工作中用QQ邮箱可能会让企业觉得此人太幼稚,印象不好,所以我非常担心,想重新注册一个账号,但是一个身份证只能注册一个账号,所以只能作罢,非常担心我的简历被刷掉了。后来发现这个担心没有必要,因为百度基本也是海笔的政策,而且笔试通知和笔试过程是交给智联招聘的人来做的,整个过程人比较多,也比较混乱,百度和QQ一样,也支持霸王笔,这点同样要赞。百度招聘系统上的状态和实际状态不一定完全吻合,比如我的简历状态一直处于“处理中”状态,而有的人有“笔试”、“面试通过”或“面试未通过”状态。笔试时间安排在十月十多号,和宣讲时间差不多相隔一个月,这个是百度的策略,先在全国各地宣讲,接下来全国各地笔试和面试,最后全国汇总,通知结果。笔试是晚上进行的,和支付宝一样,也是全部挨着坐,但是试卷一样,百度不担心你抄别人的试卷,因为你抄不了,2个小时,6道大题,试卷头特地说明解决问题是一门权衡的艺术,如果有可能,尽情发挥,在做试卷前,通篇阅读题目,选择最拿手的题目就行了。百度的六道题目大致如下:1. 关于深度优先、广度优先遍历算法及非递归实现的特点这道题我索性将深度优先和广度优先便利算法都写出来,然后简单说明了一下其非递归实现的特点,就是需要一个堆栈或队列,辅助空间较大等。2. 一道程序改错题,可能存在错误,也可能存在安全隐患。这道题一般对C/C++熟悉的同学都会做,就是一些关于指针的指针传递,也有一些数组越界的问题,不难。3. 一台计算机有1KB内存和1MHZ的处理器,能在该机上运行且确定性终止的所有程序中,最长的运行时间是多少,要求写出推理过程,可作出任意假设。我假设该机是但用户单任务操作系统,实地址模式,运行的程序就是在不断不重复地更改内存状态,程序结束的终止状态为内存的某一确切状态,定义为终止态。于是推理过程如下:1KB的内存共有状态:2^(1024*8) 种1MHZ的处理器每一秒钟可以更改内存状态的次数为: 10^6 次因此,如果一个应用程序,从某个状态出发,遍历了所有的中间状态,最终到大终止态后结束,经历的这段时间即为程序运行的最长时间。为:(2^(1024*8)-1)/10^6 秒4. 关于编译依赖的问题,大意是一个项目中存在诸多组件,某些组件的编译需要以另外一些组件的编译为前提,问怎样找出一个合理顺序,使得所有组件能够顺利编译。该题其实是拓补排序问题,详见清华大学出版的严蔚敏编著的《数据结构》一书。我以一个确切的例子,绘出了一些图形和数据结构,然后以文字形式表述了算法。5. 编程题。要求在一个字符串中找出最长的数字串,如“fafdahruqa12343fa43faf56454354fas”,你需要找出“56454354”即可。该题很简单,可以直接写出可以运行的代码。6. 关于URL的系统设计问题,一个URL分为站点和路径两部分,除此之外还需要维护一些定长的属性和不定长的属性,定长属性如URL被发现的时间,不定长属性如URL的描述文字。要求设计一个系统,可以存储和维护100亿条URL及其属性,支持添加,更新和删除URL,能判定一个站点是否在系统中,如果在,需要给出信息,一个站点可能有多个路径,如果给出一个站点,支持给出站点下所有的路径。该题我采用的哈希散列的方法,以站点为关键字进行散列,设计了一个数据结构表达一个站点、定长属性、非定长属性,设计一个路径链表存储所有的路径。然后对各个要求的功能算法进行了一下简单的说明。百度笔试的题目较多,体量较大,不要求全部做完,一般说来能写出思路来,并且思路正确就OK了,关键是要想好怎样表达。笔试完毕后,我感觉比较好,觉得应该是可以进入第一次面试的
笔试
一年前
2人
匿名用户
软件研发工程师
面试未通过
电话面试,会有在线写代码,给我一个网站,我写,面试官可以实时看到我写出的代码。不限时间。代码题是用c语言实现字符串中删除给定的字符。然后问了一个简单的数据结构题,如何从单项链表中删除倒数第k个元素。基础题都真的很基础,但是会考察你的思路。 当我写出第一份代码的时候,虽然实现了功能,但是使用了额外的内存,面试官引导我写出更高效且不需要额外内存的方案。然后问了项目相关的内容,问到了信息检索的倒排索引和语言模型,并且引导我思考这些理论知识的具体应用。我记得问到了哪些因素会导致检索的正确率变低。还问了分布式相关的,当被检索的原文件太多,可能存放在多个节点时,应该怎么处理?最后问了一道大数据的处理题,两个特大的文本文件,找出其中相同的行。我没有实操经验,所以不太会。但后来问面试官,面试官也只是说了个大概的思路,可见这道题还是考思路的,并不一定真的说出特别具体的算法。 总结一下,项目一定会考,数据结构基础题一定会考,互联网公司基本都会考的特大数据的处理也问到了。思路一定要清晰,如果一时想不起来也没关系,面试官会引导着我向正确的方向思考。很遗憾,最终还是没能通过。后来问面试官,他给出的答复是项目经验不足。我感觉他的评价比较委婉,还是我掌握的不够扎实吧。
电话面试
一年前
17人
打开小程序查看更多面经数据
写面经
选择排序