面试
听风丨说话
这个作者很懒,什么都没留下…
展开
-
Android面向面试复习----Bitmap
Android中的Bitmap1. recycle方法该方法是系统提供的,可以用来回收bitmap占用的堆内存以及native内存,同时清除该对象的引用。该操作不可逆,如果调用了recycle(),再次加载图片,则会抛出异常。所以,需要确保该图片不会被再次使用时才可以调用recycleAndroid系统建议我们不要主动调用该方法,因为图片如果没有被引用的对象时,GC会主动释放图片占用的内存2原创 2018-01-11 00:08:40 · 881 阅读 · 0 评论 -
每日一道算法题+面试题day3-4
文章只是总结,便于面试和手写算法。细节和详细解释,请看:https://leetcode-cn.com/1. 题目算法题:1. 有效的括号:https://leetcode-cn.com/problems/valid-parentheses/2. 用栈实现队列:https://leetcode-cn.com/problems/implement-queue-using-stacks/...原创 2019-07-07 01:21:56 · 215 阅读 · 0 评论 -
day 8-9 面试题:泛型、Android8.0适配
面试题:1. 泛型: 1. 什么是泛型,能解决什么问题 2. 说说java中的泛型的工作机制 3. 在泛型中extends和super关键字的区别 2. Android 8.0适配?1. 面试题解题1.1 泛型1.1.1 什么是泛型泛型是Java SE1.5引入的,泛型本质是参数化类型,将所操作的数据类型指定为一个参数,该参数类型可以用在类、接口、方法中。...原创 2019-07-19 17:10:29 · 211 阅读 · 0 评论 -
day 8-9 算法:二叉树遍历、递归与分治
1. 题目实现pow(x,n),即计算x的n次幂函数求众数,给定一个大小为n的数组,找到其中的众数。众数是指出现次数大于 n/2 的元素。2. 基本知识2.1 二叉树遍历前序遍历:根-左-右中序遍历:左-根-右后序遍历:左-右-根前序顺序:A-B-D-E-C-F-G中序遍历:D-B-E-A-F-C-G后序遍历:D-E-B-F-G-C-A2.2 递归递归,就是在运...原创 2019-07-19 17:12:14 · 272 阅读 · 0 评论 -
day 10-11 面试题:Android6.0-Android 7.0适配
面试题:1. Android 6.0适配 2. Android 7.0适配1. Android 6.0适配1.1 HttpClient不支持问题在Android 6.0以上,HttpClient被google从系统库中移除,有两种方式可以处理module下的gradle文件中的添加声明useLibrary ‘org.apache.http.legacy’添加H...原创 2019-07-19 17:13:20 · 375 阅读 · 0 评论 -
day 10-11 算法:贪心算法,广度、深度优先、股票买卖最佳时机;二叉树层次遍历
1. 题目给定一个数组,它的第i个元素是这支股价的第i天的价格,只能持有一股,买卖次数不限,无交易中介费。二叉树的层次遍历:给定一个二叉树,返回其按层次遍历的节点值2. 基本知识2.1 贪心算法2.1.1 定义又叫贪婪算法,在对问题求解时,总是做出在当前看来最好的选择。2.1.2 适用场景问题能够分为子问题来解决,子问题的最优解能递推到最终问题的最优解。贪心与动态规划的...原创 2019-07-19 17:14:33 · 688 阅读 · 0 评论 -
day 12-13 算法:二叉树最大最小深度,生成有效括号组合
1. 题目二叉树的最大深度:给定一个二叉树,找出其最大深度(离根节点最远的路径节点个数)二叉树的最小深度:给定一个二叉树,找出其最小深度(离根节点最近的路径节点个数)生成有效的括号组合:给定数字n,写出一个函数,把所有闭合的括号组合输出,n代表生成括号的对数。2. 算法题解题2.1 二叉树的最大深度:给定一个二叉树,找出其最大深度(离根节点最远的路径节点个数)解法1:深度优先DFS...原创 2019-07-29 18:58:03 · 232 阅读 · 0 评论 -
day 12-13 面试题:apk瘦身、System.exit(),onDestory,Activity.finish()的区别
面试题:1. 谈谈你对apk瘦身的经验 2. System.exit(),onDestory,Activity.finish()的区别1. 谈谈你对apk瘦身的经验安装包体积对转化率、安装时间、运行内存、ROM空间几个方面影响都比较大。业务梳理,开发模式升级很多需要使用较大的so库的业务,尝试着使用h5或者小程序等其他方式替代。比如pdf文件加载,可以在使用H5插...原创 2019-07-29 18:59:13 · 251 阅读 · 0 评论 -
day 14-15 面试题:Binder机制、动画机制
面试题:1. 什么是Binder,用来干什么?讲讲Binder的机制? 2. 动画机制 1.Android中的动画分为哪些种类 & 特点 & 缺点。 2.知道SVG & 矢量动画吗? 3.给我说说转场动画。 4.给我谈谈插值器 & 估值器 的作用。 5.说说Android动画框架实现的原理。 1. Binder的机制1.1 什么是Bind...原创 2019-07-31 01:00:52 · 549 阅读 · 0 评论 -
day 14-15 算法:二分查找、字典树;实现一个求解平方根的函数,实现一个字典树
N皇后和数独问题比较难,暂时不去练习。1. 题目实现一个求解平方根的函数:实现 int sqrt(int x)函数,计算并返回x的平方根,其中x是非负整数。实现一个字典树,包含insert, search,startsWith这三个操作。2. 基本知识2.1 二分查找2.1.1 前提条件:sorted(单调递增或者递减)存在上下界能够通过索引来访问2.1.2 适用场...原创 2019-07-31 01:02:06 · 260 阅读 · 0 评论 -
day 16 算法:回溯法单词搜索
本题有点复杂,需要结合leetCode来看,只当其中一个答案来看即可,不然会云里雾里。1. 题目单词搜索二:给定一个二维网格board和一个字典中的单词列表words,找出所有同时在二位网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中相邻单元格式那些水平相邻或者垂直相邻的单元格,同一个单元格中的字母不允许在同一个单词内多次出现。https://leetc...原创 2019-08-21 23:56:01 · 257 阅读 · 0 评论 -
day 15-16 面试题:Android屏幕适配
面试题:1. Android屏幕适配 1. 说说安卓的一些屏幕单位 2. 谈谈你项目中的一些屏幕适配的经验 3. 今日头条轻量级适配方案了解吗?给我说说原理 1. Android屏幕适配1.1 说说安卓的一些屏幕单位px:像素,屏幕上的一个像素点dpi:一英寸的像素的点数,安卓中取 160像素/英寸 为标准dpidensity:像素密度: 屏幕dpi/标准dpidip(...原创 2019-08-21 23:59:13 · 433 阅读 · 0 评论 -
day 17 面试题:Handler相关
面试题:Handler相关1. 谈谈Handler消息机制,有什么作用,有哪些要素,流程是怎样的?2. 为什么系统不建议在子线程访问UI?3. 一个Thread可以有几个Looper?几个Handler?4. 如何将一个Thread线程变成Looper线程?Looper线程有哪些特点?5. 可以在子线程直接new一个Handler吗?怎么做?6. Message可以如何创建,哪种效果...原创 2019-08-22 00:00:36 · 515 阅读 · 0 评论 -
day 18-19 面试题:Android计算机网络基础
1. 计算机网络体系结构2. http3. HTTP的缓存机制4. Https5. TCP1. 计算机网络体系结构计算机网络体系是指计算机网络的各个层级+协议的组合,定义了计算机网络所能完成的功能。主要分为三种:OSI体系结构TCP/IP体系结构五层体系结构其中五层体系结构融合了TCP/IP和OST体系,更好理解。下面说的就是五层体系结构。1.1 分层五层体系从上往...原创 2019-08-22 00:05:15 · 210 阅读 · 0 评论 -
day 19-20 算法:动态规划,爬楼梯,三角形最小路径和,乘积最大子序列,最长上升子序列
1. 题目爬楼梯:假设需要n阶能够爬到顶楼,每一次只能爬1阶或者2阶,求问,有多少种不同的方法爬上楼顶? https://leetcode-cn.com/problems/climbing-stairs/description/三角形最小路径和:https://leetcode-cn.com/problems/triangle/description/乘积最大子序列:https://le...原创 2019-08-22 00:08:24 · 358 阅读 · 0 评论 -
day 20 面试题:Glide面试题
1. Glide的优点2. 生命周期绑定原理3. 缓存原理1. Glide的优点使用简单,链式调用比较方便 Glide.with(context) .load(uri) .into(imageView);占用内存较小默认使用RGB_565格式,是Picasso的内存占用的一半(Picasso使用RGB_8888)无代码侵入相对P...原创 2019-08-22 00:09:56 · 7290 阅读 · 2 评论 -
day 21-22 面试题:ButterKnife面试题,git面试题
1. 为什么要用ButterKnife2. ButterKnife原理1. 为什么要用ButterKnife使用注解代替findViewById和事件绑定,简化代码,节省开发时间能够方便的处理Adapter中的ViewHolder绑定的问题使用过程中不会影响app的运行效率和性能(编译时注解)代码更清晰,可读性更强2. ButterKnife原理实现原理ButterKnif...原创 2019-08-22 00:26:15 · 1005 阅读 · 0 评论 -
day 6-7 面试题:什么是反射、volaitle关键字
面试题:1. 懒汉单例模式为什么要加volaitle2. 什么是反射?怎么获取一个类的成员变量、成员方法,注解信息?在项目中反射多吗?主要用来做什么?1. 面试题解题1.1 懒汉单例模式为什么要加volaitle我以前写的一篇单例模式的文章:https://blog.csdn.net/xwh_1230/article/details/781989241.1.1 懒汉单例模式使用...原创 2019-07-14 22:16:31 · 251 阅读 · 0 评论 -
day6-7算法:树、二叉树、二叉搜索树
1. 题目给定一个二叉树,判断其是否是一个有效的二叉搜索树:https://leetcode-cn.com/problems/validate-binary-search-tree/给定一个二叉树, 找到该树中两个指定节点的最近公共祖先:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/2. ...原创 2019-07-14 19:03:33 · 160 阅读 · 0 评论 -
每日一道算法题+面试题day 5-6
文章只是总结,便于面试和手写算法。细节和详细解释,请看:https://leetcode-cn.com/1. 题目算法题:1. 有效的字母异位词:给定两个字符串,判断是否是字母异位词(字母打乱)2. 两数之和:给定一个数组,和一个target值,返回两数和为target的角标3. 三数之和:给定一个数组,判断是否存在a+b+c=0的元素面试题:1. View的事件分发机制2. ...原创 2019-07-13 23:17:43 · 324 阅读 · 0 评论 -
Android面向面试复习----OOM异常
OOM异常1. 什么是OOM 当前占用的内存加上app申请的内存资源超过了Dvlvik虚拟机的最大内存限制导致抛出Out of memory异常。2. 一些容易混淆的概念内存溢出/内存抖动、内存泄漏- 内存溢出:out of memory- 内存抖动:短时间内大量对象进出Young Generiation区(创建再被释放),导致频繁的触发GC。- 内存泄漏:进原创 2018-01-09 22:10:59 · 732 阅读 · 0 评论 -
Android面向面试复习----UI卡顿
UI卡顿 UI卡顿是轻量版的ANR1、 UI卡顿的原理1. **60fps --> 16ms**:1s内绘制60帧,所以每一帧的绘制时间在16ms2. overdraw,大量重叠的布局或者背景被重复绘制2. UI卡顿原因分析1. 人为在UI线程中做轻微的耗时操作,导致UI线程卡顿;2. 布局Layout过于复杂,无法再16ms内完成渲染3. 同一时间动画执行的原创 2018-01-12 00:53:16 · 421 阅读 · 0 评论 -
Android面向面试复习----内存泄漏
内存泄漏1. java内存泄漏基础知识1.1 java内存的分配策略静态存储区(方法区-静态数据、全局变量)栈区(局部变量,方法执行结束后,自动释放)–容量有限 方法中定义的基本变量和对象的引用变量都是在栈区中分配的堆区(new)–GC回收 new出来的对象,数组1.2 java是如何管理内存的通过关键字new申请内存空间对象的释放:原创 2018-01-12 21:59:14 · 873 阅读 · 0 评论 -
Android面向面试复习---git版本控制
Android面向面试复习—git版本控制1. 几个概念说明工作区 项目存放的文件夹就是工作区。因为我们的所有的git操作都是在该区域进行的。版本库 工作区中的.git文件夹,里面存放的是git仓库相关的信息,它不属于工作区,是Git的版本库。暂存区(stage) Git的版本库中包括通过git add添加到暂存区的代码,存放临时代码的地方叫暂存区。通过一个图来看一下他们之间的关系。2原创 2018-01-24 00:11:47 · 431 阅读 · 0 评论 -
Android面向面试复习---Android构建流程
Android构建流程 如果公司项目比较大,那么持续集成就显得很有必要。需要搭建持续集成的环境的话,Android项目的构建流程就有必要了解清楚了。1. 首先,拿一张Android构建的详细流程图出来,然后我们再根据图进行梳理。 可能很多人都知道,Android项目的构建包括:资源合并、源码编译、dex生成及打包签名等步骤,但是个中细节都了解吗?2. 简单而不复原创 2018-01-24 20:23:31 · 453 阅读 · 0 评论 -
Android面向面试复习----内存管理
内存管理1. 内存管理机制概述1. 分配机制 操作系统会为每个进程分配合理的内存大小,保证每一个进程能够合理的运行,而不至于内存不够用或者某个进程占用太多的内存。2. 回收机制 系统内存不足时,会有一个合理的回收再分配内存的机制,保证新的进程能够正常运行。2. Android内存管理机制1. 分配机制 弹性内存分配:开始分配一个小的内原创 2018-01-17 22:04:32 · 1677 阅读 · 0 评论 -
Android面向面试复习----冷启动优化
冷启动优化1. 什么是冷启动1. 冷启动的定义 冷启动就是在启动应用前,系统中没有该应用的任何进程信息。这时候启动应用就叫冷启动。2. 冷启动/热启动的区别 热启动:用户使用返回键(Home键)退出应用,然后马上又重新启动应用(进程在后台)。启动特点:1. 冷启动会创建Application和MainActivity,进行测量,绘制显示2. 热启动原创 2018-01-17 22:42:33 · 430 阅读 · 0 评论 -
Android面向面试复习----ANR
ANR面试解析1.1 什么是ANR Application Not Responding 换句话说,ANR是应用程序无响应的对话框,主要是在主线程中做了耗时操作导致的。三种情况会导致ANR5s内没有响应用户的输入事件(按键或者触摸事件等)BroadcastReceiver中10s内未结束Service在20s内无法处理完成1.2 造成ANR的主要原因原创 2018-01-09 19:54:54 · 603 阅读 · 0 评论 -
Android面向面试复习----HandlerThread的妙用
HandlerThread的妙用 很多博客讲了HandlerThread的用法,但是没有具体的应用场景,可能也是了解并未真正使用!1. HandlerThread是什么? handlerThread是内部有一个looper轮询器的Thread线程。HandlerThread产生的背景 google为了避免以下几种情况,给android开发者提供了这样一个异原创 2018-02-03 12:38:36 · 544 阅读 · 1 评论 -
Android面向面试复习----AsyncTask详解
AsyncTask详解1. 什么是AsyncTask? 封装了线程池和Handler,这个框架主要是用来执行异步任务的,内部集成了Handler,所以它可以很灵活的在UI线程和异步线程之间进行切换。2. AsyncTask介绍三个参数 AsyncTask3. AsyncTask实例创建AsyncTask的子类,实现各方法,分别处理相应的逻辑。pub原创 2018-02-03 14:46:37 · 398 阅读 · 0 评论 -
Android面向面试复习----IntentService详解
IntentService详解(附个推IntentService示例)1. 什么是IntentService?IntentService继承Service,内部创建了HandlerThread和异步线程的Handler来进行耗时操作启动方式和Service一样在开启IntentService时,会回调执行onHandleIntent方法(异步线程中执行,非UI线程)执行完成后会自动原创 2018-02-03 16:16:38 · 428 阅读 · 0 评论 -
Android面向复习----通俗理解Android中的Gradle
Android面向复习—-通俗理解Android中的Gradle1. Gradle是什么? Gradle是一种构建工具,它可以帮你管理项目中的差异、依赖、编译、打包、部署等。它并不是一种语言,不能实现软件中的任何实际功能。2. Android工程中Gradle相关文件及功能 在一个安卓项目中,主要包括以下几个部分Gradle相关的文件(夹)Top-leve原创 2018-01-28 00:47:11 · 326 阅读 · 0 评论 -
Android面向面试复习----Handler详解
Handler详解 这篇文章缘起于一道面试题: Android面试题 请解释下单线程模型中Message、Handler、MessageQueue、Looper之间的关系 虽然能够大致说明白,但是自己对答案也不太满意,翻一翻源码,从源码角度剖析一番。1. 概述Handler相关对象模型关系首先看一下Handler、Looper、MessageQueue、Mess原创 2018-02-04 13:43:10 · 512 阅读 · 1 评论 -
Android面向面试复习----Proguard混淆技术详解
Proguard混淆技术详解1. Proguard是什么? Proguard是一个压缩、优化和混淆java字节码的免费工具。它有以下几个作用: 压缩(Shrink):检测并移除代码中无用的类、字段、方法和属性。优化(Optimize):对字节码进行优化,移除无用的指令。混淆(Obfuscate):使用a,b,c这样简短无意义的名称,对类、字段和方法进行重命名预检(原创 2018-01-29 22:04:08 · 500 阅读 · 0 评论 -
Android面向面试复习----Activity复习
Activity复习 Activity是我们学习Android的时候的第一个组件,它提供界面用户可以进行滑动、点击等交互。使用上很简单,但是有一些相关的知识也许需要很好的掌握才能用好。1. Activity生命周期Activity的四种状态running: 活动状态,可以交互paused: 失去焦点,或者被盖住的情况下,无法进行交互stopped: Activity被完...原创 2018-02-11 17:48:13 · 341 阅读 · 0 评论 -
Android面向面试复习----Fragment复习
Fragment复习1. Fragment为什么被称为第五大组件Fragment为什么被称为第五大组件 使用频率高,有自己的生命周期,同时可以灵活的加载到Activity中去。它是依赖于Activity的,不能单独存在。Fragment的加载静态加载 在xml布局中使用fragment标签加载进来,name指定对应的Fragment即可。 动态加载/...原创 2018-02-11 19:22:07 · 328 阅读 · 0 评论 -
day 23-24 面试题:synchronized和volatile的区别;final,finally,finalize区别
面试题:1. synchronized和volatile的区别2. final,finally,finalize区别1. synchronized和volatile的区别1.1 JVM内存模型JVM将内存组织分为主内存和工作内存两部分。主内存主内存包括方法区和堆。所有变量都存在主内存中,对于所有线程都是共享的。工作内存每一个线程有一个工作内存,它包含两部分,该线程的私有...原创 2019-08-22 00:28:57 · 1148 阅读 · 0 评论