痛心!作为Android开发者,想进美团居然连这些知识点都只是一知半解!

写在开篇

在外包待了2年发现对技术没点帮助,所以在19年底决定了跳槽换个好点的场地,结果没想到和往年相比,今年的面试看上去不是那么顺利,多少都受疫情有所影响,所以一开始的面试并不是很顺利,但是令我惊讶的是第一家给我面试机会的公司竟然是美团。一开始接到面试通知时,心情特别复杂,紧张又兴奋。这次面试,一共三轮,共计四个小时左右,这三轮面试对我来说,简直是灵魂拷问,至于结局,往下看吧!

话不多说,面试场景具体如何,各位看官捧个场吧。另外,下文中涉及到的面试题答案、复习资料,均有完整PDF版分享,需要的小伙伴,点这里可以看到全部内容

我把面试题分成几个模块了,就没有按照面试的顺序了:

Android 基础知识点

1、四大组件的生命周期
2、Activity 之间的通信方式
3、横竖屏切换的时候,Activity 各种情况下的生命周期
4、Activity 与 Fragment 之间生命周期比较
5、Activity 上有 Dialog 的时候按 Home 键时的生命周期
6、两个 Activity 之间跳转时必然会执行的是哪几个方法?
7、前台切换到后台,然后再回到前台,Activity 生命周期回调方法。 弹出 Dialog,生命值周期回调方法。
8、Activity 的四种启动模式对比
9、Activity 状态保存于恢复
10、fragment 各种情况下的生命周期是如何管理的
11、Service 的开启方式,原理是怎样的?
12、请描述一下 Service 的生命周期
13、请描述一下广播 BroadcastReceiver 的理解,广播的分类,它实现 通信的底层原理是怎样的?
14、AlertDialog,popupWindow,Activity 区别
15、Application 和 Activity 的 Context 对象的区别
16、Android 属性动画特性
17、如何导入外部数据库?
18、LinearLayout、RelativeLayout、FrameLayout 的特性及对比,并 介绍使用场景
19、谈谈对接口与回调的理解
20、介绍下 SurfceView,它的应用场景是怎样的,它与普通 View 的区 别是什么?
21、序列化的作用,以及 Android 两种序列化的区别
22、差值器
23、估值器
24、Android 中数据存储方式

Android 源码相关分析

1、Android 动画框架实现原理
2、Android 各个版本 API 的区别
3、Requestlayout,onlayout,onDraw,DrawChild 区别与联系
4、invalidate 和 postInvalidate 的区别及使用
5、Activity-Window-View 三者的差别
6、如何优化自定义 View,你进行优化的一般方向是怎样的?
7、低版本 SDK 如何实现高版本 api?
8、描述一次网络请求的流程
9、HttpUrlConnection 和 okhttp 关系
10、Bitmap 对象的理解
11、looper 架构
12、ActivityThread,AMS,WMS 的工作原理
13、自定义 View 如何考虑机型适配
14、AstncTask+HttpClient 与 AsyncHttpClient 有什么区别?
15、LaunchMode 应用场景
16、AsyncTask 如何使用?
17、SpareArray 原理
18、AndroidService 与 Activity 之间通信的几种方式
19、IntentService 原理及作用是什么?
20、说说 Activity、Intent、Service 是什么关系
21、ApplicationContext 和 ActivityContext 的区别
22、SP 是进程同步的吗?有什么方法做到同步?
23、谈谈多线程在 Android 中的使用
24、进程和 Application 的生命周期
25、封装 View 的时候怎么知道 view 的大小
26、RecycleView 原理,如何避免 RecycleView 带来的内存问题
27、AndroidManifest 的作用与理解

常见的一些原理性问题

