自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 华为 HarmonyOS 的野心比你想象中更大,2021Android春招

人类的每一代,都会比上一代更加数字化。尼葛洛庞帝在其经典著作《数字化生存》中如是说道。在上个世纪,我们很难想象风扇可以用手机控制,豆浆机可以用音响控制,对着电视说话可以拉开窗帘。如今,智能家居的普及,让以上场景均成为了现实。通信产业的发展,让数字化加速普及。智能电视、台灯、音响、扫地机器人等智能家居,正在涌入普通家庭。根据智研咨询的预测,到 2025 年,全球物联网联网设备数量,将达到 252 亿个。这是一个前景非常广阔的市场。Google 推出的 Fuchsia OS,据传苹果正在研发的 Hom

2021-09-08 17:26:21 444

原创 十年磨一剑:站在面试官角度聊聊现下大环境面试,想跳槽涨薪的必看

构造单例的时候尽量别用Activity的引用;静态引用时注意应用对象的置空或者少用静态引用;使用静态内部类+软引用代替非静态内部类;及时取消广播或者观察者注册;耗时任务、属性动画在Activity销毁时记得cancel;文件流、Cursor等资源及时关闭;Activity销毁时WebView的移除和销毁。5. ViewWindow WindowManager WMSView 工作流程View.post6. 动画**帧动画 :**Animati..

2021-09-08 17:24:38 414

原创 十年Android开发,六一,阿里秋招面试真题解析

我早就很累了,真的很累,但是老人和小孩都在看着我,我没有后退的余地,“早茶事件”可能是压倒骆驼的最后一根稻草吧,我毅然加入了“躺平”大军。以前和我一起工作的小宇知道我要回家“躺平”之后,他也给我说了件很恶心的事实,他偶然有一天和房东吃饭,聊起来工资问题,房东说他一个月退休金可以拿四五千块,小宇一个月工资一万五,房租两千,他算了一笔账:一个月工资1W5,交4800的社保,房租2000,公积金3000,剩下的就是自己的。他笑着说:“我他妈养着房东,还要给他交房租,他啥事不用干,我却要累死累活”逃离–我

2021-09-08 17:22:50 229

原创 十年Android开发,六一(1),文末领取面试资料

我已经买了六月三十号的票,回家养老,这几天把房子卖了,回我们那边卖几套房子,我也打算过上收租的生活,平时没事我就接接单,写点代码,虽然生活或许不再那么光鲜,但是生活质量我觉得肯定是在上班的时候是没法比的。其实我在做这些的时候已经考虑了很多了,并不是脑子发热去做的这些事情,首先,我辛苦工作十多年,固定资产已经积累到一定地步,相关的开发技术,我也已经积累到可以独立去完成一些项目,回家之后完全可以满足自己生活的需求。关于“躺平”我有自己的理解**躺平不是丧,只是在一个偏僻,安静的地方生活,让自己安静的过下去

2021-09-08 17:21:16 152

原创 前言,不愧是阿里大佬

