首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 基础面试常常吊死在这几个问题上……

由于 setContentView() 是一项繁重的操作,因此无法在 onResume() 或onStart() (多次调用)中设置内容是无效的。 9、面试官:说一下Android的几种启动模式吧!...SingleInstance:与单个任务相同,但是系统不会在与此 Activity 相同的任务中启动任何 Activity 。如果启动了新 Activity ,则它们是在单独的任务中完成的。...通常的做法是将数据存储在 ViewModel 类中(因为它在配置更改期间保留数据),并使用 OnSaveInstanceState 存储少量UI数据。 面试官:回答得不错!...17、面试官:RecyclerView 它是怎么工作的? 应聘者:它是一个列表,有自己的适配器,在 onBindViewHolder 方法中进行数据的绑定的! 面试官:我给你补充一下!...在 ListView 中, findViewById() 在滚动 ListView 期间,代码可能会频繁调用,这可能会降低性能。即使适配器返回膨胀视图以进行回收,仍然需要查找元素并进行更新。

2K20

精选Android中高级面试题:性能优化,JNI,设计模式

性能优化 1、图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理? 参考回答:首先我们要清楚图片的三级缓存是如何的: 如果内存足够时不回收。...内存判定对象可回收有两种机制: 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加 1;当引用失效时,计数器值就减 1;任何时刻计数器为 0 的对象就是不可能再被使用的。...系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这一步操作时,系统会根据我们设置的 Theme 来指定它的 Theme 主题颜色,我们在 Style 中的设置就决定了显示的是白屏还是黑屏...总结:具有一定的分层,model 彻底解耦,controller 和 view 并没有解耦层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有 controller 和 view 在...对于偏向展示型的 app,绝大多数业务逻辑都在后端,app 主要功能就是展示数据,交互等,建议使用 mvvm。 对于工具类或者需要写很多业务逻辑 app,使用 mvp 或者 mvvm 都可。

