2020年Android高级面试题总结(附答案解析)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 前言回顾一下自己这段时间的经历,三月份的时候,疫情原因公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到五月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。一般Android面试分为两部分:Java部分和Android部分,下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。

前言

回顾一下自己这段时间的经历,三月份的时候,疫情原因公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到五月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。


一般Android面试分为两部分:Java部分和Android部分,下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。

一 Java相关

1.重载函数的签名(区别是否是重载函数)

2.finalize的工作原理


答:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。此外系统进行垃圾回收时并不保证一定会调用它,所以可以说它和对象被回收没有必然关系。


3.一个对象的创建过程


答:例如有一个Dog类:


1.即使没有static,构造器其实也是静态方法,所以当首次创建Dog时或者Dog的静态域或者静态方法被访问的时候,Dog的class对象会被加载。


2.在加载Dog的class的时候可能会发现其有基类,此时先暂停Dog的加载,转而去加载其基类。所以基类的static域比子类先初始化。


3.载入class文件之后,会创建一个该该类的class对象,所有关于静态初始化的动作会被执行,所以静态初始化只在Class对象首次加载时进行一次。


4.当使用new的时候,首先为Dog对象在堆上分配足够内存空间。这块内存控件会被清零,所有实例都被初始化成了默认值,包括基类。


5.执行所有字段定义处的初始化,从基类开始。


6.执行构造器。(在第一行会执行基类的构造器)


4.对象的销毁是按照创建的逆序来进行的。


5.final的方法和类都不允许覆盖和继承。private默认实现了final。


6.简述内部类的特点


7.形式参数可被视为local variable,也就是说形式参数相当于在方法中定义了一个局部变量a,当传入c时,只是将c指向的对象给a


8.finally 语句块是在 try 或者 catch 中的 return 语句之前执行的


9.简述jvm中默认的classLoader与功能


10.switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持


11.重写的特性


12.!=和==,当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同,比较内存地址


13.null可以被强制类型转换成任意类型的对象,于是通过它来执行静态方法


14.如何终止一个线程


15.静态属性和静态方法是否可以被继承


16.列出各种List,Set,Map,Queue并说出他们的同与不同。


17.列出几种线程池


18.解释一下java内存模型


19.解释一下java代码的原子性


20.解释一下volatile字段


21.解释一下synchronized字段


22.Lock的使用


23.wait()和sleep()区别


24.死锁产生的条件


...


篇幅原因,参考答案均整理到下面这份PDF文档里,需要的朋友关注后点击我的GitHub,前往免费领取!



Java相关

二 Android相关

Android部分我就不分几大块了。直接列举,但是列举到的每一项都是面试经常会问到并且会延伸问的,所以需要深入的去研究。


1.Android事件分发机制,请详细说下整个流程


2.Android view绘制机制和加载过程,请详细说下整个流程


3.Activty的加载过程 请详细介绍下


4.Activity的启动模式:


5.Activity缓存方法:


6.Service的生命周期,两种启动方法,有什么区别:


7.怎么保证service不被杀死8.广播的两种注册方法,有什么区别。


9.Intent可以传递哪些数据类型10.Json有什么优劣势


11.动画有哪几类,各有什么特点:


12.Handler、Loop消息队列模型,各部分的作用。


13. 怎样退出终止App:自己设置一个Activity的栈,然后一个个finish()。


14. Android IPC:Binder原理


15.android的优化


16.一个singleton如何实现线程的同步问题


17.android重要术语解释


18.理解Window和WindowManager


19.Bitmap的处理:


20.综合技术:


21.如何实现一个网络框架(参考Volley)


22.ClassLoader的基础知识:


23.插件化框架描述:dynamicLoadApk为例子


24.热修复:Andfix为例子


..


篇幅原因,参考答案均整理到下面这份PDF文档里,需要的朋友点击我的GitHub,前往免费领取!

Android相关

三 Android相关总结

上面的列的相关内容,看似很短一句话,但是每一项都需要你深入的去研究,要了解原理,最好去看一下源码实现。当然还有一些是我没写到的,可能是我写的时候没有想起来,并不代表他们不重要,你也需要重视,再来一波推荐:《Android开发艺术探索》强烈推荐,建议细细的读,如果粗心大意建议读两到三遍,针对性的读。《Android进阶之光》《高级Android开发强化实战》《Android组件化架构》《Android热修复技术原理》《Android插件化开发指南》

五 面试心得

