Android 开发面试 “108” 问

· jixiaohua · Created at · Last by kkmmi68 Replied at · 9668 hits
2

本文作者Jacky 王世昌,映客 Android 架构师、Github中国区Java星榜前20。发表于《Android 面试指南》专栏。

如何才能通过一线互联网公司面试?相信这是很多人的疑惑,希望看完本篇文章能给大家一些启发。

我是 Github 上 AndroidInterview-Q-A 项目的作者,想当年我也是面试了很多家公司,发现一线公司各家面试题相似程度很高,后来我就白天面试完,晚上回来就靠回忆把各个问题写下来,不明白的就在网上找比较好的答案记录下来。

下面的截图就是我第一次的面试题记录,当天面试完晚上回到家写下的几个问题。

现在从上面的几个问题,发展成了6K star的项目,以下问题是我整理的最新的一线公司面试记录,文章最后有我多年面试的经验分享给大家。


基础问题相关(问题答案在下文):

1、接口的意义-百度
2、抽象类的意义-百度
3、内部类的作用-乐视
4、Java 虚拟机的特性-百度-乐视
5、哪些情况下的对象会被垃圾回收机制处理掉-美团-小米
6、进程和线程的区别-猎豹-美团
7、java中==和equals和hashCode的区别-乐视
8、HashMap的实现原理-美团
9、string-stringbuffer-stringbuilder区别-小米-乐视-百度
10、什么导致线程阻塞-58-美团
11、多线程同步机制-猎豹
12、ArrayMap对比HashMap
13、hashmap和hashtable的区别-乐视-小米-360
14、容器类之间的区别-乐视-美团
15、抽象类接口区别-360

Android 方面(问题答案在下文)

16、如何导入外部数据库?
17、本地广播和全局广播有什么差别?
18、intentService作用是什么,AIDL解决了什么问题-小米
19、Ubuntu编译安卓系统-百度
20、LaunchMode应用场景-百度-小米-乐视
21、Touch事件传递流程-小米
22、View绘制流程-百度
23、多线程-360
24、Handler,Thread和HandlerThread的差别-小米
25、线程同步-百度
26、什么情况导致内存泄漏-美团
27、ANR定位和修正
28、什么情况导致oom-乐视-美团
29、Service与Activity之间通信的几种方式
30、如何保证service在后台不被Kill
31、Requestlayout,onlayout,onDraw,DrawChild区别与联系-猎豹
32、Android动画框架实现原理
33、Android为每个应用程序分配的内存大小是多少-美团
34、优化自定义view百度-乐视-小米
36、volley-美团-乐视
37、Glide源码解析
38、Android设计模式
39、Android属性动画特性-乐视-小米
40、Activity Window View三者的差别,fragment的特点-360
41、invalidate和postInvalidate的区别及使用-百度
42、LinearLayout和RelativeLayout性能对比-百度
43、View刷新机制-百度-美团
44、架构设计-搜狐

腾讯公司面试题精选

45、2000万个整数,找出第五十大的数字?
46、从网络加载一个10M的图片,说下注意事项
47、自定义View注意事项
48、项目中常用的设计模式
49、JVM的理解

阿里面试题精选

50、进程间通信方式
51、什么是协程
52、内存泄露是怎么回事
53、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系
54、数组和链表的区别
55、二叉树的深度优先遍历和广度优先遍历的具体实现
56、堆的结构
57、bitmap对象的理解
58、什么是深拷贝和浅拷
59、对象锁和类锁是否会互相影响
60、looper架构
61、自定义控件原理
62、自定义控件原理
63、ActivityThread,Ams,Wms的工作原理
64、Java中final,finally,finalize的区别
65、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法
66、两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
67、volatile 的意义?
68、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

面试题答案《Android 面试指南》专栏原文。


经验分享

我也算是一线公司都踩过点的码农了,Facebook也踩过一次,现在就说说我自己的一些感受。

在乐视的时候我作为面试官接触过几十个面试者,能左右我是不是通过这个人的,主要因素还是这个人对技术的热爱程度。因为有这种极客精神,做任何技术上的事情都是时间上的问题,所以面试过程中要尽可能表现出对技术的热爱。

那除了这种因素外,我们怎么做才能更大概率的进入一线公司呢?

还有一个比较重要的因素就是知识的深度。我认为深度优于广度,广度通过看各种文章都能了解,但一旦碰到实际问题,这时候往往靠的是自己的知识深度。比如,Java程序猿都知道Java是跨平台的,因为会编译成和平台无关的字节码,但是有多少人会知道是怎么编译的?如果不知道虚拟机运行原理,就不可能做出手淘的Atlas容器框架。再比如,很多人知道四大组件职责都是什么,还会些性能优化,但是如果不知道Framework层系统服务原理,就做不出插件化框架。

因为一线公司业务的复杂度也决定了业务的深度,如果没有较好的深度探究能力,是很难胜任的,所以知识的深度也很重要。

极客精神加上某一领域知识的深度能力,就可以达到一线公司标准了。面试中非理性因素也有较大比重,但是这种东西是我们没办法掌控的,如果因为这种因素失败了,也没必要气馁。我认为能力是和回报成正比的,就算此刻没发生,下一刻也会出现,只要掌握了我们该掌握的能力,总有一天会进入我们理想的公司。

共收到 45 条回复
96
diy_zyl · #1 ·

有面试题答案吗

2
jixiaohua · #2 ·

#1楼 @diy_zyl 需要订阅 哦。订阅的原文有答案

96
bai200255 · #3 ·

mark一下

96
wityizone · #4 ·

这答案居然要99元
这是穷疯了吧

2
jixiaohua · #5 ·

#4楼 @wityizone 这是整个专栏的订阅价格,另外,没人逼你订阅。

96
wityizone · #6 ·

#5楼 @jixiaohua 你这种 骗骗小白 还行

96
redbeetle · #7 ·

,,,

391

mark一下

9Floor Deleted
10Floor Deleted
11Floor Deleted
12Floor Deleted
13Floor Deleted
14Floor Deleted
15Floor Deleted
16Floor Deleted
17Floor Deleted
18Floor Deleted
19Floor Deleted
20Floor Deleted
21Floor Deleted
22Floor Deleted
23Floor Deleted
24Floor Deleted
25Floor Deleted
26Floor Deleted
27Floor Deleted
28Floor Deleted
29Floor Deleted
30Floor Deleted
31Floor Deleted
32Floor Deleted
33Floor Deleted
34Floor Deleted
35Floor Deleted
36Floor Deleted
37Floor Deleted
38Floor Deleted
39Floor Deleted
40Floor Deleted
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up