2.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    精选Android中高级面试题 (四):性能优化,JNI,设计模式

    参考回答:首先我们要清楚图片的三级缓存是如何的: ? 如果内存足够时不回收。内存不够时就回收软引用对象 2、内存中如果加载一张 500*500 的 png 高清图片。应该是占用多少的内存?...内存判定对象可回收有两种机制: 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加 1;当引用失效时,计数器值就减 1;任何时刻计数器为 0 的对象就是不可能再被使用的。...系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这一步操作时,系统会根据我们设置的 Theme 来指定它的 Theme 主题颜色,我们在 Style 中的设置就决定了显示的是白屏还是黑屏...总结:具有一定的分层,model 彻底解耦,controller 和 view 并没有解耦层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有 controller 和 view 在...对于偏向展示型的 app,绝大多数业务逻辑都在后端,app 主要功能就是展示数据,交互等,建议使用 mvvm。 对于工具类或者需要写很多业务逻辑 app,使用 mvp 或者 mvvm 都可。

    1.3K30

    学习笔记 | Android Studio安卓开发入门经验总结 干货

    values: arrays.xml: 存放数组,在程序中按照自定义的数组名进行读取。 colors.xml: 存放Hex色值,在程序中按照自定义的颜色名字进行读取。...对象 intent.putExtra(“param1”,paramString1);//通过intent传送额外数据,可以在目标Activity中,使用getIntent()获取传入的intent对象,...3.3.5 回收型列表视图RecyclerView的使用 RecyclerView是基于viewholder的回收理念在ListView上的一个升级版,功能强大,当然在不需要进行回收的场景就当然不要用了...,也封装了很多功能丰富的类与接口,例如可以实现下拉刷新,上拉加载的接口,可以实现多布局共存的MultiItemAdapter等等[4],因此在合适的场景下使用是很好的,避免重复造轮子,但为了学习和了解更底层的原理...3.3.6 适配器理念Adapter 如上所说,列表视图需要一个中间件:适配器,来将数据适配到布局上,这是一个从结构化的数据到结构化的视图的中间过程,纵观整个项目开发,可以发现有很多地方在使用这样的理念

    2.5K60

    资深Android开发的5个经典面试题

    面试题目1:谈谈你对Android中的内存泄漏和内存溢出的理解,以及如何检测和解决它们。 解答: 内存泄漏是指应用程序中的某些对象不再被使用,但仍然被引用,导致垃圾回收器无法回收它们,从而消耗内存。...使用弱引用(WeakReference)来避免强引用导致的内存泄漏。 避免在静态变量中持有Activity或Context的引用。 内存溢出通常是因为应用程序尝试加载的资源过大或者创建了过多的对象。...面试题目2:描述一下Android中的Binder机制,以及它是如何在不同进程间进行通信的。 解答: Binder是Android中的一种IPC(进程间通信)机制。...Binder机制的优点包括: 高效的数据拷贝方式。 支持异步通信。 可以跨进程共享数据。 面试题目3:谈谈你对Android中的MVC、MVP和MVVM架构模式的理解,以及它们的优缺点。...MVVM:优点是易于测试和维护,减少了样板代码;缺点是可能需要更多的学习曲线来理解数据绑定和ViewModel。 面试题目4:描述一下Android中的Handler机制,以及它是如何工作的。

    15610

    Android面试之5个架构优化面试题

    MVVM(Model-View-ViewModel): Model:与MVC中的Model相同。 View:定义用户界面,使用数据绑定与ViewModel交互。...面试题目2:在Android中,如何实现一个高效的图片加载库? 解答: 实现一个高效的图片加载库需要考虑以下几个方面: 1、 缓存机制: 实现内存缓存和磁盘缓存,减少重复的网络请求和磁盘I/O操作。...面试题目3:如何优化Android应用的内存使用? 解答: 优化Android应用的内存使用可以从以下几个方面入手: 1、 内存泄漏检测: 使用LeakCanary等工具检测内存泄漏,并修复。...4、 避免内存抖动: 减少短时间内大量对象的创建和销毁,避免频繁的垃圾回收。 5、 合理使用Bitmap: 根据需要加载和处理Bitmap,避免加载过大的图片。...解答: 优化Android应用的启动速度可以从以下几个方面入手: 1、 减少主线程工作量: 延迟非必要的初始化操作,避免在onCreate方法中执行耗时操作。

    9910

    Android技术栈(四)Android Jetpack MVVM 完全实践

    在MVVM中View不是数据的实际持有者,它只负责数据如何呈现以及点击事件的传递,不做的数据处理工作,而数据的处理者和持有者变成ViewModel,它通过接收View层传递过来的时间改变自身状态,发出事件或者改变自己持有的数据触发...但是MVVM也有自己的缺点,那就是使用MVVM的情况下ViewModel与View层的通信变得更加困难了,所以在一些极其简单的页面中请酌情使用,否则就会有一种脱裤子放屁的感觉,在使用MVP这个道理也依然适用...的局限性,我们无法避免,所以在DataBinding风格的xml中应该尽可能的少用这些符号...." android:layout_height="match_parent"/> 应该避免出现较为复杂的DataBinding表达式,以全部都是直接赋值表达式为佳,数据的处理应该交给布局控制器或者...,那么它对你就是不可见的,所以一定要避免使用系统的Fragment(在API28中已被标记为弃用).

    3.9K01

    Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

    显示数据 九、源码 前言   在日常的开发中,最常用于展示数据的形式就是列表,你会看到各种各样的列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表的开发是使用ListView...,而现在绝大多数开发者都使用RecyclerVIew了,优势就不说了,都已经用了这么多年了,那么RecyclerView在MVVM中要怎么使用呢?...limit=30&skip=180&adult=false&first=0&order=hot 我在写好天气的时候用过这个接口作为每日壁纸列表的使用。建议用浏览器测试一下找个接口,看有没有数据返回。...因为ViewPager2可以在setAdapter时直接设置RecyclerView.Adapter,很方便,因此这里同样需要一个适配器,这里的适配器我不打算用原生的来写。 2....,然后请求壁纸数据,再监听页面的回调,然后在回调中设置适配器的数据。

    2.8K10

    Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

    显示数据 九、源码 前言   在日常的开发中,最常用于展示数据的形式就是列表,你会看到各种各样的列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表的开发是使用ListView...,而现在绝大多数开发者都使用RecyclerVIew了,优势就不说了,都已经用了这么多年了,那么RecyclerView在MVVM中要怎么使用呢?...limit=30&skip=180&adult=false&first=0&order=hot 我在写好天气的时候用过这个接口作为每日壁纸列表的使用。建议用浏览器测试一下找个接口,看有没有数据返回。...因为ViewPager2可以在setAdapter时直接设置RecyclerView.Adapter,很方便,因此这里同样需要一个适配器,这里的适配器我不打算用原生的来写。 2....,然后请求壁纸数据,再监听页面的回调,然后在回调中设置适配器的数据。

    2.1K20

    要进大厂,至少要把这些Android高端技术面试题搞清楚!

    一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法 一张Bitmap所占内存以及内存占用的计算 2000万个整数,找出第五十大的数字?...实现一个Json解析器(可以通过正则提高速度) 统计启动时长,标准 七、性能优化 如何对Android 应用进行性能分析以及优化?...渲染 Bitmap如何处理大图,如一张30M的大图,如何预防OOM java中的四种引用的区别以及使用场景 强引用置为null,会不会被回收?...AIDL如何使用? Android 上的 Inter-Process-Communication 跨进程通信时如何工作的? 多进程场景遇见过么? Android进程分类?...谈谈对动态加载(OSGI)的理解 内存对象的循环引用及避免 内存回收机制、GC回收策略、GC原理时机以及GC对象 垃圾回收机制与调用System.gc()区别 Ubuntu编译安卓系统 系统启动流程是什么

    99300

    Android MVI框架搭建与使用

    本文完成后的效果图: 正文   每当一个新的框架出来,都会解决掉上一个框架所存在的问题,但同时也会产生新的问题,瑕不掩瑜,可以在实际开发中,解决掉产生的问题,就能够更好的使用框架,那么MVI解决了MVVM...,下面来进行使用,简单来说,请求数据然后渲染出来,因为这里请求的是壁纸数据,所以我需要写一个适配器。...> 这里使用了ShapeableImageView,这个控件的优势就在于可以自己设置圆角,在themes.xml中添加如下代码: 中是控件的一些配置,比如给RecyclerView添加布局管理器和设置适配器,给按钮添加点击事件,在点击的时候发送意图,发送的意图被MainViewModel中mainIntentChannel...observeViewModel()函数中是对状态的收集,在状态为Loading,隐藏按钮,显示加载条,然后网络请求会有结果,如果是成功,则在UI上隐藏按钮和加载条,显示列表控件,并添加数据到适配器中,

    3.5K40

    安卓开发中的Model-View-Presenter(MVP模式)

    对于层之间的通信,在经典的MVP案例中,我们发现它是通过回调完成的(这将最终把我们的应用程序变成回调地狱),而在MVVM LiveData中使用,虽然它允许我们避免回调,但它没有为我们提供大量的操作符来操作数据...此外,使用lambdas用于视图与服务通信,使我们能够避免直接暴露这些组件之间的可观数据。...Infrastructure Layer 在负责向应用程序提供数据或存储必要数据的层(网关、BD、共享首选项、缓存…)。每个通信通道都将使用存储库模式实现,并将其注入到需要它们的服务中。...正是由于使依赖服务=>视图反转,而且不仅依赖视图=>服务,我们还可以做以下事情: 在运行时视图中添加/删除更多侦听器 时使用多个“侦听器”的相同视图。...另外,在我们必须处理适配器时,研究如何实现这种绑定也是我们目前正在研究的一个挑战。

    1.6K30

    Android开发多年每天Crud不清楚自己的技术?来刷刷大厂的高端技术面试题就知道了

    19、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。...六、架构设计和设计模式 1、谈谈你对Android设计模式的理解 2、MVC MVP MVVM原理和区别 3、你所知道的设计模式有哪些?...优化 17、View渲染 18、Bitmap如何处理大图,如一张30M的大图,如何预防OOM 19、java中的四种引用的区别以及使用场景 20、强引用置为null,会不会被回收?...12、AIDL如何使用? 13、Android 上的 Inter-Process-Communication 跨进程通信时如何工作的? 14、多进程场景遇见过么? 15、Android进程分类?...(类加载器)的理解 11、谈谈对动态加载(OSGI)的理解 12、内存对象的循环引用及避免 13、内存回收机制、GC回收策略、GC原理时机以及GC对象 14、垃圾回收机制与调用System.gc()区别

    77700

    支持MVVM的BRVAH来了!

    使用本控件的前提,项目使用MVVM开发模式,列表适配器是使用BRVAH的 BaseRecyclerViewAdapterHelper万能适配器(本控件支持非使用AndroidX和使用AndroidX的条件...,可扩展的多布局使用 下拉刷新,上拉加载 仿聊天界面,从下到上加载数据 双列表使用,仿外卖(甚至可以更多列表) 支持使用自己的适配器来调用 支持列表侧滑 地址 废话不多说,先上Github的demo。...load()中的回调,调用了load(getData())来加载数据(我这边使用rxjava来模拟数据的加载,现在的项目基本都是用retrofit和rxjava结合获取网络请求)。...的监听,在布局中绑定,当spinner使用时,会回调这个方法....在构造方法中,有一个setSpan()方法,这个方法就是适配器每个item占几个的回调,一般情况下,多布局Grid形式的,并且item所占格式不同的,基本都要回调这个方法,设置完该方法后,别忘记在布局中

    1.2K20

    【RecyclerView】二、RecyclerView 简介 ( RecyclerView 特点 | RecyclerView 涉及到的类 )

    ; RecyclerView 样式与适配器等解耦 : RecyclerView 提供了插拔式体验 , 实现的 Adapter 适配器与显示样式设置 高度解耦 , 在不改变 Adapter 适配器的前提下...避免了 ListView 中自定义 ViewHolder , 给出了相应的 规范 ; 三、RecyclerView 涉及到的类 ---- RecyclerView 使用必须有的关键类 : RecyclerView.ViewHolder...创建时不关联数据 , 创建后会在 RecyclerView.Adapter 适配器 的 onBindViewHolder 方法中为其关联数据 ; RecyclerView.Adapter 主要作用是...创建 RecyclerView.ViewHolder , 并为其绑定数据 ; LayoutManager 布局管理器主要作用是 负责排列各个元素组件 , 可以使用系统提供的 线性布局管理器 LinearLayoutManager...RecyclerView 相关资料 ---- 官方文档 : 使用 RecyclerView 创建动态列表 : https://developer.android.google.cn/guide/topics

    5.3K00

    Android 知识简记:资深架构师带你快速回顾Android各种知识!

    1.volatile想要解决的问题是,在另一个线程中想要使用instance,发现instance!...,常量池,静态变量等数据 GC 回收区域:只针对堆、方法区;线程私有区域数据会随线程结束销毁,不用回收 回收类型: 1.堆中的对象 分代收集 GC 方法会吧堆划分为新生代、老年代 新生代:新建小对象会进入新生代...系统预置整型、浮点、色值等类型估值器 使用注意事项: 避免使用帧动画,容易OOM 界面销毁时停止动画,避免内存泄漏 开启硬件加速,提高动画流畅性 ,硬件加速: 将 cpu 一部分工作分担给 gpu ,...View:控制视图;Presenter:分离 Activity 和 Model MVVM:Model:处理获取保存数据;View:控制视图;ViewModel:数据容器 使用 Jetpack 组件架构的...优化绘制过程,避免在 Draw 中频繁创建对象、做耗时操作 内存泄漏场景及规避 1.静态变量、单例强引跟生命周期相关的数据或资源,包括 EventBus 2.游标、IO 流等资源忘记主动释放 3.

    88830

    Android必看面试题——基础篇

    ~ Android基础面试题 (⭐⭐⭐) 1、什么是ANR 如何避免它?...DOM解析 优点: 1.XML树在内存中完整存储,因此可以直接修改其数据结构. 2.可以通过该解析器随时访问XML树中的任何一个节点. 3.DOM解析器的API在使用上也相对比较简单....在Android2.3时代,Bitmap的引用是放在堆中的,而Bitmap的数据部分是放在栈中的,需要用户调用recycle方法手动进行内存回收,而在Android2.3之后,整个Bitmap,包括数据和引用...如果项目中打算用MVVM的话可以考虑使用官方的架构组件ViewModel、LiveData、DataBinding去实现MVVM。 三者如何选择?...111、RemoteViews实现和使用场景 112、对服务器众多错误码的处理(错误码有好几万个) 113、adb常用命令行 114、Android中如何查看一个对象的回收情况?

    3K53

    Android UI 架构演进:从 MVC 到 MVP、MVVM、MVI

    View 的概念相同; Model: 负责管理业务数据逻辑,如网络请求、数据库处理,与 MVP 中 Model 的概念相同; ViewModel: 存储视图状态,负责处理表现逻辑,并将数据设置给可观察数据容器...MVI 将代码分为以下四个部分: View: Activity 和 Layout XML 文件,与 MVVM 中 View 的概念相同; Intent: 定义数据操作,是将数据传到 Model 的唯一来源...当然,实践中应该根据状态之间的关联程度来决定数据流的个数,不应该为了使用 MVI 模式而强行将多个无关的状态压缩在同一个数据流中。...MVP、MVVM 和 MVI 的对比 MVVM 和 MVP 的思想是相同的,最本质的概念就是 Activity 里做的事情太多了,所以要把 Activity 中与 UI 无关的部分抽离出来,交给别人做。...这个 “别人” 在 MVP 里叫作 Presenter,在 MVVM 里叫作 ViewModel。而不论是 MVP 中的约定接口,还是 ViewModel 里的观察者模式,这些都是实现上的细节而已。

    1.5K10

    为什么说Flutter让移动开发变得更好?

    之后在一家代理公司工作,接触到了不同的技术和架构,包括Kotlin,Dagger,RxJava,MVP,MVVM,VIPER等,这些对我的Android开发确实有帮助。...让我们从在Android中构建此列表所需的步骤开始: 用XML创建list-item布局文件 创建一个适配器来绑定视图并设置数据 为列表创建布局(可能在Activity或Fragment中) 填充Fragment.../Activity中的列表布局 在Fragment / Activity中创建适配器,布局管理器等的实例 在后台线程上从网络下载电影数据 回到主线程设置适配器中的项目 现在需要考虑保存和恢复列表状态等细节...使用Flutter可以一次性完成上面的步骤并把值绑定到UI上。 现在无需处理Android中的数据绑定,比如设置监听器或处理生成的绑定代码。 在Android上构建这些基本的东西非常繁琐。...Flutter使用Databinding相同的思想,即将视图/小部件绑定到变量,而无需在Java / Kotlin中手动管理数据绑定,不用专门的绑定文件来桥接XML和Java。

    2K10
    领券