您的位置:首页 > 其它

10月10日百度 移动软件开发 三面经验

2013-10-13 01:23 211 查看
10月8日参加了百度的笔试,我报的是移动软件研发,上海的职位。题目与软件研发的不一样,相对会简单一点。

笔试稍微回顾一下:

第一题是列举进程间进行通信的方式,列举至少三种,这个很简单。第二题是考察strlen和sizeof的用法以及如果函数参数列表是数组的情况,也是经常遇到的问题,注意参数列表中的数组实际编译器会优化为指针,所以跟传入指针是一样的。第三题让你想一种策略,就是某个程序只能有一个进行在执行,不能运行多份进程,问如何实现,我答的是关于进程同步的东西,不知道原题意思是不是要考察这个。

第四题写代码,是一个三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组。

第五题也是写代码,实现C的strstr

第六题也是写代码,让你写一个二叉树的删除,这个二叉树并不一定是排序二叉树,所以你要自己设想一种方式。这个各种数据结构的书里面都有。

最后一题设计题,让你设计一个app,发现周围好玩的应用的,让你画出设计框架,并解释为什么这样设计。



本来就没报什么希望,结果10号直接收到了百度的笔试通知,挺惊喜的。早上通知的,然后就让当天面试,我说下午再过去。中午就没怎么睡就奔到玄武门的桔子酒店,百度果然很大气,直接把整个酒店给包圆了,软件的居多,移动的倒是不多,我们四楼这边好像只有5个人左右来面。后面还有来霸面的,被告知还没有通知完,让回去等。

一面是一个做Android的牛人,很年轻,上来就让我写一个memmove的函数,就是拷贝源地址的字符串到目的地址中,给了两个指针。这道题主要要考虑内存区域重叠的地方,我大概写了一下,花了10分钟(平时练习略少),面试官看了一下,问有没有优化的地方,代码还有什么问题。我说内存泄露的问题,没有注意到,忘记free了,还有,如果有重叠的部分,直接就整体从尾部做搬移就行了,不用先拷贝重叠区域,面试官点点头。后面又问了Android方面和Linux以及语言的一些基本问题,问的东西很多,基本上只要我答到点子上就会立马问下一个问题,也没有问很细节的东西,感觉就是看你的知识面够不够宽而不是是不是深入,下面是一些我能想到的知识点:

Android部分:

activity生命周期

broadcast类型

​线程同步如何实现

service的生命周期,service启动有哪几种方式

activity之间传数据有哪几种方式

数据持久化有哪几种

binder是什么,讲述一下binder的实现大致过程,怎么进行进程间通信

有没有遇到过ANR,怎么处理?

linux部分:

slab分配内存的策略

如果给你一块内存,你自己去规划这块内存,怎么实现一个内存分配策略,至少需要哪些记录?

linux源码中大量使用static的函数声明是因为什么?

什么是中断,中断的过程简单描述一下。

目前能想到的大概是这么多,然后最后问我是不是真的想做移动开发,对移动开发有什么理解。估计看我挺想做这块的,就说,那我就带你去安排个二面吧。



二面就主要是聊项目了,聊了一下我目前做的东西,然后问开发过什么Android应用,然后我详细的说了一下我的项目。聊完项目问我懂不懂算法,我说了解一些,然后就让我写一个最短路径的(一个交叉的图),我说对于图我没有研究过,其他基本的队列、链表、二叉树还是看过一些的。面试官说,那你算法不擅长,那就写一个冒泡排序吧,这个对于我来说轻车熟路,分分钟搞定,面试官看了一下,没有看出问题,然后就没有让我写其他的代码了。然后还问了实验室的方向,在实验室主要做什么,嵌入式系统最在乎的是什么。最后问了一下笔试题目,主要是最后一题设计题,问我怎么写的。我把思路说了一下,主要要有前台和后台,后台的服务进程如何做才能省电省流量,用注册Broadcast的方式去触发一个Service的行为,而不是让服务一直查询。面试官貌似还挺满意的,直接说让我进三面了。最后还问我要有什么了解的没有,我问了一下百度上海的移动端研发的项目有哪些,面试官说上海这边主要做百度浏览器和输入法,还有一些其他项目是和北京那边一块搞的。然后我又问了一下百度内部的培训机制和内部交流机制,面试官说百度没有明显的上下级关系,大家都在一起讨论问题,研究开发方向什么的,内部还有培训学院专门用来培训新人的。



估计报移动研发这块的人很少,hr让我等了一会就进三面了,三面面试官看起来很和蔼,也很年轻,30出头的样子,看了我籍贯,他说我是临泉的,卧槽竟然是老乡,不知道有没有同情分。前面依然是问我一些项目的东西,显然这个面试官对Android非常了解,问了我app项目里面用到的各种技术,然后还问我遇到的最难的问题在哪边,也同样问了Activity和Service的声明周期,看来这个很重要啊,我前面竟然把onResume这块忘记了,呃,不知道前面面试官有没有发现,还是发现了故意不拆穿。还问了dalvik虚拟机和java
bytecode的区别。后面就没再问技术了,问一下我平时喜欢干什么,有没有参加过什么竞赛,实验室的研究方向主要偏向于哪一块,为什么要选择上海啊,认为什么geek的生活态度,还聊了一下百度的文化,讲了一下自己是做百度云这块的,移动互联网的前景之类的吧,还算比较轻松。最后依然是让我问几个问题,我基本也是问了上面同样的问题,出来就后悔没问加班制度和薪资待遇了。最后面试官让我回去等通知,大概一周左右。



这次面试感觉不是特别成功吧,也谈不上失败,自己毕竟Android的深入理解偏少,算法部分聊胜于无,也看到自己的缺点,前面也有一面就被刷的,感觉自己最后能进三面也是挺幸运的,不知道百度面试策略是怎样的,三面被刷的几率有多少。发出来纯攒人品吧~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: