Android面试集锦系列(19)——ART & Dalvik

前言 Android的每次版本升级都会带来一些改变,有些改变对于应用开发者来说并没有什么影响,但对于一些重大的改变,我认为Android开发是必要关注和了解一下的,有些改变也许会成为以后的Android进化方向。 面试时,我也比较喜欢问一些每个版本的不同之外,或者问问对方喜欢哪个新版本的特性(如A...

2019-03-28 20:45:29

阅读数 1107

评论数 4

ARetrofit - Android组件化最佳路由

Android组件化最佳路由,为简单而生。 Github 源码: ARetrofit demo demo apk 下载 一、介绍 从命名来看,做Android开发的小伙伴们感觉是不是似曾相识…是的,Retrofit,一款优秀的网络框架,目前正在被大量使用,相信大家对它的用法已经非常熟悉吧。 AR...

2019-03-14 21:59:59

阅读数 1069

评论数 1

知乎里的一些特效实现 ,无缝拖拽的 Layout

1 前言 今年年初接触回答页面改版,由之前的左右滑动回答改为上下滑动回答,由于当时回答页的代码太过于庞大,所以第一次改版复用了之前的 UI 框架,外层 ViewPager + Fragment,内层是 WebView 嵌套 Hybrid 页面。 问题出现了,WebView 可以滚动的时候,会持...

2019-01-15 19:15:31

阅读数 1632

评论数 0

关于对Instrumentation的个人理解

前言 一般的应用不太会用到instrumentation,所以网上对其介绍也比较少。 但因其强大的跟踪application及activity生命周期的功能,用于android 应用测试框架中,被做为基类使用。 instrumentation的官方文档:http://developer.andro...

2019-06-12 11:34:04

阅读数 31

评论数 0

Android性能问题分析与优化

近来对之前做优化学习记录的一些知识点进行了以下简单的总结,主要集中在以下几个方面: 1.Systrace 2.严格模式 3.非保护性广播 4.Event Log 中的性能问题 5.帧率优化 6.冷启动流程 7.其他常见的优化技巧 8.ANR 1、Systrace 截至目前为止,最实用、分析...

2019-06-12 11:28:02

阅读数 31

评论数 0

为什么内存使用很少的时候也GC?

Android应用建立在Java虚拟机之上的,Google为了保证同时多个APP运行并及时唤醒,就为每个虚拟机设置了最大可使用内存,通过adb命令可以查看相应的几个参数, * [dalvik.vm.heapgrowthlimit]: [192m] * [dalvik.vm.heapmaxfree]...

2019-06-12 11:06:14

阅读数 32

评论数 0

Android性能优化之虚拟机调优

Android App运行在Java虚拟机之上,而Java是一门带GC的语言。在虚拟机进行垃圾回收的时候,要做一件很形象的事叫做STW(stop the world);也就是说,为了回收那些不再使用的对象,虚拟机必须要停止所有的线程来进行必要的工作。虽说这一点在ART运行时上得到了很大的改善,但是...

2019-06-12 10:48:48

阅读数 28

评论数 0

这一篇带你深入理解Java NIO

这两天了解了一下关于NIO方面的知识,网上关于这一块的介绍只是介绍了一下基本用法,没有系统的解释NIO与阻塞、非阻塞、同步、异步之间的联系,导致自己困扰了好久。本篇文章就个人关于NIO的理解进行阐述。 一、NIO的概念 Java NIO(New IO)是一个可以替代标准Java IO API的I...

2019-06-11 11:55:02

阅读数 32

评论数 0

2018Android暑期面试经验分享

作为一个双非渣硕,在2018年历经两个月的时间,面试了大大小小公司的Android岗位,最近终于结束了面试状态,决定好好把面试问题以及相关经验整理下来,顺便附带自己的学习经验与准备过程,攒攒人品,为今年秋招再战。 一、前言 2012年开始接触Android,从刚开始接触就不断地听到Androi...

2019-06-11 11:38:15

阅读数 36

评论数 0

对象:创建、内存布局和访问定位

对象的创建: 1.虚拟机遇到一个new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用 2.检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有,那必须先执行响应的类加载过程 3.在类加载检查功通过后,为新生对象分配内存。对象所需的内存大小在类加载完成后便可完全...

2019-06-11 11:19:31

阅读数 44

评论数 0

JVM内存区域与内存模型

Java内存区域: **方法区(公有):**用户存储已被虚拟机加载的类信息,常量,静态常量,即时编译器编译后的代码等数据。异常状态 OutOfMemoryError 其中包含常量池:用户存放编译器生成的各种字面量和符号引用。 **堆(公有):**是JVM所管理的内存中最大的一块。唯一目的就是存放实...

2019-06-11 11:09:54

阅读数 31

评论数 0

Android组件化最佳实践 ARetrofit原理

开源ARetrofit也有一段时间了,陆续有用户反馈希望有文章讲述实现的原理,由于本人写作水平有限一直没有动笔。趁着现在空闲下来终于还打算写下此文,文笔有限,这里非常感谢大家的理解和支持。无论是ARetrofit的用户也好,还是对源码感兴趣的同学也好,希望能从这篇文章中有所收获。 简介 ARet...

2019-06-06 21:26:56

阅读数 232

评论数 0

如何对自己的Android组件化进行优雅的改造?

本篇文章的主要目的: 帮助正在对项目进行组件化改造或者想建立组件化项目架构的小伙伴,更好的认识组件化本质。 目前组件化的框架众多,说的天花乱坠的,其本质来说其实都差不多,阅读本文以后,读者甚至可以摒弃这些开源框架,根据自己的项目特点,轻松构建自己的组件化框架。 帮助想学习和了解组件化框架,并尝试...

2019-06-06 21:23:12

阅读数 60

评论数 0

Android性能优化典范

Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号...

2019-06-06 21:19:23

阅读数 185

评论数 0

Re:从零开始编号的数组

1. 如何实现随机访问 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 两个关键点:线性表、连续的内存空间和相同类型的数据 线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组,链表、队列、栈等也是线性表结构。而...

2019-06-06 20:56:12

阅读数 40

评论数 0

Android I/O 知多少?

I/O 操作是编程离不开的话题,它不仅是读写那么简单,还涉及底层的文件系统和存储设备。I/O 的快慢影响程序的执行效率,这篇文章主要介绍 Android 平台 I/O 的方式和使用场景。 1. Linux I/O 的基本组成 众所周知,Android 基于 Linux 系统,先介绍一些 Linux...

2019-06-05 21:30:33

阅读数 45

评论数 0

散列表(三)- 为什么散列表和链表经常会一起使用?

前言 散列表虽然支持高效的数据插入、删除和查找操作,但是其中的数据都是通过散列函数打乱之后无规律的。也就是说,它无法按照某种顺序快速地遍历。如果想有序遍历散列表中的数据,那就需要将数据拷贝到数组中,然后排序再遍历。 散列表是动态的数据结构,不停地进行数据的插入、删除,当我们想按顺序遍历散列表时,都...

2019-06-05 21:28:37

阅读数 45

评论数 0

散列表(二)- 如何打造一个工业级的散列表?

工业级的散列表应该具有哪些特性? 支持快速的查询、插入、删除操作; 内存占用合理,不能浪费过多的内存空间; 性能稳定,极端情况下,散列表的性能也不会退化到无法接受的情况。 如何实现这样一个散列表呢?我会从这三个方面来考虑设计思路: 设计一个合适的散列函数; 定义装载因子阈值,并且设计动态扩容...

2019-06-05 21:25:31

阅读数 43

评论数 0

散列表(一) - 单词拼写与检查功能的实现

1. 散列思想 散列表利用的就是数组支持按照下标随机访问的时候,时间复杂度是 O(1) 的特性。通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,用同样的散列函数,将键值转化数组下标,从对应的数组下标的位置取数据。 2. 散列函数 散列函数定义为...

2019-06-05 21:15:25

阅读数 41

评论数 0

各个排序算法的区别比较与java实现

冒泡排序 基本思想: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 Ja...

2019-06-04 21:43:10

阅读数 62

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