2019年,BAT大厂Android 高级面试题及答案

2024年Android面试题汇总(中高级) 那么为什么MVP模式中的P层中的view要用弱引用呢,我们可以这样么考虑,我们希望activity关闭的同时view也被回收,如果activity关闭,那么会进行GC,那么弱引用对象就会回收。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。答:单例模式,工厂模式,观察者模式,Builder模式,克隆模式,策略模式这几种个人认为是比较常见的,然后主要要区分工厂模式和策略模式的区别。漏的可视化,是我们开发中必备的工具之一。 阅读详情

2019年,BAT大厂Android 高级面试题及答案

1.如何对 Android 应用进行性能分析
android 性能主要之响应速度 和UI刷新速度。
可以参考博客:Android系统性能调优工具介绍
首先从函数的耗时来说,有一个工具TraceView 这是androidsdk自带的工作,用于测量函数耗时的。
UI布局的分析,可以有2块,一块就是Hierarchy Viewer 可以看到View的布局层次,以及每个View刷新加载的时间。
这样可以很快定位到那块layout & View 耗时最长。
还有就是通过自定义View来减少view的层次。

2.什么情况下会导致内存泄露
内存泄露是个折腾的问题。
什么时候会发生内存泄露?内存泄露的根本原因:长生命周期的对象持有短生命周期的对象。短周期对象就无法及时释放。
I. 静态集合类引起内存泄露
主要是hashmap,Vector等,如果是静态集合 这些集合没有及时setnull的话,就会一直持有这些对象。
II.remove 方法无法删除set集 Objects.hash(firstName, lastName);
经过测试,hashcode修改后,就没有办法remove了。
III. observer 我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。
广播没有unregisterrecevier
IV.各种数据链接没有关闭,数据库contentprovider,io,sokect等。cursor
V.内部类:
java中的内部类(匿名内部类),会持有宿主类的强引用this。
所以如果是new Thread这种,后台线程的操作,当线程没有执行结束时,activity不会被回收。
Context的引用,当TextView 等等都会持有上下文的引用。如果有static drawable,就会导致该内存无法释放。
VI.单例
单例 是一个全局的静态对象,当持有某个复制的类A是,A无法被释放,内存leak。

3.如何避免 OOM 异常
首先OOM是什么?
当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后
这就会抛出 OutOfMemoryException 也就是OOM
Android的OOM怎么样?
为了减少单个APP对整个系统的影响,android为每个app设置了一个内存上限。
image.png

HTC M7实测,192M上限。512M 一般情况下,192M就是上限,但是由于某些特殊情况,android允许使用一个更大的RAM。
如何避免OOM
减少内存对象的占用
I.ArrayMap/SparseArray代替hashmap
II.避免在android里面使用Enum
III.减少bitmap的内存占用

inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。
decode format:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异。

IV.减少资源图片的大小,过大的图片可以考虑分段加载
内存对象的重复利用
大多数对象的复用,都是利用对象池的技术。
I.listview/gridview/recycleview contentview的复用
II.inBitmap 属性对于内存对象的复用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8
这个方法在某些条件下非常有用,比如要加载上千张图片的时候。
III.避免在ondraw方法里面 new对象
IV.StringBuilder 代替+

4.Android 中如何捕获未捕获的异常
CrashHandler
关键是实现Thread.UncaughtExceptionHandler
然后是在application的oncreate里面注册。

5.ANR 是什么?怎样避免和解决 ANR(重要)
ANR->Application Not Responding
也就是在规定的时间内,没有响应。
三种类型:
1). KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应
2). BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
3). ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成
为什么会超时:事件没有机会处理 & 事件处理超时
怎么避免ANR
ANR的关键
是处理超时,所以应该避免在UI线程,BroadcastReceiver 还有service主线程中,处理复杂的逻辑和计算
而交给work thread操作。
1)避免在activity里面做耗时操作,oncreate & onresume
2)避免在onReceiver里面做过多操作
3)避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。
4)尽量使用handler来处理UI thread & workthread的交互。
如何解决ANR
首先定位ANR发生的log:

从log可以看出,cpu在做大量的io操作。
所以可以查看io操作的地方。
当然,也有可能cpu占用不高,那就是 主线程被block住了。

6.Android 线程间通信有哪几种方式
1)共享变量(内存)
2)管道
3)handle机制
runOnUiThread(Runnable)
view.post(Runnable)

