4.能简单说说代理模式吗?动态代理和静态代理有什么区别?
- Android:
1.能简单说一下事件分发机制吗?
2.MeasureSpec.UNSPECIFIED是什么意思?如果外层的ViewGroup的模式是AT_MOST,内层是match_parent,那么最终传递到内层的模式是什么?(AT_MOST) ps:这个问题没啥意义
(听你说了View中有scrollTo,scrollBy,那么我们分析一个场景题)
3.场景题:首先有一个FrameLayout,其中嵌套着两层View,我们在进行重写onTouchEvent的时候,如何让上层View滑动并且暴露出下层的View?(这里有一个坑,面试官说的scrollTo、scrollBy,我就在这俩上面思考怎么暴露出下层的View,最后突然想到可以通过事件来调整整个View的布局位置)
- 源码:
1.看过那些优秀的开源框架源码吗?
2.知道那些源码相关的设计模式呢?
3.HashMap简单说一下原理吧
二面:
二面是一个女面试官,年龄可能在40岁左右
- 设计模式:
1.熟悉那些设计模式呢?
2.动态代理底层是如何实现的?
3.讲讲Retrofit的动态代理吧
- Java:
1.能简单说说JVM内存模型的目的以及在内存中区分为哪些区域吗?
2.内存回收机制大致讲讲呗?
3.类加载机制完整细致的描述一下把
4.类加载器的双亲委派原则说一下吧?(这里有一个疑问,我说父子类加载器不是继承关系,然后面试官说不太对,这里我有一点点疑问,还请大家告知一下)
5.能说一下Java .class文件的结构吗?
6.线程池的基本机制有了解吗?非核心线程如何保证延迟结束?
7.为什么内部类会默认持有外部类的引用?
- Android:
1.Handler消息机制简单说一下吧(延时的消息是如何发送的?以及通过Looper.loop()是如何处理延时消息的?)
2.为什么Handler会出现内存泄漏?
3.View中的post和handler的post有什么区别?(我说view中的handler是经过重写的,会处理关于View的相关绘制事件,然后面试官说只回答对了一部分,我有些疑问,还有其他的区别吗?)
4.有用到什么内存泄漏检测的框架吗?知道原理吗?(就是上面所说的JVM内存回收机制)
5.知道关于性能优化相关的吗?能简单讲一下吗?(布局,异步,过渡绘制)
6.能讲一下Activity的启动流程吗?
7.听你讲到了进程间通讯,PackageManagerService和ActivityManagerService进行通信的方式是什么?
8.Binder驱动底层原理了解吗?(mmap的内存地址映射)
9.Serializable和Parcable有什么区别?如何使用?
10.听你说到了sp(SharedPreference),你知道sp能跨进程通讯吗?
如何逆袭
1. 面试方面的一些经验
总共大概面试了八家,基本上每一家都到了终面,4 家给了 offer, 2 家因为薪资超预算没有录用,2 家挂掉。整个面试过程与我所预想的有比较大的差异。
因为疫情原因,今年面试流程比较长,除非现场面试,否则多数要一周多才能给到最终结果。
善用脉脉、看准网等网站了解公司内部情况,某些小公司槽点比较多。有些问题不便在面试中直接问,脉脉、看准网上有不少值得参考的评论,可以帮助大家避免不少坑。然而“尽信不如不信”,有些评价还是需要大家客观看待。
频繁换工作对求职的影响远超你的想象。 当你想要离职时,一定要想清楚是什么原因让你不得不离职。即使你想到无数的理由让你离职,请跳出自己的视角,站在一个 hr 的角度重新审视一遍你的离职理由,有些原因你自己觉得很有道理,但从 hr 的角度会有非常不同的理解。总结来说,对于离职原因的陈述既要坦诚又要客观、合理。
2 不与面试官交流
如果觉得编程题目有问题,最好是和面试官谈一下。即使不知道问题的答案,比起呆坐在那里,还不如诚实的承认自己的错误,还可以和面试官谈谈其他方面的话题,要与编程相关的话题,表明自己在这个领域个擅长。
3 代码凌乱
要注意代码规范。不管自己代码知识多么丰富,多么具有创造力,要记住面试官是在考察你的编程技巧。他为你定下任何结论的时候,都需要读懂你的代码,如果你的代码很凌乱,那么面试官根本都不想看。而且,规范代码有助于写出正确的程序。
4 不要死记代码
很多毕业生都会背一些常见的代码,但没有多少人知道这个代码真正做了什么,又是如何完成这程序任务的。死记程序语言不是面试的最佳途径,即使通过面试,在实际工作中,还是会遇到编程的其他问题。你还是会有被OUT的概率。面试其实就是考察了解这门编程语言的程度而已。
5 不谈自己的思路
面试官对你写编程的思路感兴趣,他们希望你能对不同问题给出不同的解决思路。比如,用C指针交换两数的程序,正确的思路才是最重要的,要提出自己的思路,如果错了,面试官会帮你改正,从而顺利的完成程序。
6 简历中有你不知道的技术
这是毕业生的忌讳。为了让简历入围,求职者会在简历上写出连自己都不懂的技术名称,从而吸引面试官的注意。这样会让你得到面试机会,但是面试的时候很容易会露馅。你真正的水平,很容易就会被面试官了解。
7 面试压力大
很多程序代码写不出来,不是因为不会,而是在写的时候脑袋迷迷糊糊,忘记了代码内容。这是面试紧张的结果。所以说在面试的头一天最好放轻松,保证精力充沛。面试的过程中最好也以轻松心态面对。
对于三年经验的Android开发,算法、基础知识、数据库已经不足以衡量候选人的能力。面试中大部分的时间是在讨论项目经验和对架构的理解。所以要好好整理和反思自己做过的项目(参考 STAR 原则),多看些技术博客。反复研究和提炼以往项目中的架构设计思路。
8. 没有在纸上写过代码
这是求职者最容易犯的大错之一,绝大多数的编程面试都会要求职者写出代码,而不是在电脑上打出来。在电脑上打出代码,会有文本编辑器帮你纠正代码错误,而面试的时候,就不会有人帮你纠正了。用惯电脑的求职者,在面试的时候经常会出错误,所以建议求职者,最好亲自写一下代码。
经验分享
(点赞后可免费获取)
我的学习笔记和每个阶段该学的知识都放在以下的学习思维脑图里了,因为是跨专业所以知识点很细,也算比较全,需要的可以自己保存下载,如果需要xmind版本的,自己添加学习知识点的,可以查看我的【GitHub】免费分享给你!(笔记是对应思维脑图的,每个知识点细节都有详细讲解,需要的同样查看我的GitHub我分享给你)
需要的可以 思维脑图和对应学习笔记的朋友,【点击获取】
Framework可能涉及到的知识点包括:
Android 系统架构、Zygote进程启动过程、SystemServer进程启动过程、Launcher启动过程、WindowManager体系、WindowManager体系、Binder、Handler等。 从每个话题可以多角度切入到不同的领域,全面了解候选人对进程通信机制、常用组件、插件化方案的理解程度。此外高级UI、第三方框架源码理解也是必备的知识技能等。
framwork 精编源码解析
- 精华Android 初级-高级学习进阶思维脑图(有几百个细分支,系统学习)
我整理了面试遇到的一些知识点,并画成了思维导图的形式。方便大家复习。
文末
我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
需要的小伙伴私信【学习】我免费分享给你,以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持,需要的自己领取)
直接点击链接也可以领取哦!
部分资料一览:
- 330页PDF Android学习核心笔记(内含8大板块)
-
Android学习的系统对应视频
-
Android进阶的系统对应学习资料
- Android BAT大厂面试题(有解析)