Android 面试心得(面试题+答案)

史上最全的2022年最新版Android安卓面试题集锦(含答案+源码) 金三银四,又到了一年一度的黄金跳槽季,想必也许有不少Android程序员开始摩拳擦掌,蠢蠢欲动了。而网络上的面试题大部分已经过时甚至是错误成堆,漏洞百出,今天结合自己这段时间的面试经验和几个Android技术群里面大厂大牛的交流总结出了这篇2022年最新的Android面试题合集。 阅读详情

分享面试心得和一些些吐槽

任何行业发展过程中难免面临“内卷”化问题,呈现出企业招人才难,人才找工作难现象。

1、各种手机适配问题

xml进行手机匹配
刘海屏适配
implementation 'com.android.support:percent:28.+'

2、界面优化

布局重用,少嵌套,减少布局层级,避免过度绘制,去掉无用的背景,资源;

3、自定义view

自定义View和自定义ViewGroup的区别在于

自定义View主要是实现onMeasure + onDraw(注重绘制-/drɔː/)
自定义ViewGroup主要是实现onMeasure + onLayout(注重布局-/ˈleɪaʊt/
)

4、进程和线程区别+如何保证安全

进程是程序资源管理器最小单元,线程是程序执行的最小单元,
进程包括多个线程组成,同一个进程中的多个线程享受相同的资源。

5、内存泄漏、溢出、抖动

内存泄露:程序在向系统申请分配内存空间后(new),在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。

内存溢出:程序向系统申请的内存空间超出了系统能给的。比如内存只能分配一个int类型,我却要塞给他一个long类型,系统就出现oom。

大量的内存泄露会导致内存溢出(oom)。
容易产生内存泄漏的情况
Activity的Context、 static Activity activity; static view;
Inner Classes(内部类---内部类持有外部类实例的强引用)
Handler(/ˈhændlə(r)/)、Threads(/θredz/)

6、混合开发,Android调用前端问题

7、组件化、模块化开发

8、Android 更新UI有哪几种方法

1. 直接在主线程更新(仅限 UI 线程)
2. 使用 Handler 切换回主线程
3. 使用组件内置的 runOnUiThread()
4. 使用 View.post()
适用场景:在某个 UI 组件上执行操作,确保其 UI 任务运行在主线程。
textView.post(() -> textView.setText("View.post 更新 UI"));
📌 原理:View.post() 会把任务提交到 View 关联的 UI 线程。
5、ViewModel 监听数据变化时自动更新 UI
6、Kotlin 协程 + Dispatchers.Main 实现 UI 更新。

9、MVC、MVP、MVVM、MVI

MVC:数据和视图分离
MVP:P持有view接口
MVVP:Model、view、ViewModel
它将用户界面(View)与数据和逻辑(ViewModel)分开,并允许两个组件之间进行数据绑定。ViewModel 负责为 View 准备数据并处理用户输入。
MVI:单向数据流,唯一可信数据源
模型(Model-/ˈmɑːdl/):负责管理应用的状态数据,并对外部事件做出响应。
视图(View):负责显示界面,并将用户的操作转化为意图(Intent)。
意图(Intent):代表用户的行为,如点击按钮、输入文本等,它们被发送到模型层以改变应用的状态。

10、ListView和RecycleView的区别是什么,优缺点是什么

ListView 和 RecyclerView 都用于显示长列表数据,但 RecyclerView 是 ListView 的增强版本,提供更高效的性能和更丰富的功能。
ListView	适用于较简单的列表,性能需求不高,功能较少的情况下可以使用
RecyclerView	适用于大数据量列表、复杂布局、多种 item 类型,支持更灵活的定制
布局:
ListView:只能垂直滚动列表,不支持网格或瀑布流布局。
RecyclerView:使用 LayoutManager 管理布局,可以支持:
点击事件
ListView:提供 setOnItemClickListener() 直接监听 item 点击事件。
RecyclerView:没有内置的点击监听器,必须在 Adapter 里手动实现 setOnClickListener()。
数据更新
ListView:数据变化后,通常使用 notifyDataSetChanged(),但无法局部刷新,性能较低。
RecyclerView:提供更细粒度的刷新方法,如:
notifyItemInserted(position)(插入某个 item)
notifyItemRemoved(position)(删除某个 item)
notifyItemChanged(position)(更新某个 item)
notifyItemMoved(fromPosition, toPosition)(移动 item)
动画支持
ListView:没有内置动画,动画效果需要手动实现。
RecyclerView:支持 ItemAnimator,可以轻松实现添加、删除、移动动画。

11、Java设计模式有哪些