1、Handler 机制和底层实现
2、Handler、Thread 和 HandlerThread 的差别
3、handler 发消息给子线程,looper 怎么启动?
4、关于 Handler,在任何地方 new Handler 都是什么线程下?
5、ThreadLocal 原理,实现及如何保证 Local 属性?
6、请解释下在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
7、请描述一下 View 事件传递分发机制
8、Touch 事件传递流程
9、事件分发中的 onTouch 和 onTouchEvent 有什么区别,又该如何使 用?
10、View 和 ViewGroup 分别有哪些事件分发相关的回调方法
11、View 刷新机制
12、View 绘制流程
13、自定义控件原理
14、自定义 View 如何提供获取 View 属性的接口?
15、Android 代码中实现 WAP 方式联网
16、AsyncTask 机制
17、AsyncTask 原理及不足
18、如何取消 AsyncTask?
19、为什么不能在子线程更新 UI?
20、ANR 产生的原因是什么?
21、ANR 定位和修正
22、oom 是什么?
23、什么情况导致 oom?
24、有什么解决方法可以避免 OOM?
25、Oom 是否可以 try catch?为什么
26、内存泄漏是什么?
27、什么情况导致内存泄漏?
28、如何防止线程的内存泄漏?
29、内存泄露场的解决方法
30、内存泄漏和内存溢出区别?
31、LruCache 默认缓存大小
32、ContentProvider 的权限管理
33、如何通过广播拦截和 abort 一条短信?
34、广播是否可以请求网络?
35、广播引起 anr 的时间限制是多少?
36、计算一个 view 的嵌套层级
37、Activity 栈
38、Android 线程有没有上限?
39、线程池有没有上限?
40、Android 为什么引入 Parcelable?
41、有没有尝试简化 Parcelable 的使用?
42、dex 文件的加载流程能描述下么

关于我的学习方式

  • 多总结、多输出

多写文章,输出优质内容

而除了人人皆知的写博客,还可以通过画图的方式将知识串起来

包括流程图、思维导图,先把自己记得的部分在图上画出来(这里推荐Xmind)

比如思维导图我是这么做的:

Android开发知识体系→Java基础知识、Android基础知识、性能优化、NDK……

然后性能优化又细分为启动优化、UI渲染优化、内存优化、APK优化……

长此以往的这样一步一步深入构建,你对于自身的知识掌控度会有质的飞跃!

随便找个培训机构的知识体系图的话,也可以起到自己查漏补缺的作用:

在自己绘制导图的过程中,如果遇到写不上的地方,我想你也知道你要提升哪一块了吧?

这样做还有一个好处:体系化学习

平常大家学(jie)习(jue)知(BUG)识的时候都是碎片化的知识,过后非常容易忘,而如果你用思维导图的形式将这些碎片化的知识整合到一起,甚至是工作中也经常使用,效果就会非常好。

  • 学习一线大厂的各项技术

大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以进一步的提升你的学习效率。

这一方面,通常那些我答不上来的题目,我会直接问面试官,这个应该怎么解或是什么思路,面试后就赶紧记下来,回去操作几遍就差不多了

另外还有万能的群友,平常大家交流的时候也可以学到很多东西。

  • 定期面试

每隔一段时间就要出去面试一轮,面试的目的不一定是为了找到好的工作,而是知道自己的优缺点是什么?知道市场需要什么样的人?

定期的面试可以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以更加有针对性的学习提升,并且在面试过程中遇到了你不会的点,你也可以借机向面试官提问,趁机学习了一波大厂的技术操作

要是运气好,拿到了高薪Offer,岂不是更赚?

同样,因为面试你的也是同行,这样也能够碰撞出不同的思想。

试想?如果你一直待在一家公司,都不知道外面的情况如何的话,那是非常可怕的,至少我这么认为。

这个前面已经说过一遍了,我不要脸的又Copy过来了……

  • 多看大佬的学习笔记,学习大佬的设计思想

之前我跟一位大佬交流后,就拿到了他做的《Android开发核心知识点笔记》

纯目录页都非常非常的长……大佬,不愧是大佬……

现在《Android开发核心知识点笔记》他已经上传到GitHub了,想看的朋友们可以直接前往GitHub

  • 配合各种资料辅助学习

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘。

这个时候可以读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

《486页超全面Android开发相关源码精编解析》

最后

有段话想分享给大家:

“如果你热爱,那么请继续热爱,你的付出终将获得与之匹配的回报,如果眼前觉得没有希望,不妨再坚持一会,‘今天很残酷,明天也很残酷,但是后天很美好’ ‘冬天都已经来了,春天还会远吗?’ ”

道理就是这个道理,但是“大道理大家都懂”,而那些成功的人,就是把这些道理运用到了工作和生活当中。

最后以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者关注主页扫描加 微信 获取。

猜你喜欢

转载自blog.csdn.net/weixin_44339238/article/details/111463395