自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java集合各实现类的底层实现原理,2021阿里+头条+腾讯等大厂Android笔试题分享

Hashtable实现原理要点概括参考文献:http://blog.csdn.net/zheng0518/article/details/42199477Hashtable是基于哈希表的Map接口的同步实现,不允许使用null值和null键底层使用数组实现,数组中每一项是个单链表,即数组和链表的结合体Hashtable在底层将key-value当成一个整体进行处理,这个整体就是一个Entry对象。Hashtable底层采用一个Entry[]数组来保存所有的key-value对,当需要存

2022-03-20 18:14:06 385

原创 2020阿里巴巴,字节跳动,京东,30岁以后搞Android已经没有前途

第一种:在Activity中调用getFragmentManager()得到fragmentManager,,调用findFragmentByTag(tag)或者通过findFragmentById(id),例如:FragmentManager fragmentManager = getFragmentManager();Fragment fragment = fragmentManager.findFragmentByTag(tag);第二种:通过回调的方式,定义一个接口(可以在Fragment

2022-03-20 12:35:53 322

原创 2020跳槽大厂,11道Android性能优化面试题你会个?,android程序设计基础

* 首先我们要清楚图片的三级缓存是如何的如果内存足够时不回收。内存不够时就回收软引用对象2、内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?参考回答:不考虑屏幕比的话:占用内存=500 * 500 * 4 = 1000000B ≈ 0.95MB考虑屏幕比的的话:占用内存= 宽度像素 x (inTargetDensity / inDensity) x 高度像素 x (inTargetDensity / inDensity)x 一个像素所占的内存字节大小.

2022-03-20 12:34:16 309

原创 2020腾讯Android岗初级到高级面试真题收录解析,七年老Android掏心分享

12、Java的异常体系13、JVM的回收算法是怎样的14、说一下泛型原理,并举例说明15、能说说HashMap常用操作的底层实现原理吗?16、垃圾回收机制和调用 System.gc()的区别?17、说一下你所了解的设计模式有哪些18、说下java中的线程创建方式,线程池的工作原理。…二、Android基础题1、说下四大组件生命周期?2、说下onSaveInstanceState()方法的作用 ? 何时会被调用?3、说下 Activity的四种启动模式、应用场景 ?4、谈谈Activ

2022-03-20 12:32:40 3599

原创 2020年Android发展趋势年度总结,一线大厂架构师都推荐的Android零基础大全

从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定java语法基础,都很容易应聘上Android开发的岗位,因为那时候国内Android开发的需求刚刚起步,从事Android开发的人员很少,到2011-2012年,只要有一年左右的Android开发经验,那时候在一线城市很容易拿到10K的起步薪资,那时候市场Android开发的市场空缺大概有30万左右。0202年过.

2022-03-20 12:31:03 148

原创 2020Android开发者学习路线(快速篇),29岁vivo员工吐槽

哪些情况会导致OOM?如何监测内存泄露?有哪些工具?用leak工具监测内存泄露的原理是什么?小米(一二面)一面问的很详细,二面也很深入,面试官态度也超好~ThreadLocal的理解HashMap HashSet HashTable的区别?如何让HashMap可以线程安全?Android对HashMap做了优化后推出的新的容器类是什么?Java多线程之间如何通信线程池的实现机制RxJava中map和flatmap操作符的区别及底层实现..

2022-03-20 12:26:13 120

原创 2014年博客之星-小巫的无耻拉票帖,android基础开发入门

各位亲爱的博友们,打开这篇博客说明你已经进入小巫的拉票环节中,我看很多博主给自己拉票都一笔带过留下而过链接就走了,说个实在话CSDN里有很多牛人高手,写的博客也非常不错,小巫有时候也会去观摩学习,但是呢,小巫的博客跟大部分人有不一样的地方,给你们一个机会说说有什么不一样吧,如果长期关注小巫的博客的朋友们可能会发现小巫的大部分博文都是功能性的,并没有写些比较深入的博文,这里说一句,不是小巫写不了,只是不太愿意写,目前小巫的博客面向人群是移动开发入门和初中级开发者,目前一般以一些实用性、实战型的博文来跟大家分享

2022-03-20 12:24:35 110

原创 2020新一波跳槽季过后,Android程序员精选,大厂,移动智能终端开发技术

消息队列在 android 中对应 MessageQueue 这个类,顾名思义,消息队列中存放了大量的消 息(Message)2.什么是消息消息(Message)代表一个行为(what)或者一串动作(Runnable),有两处会用到 Message: Handler 和 Messenger3.什么是 Handler 和 MessengerHandler 大家都知道,主要用来在线程中发消息通知 ui 线程更新 ui。Messenger 可以翻译为 信使,可以实现进程间通信(IPC),Messenger

2022-03-19 19:31:26 120

原创 2020作为一个资深的Android开发者需要掌握哪些技能?,高级android开发强化实战pdf

负责公司智能硬件设备的基础软件平台的架构工作;负责跨MTK、高通平台的Android BSP架构的设计;负责业务端APP的架构设计、性能调优、疑难问题的分析和解决工作;负责Android平台新技术的研究,构建高效率、高性能、可扩展的组件,完善开发框架。技能要求:深度理解Android平台架构、主要组成和工作模式;有linux内核、framework和jni、虚拟机、安全逆向等底层技术经验;深入理解设计模式,能够设计出高內聚,低耦合的系统框架,提升开发效率;具有比较强的客户端系统架构设计.

2022-03-19 19:29:47 194

原创 2020Android春招面试经历(已拿今日头条28Koffer),连续四年百度Android岗必问面试题

后期阶段有了上面两个阶段的准备后,前两轮的基础面试基本没什么问题了。如果目标岗位是资深开发或者架构师的话,一般还会问到更底层原理和更抽象的宏观层面问题。底层原理方面:比如虚拟机的内存区域和gc流程、tcp的流量和拥塞控制、https建立连接的交互流程等,这里可以去找对应的技术文章熟悉了解。宏观层面:一般是架构模式(MVC、MVP、MVVM)、开发模式(模块化、组件化、模块组件化)以及设计模式相关问题,要能熟练掌握到灵活运用的层度,并总结出它们之间的异同特点。另一大块就是算法了,某些一线公司比较喜欢

2022-03-19 19:28:10 226

原创 2020-更新---腾讯-Android-面试-(已拿到月薪22K-offer),android应用开发实战第二版pdf

可以从1.如何发现问题,2.怎么解决问题,3.解决效果对比,这几个方面去描述。举个简单例子——UI优化,可以从 UI出现什么问题(卡顿不流畅),怎么查找问题(手机开发者权限>GPU过度绘制 发现层级问题,TraceView CPU使用情况分析),怎么解决问题(降低层级、自定义View绘图出现问题等),解决问题后性能再次对比。二、技能储备(一)架构师必备Java基础(二)设计思想解读开源框架(三)360°全方位性能优化(四)Android框架体系架构(五)NDK模块开发(六)F

2022-03-19 19:24:30 1320

原创 2020 字节跳动,网易,华为,Android技术功底不够如何去面试

2.然后应该是想看看我基本界面编辑会不会,然后问了常用的布局有哪些?这个问题很简单嘛,自己把FrameLayout,LinearLayout,RelativeLayout讲了一通,然后又讲了Coordinatorlayout和ConstraintLayout。3.然后他问了开发是使用什么工具,怎样调试程序,和解决bug的。自己把日常的做法讲了一遍。包括各种断点的使用方法。内存泄漏的检测方法。内存抖动如果查找到原因和如何使用TraceView来进行性能调优的。然后又问了一些具体的操作方法,估计是想看看是不

2022-03-19 19:22:05 133

原创 20190619-James-快速鸟瞰并发编程, 呕心沥血整理的架构技术(第2篇)

AtomicInteger将值存储在volatile字段中,因此volatile变量的相同规则适用于此处。class JamesAtomics {private final AtomicInteger state = new AtomicInteger();void initializeState(int state) {this.state.compareAndSet(0, state);}int getState() {return state.get();}}final域, .

2022-03-19 19:18:11 2745

原创 2017下半年掘金日报优质文章合集:Android篇,靠着这份190页的面试资料

在掘金微信群里的小伙伴应该都有看每日小报吧!这是小饼每天为大家精选的优质掘金文章(大家都很爱学习,我已经跟不上了QAQ…)小饼已经被N位群友连续几周催着出小报合集了,2017年马上就要结束了,拖延症绝不拖到明年!这就给大家整理出来——掘金2017下半年优质小报合集。)性能优化React Native拆包及热更新方案有效减少 Android 应用的方法数Android端应用秒开优化体验Android性能优化-网络优化Android自定义View——从零开始实现书籍翻页效果(.

2022-03-19 19:15:43 1759

原创 AGP 升级问题续集来了,不看血亏,真是骚,android内录音频

public static int test_layout; //只有定义,没再随机赋值了,依旧保持非 finalprivate id() {}}…public static final class string {public static int lib_test_string;private string() {}}}app 主 module 的产物分析接着我们再来看看 app 主模块下的情况,编译后主 module 的产物结构图解:上图中先看看build/intermed

2022-03-17 20:36:30 544

原创 Android之Rxjava2-源码解析,Android从入门到精通

//判空ObjectHelper.requireNonNull(mapper, “mapper is null”);//hook,就相当于new SingleMapreturn RxJavaPlugins.onAssembly(new SingleMap<T, R>(this, mapper));}可以看到,这就相当于new SingleMap(this,mapper);返回值依然是Single我们看SingleMap的源码public final class SingleMap&

2022-03-02 20:31:51 316

原创 webview最全面详解(一)了解官方文档,androidstudio开发实战pdf

WebView是手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装的一个组件。没有提供地址栏和导航栏,WebView只是单纯的展示一个网页界面。在开发中经常都会用到。显示和渲染Web页面直接使用html文件(网络上或本地assets中)作布局可和JavaScript交互调用WebView控件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行强大的处理。本文翻译官方文档认识和了解webview。翻译–官方文档 (自备梯子)A V

2022-03-01 22:36:36 2973

原创 Synchronize和ReentrantLock区别,建议细读

ReentrantLock是java.util.concurrent包下提供的一套互斥锁,相比Synchronized,ReentrantLock类提供了一些高级功能,主要有以下3项:1.等待可中断,持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待,这相当于Synchronized来说可以避免出现死锁的情况。2.公平锁,多个线程等待同一个锁时,必须按照申请锁的时间顺序获得锁,Synchronized锁非公平锁,ReentrantLock默认的构造函数是创建的非公平锁,可以通过参数true设.

2022-03-01 22:35:11 1228

原创 SO动态链接库文件的编译和使用,flutter极光推送

链接库分为 静态链接库 和 动态链接库。静态链接库(a库):在 编译 的时候,库函数中函数的定义已经编译到源文件中,所以,静态链接库在编译完之后存不存在无关紧要。动态链接库(so库):在 编译 的时候,库函数中函数的定义没有编译到源文件中,只是指定了库文件的路径,所以,编译之后源文件的执行还是依赖于so库文件。静态链接库和动态链接库的区别在于,主程序在运行前,静态链接库的链接固定写入在程序中,而动态链接库则是在每次程序运行再加载链接。如果对C语言编译 四步走 不熟悉的同学可以参考这篇文章 :微观的C

2022-03-01 22:33:46 704

原创 RPM实用命令,准备Android面试

第一条命令只生成RPM包,第二条命令还会生成SRPM包,第三条命令将SRPM包生成RPM包,第四条是生成未打包的二进制文件。先记住一个查看SPEC文件宏定义值的命令,然后再去记和签名相关的命令。另外,这些宏都定义在/usr/lib/rpm/macros文件中。注: 该文件~/.rpmmacros会重写系统定义的macros文件。rpm2cpio命令rpm2cpio httpd-2.2.3-63.el5.centos.x86_64.rpm > httpd.cpiocpio -idmv <

2022-03-01 22:30:56 197

原创 Retrofit是如何创建的?为什么要用动态代理,移动跨平台开发框架

private volatile static API aPI = null;public static API createAPI() {if (aPI == null) {synchronized (RetrofitService.class) {if (aPI == null) {initOkHttpClient();aPI = new Retrofit.Builder().client(mOkHttpClient).baseUrl(“服务器地址”).addConverterFact

2022-03-01 22:29:31 201

原创 QMUI框架简介,送大厂面经一份

左下角弧形按钮<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButtonandroid:layout_width=“60dp”android:layout_height=“60dp”android:layout_marginTop=“64dp”android:text=“南”app:qmui_radiusBottomLeft=“80dp”/>右下角弧形按钮<com.qmuiteam.qmui.widget.roundw.

2022-03-01 22:25:15 1493

原创 OkHttp3源码详解之-okhttp连接池复用机制(一),flutter蓝牙插件

遍历connections缓存列表,当某个连接计数的次数小于限制的大小以及request的地址和缓存列表中此连接的地址完全匹配。则直接复用缓存列表中的connection作为request的连接。streamAllocation.allocations是个对象计数器,其本质是一个 List<Reference> 存放在RealConnection连接对象中用于记录Connection的活跃情况。连接池中Connection的缓存比较简单,就是利用一个双端列表,配合CRD等操作。那么conne

2022-03-01 22:23:49 295

原创 Kotlin协程中的Flow,android开发文档中文版

Log.e(TAG, “onStart:${Thread.currentThread()}”)showToast(“开始”)}.onCompletion {Log.e(TAG, “onCompletion:${Thread.currentThread()}”)showToast(“结束”)}.catch {Log.e(TAG, “catch:${Thread.currentThread()}”)showToast(“异常”)}.collect {Log.e(TAG, “collect

2022-02-17 22:21:56 132

原创 RxJava2,移动互联网app开发入门

} catch (Throwable ex) {Exceptions.throwIfFatal(ex);parent.onError(ex);}}…省略部分代码}根据代码我们清楚的看到这个类复写了父类Observable的***subscribeActual()***方法,做了自己实现,实现内容我们下面在做分析。到这一步我们可以知道,Observable.create()方法其实就是返回了一个ObservableCreate对象,对象内部通过一个成员变量source保存我们传入的Observ

2022-02-16 18:03:06 103

原创 RxJava2+Retrofit2+RxLifecycle3,android开发模拟器

findViewById(R.id.btnNBA).setOnClickListener(v -> {NbaService.getInstance().getNBAInfo(“6949e822e6844ae6453fca0cf83379d3”).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).compose(this.bindToLifecycle()).subscribe(n

2022-02-16 18:01:41 172

原创 Retrofit2 & RxJava2实现单文件和多文件上传,flutter面试题

FileUploadObserver fileUploadObserver) {create(UploadFileApi.class).uploadFile(url, MultipartBuilder.filesToMultipartBody(files,fileUploadObserver)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(fileUploadObserver);

2022-02-16 18:00:16 725

原创 RecyclerView实现吸顶效果项目实战(一),kotlin开发网站

if (linearLayoutManager.getOrientation() == LinearLayoutManager.VERTICAL) {if (parent.getChildAdapterPosition(view) !=0) {outRect.top =topBottom;}outRect.left =leftRight;}else {if (parent.getChildAdapterPosition(view) !=0) {outRect.left =leftRight;

2022-02-16 17:58:50 139

原创 RecyclerView使用 及 滑动时加载图片优化方案,GitHub上标星13k的《Android面试突击版》

setContentView(R.layout.my_activity);mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);// improve performance if you know that changes in content do not change the size of the RecyclerView//如果确定每个item的内容不会改变RecyclerView的大小,设置这个选项可以提高性能

2022-02-16 17:57:25 305

原创 React,移动设备开发图书

//控制组件更新的“阀门”shouldComponentUpdate() {console.log(‘Count—shouldComponentUpdate’);return true}//组件将要更新的钩子componentWillUpdate() {console.log(‘Count—componentWillUpdate’);}//组件更新完毕的钩子componentDidUpdate() {console.log(‘Count—componentDidUpdate’);}

2022-02-16 17:54:35 66

原创 QMUI框架简介,android开发游戏

效果:对话框对话框的使用,在demo里写不是很清楚,我拿出来做了一个小例子dialog.xml布局文件是5个按钮,分别对应五种不同的对话框类型:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_parent”android:layout

2022-02-16 17:53:10 4365

原创 Proguard的介绍,Android插件化、模块化、组件化、热修复、增量更新、Gradle

1). 什么是压缩:Java 源代码(.java文件)通常被编译为字节码(.class文件)。而完整的程序或程序库通常被压缩和发布成Java文档(.jar文件)。字节码比 Java源文件更简洁,但是它仍然包含大量的无用代码,尤其它是一个程序库的时候。ProGuard的压缩程序操作能分析字节码,并删除无用的类、字段和方法。程序只保留功能上的等价,包括异常堆栈描述所需要的信息。2). 什么是混淆:通常情况下,编译后的字节码仍然包含了大量的调试信息:源文件名,行号,字段名,方法名,参数名,变量名等

2022-02-16 17:51:45 2004

原创 Poppuwindow的简单使用,2021Android架构面试指南

android:gravity=“center”android:padding=“10dp”android:text=“相册” /><Viewandroid:layout_width=“match_parent”android:layout_height=“1dp”android:background="@color/gray" /><TextViewandroid:layout_width=“match_parent”android:layout_height=“

2022-02-16 17:50:20 400

原创 mysql通过cmd命令行操作数据库,flutter真机调试找不到image

以管理员身份运行cmd命令行  →  输入 net start mysql  → 回车停止服务使用命令:net stop mysql三、连接MYSQL=========格式:mysql -h主机地址 -u用户名 -p用户密码-h主机地址可以省略不写示例:假设用户名为root 密码为123456mysql -hlocalhost -uroot -p123456mysql -uroot -p123456退出MYSQL命令: exit (回车)四、修改用

2022-02-15 18:01:56 120

原创 MVC MVP与MVVM对比分析,源码解析

Model-View-Controller,模型-视图-控制器,是一种典型的三层软件体系架构,在这种分层的设计思想下,软件展示界面与逻辑分离,可以极大地提高代码的可读性与可维护性。M:model, 模型,负责数据处理,包括网络数据和持久化数据的获取、加工等,在Android中典型的实现一般为数据结构的定义类;V:view,视图,负责界面绘制、展示数据以及用户交互等,在Android中典型的实现一般是activity和fragment等;C:controler,控制器,负责处理业务逻辑等。在标准的

2022-02-15 17:59:06 1256

原创 Lifecycle 解析,靠这份Android知识点PDF成功跳槽

Events:从框架和 Lifecycle 类分派的生命周期事件。这些事件映射到 Activity 和 Fragment 中的回调事件。States:由 Lifecycle 对象跟踪的组件的当前状态。通过注解的方式举个简单例子:class MyLifecycleObserver : LifecycleObserver {@OnLifecycleEvent(Lifecycle.Event.ON_START)fun connect() {Log.e(TAG, “connect”)}@OnL.

2022-02-15 17:54:51 187

原创 Leetcode面T10(1-9)数组,字节跳动面试分享

稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。示例1:输入: words = [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s = “ta”输出:-1说明: 不存在返回-1。示例2:输入:words = [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”],.

2022-02-15 17:53:26 792

原创 【面试专题】2021年大厂 Handler 面试题集合,腾讯+字节+阿里面经真题汇总

如果想要在子线程中new Handler要做些什么准备?简单来说就是在子线程里面初始化Looper:prepare后loop,然后构造handler的时候传入对应的子线程Looper对象。Thread thread = new Thread(new Runnable() {Looper looper;@Overridepublic void run() {// Log.d(TAG, "click2: " + Thread.currentThread().getName());Looper.p

2022-02-05 15:45:42 1637

原创 【面经】程序员工作三年月薪9K,android组件化面试

8.synchronized 的作用9.你知道哪些设计模式10.Android 进程通信的方法11.那你能说一下 Intent 是怎么进程通信的12.内存泄漏有哪几种情况13.有什么要问三面(50mins):0、自我介绍1、算法,跳棋盘2、浏览器输入URL到渲染全过程3、Http请求报文响应报文4、http2.0有哪些优化5、用过哪些网络库6、OkHttp的Intercepter7、Android持久化方式8、Java线程同步的数据结构9、反问总结:面的时候很紧张,因为这是

2022-02-05 15:44:17 162

原创 【自学Flutter】7,腾讯T2手把手教你

mainAxisAlignment: MainAxisAlignment.center,children: [TextFormField(autofocus: true,decoration: InputDecoration(prefixIcon:Icon(Icons.perm_identity),labelText: “用户名”,hintText: “请输入用户名”,),validator: (value){return value.trim().length > 0 ? nul

2022-02-05 15:40:01 150

空空如也

空空如也

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

TA关注的人

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