1、单例模式;2、工厂模式;3、建造(Builder)模式;4、观察者模式;
5、适配器(Adapter)模式;6、代理模式;7、装饰模式。 

12、Activity启动模式

标准模式、栈顶模式、栈内模式,唯一模式

13、网络相关

五层通信 :应用层、网络层、ip层、传输层、物理层
TCP:对数据进行排序发送,速度慢,不易丢包,超时支持重新发送
UDP:速度快,容易丢包
HTTP:三次握手,四次挥手,一问一答
HTTPS:加密数据
Socket:即套接字,是一个对 TCP / IP协议进行封装的编程调用接口(API)。双全工通信,可相互发信息。
Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
WebSocket:

14、进/线程间的通信

通信方式:
进程间通信(IPC):由于不同进程的内存独立,进程间通信需要使用 Binder、AIDL、Messenger、ContentProvider 或者广播(Broadcast)等机制。
线程间通信:同一进程内的线程可以直接共享数据,但需要同步机制(如 synchronized、Handler、ExecutorService)防止数据竞争。

15、ANR

ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定
的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。
一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。

 那么哪些场景会造成ANR呢?
Service Timeout:前台服务在20s内未执行完成;
BroadcastQueue Timeout:前台广播在10s内未执行完成
ContentProvider Timeout:内容提供者在publish过超时10s;
InputDispatching Timeout:输入事件分发超时5s,包括按键和触摸事件。

16、Android 事件分发机制

dispatchTouchEvent() 负责事件分发。
onInterceptTouchEvent() 负责拦截子 View 事件(仅 ViewGroup)。
onTouchEvent() 负责事件处理。
事件传递是 自顶向下(Activity → ViewGroup → View。),处理是 自底向上。
true 表示消费事件,false 表示事件继续传递。

17、应用优化

2024年Android最全android popwindow仿微信右上角弹出框,dialog底部显示,2024年最新华为面试题答案123 其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。 阅读详情

相关推荐

71道经典Android面试题和答案

------71道经典Android面试题和答案助你轻松拿下offer------

史上最全的Android面试题集锦

每个 Activity 都包含一个 Window 对象,Window 对象通常是由 PhoneWindow 实现的。PhoneWindow:将 DecorView 设置为整个应用窗口的根 View,是 Window 的实现类。它是 Android 中的最基本的窗口系统,每个 Activity 均会创建一个 PhoneWindow 对象,是 Activity 和整个 View 系统交互的接口。

贵公子丶笔记 8527

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 244

android面试题及答案详解

所谓的整理就是避免之前标记清除时的内存碎片的问题,他就会在清除的过程中,会把可用的对象向前给他移动,这样的话让内存更为紧凑,这就是整理的过程。View作为界面的基本构建块,代表屏幕上的可视元素;getFragmentManager():所得到的是所在fragment 的父容器的管理器, getChildFragmentManager():所得到的是在fragment 里面子容器的管理器, 如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager();

black_night_gone的博客 8340

半桥LLC谐振变换器及同步整流MATLAB仿真(一)

LLC工作原理详细解析,工作过程详细拆解

qq_55203246的博客 3万+

RT-DETR改进策略【RT-DETR和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image DehazingLE

Limiiiing的博客 916

Android面试心得必备技能储备详解,已拿到offer,2024安卓开发面试题及答案

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有高级架构技术进阶脑图、Android开发面试专题资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

2401_84149530的博客 803

get_ccopt系列命令介绍

get_ccopt_property:用来获取cts阶段,clock tree上所有的参数信息,可以通过get_ccopt_property –help *获取所有参数。get_ccopt_skew_group_delay:用来获取skew group的相关信息,可以通过筛选出特定条件下skew_group的参数,如skew_group下latency最长是多少;get_ccopt_clock_tree_source_groups:获取clock tree的source group名字;

芯冰乐 280

一个Android程序员的面试心得,app开发面试题及答案

希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer!如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。

2301_79655576的博客 423

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 945

Unreal5从入门到精通 专栏目录

欢迎来到“UE5从入门到精通”专栏!在这里,我们将带您踏上一段精彩的旅程,深入探索虚幻引擎5(Unreal Engine 5)的无限可能。不论您是游戏开发的新手,还是希望提升技能的开发者,这里都有适合您的内容。基础知识:了解虚幻引擎5的界面、功能和基本操作,为您的学习打下坚实的基础。项目实战:通过实际项目案例,帮助您从理论走向实践,真实体验游戏开发的每个环节。高级技巧:分享各种高级功能和技巧,包括蓝图、C++编程、材质编辑、光照和渲染等,让您能够创作出更具专业水准的作品。