js继承 (原型式、构造函数式、组合式、寄生式)js判断类型 (typeof 、 instanceof、 Object.prototype.toString.call)settimeout和setinterval区别 。 宏任务、微任务、异步队列一道考察promise的题let j = ()=>{ return 2}new Promise((resolve, reject)=>{ resolve(1)}).then(j).then(req=>{ .

2021-09-08 17:16:09 133

原创 Java 8 简单使用,Android工程师面试题及答案

Log.d("I","exe"); }}); ```> 匿名内部类/监听器接口缺点在于代码很臃肿,而lambda表达式就是对其进行了简化.```func(()->Log.d("I","exe")); ```> Lambda表达式并不能让你实现以前不能实现的功能2. Lambda表达式的几种样式总体样式: (参数列表) -> {代码块; return **;}```(参数列表) -> 单行代码(参数列表) -> {...

2021-09-06 20:30:30 84

转载 JakeWharton评价我的代码像是在打地鼠?,快点来学吧

没想到 JakeWharton 竟然看到了我的回复,并且非常直接针对我提供的代码进行了点评:翻译过来的意思就是:长远来看,制定一个 替换规则 远比通过exclude这种类似 打地鼠 的方式要好得多。收到男神的回复令我受宠若惊,但我更迫切需要了解我的代码问题出在了哪里—— 我一直认为我的代码就是正确的处理方案,但事实却证明了我的无知。我翻阅了对应的Gradle文档,Gradle中提供了对应的 依赖替换规则,而我之前一直没有了解过它,这也正是本文的主要内容。_2_依赖替换规则=========

2021-09-06 20:28:52 117

原创 IOC架构设计之ButterKnife源码&原理(二,企业级项目实战讲解

//key:FieldCollectionViewBinding 为实体,包含了名字,类型等信息,大家可以看下源码,这里就不说了就是一个java-bean ,你可以这么理解。 //value: 就是这些id: R2.id.title, R2.id.subtitle, R2.id.hello private final Map<FieldCollectionViewBinding, List> collectionBindings =new LinkedHashMap<>(.

2021-09-06 20:27:16 119

原创 Hook 技术初探,阿里P8手把手教你

在 Android 系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行彼此间都不受干扰。根据 Hook 对象与 Hook 后处理的事件方式不同, Hook 还分为不同的种类,如消息 Hook 、API Hook 等。从 Android 的开发来说,Android 系统本身就提供给了我们两种开发模式,基于 Android SDK 的 Java 语言开发,基于 AndroidNDK 的 Native C/C++ 语言开发。所以,我们在讨论 Hook 的时候就必须在两个层面上来讨论。Java

2021-09-06 20:25:27 172

原创 HashMap 源码解析二、put 相关函数,三面美团Android岗

可以看出这是一个单链表结构,存放着 hash、key和valueresize() 函数,作用:初始化或者扩容表为原大小的2倍。源码后面再分析。知道以上的信息我们在看 putVal() 函数的代码,注释1if ((tab = table) == null || (n = tab.length) == 0)//注释1 n = (tab = resize()).length; 我们知道DEFAULT_INITIAL_CAPACITY = 1 << 4 // aka 16 因此可以

2021-09-06 20:23:46 139

原创 Handler系列面试题:如何深挖原理进大厂,Android面试题库

msg.setAsynchronous(true); } //转到 MessageQueue 的 enqueueMessage 方法 return queue.enqueueMessage(msg, uptimeMillis);}enqueueMessage方法最终调用了MessageQueue的enqueueMessage方法,将消息放入队列。  **(2)MessageQueue** MessageQueue是一个优先级队列...

2021-09-06 20:22:00 95

原创 Handler系列—Message对象的获取机制,GitHub已标星16k

可以看到,如何sPool对象为null,则new一个Message对象;如果不为空,就把sPool的第一个节点对象返回,然后把sPool指向下一个节点。那么sPool到底是什么呢???其实他就是一个Message链表,每个Message里都有一个next字段,类型也是Message对象。到这里也看到了Message对象的获取方式分为两种情况**总结:**如果sPool为null,则直接通过new来获取 如果sPool不为null,则将sPool的第一个节点返回,然后把sP...

2021-09-06 20:20:25 125

原创 Android:年过35岁的程序员还有出路吗,rxjava面试题

▽▽▽▽▽通过上面网友们的分析,其实大家也看的出一个情况,领导选择用你的标准之一,一定是能力的大小,如果技术过硬,年龄从来不会是第一标准。还记得你第一次写代码的时候吗?那种难以抗拒的兴奋和激动。你说你不如年轻人敏捷了,不如他们聪明了,都不是!只是因为他们就和当年的你一样,面对机会、学习、哪怕在这个过程中犯错,都毫不犹豫,前赴后继。靠经验跟年轻人抢饭碗是不可能一直行得通的,要对新技术有理解有思考,再结合经验,那才是老程序员的价值。所以,静下心来,找回你当年的感觉吧。面试了一个 46 岁程序员,总

2021-09-05 19:13:24 356

原创 Android:你要了解的自定义View基础概念都在这里了,经典实战教程

Top:子View上边界到父view上边界的距离Left:子View左边界到父view左边界的距离Bottom:子View下边距到父View上边界的距离Right:子View右边界到父view左边界的距离[外链图片转存失败(img-IHer9Gz3-1569313524239)(https://upload-images.jianshu.io/upload_images/15679108-8d5195d1f4bfa212?imageMogr2/auto-orient/strip%..

2021-09-05 19:11:54 138

原创 Android高级架构师系统学习——Android-音频可视化,程序员进阶知识点

系统 Visualizer 提供了方便的 api 来获取播放音频的波形或 FFT 数据,一般使用方式是:用 audio session ID 创建 Visualizer对象,传 0 可获取混音后的可视化数据,传特定播放器或 AudioTrack 所使用的 audio session 的 ID,可获取它们所播放音频的可视化数据调 setCaptureSize 方法设置每次获取的数据大小,调 setDataCaptureLis

2021-09-05 19:10:22 296

原创 Android高级开发面试题目,再也不用担心不能升职加薪了。,阿里出品

调用PhoneWindow中的setContentView方法创建ParentView: 作为ViewGroup的子类,实际是创建的DecorView(作为FramLayout的子类)将指定的R.layout.xxx进行填充 通过布局填充器进行填充【其中的parent指的就是DecorView】调用到ViewGroup调用ViewGroup的removeAllView(),先将所有的view移除掉添加新的view:addView()3、Fragment 特点Frag..

2021-09-05 19:07:05 127

原创 Android高工面试:如果需要实现一个-路由,附面试答案

在要跳转的地方Router.getInstance().build("activity/main").navigation(this);如果想在多 moule 中使用第一步,使用 @Modules({"app", "sdk"}) 注明总共有多少个 moudle,并分别在 moudle 中注明当前 moudle 的 名字,使用 @Module("") 注解。注意 @Modules({“app”, “sdk”}) 要与 @Module("") 一一对应。在主 moudle 中,@Modules({"

2021-09-05 19:05:22 220

原创 GitHub 上 10 个顶级开源项目,互联网行业“中年”危机

Github 地址:https://github.com/996icu/996.ICUstar: 248 k介绍: 996.ICU 是指 “工作 996, 生病 ICU” 。这是中国程序员之间的一种自嘲说法,意思是如果按照 996 的模式工作,那以后就得进 ICU 了。这个项目最早是某个中国程序员发起的,然后就火遍全网,甚至火到了全世界很多其他国家,其网站被翻译成了多种语言。网站地址:https://996.icu。3. vueGithub 地址:https://github...

2021-09-03 18:49:26 491

原创 Flutter:实战技巧,腾讯T3大牛手把手教你

child: new Container(),);技巧4:实现页面异步加载============Flutter 可以通过 `FutureBuilder` 或者 `StreamBuilder` 简单实现页面的异步加载。FutureBuilder 和 StreamBuilder 是通过 Future 和 Stream 获取数据后实现页面布局。如下代码所示:import ‘package:flutter/material....

2021-09-03 18:46:16 133

原创 Flutter(七,安卓开发新手入门教程

home: MyHomePage(title: 'Flutter Demo Home Page'),);###一.自定义主题知道怎么设定主题了,我们再来看如何自定义主题。通过copyWith原始主题样式之后,修改一些需要自定义的颜色到主题里。ThemeData _buildDarkTheme() {const Color primaryColor = Color(0xFF0175c2);final ThemeData base = new ThemeData.dark();retur...

2021-09-03 18:44:39 207

原创 Flutter自定义Appbar搜索框,34岁程序员年薪50w

import ‘package:flutter_demo_001/ui.theme/theme.dart’;import ‘package:flutter_demo_001/utils/padding.dart’;class SearchAppBar extends StatefulWidget {SearchAppBar({Key? key, required this.hintLabel}) : super(key: key);final String hintLabel;@override

2021-09-03 18:43:08 283

原创 Flutter自定义Appbar搜索框(1),腾讯T3大牛手把手教你

}}class SearchAppBarState extends State {late FocusNode _focusNode;///默认不展示控件bool _offstage = true;///监听TextField内容变化final TextEditingController _textEditingController = TextEditingController();@overridevoid initState() {super.initState();_focus

2021-09-03 18:41:20 450

原创 Kotlin 集合函数锦集,2021程序员进阶宝典

postfix = "的排名", limit = nameCollection.size, truncated = "等 ")println(message)//在古代,根据人口数量和宗族的影响力,有刘一 陈二 张三 李四 王五 赵六 孙七 周八 吴九 郑十的排名}#### reduce函数将集合转换为单个结果如果希望将给定集合转换为单个结果,则可以使用reduce函数。例如,你可以计算列表中所有元素的和://将集合转换为单个结果fun transform...

2021-09-02 18:36:57 495

原创 Kotlin 单例模式的常用写法,Android开发工程师面试题

class Singleton private constructor() {companion object { private var instance: Singleton? = null get() { if (field == null) field = Singleton() return field } @Synchronized fun instance(): Singleton {

2021-09-02 18:35:26 160

原创 kotlin 协变、逆变 - 猫和鱼的故事,搞懂这些直接来阿里入职

List<? extends Animal> animals1 = fishList;List<? extends Animal> animals2 = catList;animals2.add(new Fish()); // 报错Animal animal1 = animals1.get(0);Animal animal2 = animals2.get(0);animal1.eat();animal2.eat();}//输出结果:我是鱼, 我最.

2021-09-02 18:33:37 116

原创 Kotlin Vocabulary _ Kotlin 内建代理,【工作感悟】

<!-- Copyright 2020 Google LLC.SPDX-License-Identifier: Apache-2.0 --> this.fullname$delegate = LazyKt.lazy((Function0)(new Function0() { @NotNull public final String invoke() { return name + lastname; } })); 让我们来观察 lazy() 的源

2021-09-02 18:31:48 220

原创 JVM-理解字节码执行引擎,金九银十Android热点知识

Person person = new Person(); person.say();}}##### javap -v Person 输出public class jvm.Personminor version: 0major version: 52flags: ACC_PUBLIC, ACC_SUPERConstant pool:#1 = Methodref #18.#33 // java/lang/Object.""????)V#2..

2021-09-02 18:30:14 89

原创 JVM 面试 4 连炮,你能顶住么?,阿里架构师深入讲解Android开发

2、OOM可能发生在哪些区域上?根据javadoc的描述,OOM是指JVM的内存不够用了,同时垃圾收集器也无法提供更多的内存。从描述中可以看出,在JVM抛出OutOfMemoryError之前,垃圾收集器一般会出马先尝试回收内存。从上面分析的Java数据区来看,除了程序计数器不会发生OOM外,哪些区域会发生OOM的情况呢?第一,堆内存。堆内存不足是最常见的发送OOM的原因之一,如果在堆中没有内存完成对象实例的分配,并且堆无法再扩展时,将抛出OutOfMemoryError异常。当前主流的JVM可以通过

2021-09-02 18:28:45 86

原创 2020火爆来袭,GitHub已标星16k

【2.插件化能解决的问题及与组件化的区别】【3.常用插件化框架对比】。。。【13.手写实现插件的资源加载】配套【设计思想解读开源框架】学习笔记,学习路线获取!前言CC:Component Caller,一个android组件化开发框架, 已开源,github 地址:https://github.com/luckybilly/CC本文主要讲解框架实现原理,如果只是想了解一下如何使用,可直接到 github上查看README文档首先说明一下,本文将讲述的组件化与业内的插件化(如:At

2021-09-01 10:58:15 124

原创 2020最新BAT-Android高端技术面试145题详解,已获万赞

后面根据一些小伙伴的建议,面试资料,进阶学习PDF资料,视频教程。补充并且更新了,希望对大家进阶学习有更好的帮助,谢谢目录一.图片二.网络和安全机制三.数据库四.算法五.插件化、模块化、组件化、热修复、增量更新、Gradle六.架构设计和设计模式七.性能优化八.NDK、jni、Binder、AIDL、进程通信有关九.framework层、ROM定制、Ubuntu、Linux之类的问题面试题一.图片1、图片库对比2、LRUCache原理3、图片加载原理4、自己去实现图片库,怎么

2021-09-01 10:56:56 125

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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