7.Devik 进程,linux 进程,线程的区别
Dalvik进程。
每一个android app都会独立占用一个dvm虚拟机,运行在linux系统中。
所以dalvik进程和linux进程是可以理解为一个概念。

8.描述一下 android 的系统架构
从小到上就是:
linux kernel,lib dalvik vm ,application framework, app

9.android 应用对内存是如何限制的?我们应该如何合理使用内存?
activitymanager.getMemoryClass() 获取内存限制。
关于合理使用内存,其实就是避免OOM & 内存泄露中已经说明。
回到顶部

10. 简述 android 应用程序结构是哪些
1)main code

unit test

3)mianifest
4)res->drawable,drawable-xxhdpi,layout,value,mipmap
mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术.
google建议只把启动图片放入。
5)lib
6)color

11.请解释下 Android 程序运行时权限与文件系统权限的区别
文件的系统权限是由linux系统规定的,只读,读写等。
运行时权限,是对于某个系统上的app的访问权限,允许,拒绝,询问。该功能可以防止非法的程序访问敏感的信息。

12.Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么
Framework是android 系统对 linux kernel,lib库等封装,提供WMS,AMS,bind机制,handler-message机制等方式,供app使用。
简单来说framework就是提供app生存的环境。
1)Activity在attch方法的时候,会创建一个phonewindow(window的子类)
2)onCreate中的setContentView方法,会创建DecorView
3)DecorView 的addview方法,会把layout中的布局加载进来。

13.多线程间通信和多进程之间通信有什么不同,分别怎么实现
线程间的通信可以参考第6点。
进程间的通信:bind机制(IPC->AIDL),linux级共享内存,boradcast,
Activity 之间,activity & serview之间的通信,无论他们是否在一个进程内。
回到顶部

14.Android 屏幕适配
屏幕适配的方式:xxxdpi, wrap_content,match_parent. 获取屏幕大小,做处理。
dp来适配屏幕,sp来确定字体大小
drawable-xxdpi, values-1280*1920等 这些就是资源的适配。
wrap_content,match_parent, 这些是view的自适应
weight,这是权重的适配。

15.什么是 AIDL 以及如何使用
Android Interface Definition Language
AIDL是使用bind机制来工作。
参数:
java原生参数
String
parcelable
list & map 元素 需要支持AIDL

16.Handler 机制
参考:android 进程/线程管理(一)----消息机制的框架 这个系类。

17.事件分发机制
android 事件分发机制

18.子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么
EventBus,广播,view.post, runinUiThread
但是无论各种花样,本质上就2种:handler机制 + 广播
回到顶部

19.子线程中能不能 new handler?为什么
必须可以。子线程 可以new 一个mainHandler,然后发送消息到UI Thread。
回到顶部

20.Android 中的动画有哪几类,它们的特点和区别是什么
视图动画,或者说补间动画。只是视觉上的一个效果,实际view属性没有变化,性能好,但是支持方式少。
属性动画,通过变化属性来达到动画的效果,性能略差,支持点击等事件。android 3.0
帧动画,通过drawable一帧帧画出来。
Gif动画,原理同上,canvas画出来。
具体可参考:https://i.cnblogs.com/posts?categoryid=672052

欢迎工作一到五年的Android工程师朋友们加入Android进阶群:4112676
群内提供免费的Android进阶学习资料(里面有NDK、架构、性能优化、高级以及面试知识等多个知识点的资料)


2024Android-高级面试题及答案(Google收录,值得推荐!) AIDL是使用bind机制来工作。参数:java原生参数Stringparcelablelist & map 元素 需要支持AIDL回到顶部。 阅读详情

相关推荐

2024Android-高级面试题总结(附答案解析),android面试40题

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

m0_74931167的博客 1069

Android高级面试题大全(持续更新中)

1. ThreadLocal的理解 可以保证线程的安全。在多个线程共享相同的数据的时候,会为每个线程创建单独的副本,在单独的副本上进行数据的操作,不会对其它线程的数据产生影响,保证了线程安全。 2. HashMap HashSet HashTable的区别? 都是集合,底层都是Hash算法实现的。HashMap是Hashtable的替代品,这两个都是双列集合,而HashSet是单...

mythmayor的博客 3万+

Western blot (WB) 灰度分析进阶指南:ImageJ 高效定量技巧与实战优化

