自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android大厂面试经验分享(OPPO,字节,华为,阿里)

前言我是从小公司跳出来的,最终入职OPPO,说实话这段时间的经历让我深深地感受到,我们为跳槽做的一些临时抱佛脚的提升跟那些大佬的沉淀比起来太渺小了。我们都知道找资料学习、刷面试题,但也许只能应付这一次的面试,后面还是会技术发愁,那些短时间背下来的东西迟早会忘掉,大家还是做好长期提升自己的准备,好好沉淀的东西最后才是属于自己的。说说当时的面试过程,我是内推获得的面试机会,很感谢当时帮我内推的兄弟,总共三轮面试,两轮技术,一轮HR面,当天面试结束。我10:10分到的公司,10:30开始面试,第一轮面试将近

2021-11-24 10:17:20 1064 12

原创 互联网寒冬,一年经验字节跳动、腾讯、美团、快手Android开发面试总结

前言我20年毕业于一所双非本科院校计算机专业,之前在小米实习和工作了一年,一直都是Android开发。年中的时候因为个人原因打算离开小米到外面看看,投了很多简历,最终面试了字节跳动、腾讯、美团、快手,忧喜参半,本文对这这次面试做一个总结。字节跳动字节是一个同学内推的,也是我很想去的一个公司,整个面试流程下来体验很nice,效率很高,面试官人也很亲切。手写代码:计算View树上所有view的数量,参数ViewGroup主线程Looper一直循环查消息为何没卡主线程?RecyclerView相对

2021-12-03 13:42:40 7

原创 Rxjava 线程切换原理

