汇总自己经历了一些来自百度,360,淘宝,腾讯,高通中国,htc上海的电话面试及现场面试,还有笔试相关题目
百度:百度在北京中关村上地七街奎科科技大厦,不大但是很安静的一个办公地点。
百度技术面试分为两轮,第一轮基础技术面试,一般为项目负责人,主要考察基本知识及知识广度,第二轮面试一般为部门负责人,主要考察技术深度。基础面试感觉个人答的还不错,主要询问了一些关于android基本知识的考察,涉及到Activity之间的跳转,然后问了一些关于所参与项目中遇到的问题,比如现在做的云信项目中,如何提供传输效率等,然后讨论了一下关于View刷新机制等问题。总体来看一面比较容易,时间差不多一个半小时。
第二轮面试,面试官看起来挺严肃的,当然由于是考技术深度,所以难度加大了,当然自己也败在这里边了。由于看到简历边有说JNI这块,他就特地主要文这块了,所有问题基本都是以C和数据结构为主。
主要问道:
1.?实现Strlen(char* str)
2. 说说常见的两种数据结构之间的区别,这里边问道了MAP,TREE,队列,数据,栈等。并且说说时间复杂度及空间复杂度。
3. 说说地图定位方式,详细说说wifi定位是如何实现的。
总体而言,之所以答的不好,对常见的数据结构确实并不是很熟悉,没有做好充分准备,建议如果去面试,好好复习《剑指名企Offer》。第三个问题,面试官让发挥想象去考虑wifi是怎么实现定位的,没有答出来。
?
360:位于北京朝阳区大望路地铁站不远处,办公地点环境很好。
涉及的主要问题:
1.?笔试,hashcode 与 equals()区别?
2.?冒泡排序算法实现
3.?常见的排序算法时间复杂度
4.?dp,px,sp区别及使用场景
5.?lauchmode及应用场景
6.?说说你对android的理解。
7.?Android sqlite3是否支持并发访问?
8.?有没有遇到过各个版本之间android api接口的区别?试列举1~2个
9.?Android wap访问方式。
360此次面试总体而言,表现挺失败的,笔试题没有答好。面试也没表现好。
?
腾讯面试:地点在腾讯大厦隔壁的楼里边。
腾讯在电话面试中主要问道了:
1.?C++ 引用与指针的区别。
2.?Android aidl原理。
3.?如何保证service在后台不被kill
现场笔试题如下:
1.?Broadcast生命周期。
2.?Requestlayout,onlayout,onDraw,DrawChild区别与联系
3.?Invalidate 与 postInvaliate区别
4.?Android 2D动画框架实现原理
5.?Java状态机
6.?线程wait(),yelid(),sleep()区别
7.?Java垃圾回收机制
8.?两种单例模式的实现方式
9.?与操作
10.递归算法
11.Map原理
12.Java中int char long各占多少字节数
13.Android为每个应用程序分配的内存大小是多少?
14.Integer与Int的区别。
笔试大概耗时30分钟。
面试过程中,主要是问关于算法与数据结构的题,问了C里边比较经典的一个算法题,求一个数N的2进制表现形式中1的个数。如3(0x0011)中为2个。
没答出来。
腾讯面试兼顾android及java基础知识,并且在面试中主要考察数据结构与算法,但是面试前没有花时间与精力复习此。悲剧的收场。
?
淘宝:淘宝面试只参与了电话面试,电话面试耗时约1小时,在电话面试中主要问了如下问题:
1.?自我介绍
2.?参考自我介绍,问了很多关于目前所做项目中遇到的问题
3.?在项目中遇到的最大的问题,回答,listview图片缓存机制。
4.?项目亮点:网络架构,说说对AsyncTask的理解。
5.?如何防止service被kill掉。
6.?说说View的刷新机制。
7.?对Java虚拟机的理解。Java内存回收机制的理解。
8.?AIDL
淘宝电话面试时由于当时刚入门android没多久,只接触了一个项目,项目经验不够,并且由于对java理解很浅,所以得到的面试结果是:技术基础还可以,但是技术深度不够。
?
Qualcomm中国:
Qualcomm简历是在51job上投放的,这也是唯一一个通过网投简历获得的面试机会,其余全都是通过内部推荐获取,这也验证了,其实网投被HR看到的几率是很低,效率不高。不能完全依赖网投的方式进行找工作。、
此次电话面试的是Qualcomm中国上海的 android研发测试工程师,虽然是测试工程师职位,但是在面试过程中问到的问题,丝毫不比开发工程师难度低并且远胜过开发职位。
具体面试问题如下:
1.?谈谈对SurfaceView的理解
2.?如何防止进程死锁。
3.?OO里边多态的概念
4.?ContentProvider实现原理,为什么能够共享数据
5.?下载模块的优化
6.?A a 与 Aa = new A();的区别
7.?说说常用的Intent Flag。
具体问题,目前只记得这几个了,但是面试交谈大概耗时一个小时,一个小时中问道了很多问题,包括linux系统知识,OO,C/C++知识,android及java。覆盖范围比较广。
?
HTC中国上海:
HTC面试也是通过网投的。看来HTC跟Qualcomm等外企通过网投的概率比较大。
HTC也是采取电话面试:
HTC电话面试,从对方听筒的声音来看,对方一共有5~6人参与面试,包括技术与人力。鸭梨山大。
主要问道如下问题:
1.?AIDL
2.?强引用,软引用,弱引用之前的区别
3.?Epub格式解析过程
4.?网络访问方式。
5.?Davink与jvm的区别
6.?Jni相关知识
7.?ConentProvider实现过程,这个比较偏像于如何实现。
8.?数据库联表查询。
9.?抽象类跟接口的区别。
总体来看,其实HTC电话面试所问问题相对都比较容易答上,并且实际情况也是很容易通过电话面试了,但是考虑到个人职业规划安排,后续没有去上海总部面试。
?
经历过以上这些面经历,发现自己学到很多,也认识到很多不足:
1.在不断的面试过程中,自己对如何自我介绍这个环节有了一定提高,比如在baidu的面试自我介绍过程中,完美结合自己对产品的理解,以及如何把这个理念在开发中实现,摆脱了之前面试一位的补充简历的弊端。
2.通过不断的面试,发现了自己在技术上的不足,找到了后续提高的点。技术深度上下苦工,并且面试前要好好做好数据结构复习。
3.面试过程中,适度的低调,隐藏自己的知识面,通过 虽然我不知道是怎么做的,但是我想****这种方式来增强面试官对你的印象。
接下来自己要努力的点:
1.?解决上述面试过程中遇到的问题。
2.?在平时的工作中,多问为什么,多想想优缺点。
3.?研究SurfaceView,JNI,view工作原理,2D动画框架
4.?深入理解BINDER,CONTENTPROVIDER。
5.?深入学习java,多问几个为什么。