本文详细介绍了使用ImageJ进行Western blot灰度分析的进阶技巧,包括批量处理、背景校正和疑难条带处理等实战优化方法。通过自动化宏脚本和动态背景校正,显著提升分析效率和准确性,特别适合科研人员处理复杂WB数据。

weixin_42557830的博客 899

2023年Android中高级最全面试题(含大厂原题+解析)

又到了一年一度的金三银四黄金跳槽时节,也是互联网大厂疯狂招人的时期,现在应该有很多Android程序员已经按耐不住了。但是现在网上的面试题资料太多了,而且有些面试题已经过时甚至是漏洞百出。今天结合自己前段时间的面试经历和几位大厂大佬交流讨论总结出这份2023年Android中高级最全面试题来帮助大家轻松搞定offer。话不多说,直接上干货!!!希望这份面试题,能帮助大家把握住机会,找到自己心仪的工作!!

star_nwe的博客 4827

ALSA音频开发实战:如何用snd_pcm_avail避免缓冲区溢出(附完整代码)

本文深入探讨了在ALSA音频开发中,如何利用`snd_pcm_avail`函数有效管理环形缓冲区,从而避免音频数据溢出或下溢。通过实战代码示例,详细解析了该函数在播放场景下的核心作用,即实时查询可写入的帧数,并构建了自适应写入循环以实现稳健的流量控制,确保音频流的平滑与稳定。

weixin_29183637的博客 461

在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

整个文章分为以下几个内容,打 * 的是必须要安装的。

u011895157的博客 2万+

Android 面试题记录

1、2019预备BAT大厂Android研发岗秋招必问30+道高级面试题(附详细答案解析) 2、2018年Android面试题含答案–适合中高级

Alex_Melody的博客 482

从ET到PT阶段:一文详解汽车零部件DV与PV测试的完整流程(含常见问题解析)

本文深入解析汽车零部件开发中的DV(设计验证)与PV(性能验证)测试全流程,涵盖从ET到PT阶段的关键技术要点与常见问题解决方案。针对车载开发工程师,提供实战指南与优化策略,帮助提升零部件质量与生产效率,确保符合行业标准与市场需求。

weixin_29273849的博客 782

Android开发真等于废人?面试必问

前言 金三银四,又是一年校招季。 经历过,才深知不易。最近,和作为校招面试官的同事聊了聊,问他们是如何去考察一个学生的,我简单归为以下几点: 聪明、反应快,这点自不必说,聪明意味着学习能力、适应力强,能够快速胜任工作。 算法不错,代码基本功好,这点其实考察的是算法能力和代码是否写得优雅。 基础过硬,技术岗面试最核心的还是考察「技术储备」,包括了语言基本功,操作系统、网络、体系结构、系统设计。 语言组织和表达能力,这点很重要,很多同学懂得某个知识点,却很难用简洁准确的语言表述出来。 想必有很多同学在刷题.

m0_56146626的博客 249

Linux蓝牙开发实战:5分钟搞懂BlueZ与D-Bus通信原理(附D-Feet调试技巧)

本文深入解析Linux下BlueZ蓝牙协议栈与D-Bus通信的核心机制,提供实战开发指南。通过D-Bus对象模型、信号订阅等关键技术点的详细讲解,配合D-Feet工具的高效调试技巧,帮助开发者快速掌握蓝牙设备管理与性能优化方法,提升物联网开发效率。

3a9bq4r8t2y的博客 327

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

18—19年BAT大厂Android高级多套面试专题整理集合(面试资料专题包分享)

#面试经验分享(面试的一些基本问题及如何准备面试)##面试题答案整理及面试相关视频整理分享这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套,在这里给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,也可以加一下这个技术群。

2401_84121958的博客 897

3.详解Labview串口通讯--从串口线连接到串口通讯保姆级教程

本文非常详细的介绍了使用Labview实现串口通讯,读完题主这篇文章,即使你是今天刚下载的Labview,也能熟练的连接并驱动串口执行,接下来和我一起学习下,记得关注并点赞不迷路

关注我,更多技术问题欢迎私聊~ 1万+

18—19年BAT大厂Android高级多套面试专题整理集合,android混合开发面试

这里我不仅给大家整理了多套BAT面试题,还有小编一路收集到的面试方面的资料包及面试相关视频资料,这些在文末有提供免费领取方式的,其中包括初级,中级,高级不同水平以及不同专题所涉及到的常问范围,及面试专题和答案和系统学习视频资料,免费分享给大家,省去网上到处搜索资料的麻烦。 希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统! ##2018年收集的面试专题整理 四年Android面试遇到的问题整理 四年来Android面试