前言rxjava 可以很方便的进行线程切换, 那么rxjava是如何进行线程切换的呢?阅读本文可以了解下rxjava 是如何进行线程切换的及线程切换的影响点。一个简单的代码:Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) throws Exception { L

2021-12-02 20:52:23 197

原创 回顾3年Android开发从小厂到大厂的历程

前言最近公司来了很多新鲜血液,包括我的好友圈里也有很有很多刚入职的小朋友。有人开心展示大厂offer,憧憬未来的工作生活;有人进了中规中矩的公司,用不甘心的语气说:先干着吧;也有人只能进小公司,大家的能力或者命运在这个时候展露无疑。 这也让我想到当时的我,想到了这几年的变化。平时哪有空伤春悲秋呢,也就是因为最近终于跳槽到了大厂,对于过去技术垃圾又迷茫的我突然有了很多未曾有过的反思。自学能力很重要第一份工作在一个小公司 ,很多工作内容都是硬着头皮上的。我原本以为第一份工作嘛,会给人一些学习和适应的时间

2021-11-26 09:29:28 105

原创 Binder机制的原理、使用以及源码解析

Binder很重要,几乎面试必问。Binder很缥缈,工作中感觉几乎用不到,系统第三方给我们实现完了。Binder很难,但是又不得不学,因为Binder哪都用到了,内卷时代,除了写写页面,一想研究底层的东西,Binder就是一座山立在那。小到ActivityA启动ActivityB,就用的是Binder(面试题:为啥startActivity需要用Intent 序列化然后才能传值,因为AMS(ActivityManageService)跟App是两进程)看了几篇binder博客,还是云里雾里。要么净

2021-11-25 09:57:16 909

原创 ASM字节码插桩

为什么进行全埋点?以往手动形式埋点以往的埋点方式都是人为进行定义名称和选择性埋点,版本迭代多次后造成埋点数量持续增加。在各个代码块进行基本相同的代码调用,侵入性高,如果后期进行更换SDK,有可能会进行大量改动手动进行埋点可能导致认为疏忽造成的埋点丢失只能根据埋点进行用户行为回溯,有些细节和流程无法衔接上,无法还原用户使用场景每个版本迭代都需要PM,RD进行埋点梳理,时间进行消耗全埋点无法在每个按钮,页面加载调用代码,只需要在应用初始化加载即可用户行为触发自动上报,无需PM思考应该在哪

2021-11-23 09:24:42 18

原创 Handler面试知识点看这篇就够了

Java 中的实现ThreadLocalMessageQueue异步消息和消息屏障MessageQueue.postSyncBarrier消息屏障的消费异步消息的作用LooperHandlerMessageQueue.IdleHandlerNative的实现MessageQueueLooper#创建epoll事件epollnativePollOncenativeWakepostDelay的实现HandlerThreadIntentService.

2021-11-22 10:59:24 802

原创 Android FrameWork面试点集合

1. 怎么跨进程传递大图片考察点了解各种跨进程传输数据的方式及各自优缺点了解TransactionTooLargeException的触发原因和底层机制了解Bitmap传输底层原理跨进程传大图有哪些方案给图片保存到固定的地方,传key值(路径)给对方问题:性能差,把图片写到文件需要耗时,对方读取文件也需要耗时通过IPC的方式转发图片数据不经过文件系统,但是需要多次拷贝IPC方式传图Binder:性能好,使用方便,但是大小有限制Socket、管道:两次拷贝,也有大

2021-11-18 10:06:32 10

原创 HandlerThread 源码分析

HandlerThread 相信大家都比较熟悉了,从名字上看是一个带有Handler消息循环机制的一个线程,比一般的线程多了消息循环的机制,可以说是Handler+Thread的结合,从源码上看也是如此的设计,一般情况下如果需要子线程和主线程之间相互交互,可以用HandlerThread来设计,这比单纯的Thread要方便,而且更容易管理,因为大家都知道Thread的生命周期在一些情况下是不可控制的,比如直接new Thread().start(),这种方式在项目中是不推荐使用的,实际上Android的源码

2021-11-17 09:13:05 808

原创 Handler面试那些事:Handler切换线程的本质是什么?

Android在主线程以外访问UI,会得到一个异常。它是从ViewRootImpl类抛出的:void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( "Only the original thread that created a view hierarchy can touch its views.

2021-11-16 11:30:25 448

原创 为什么Handler会导致内存泄漏?

最近在思考关于内存泄露的问题,进而想到了关于我们最常见和熟知的Handler在Activity内导致的内存泄漏的问题,这个问题相信作为开发都是很熟悉的,但是这背后更多的细节和导致泄漏的不同的情况,可能很多人就没有那么了解和清楚了,因此这次和大家分享一下什么情况下会导致内存泄漏,以及内存泄漏背后的故事。1.Handler在什么情况下会导致内存泄漏Handler在使用过程中,什么情况会导致内存泄漏?如果大家搜索的话,一般都是会查到,Handler持有了Activity的引用,导致Activity不能正确被回

2021-11-15 13:37:52 1730

原创 Android组件化之如何实现模块生命周期自动管理

前言每个应用在启动的时候都会初始化一个application类,我们可以在这个类中做一些初始化的操作,例如第三方sdk的初始化,在实施组件化工程后,不同的业务模块也需要在应用启动的时候做一些初始化的操作,这个就涉及到了模块的生命周期问题,在应用启动时候,各个模块可以拿到application,在Application内部的生命周期方法被调用的时候,各个模块也有相应的生命周期方法被调用初步实现1.抽取一个IModuleLifeCycle类代码如下public interface IModuleLif

2021-11-12 17:30:11 677

原创 Android Handler运行流程源码解析

Handler概要Handler用于线程间的消息传递,它可以将一个线程中的任务切换到另一个线程执行。切换的目标线程与Handler内部持有的Looper所在线程一致。若初始化Handler时未手动设置Looper,Handler会通过ThreadLocal获取并持有当前(初始化Handler时)线程的Looper。当Handler发送一条消息后,这条消息会进入目标线程的MessageQueue,目标线程的Looper扫描并且取出消息,最终由Handler执行这条消息。构造器Handler的构造器大

2021-11-11 16:56:36 10

原创 安卓中Serializable 和Parcelable的原理和使用

一、序列化的目的:(1)永久的保存对象,将对象数据保存在文件、磁盘或者数据库中 。(2)通过序列化操作将对象数据在网络上进行传输 。(3)将对象序列化之后在进程间进行传输。(3)在安卓中使用 Intent 进行传输时候,数据类型较为复杂的需要进行序列化操作 。二、两者区别:(1). 在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。(2). Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。

2021-11-10 20:30:35 4

原创 阿里又出“宝妈级”之作,这份SpringBoot应用到源码手册,全是精华

我自己有着多家大型互联网公司的从业经验,日常也经常面试来自不同公司的Java 工程师,在面试过程中,我对开发人员的要求是:掌握 Spring Boot 已经不是一个加分项,而是一个必备技能。可以说,深入了解并掌握 Spring Boot 是你成功进入大公司、斩获高薪Offer的一个重要砝码。虽然 Spring Boot 为我们提供了开发友好性,** 但很多人学习、应用 Spring Boot 的过程并不容易,**我在实际开发过程中就曾亲身经历很多问题和挑战,而据我了解这也是大部分同学共同面对的境况:看上

2021-05-13 21:45:05 29

原创 不想搞Java了,4年经验去面试10分钟结束,现在Java面试为何这么难

作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。如果你参加过一些大厂面试,肯定会遇到一些这样的问题:1、看你项目都用的框架,熟悉Spring、mybatis等框架实现原理吗?2、 看你上面有接触过消息中间件,负载均衡、RPC框架等技术吗,MySQL分库分表有做过吗?3、 分布式架构设计,Redis分布式锁呢?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术

2021-05-07 16:21:33 67

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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