本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-company.html
本文从网络上收集了一些公司的 Android 面试题。
Alibaba
一面
- 说一下你怎么学习安卓的?
- 项目中遇到哪些问题,如何解决的?
- Android事件分发机制?
- 三级缓存底层实现?
- HashMap底层实现,hashCode如何对应bucket?
- Java的垃圾回收机制,引用计数法两个对象互相引用如何解决?
- 用过的开源框架的源码分析
- Acticity的生命周期,Activity异常退出该如何处理?
- tcp和udp的区别,tcp如何保证可靠的,丢包如何处理?
二面:
- 标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
- 给定一个字符串,求第一个不重复的字符 abbcad -> c
新浪微博
一面
静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?
静态内部类:使用static修饰的内部类
匿名内部类:使用new生成的内部类
因为内部类的产生依赖于外部类,持有的引用是类名.this。
ArrayList和Vector的主要区别是什么?
ArrayList在Java1.2引入,用于替换Vector
Vector:
线程同步
当Vector中的元素超过它的初始大小时,Vector会将它的容量翻倍
ArrayList:
线程不同步,但性能很好
当ArrayList中的元素超过它的初始大小时,ArrayList只增加50%的大小
Java中try catch finally的执行顺序
先执行try中代码发生异常执行catch中代码,最后一定会执行finally中代码
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte类型,不支持long类型,String支持在java1.7引入
Activity和Fragment生命周期有哪些?
Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
onInterceptTouchEvent()和onTouchEvent()的区别?
onInterceptTouchEvent()用于拦截触摸事件
onTouchEvent()用于处理触摸事件
RemoteView在哪些功能中使用
APPwidget和Notification中
SurfaceView和View的区别是什么?
SurfaceView中采用了双缓存技术,在单独的线程中更新界面
View在UI线程中更新界面
讲一下android中进程的优先级?
前台进程
可见进程
服务进程
后台进程
空进程
tips:静态类持有Activity引用会导致内存泄露
二面
- service生命周期,可以执行耗时操作吗?
- JNI开发流程
- Java线程池,线程同步
- 自己设计一个图片加载框架
- 自定义View相关方法
- http ResponseCode
- 插件化,动态加载
- 性能优化,MAT
- AsyncTask原理
- 65k限制
- Serializable和Parcelable
- 文件和数据库哪个效率高
- 断点续传
- WebView和JS
- 所使用的开源框架的实现原理,源码
网易杭研
一面:
- 自我介绍
- Android中ClassLoader和java中有什么关系和区别?
- 熟不熟jvm,说一下Jvm的自动内存管理?
- 语言基础,String类可以被继承吗?为什么?
- Final能修饰什么?(当时我说class、field、method,他说还有吗?然后又叫我不要在意,后来回想起,应该是问到我在参数里面要不要用final,接下来是因为匿名内部类)
- Java中有内存泄露吗?(先说本质,再结合handler+匿名内部类)当时如何分析的?
- 描述下Aidl?觉得aidl有什么缺陷(这里在这个问题上回答有欠缺)
- 评价一下我,如果顺利进网易,需要往技术栈加什么点尽快投入业务?
二面:
- 用过什么开源,举一个例子?(volley)
- Activity生命周期?情景:现在在一张act1点了新的act2,周期如何?
- Act的launchMode,有没有结合项目用过(自己的程序锁和微信的PC端登陆对比,不过我现在又发现,应该大约估计可能是动态加载的一个缺陷,如果有找到相关信息,请务必跟我说。具体问题就是,当在PC端登录时,Android终端的微信会跳出,即使wechat的task不是在fore,当按下确认,返回的是wechat,而不是自己先前的app)
- View的绘制原理,有没有用canvas自己画过ui?
- 以后想做Android什么方向?(中间件+SDK)
- 怎么看待前端和后端?
- 如果学前端会如何学?
- 优缺点?兴趣?
- 想不想来杭州?
- 评价一下我?往技术栈加什么?
三面HR:
- 为什么想来网易?
- 有投其他公司吗?
- 网易最吸引你的是什么?
- 想来杭州吗?
- 评价一下我?
美团
一面
- 自我介绍
- 面向对象三大特性
- Java虚拟机,垃圾回收
- GSON
- RxJava+Retrofit
- 图片缓存,三级缓存
- Android启动模式
- 四大组件
- Fragment生命周期,嵌套
- AsyncTask机制
- Handler机制
二面
- 面试官写程序,看错误。
- 面试官写程序让判断GC引用计数法循环引用会发生什么情况
- Android进程间通信,Binder机制
- Handler消息机制,postDelayed会造成线程阻塞吗?对内存有什么影响?
- Debug和Release状态的不同
- 实现stack 的pop和push接口 要求:
- 1.用基本的数组实现
- 2.考虑范型
- 3.考虑下同步问题
- 4.考虑扩容问题
蜻蜓FM
一面
- Toolbar的使用
- 如何判断本地缓存的时候数据需要从网络端获取
- 跨进程间通信
- Handler消息机制
- SharedPreference实现
- 快速排序
- 项目难点
豌豆荚三面
豌豆荚一面
- 介绍一下你的项目
- 网络框架的搭建
- 图片加载框架的实现
- 写个图片浏览器,说出你的思路
- 上网站写代码,如下: 有一个容器类 ArrayList,保存整数类型的元素,现在要求编写一个帮助类,类内提供一个帮助函数,帮助函数的功能是删除 容器中<10的元素。
豌豆荚二面
- Activity的启动模式
- 事件分发机制
- 写代码,LeetCode上股票利益最大化问题
- 写代码,剑指offer上第一次只出现一次的字符
豌豆荚三面
- 聊项目,聊大学做过的事
- 写代码,反转字符串
- 写代码,字符串中出现最多的字符。
2016年4月某公司面试题及面试流程。
静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?
- 静态内部类:使用static修饰的内部类
- 内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类
- 匿名内部类:使用new生成的内部类
- 因为内部类的产生依赖于外部类,持有的引用是类名.this
ArrayList和Vector的主要区别是什么?
ArrayList在Java1.2引入,用于替换Vector
Vector:
- 线程同步
- 当Vector中的元素超过它的初始大小时,Vector会将它的容量翻倍
ArrayList:
- 线程不同步,但性能很好
- 当ArrayList中的元素超过它的初始大小时,ArrayList只增加50%的大小
Java中try catch finally的执行顺序
先执行try中代码发生异常执行catch中代码,最后一定会执行finally中代码
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte类型,不支持long类型,String支持在java1.7引入
Activity和Fragment生命周期有哪些?
- Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
- Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
onInterceptTouchEvent()和onTouchEvent()的区别?
onInterceptTouchEvent()用于拦截触摸事件
onTouchEvent()用于处理触摸事件
RemoteView在哪些功能中使用
APPwidget和Notification中
SurfaceView和View的区别是什么?
SurfaceView中采用了双缓存技术,在单独的线程中更新界面
View在UI线程中更新界面
讲一下android中进程的优先级?
- 前台进程
- 可见进程
- 服务进程
- 后台进程
- 空进程
代码查错题,没记下来
tips:静态变量持有Activity引用会导致内存泄露
某公司面试题
一面
- service生命周期,可以执行耗时操作吗?
- JNI开发流程
- Java线程池,线程同步
- 自己设计一个图片加载框架
- 自定义View相关方法
- http ResponseCode
- 插件化,动态加载
- 性能优化,MAT
- AsyncTask原理
- 65k限制
- Serializable和Parcelable
- 文件和数据库哪个效率高
- 断点续传
- WebView和JS
Android基础——Service
Android基础——IntentService
Android开发指导——Service
Android开发指导——绑定Service
Android开发指导——进程间通信AIDL
Android中Java和JavaScript交互
WebView 远程代码执行漏洞浅析
WebView中的Java与JavaScript提供【安全可靠】的多样互通方案
二面
- 所使用的开源框架的实现原理,源码
- 没看过,被pass了
- 去面试之前把用到的开源框架源码分析一定要看看啊