为明天上午的百度面试做准备
2013-04-18 10:21
127 查看
明天上午将去百度面试,所以提前做一些准备,在网上只搜到了一份完整的面试题,如下,我要自己认真看一遍,是否能全部很好的回答。
上周末,参加了百度Android的面试.分笔试和面试,其中面试分一面、二面和三面,这个流程走下来,差不多一天多了.
关于笔试
以下题目不一定按笔试时顺序,是麦洛凭借回忆,尽量将笔试的题目还原(笔试共有10道题目)
1.java 基础题,输出结果是什么?
public static void main(String[] args) { String str = new String("abc"); char[] ch = {'a','b','c'}; change(str,ch); System.out.print(str+" "); System.out.print(ch);}
public static void change(String str,char[] ch){ str = "gbc"; ch[0] = 'g';
} }
答案:这道题考察的东西很多,看似简单,实则考察了java的基础知识,对内存的理解,对面向对象的理解,对==,equals,hashcode等的理解。总体来说不难,但是这个原理理解却不是那么容易的。
结果是:abc,gbc
2.HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
答案:考察对java中集合的理解,这个题是淘宝面试必问,我面试淘宝2次,都问到了,当时一个是实习生招聘的时候,一个是校招面试的时候,淘宝的面试官似乎特别爱问这个。这个问题我还是比较自信能回答的很好的。
3.Activity的启动模式有哪几种
答案:比较简单,但是有一个需要注意:singleTask,这个实际开发的时候有大用途。
4.介绍Handler机制
答案:考察Android的消息机制,这个应该是一般公司的必问题。
5.线程考核,解析sleep,wait,join,yield方法,以及notify 和notifyAll是如何控制线程同步的
答案:多线程的考核
6.android 存储方式以及各至用法
7.ListView 中BaseAdapter的使用和优化;在ListView中的item放置一个按钮,如何使用按钮对不同的item响应不同的事件
8.编程题:
题意:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复
答案:这个用的比较少,所以只能百度一下了。
http://blog.csdn.net/herrapfel/article/details/1885016
http://www.blogjava.net/cool2009/archive/2009/03/15/259882.html
第一种:用Math.random,使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机
public static void main(String[] args) { StringBuffer resRand = new StringBuffer(""); int maxnum = 0; while (true) { String num = (int) (Math.random() * 100) + ""; if (maxnum < 10) { if (resRand.toString().contains(num)) { continue; } resRand.append(num + ","); maxnum++; } else { break; } } System.out.println(resRand.substring(0, resRand.length() - 1)); }
第二种:用Java.util.random,在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long
public static void main(String[] args) { Random ran = new Random(); Set<Integer> set = new HashSet<Integer>(); while (set.size() == 10 ? false : true) { int num = ran.nextInt(100) + 1; set.add(num); } Iterator<Integer> it = set.iterator(); int count = 0; while (it.hasNext()) { System.out.println("第 " + ++count + " 个随机数 = " + it.next()); } }
笔试题目就只能记住这么多了.
由于笔试时间是在晚上,麦洛答好题目才交卷,时间大概用一个半小时(感觉其他人答得非常快,有的没有半个小时就交卷了).总体上,麦洛感觉笔试题目还是比较简单的,只要平时稍微注意学习,这些题目都不是很难.
百度评卷的效率也是很高的,麦洛刚从茂业大厦(百度深圳研发中心)出来不多久,就电话通知进入面试了.第二天面试时,被麦洛瞄到了答卷的分数,93分!
面试的第一轮是第二天9:00开始,在酒店里.因为深圳这边的研发中心刚刚建立起来,面试官都是从北京飞过来的.第一轮面试的面试官,应该也是Android工程师,这一轮问的题目基本都还行.就是其中一个题目是说,监听数据库变化的一个接口,这个接口麦洛用的比较少,所以没有答上来,就是ContentObserver这个接口.
ContentObserver
在android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能会搂关cursor而导致程序内存未释放等等。其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化。
这个监听短信数据库变化的例子可能能帮助理解这个原理。
http://www.cnblogs.com/lemonczy/archive/2011/11/18/2253662.html
涉及到的一个问题就是如何接收指定号码的短信,然后拦截下来,让系统不通知给用户,原理就是发现短信数据库发生变化后,就将这条短信的状态置为已读,具体见如下链接:
http://hi.baidu.com/gaogaf/item/2819df13c578f96e70d5e84b
这一轮的题目:
1.以前做过项目的,画个简单的架构图,介绍之前的项目;
2.项目中遇到的问题,以及怎么解决的.麦洛就举了之前写的上拉下拉这个控件的例子
3.Android Activity生命周期
4.Adapter中View重用的问题
就回忆起这么多了
第一轮讨论的话题是项目比较多,都是介绍项目经验之类的.
这一关讨论了一个多小时,顺利通过.
第二轮还是面试,是另外一个工程师来面试,就是面试官交换面试.
这一轮难度其实也不是特别大,但是因为问到几个麦洛没有做过的东西,被卡住了一下.
能回忆起的题目有:
1.介绍Http协议
2.Http协议实现多线程下载并支持断点续传,以及服务端是怎么支持的?
3.面向对象的理解,面向对象的原则–开发封闭原则的理解
4.android wap与net的两种连接方式
5.项目中的一些问题
这一轮主要是一些java基础知识,以及项目中的一些问题
两轮下来一个上午就过去了.麦洛也感觉精疲力尽了.然后就是吃午饭,等待第三轮面试了.
第三轮是比较轻松了.这一轮的面试应该是部门老大级别的了.随便聊聊,说说为何离职,以及有什么问题需要问的,大概半个小时就搞定了.
然后就回去等通知,要1周到两周时间.OMG!麦洛可不想等那么久啊
从笔试到面试总体感觉其实不是特别的难,只要做好准备平时注意积累,很多问题都是很好回答的.
相关文章推荐
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 百度基础技术测试面试准备
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 超详细Android面试的准备与经历分享 | 百度(offer)
- 百度面试准备
- 超详细Android面试的准备与经历分享 | 百度(offer)
- Android开发工程师面试如何准备才能拿高薪?
- 百度Java工程师面试资源
- 十月上旬百度,阿里巴巴,迅雷搜狗最新面试七十题(第201-270题)
- Android面试准备之集合
- 【面试准备】数据结构-二叉树
- 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题
- 面试准备--Spring(AOP)
- 程序员如何快速准备面试中的算法
- Android开发-基本概念小整理(三)为了面试的小伙伴们所准备~~
- Android开发-基本概念小整理(四)为了面试的小伙伴们所准备~~