1.准备要充分,知识面要尽量的广,同时深度也要够。2.面试安排上,如果不着急,尽量给自己留多时间,两天一家,及时做总结和补充。3.心态要放平,当做一次技术交流,面试要看一部分的运气,也要看一些眼缘,有的面试官一张嘴你就能感觉到你这次面试完了。想去的公司没有面试好,不要气馁,继续加油准备。4.简历投递方面,拉勾上投了很多经常不匹配,可能是我学历问题(自考本),有一些打击自信心,如果有同样感受的,不妨换BOSS或者其他平台。避免打击自信心。5.写简历一定要体现自己的优势,最好能体现类似于,用到了什么技术,解决了什么问题。简历上写到的一定要胸有成竹。6.类似于你的优势是什么,你觉得你项目中做的比较好的地方有哪些,你能给公司带来什么,这种问题心里要先想一些,免得临场发挥容易紧张说不好。7.我所经历的面试,一般技术面最少是两轮。如果一轮后让你走了,而你还自我感觉良好,那我觉得你有必要回顾一下面试内容,并一条一条找找该问题的相关内容,大部分问题就在于你没有答到点子上,可能是深度不够,也可能是扩展不够。继续加油。

简历模板

六 闲聊

现在外面面试问的的确比较多,要求也挺高的,行情不好,薪资也不好要,所以心态一定要放好,找好自己的定位,心态一定要好。


面试之后要尽量做到总结,从我最开始没什么准备就出去面试,被打击一通之后,总结了七八家面试题,会发现面试问到的都是那些知识点,可能角度不一样,但是你只要深度够,他怎么问,你基于原理来回答,基本上都没差,从签了赔偿协议以后出来面试,连续四家公司都走到了HR面,可以说面试的感觉上来了。前面的总结积累终究没有白费。


在写这篇文章之前,我专门看了下我之前收藏的别的公号上发的面试题,很全,我都有点不想写这篇文章了。但是想了下我这几个月听到要裁员开始面试,到第一批没被裁,第二批裁员迟迟不来。到第二批来的时候主动申请被裁。中间面试被打击,失落,看到新闻那那都在裁员,到现在面试整体感觉还不错。还是想分享一下自己的心里路程,想告诉大家,裁员别慌,做自己该做的,其他自己决定不了的,先放一放,心里列一个123,一条一条来。


可以看到我在上面推荐了很多书籍,而且JAVA部分时分块来了。是因为当我看到很多面试题,针对题来的时候,题会很多,而且有时候你会觉得你的题都会了,但是面试的时候还是面不好,说明你的知识并不扎实。或者你知识会了这个题,并没有融会贯通,所以在JAVA部分我分大块来描述,而且针对每一块,我都有推荐一本相关的书,你可能不需要都看,可以针对性的看。而Android部分是详细的知识点,这些知识点我希望的是,能够深入研究。而推荐的书籍,书中的部分都有一些相关的知识点,大家也可以选择性的看,当然论坛,博客都是知识的来源,大家做好知识点深度和广度的基类就行了。


最后,虽然裁员的很多,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。


被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!


我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。


主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你有需要,尽管拿走好了。


点击我的GitHub,前往免费领取!


如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!


群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。


35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。


相关文章
|
23天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
62 2
|
1月前
|
存储 NoSQL MongoDB
MongoDB面试专题33道解析
大家好,我是 V 哥。今天为大家整理了 MongoDB 面试题,涵盖 NoSQL 数据库基础、MongoDB 的核心概念、集群与分片、备份恢复、性能优化等内容。这些题目和解答不仅适合面试准备,也是日常工作中深入理解 MongoDB 的宝贵资料。希望对大家有所帮助!
|
1月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
65 1
|
2月前
|
开发工具 Android开发 iOS开发
深入解析安卓与iOS开发环境的优劣
【10月更文挑战第4天】 本文将深入探讨安卓和iOS两大主流移动操作系统的开发环境,从技术架构、开发工具、用户体验等方面进行详细比较。通过分析各自的优势和不足,帮助开发者更好地理解这两个平台的异同,从而为项目选择最合适的开发平台提供参考。
27 3
|
1月前
|
安全 5G Android开发
安卓与iOS的较量:技术深度解析
【10月更文挑战第24天】 在移动操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两个系统的技术特点、优势和不足,以及它们在未来可能的发展方向。我们将通过对比分析,帮助读者更好地理解这两个系统的本质和内涵,从而引发对移动操作系统未来发展的深思。
50 0
|
2月前
|
安全 Android开发 iOS开发
深入解析:安卓与iOS的系统架构及其对应用开发的影响
本文旨在探讨安卓与iOS两大主流操作系统的架构差异,并分析这些差异如何影响应用开发的策略和实践。通过对比两者的设计哲学、安全机制、开发环境及性能优化等方面,本文揭示了各自的特点和优势,为开发者在选择平台和制定开发计划时提供参考依据。
62 4
|
2月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
49 6
|
2月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
319 0
|
存储 缓存 Java
Android--面试中遇到的问题总结(一)
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/56479430 一、handl...
1334 0
|
Android开发 容器 缓存
Android--面试中遇到的问题总结(二)
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/56480392 一、开发中都...
1251 0

推荐镜像

更多