m0_64314432的博客 851

R语言中的混淆矩阵(Confusion Matrix)是一种常用的评估多分类模型性能的工具

除了准确率,混淆矩阵还提供了其他有用的指标,如灵敏度(Sensitivity)、特异度(Specificity)、精确度(Precision)和召回率(Recall)。混淆矩阵通过比较模型预测结果与实际标签的一致性,帮助我们了解模型的分类准确性和错误类型。此外,混淆矩阵还提供了各种错误类型的统计信息,如假阳性(False Positive)和假阴性(False Negative)等。通过混淆矩阵,我们可以了解模型的整体性能和错误类型,从而对模型进行评估和改进。最后,为了更好地理解混淆矩阵的结果,可以使用。

HackSquad的博客 972

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

2020年Android面试题(BAT最新面试题)包含详细答案

2020年Android面试题汇总,面试必看,轻松拿BAT大厂Offer。完全免费。 微信关注公众号: 付晓龙,回复2020,即可查看最新面试题。

bobby_fu的博客 4445

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 2019之BAT等大厂必问技术面试题

持续更新中,并完善答案------ 最近博主身边的安卓朋友换个坑,接到BAT等大厂面试邀请,回来聊天,博主记录下各大厂必问的部分有用面试题.希望对你学习,工作,面试有所帮助.(博主会持续收集更新这些面试题),博主会对分享和投稿的面试题做一些过滤,在此再次感谢分享面试题各位朋友和读者 文章目录 Android 2019之BAT等大厂必问技术面试题 常规电话面试 具体面试 设计模式部分 201...

whale_kyle的博客 379

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

18—19年BAT大厂Android高级多套面试专题整理集合(面试资料专题包分享

##2018年收集的面试专题整理 四年Android面试遇到的问题整理 四年来Android面试大纲 {Android}参加阿里完面试后:一到HR四面,我的复盘经验总结! Android大厂面试专题,元旦福利领取~(含答案及详情资料链接) ##2019年收集的面试专题整理 年后想跳槽涨薪?你想要的面试题全在这里 互联网寒冬下,一个 Android 程序员的面试心得 金三银四的面试黄金季节,Android面试题来了! 2019大厂Android面试经验(含爱奇艺,小米,腾讯,阿里) 熬过了互联网“寒冬.

m0_66144765的博客 206

2024年Android-Gradle-自动化多渠道打包,高级安卓工程师面试题

我的面试经验分享可能不会去罗列太多的具体题目,因为我依然认为面试经验中最宝贵的不是那一个个具体的题目或者具体的答案,而是结束面试时,那一刻你的感受以及多天之后你的回味~很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含。

2401_84520182的博客 1006

18—19年BAT大厂Android高级多套面试专题整理集合(面试资料专题包分享)(1)

#面试经验分享(面试的一些基本问题及如何准备面试)##面试题答案整理及面试相关视频整理分享这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套,在这里给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,也可以加一下这个技术群。

2401_84408437的博客 729

hongyangWeixinArticles中的面试宝典:BAT大厂Android面试题全解析

想要进入BAT(百度、阿里、腾讯)这样的一线互联网大厂吗?hongyangWeixinArticles项目为你提供了完整的Android面试宝典!这个开源项目汇集了鸿洋公众号推送的所有技术文章,其中包含了大量珍贵的Android面试资源和BAT大厂面试题解析。无论你是Android新手还是有一定经验的开发者,这里都能找到提升面试竞争力的宝贵资料。😊 ## 🔥 为什么选择hongyangWei

gitblog_01136的博客 823

Android2018-2019之BAT等大厂必问技术面试题

Android2018-2019之BAT等大厂必问技术面试题 最近博主身边的安卓朋友换个坑,接到BAT等大厂面试邀请,回来聊天,博主记录下各大厂必问的面试题.希望对你学习,工作,面试有所帮助.(博主会持续收集更新这些面试题) 线程池原理 图片加载框架原理 Http 协议原理 Okhttp 原理 设计模式讲一讲 各种内存优化 垃圾回收机制原理 谈谈对同步请求和异步请求的理解 怎么保证同步和异步...

KX興博客 5898
下一篇: Android 原生绘制
动脑学院[David]
博客等级 码龄8年 44粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值