TxNet 2987

揭秘!2021年Android面试心得,附面试题答案

开头 在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。 我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的G点。 可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个和计算机打交道的工作,其实不然。

左夜天 169

【AUTOSAR-Nm】-2.2-通过CAN/Lin...信号报告Nm状态机的跳转

如何通过Can/Lin/Fr/Udp/J1939信号,获取每个通道对应状态机的跳转信息:“前一次状态”和“当前状态”。

「汽车电子助手」的博客 2463

一个Android程序员的腾讯面试心得,,阿里巴巴Android面试题答案

算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。部分资料展示:有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。

2401_83641533的博客 777

从生产订单到整车交付,SAP 离散制造在汽车行业里的真实落点

汽车行业谈数字化,很容易一上来就谈智能工厂、数字孪生、AI 排产、无人仓、视觉质检。可落到 SAP 项目现场,真正把工厂撑起来的,往往还是几个很朴素的问题,客户订单来了以后,BOM 能不能准确展开,物料能不能准时到线,产能有没有被过度承诺,生产订单能不能被车间正确执行,质量问题能不能追溯,成本能不能按工单和批次沉淀下来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 113

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

安卓工程师面试题及答案,记得把每一次面试当做经验积累,社招面试心得

一、引言 现在已经是十月份的月末了,金九银十,这个找工作和面试的热潮已经渐渐退隐。 潮涨潮退,有的人从里面收获了心仪的offer;有的人走了一趟,一无所获,或者收获寥寥,无甚满意;还有的人在观望,等待下一个良机。 这里分析一波现在的面试行情,带大家了解一下自己所处的位置,另外,分享一下有用的资料,帮助大家提升自己的战斗力。 【阿里P7级全套高级学习资料】五大专题: 1.高级UI,自定义View** UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了

102

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2024年阿里Android面试题及答案,一个Android程序员的阿里面试心得

自我介绍一下,小编13年北京科技大学毕业,曾经在字节跳动待过,也去过vivo、小米等大厂,18年进入华为一直到现在。小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担,能在岗位上再创辉煌,步步高升!!。

2401_84899202的博客 423

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android面试内容整理(持续收录中)

Android面试题集含答案 最接地气的Android面试总结心得 我所经历的Android面试|掘金技术征文 关于面试中App应用安全及安防措施的相关问题

移动开发Android 478

接地气的面试记录:记一次Android面试心得,软件开发项目经理面试题及答案

总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

2401_84104460的博客 626

Android面试心得必备技能储备详解,已拿到offer(1),android面试题2024答案

4.SingleInstance:这个是SingleTask加强本,系统会为要启动的Activity单独开一个栈,这个栈里只有它,适用新开Activity和app能独立开的,如系统闹钟,微信的视频聊天界面不知道是不是,知道的同学告诉我下,在此谢过!2.SingleTop:栈顶复用,如果处于栈顶,则生命周期不走onCreate()和onStart(),会调用onNewIntent(),适合推送消息详情页,比如新闻推送详情Activity;看下invalidate方法,有带4个参数的,和不带参数有什么区别;

2401_84003839的博客 346

GitHub标星7-8K,各级别Android岗最优质面试题集

但是只是更新readme,核心四个part更新时间两年前。

2501_90245260的博客 933

Android2017-2018最新面试题(3-5年经验个人面试经历)

大家好,在跟大家讲述自己的面试经历,以及遇到的面试题前,先说说几句题外话。 接触Android已经3年,在工作中遇到疑难问题总是在网上(csdn大牛博客,stackoverflow等)搜索答案,各位大牛大神总是把自己的经验分享出来,帮助我们这些需要帮助的人,由此表示衷心感谢!然而现在自己细想了一下,自己也是时候把遇到的问题并把解决方案分享出来,希望能帮助到有需要的人。 随着时间的流逝,很多人说互联...

weixin_34146986的博客 126

2020年web和android哪个好,2020年Android面试题大汇总【珍藏】_WEB前端开发

现如今挪动互联网发展迅速,Android开发范畴的就业岗亭需求也是越大,那末关于安卓开发者来讲,时机有了,气力必定不可或缺,本文汇总了最新Android口试题、包含android低级口试题、android中高等口试题,搞定这些,让你事半功倍! ki4网在这里给人人汇总了最热门最全面的Android口试题,快着手做做看吧!Android口试题:1、《分享Android口试心得【精选】》2、《Andr...

weixin_39835321的博客 123
上一篇: 如何给Android studio内嵌的JDK11配置环境变量
下一篇: 2022版:Gitee在Android studio上的使用
小红妹
博客等级 码龄10年 151粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值