- 博客(83)
- 收藏
- 关注
原创 2020上半年百度Android岗(初级到高级)面试真题全收录
不设置 Activity 的 android:configChanges 时、设置 Activity 的 android:configChanges=“orientation”设置 Activity 的 android:configChanges="orientaion|keyboardHidden"时切换横屏和竖屏都会重新调用>一次生命周期。*设置 Activity 的 android:configChanges="orientation|screenSize"时不会重新调用 Activit..
2022-05-07 10:53:22
471
原创 10老Android开发谈:Android-Hook-机制连简单实战都不会凭什么拿高薪?
执行以下代码,将会看到当我们点击该按钮的时候,会弹出 toast “Hook Click Listener”mBtn1 = (Button) findViewById(R.id.btn_1);mBtn1.setOnClickListener(this);try {HookHelper.hookOnClickListener(mBtn1);} catch (Exception e) {e.printStackTrace();}简单案例二: HooK Notification发送消息到通知栏的
2022-05-07 10:42:45
419
原创 Android Architecture Components 之 Room 篇
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNfFSo5n-1651804572351)(https://user-gold-cdn.xitu.io/2018/4/16/162cdce4ffd755e4?imageView2/0/w/1280/h/960/ignore-error/1)]@Entity(tableName = “products”)public class ProductEntity {@PrimaryKeyprivate int id;priv
2022-05-06 10:36:31
404
原创 Android ActivityManager常用方法
/**获取最前端应用的包名PERMISSION_REQUIRED:NULLRESULT:23 com.demo.activitymanager@param context@return*/private String getTopAppPackage(Context context) {// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)ActivityManager activityM
2022-05-06 10:34:20
1661
原创 Android - singleTask启动模式详解
现有三个activity,MainActivity, SingleTaskActivity, SingleTaskAffinityActivity, 其中SingleTaskActivity 和SingleTaskAffinityActivity 的启动模式都是singleTask, 但是SingleTaskAffinityActivity设置了它的taskAffinity为另一个任务栈. Manifest中声明代码如下<application…> 2.1 启动singl
2022-05-06 10:30:16
1816
原创 Activity横竖屏切换的那些事
<ac 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 tion android:name=“android.intent.action.MAIN”/>这样横竖屏切换的时候不会重新创建Activity第二种setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);setRequestedOrientation(ActivityIn.
2022-05-06 10:28:41
869
原创 2021Android性能优化总结最新、最全面、最完整的资料
10、微信读书(Android)阅读引擎卡顿监控测试[](()响应速度启动时间和响应时间是App带给用户的最直观的性能体验。因此,无论是何种类型的App,我们都不能忽视响应时间的测试。除了稳定性以外,对于性能纬度来说,哪个方面的性能是最重要的呢?毫无疑问,就是应用的启动速度。1、 Android App 启动优化全记录2、Android 中如何计算 App 的启动时间?3、应用启动时间4、Android 冷启动优化除了老三样还有哪些新招?5、支付宝 App 构建优化解析.
2022-05-06 10:23:33
683
1
原创 2020最新BAT Android高端技术面试145题详解
13.子串包含问题(KMP 算法)写代码实现14一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、.空间复杂度。手写算法15.万亿级别的两个URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)16.百度POI中如何试下查找最近的商家功能(提示:坐标镜像+R树)。17.两个不重复的数组集合中,求共同的元素。18.两个不重复的数组集合中,这两个集合都是海量数据,内存中放不下,怎么
2022-05-06 10:21:15
316
1
原创 2020华为Android面试真题解析
6 Java 并发知识进阶(下) 2296.1. 线程池 2296.2. Atomic 原子类 2326.3. AQS 236第二章、Android知识点汇总 2422.1 Activity 2422.2 Fragment 2492.3 Service 2522.4 BroadcastReceiver 2572.5 ContentProvider 2582.6 数据存储 2612.7 View 2612.8 进程 2762.9 Parcelable 接口 2812.10 IPC
2022-05-06 10:17:24
506
原创 2020Android 高级面试题总结(附答案解析)
3.一个对象的创建过程答:例如有一个Dog类:1.即使没有static,构造器其实也是静态方法,所以当首次创建Dog时或者Dog的静态域或者静态方法被访问的时候,Dog的class对象会被加载。2.在加载Dog的class的时候可能会发现其有基类,此时先暂停Dog的加载,转而去加载其基类。所以基类的static域比子类先初始化。3.载入class文件之后,会创建一个该该类的class对象,所有关于静态初始化的动作会被执行,所以静态初始化只在Class对象首次加载时进行一次。4.当使用new
2022-05-06 10:12:46
1484
原创 2020你与字节跳动只差这份笔记,我靠着这份笔记,工资从15K到了40K
HashTable实现原理TreeMap具体实现HashMap和HashTable的区别HashMap与HashSet的区别HashSet与HashMap怎么判断集合元素重复?集合Set实现Hash怎么防止碰撞ArrayList和LinkedList的区别,以及应用场景数组和链表的区别二叉树的深度优先遍历和广度优先遍历的具体实现堆的结构堆和树的区别堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)?..
2022-05-05 12:24:54
209
原创 2020Android面经:教你增加拿到BAT等大厂offer几率(-面试技巧
Java部分:不太推荐这部分只看博客,因为很多博客并不系统也不完整,推荐完整看一遍《深入理解Java虚拟机》这本书,基本上这里面涵盖了JVM相关的所有面试问题,包括内存分区、GC机制、内存模型、锁、字节码、类加载等。JDK的部分会杂一些,基本上可以归类为几种:容器(必问HashMap、CurrentHashMap、ArrayList等)、线程池(必问)、注解、同步工具、动态代理、notify/wait/sleep。这部分可以从一些JDK相关的文章中去整理一遍。Android部分:这部分必问的是Han.
2022-05-05 12:22:32
199
原创 2020Android开发前景如何?在互联网摸爬滚打12年要是打算跳槽该往哪方面发展?值得一读
在这样的情况下,由于饱和,随处都能招到初级的工程师,公司有了选择的余地,所以肯定会去选择更加优秀的,这就必然导致了我们经常说的,Android开发者已经烂大街了,其实不然,只是公司的要求变高,市场饱和,门槛变高而已。所以这就要求我们更加的精于技术,据我了解,中、高级的工程师还是很受欢迎的。一度让各大公司争抢也招不到人,造成了很多岗位空缺[](()Android学习的方向现在互联网行业,各大公司已经从争夺用户转为争夺用户时长。而小程序、快应用的崛起,也让许多 App 的增长达到瓶颈。所有人都在说,国
2022-05-05 12:20:17
185
原创 15年手持4个大厂offer的我,今天面试今日头条体无完肤
然后还有Java语言方面的线程的创建有几种,是sleep跟wait的区别,然后就是wait同步锁的原理,notify怎么打开的?多线程的通信进程间的通信 反射原理 类加载机制 arrayList底层 HashMap原理与冲突解决办法《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 算法题:两个非常大的数(long表达不了)相加,现场实现;我依稀的只记得上面这些了,这么多问题,
2022-05-05 12:18:05
1013
原创 Activity之间的数据传递方法汇总
还是用 Student 来煮栗子:要想实现 Parcelable 接口,只需要先写好 Student 类和属性,然后让 Student 实现Parcelable,再然后根据 AS 的两步提示:第一步重写 describeContents 和 writeToParcel,第二步创建 CREATOR 就大功告成了。写好的类如下:public class Student implements Parcelable{public String name;public int age;protected S
2022-05-04 09:46:35
895
原创 7年老Android收到阿里offer,跟领导提离职被怼:为年薪百万不做兄弟
可提离职的时候领导竟然说:在我们这里965,去福报厂996,真的就是你想要的吗?年薪百万能在质上改变生活吗?再说了你是我一手带出来的,为了年薪百万连兄弟都不做啦?男子听完领导的话惆怅。对此网友纷纷说出了自己的看法:有网友说:听你们老板人云亦云为了留你瞎扯,不否认福报厂有部门在996,但集团大部分业务部加班都没到这个强度。也有网友说:和他谈钱,他不给你就是在耍流氓,他丫老板财务自由了谈理想,你还没到能谈理想的经济能力吧。还有网友说:去看看,人生也算没啥遗憾了……只是可能适应不了很快就出来
2022-05-04 09:44:32
173
原创 35岁成了程序员的职场荣枯线?那是你失去了适应市场良性发展的潜能,缺一个体系发展
咱俩的思维方式不一样。你总是想拼命工作,去赚更高的工资,这想法虽然没问题,但没什么实用价值。我问你:让工资更高是多高?比现在高1万?还是高2万?你大概率会说“越高越好”,而且大多数情况下,你只是在告诫自己,要一直拼命工作。但是,**拼到什么时候是个头呢?**站在一个过来人的角度,我建议你,不管是工作还是个人成长,一定要设立清晰的目标。比如:我要在2021年6月之前,薪水至少增长50%。你或许会质疑:就今年这情况,不失业就不错了,还想涨工资?我要再提醒你一件事:有调查显示,每155个本
2022-05-04 09:41:22
214
原创 2021 年 9 月美团 Android 面试总结
2)10s内广播接收器没有处理完毕3)20s内服务没有处理完毕5.1 如何分析ANRlog+trace.txt6自定义View和ViewGroup说一下自己定义的组件就行7 事件处理分发,拦截,处理。只是View没有拦截处理8 GC算法 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】标记清除,标记整理,复制,分代收集参考:http://www.jianshu.com/p/7c708a66ff42把上..
2022-05-04 09:39:33
362
原创 2020秋招金九银十程序员离职跳槽指南,作为过来人想对你们说这几点
由于随着加入司领的增加,互联网工作的人,薪水就会低于市场,甚至落后一大截,这是很多人跳槽的根本原因。这种一般是工程师比较常见。2 干活憋屈了薪资到位了,但是每天干的活感觉不如毕业生做的,都是体力活,每天重复一样的东西, 很多人就会出现反抗情绪,觉得这种活太Low,不符合自己的“段位”。就会选择离开。初创公司,外包公司的员工一般这种心态多。3 加班多程序员这行业加班是常态,我之前也发表了一篇文章,《我喜欢编程,但讨厌这个行业》的文章,我在文章提到绝大多数人是喜欢编程的,但也很厌烦持久的加班,所以一旦时
2022-05-04 09:37:51
316
原创 2020最全Android三方框架源码面试深度解析(GitHub标星4-6K+
3、首先判断当前 AsyncTask 状态,正在运行或者已经运行过就退出4、调用 onPreExecute 执行准备工作5、由 Executor 调用 FutureTask 的 run 方法,在 WorkerRunnable 中执行了 doInBackground6、依旧是在 WorkerRunnable 中,调用 postResult,将执行结果通过 Handler 发送给主线程;调用 publishProgress 时,也是通过 Handler 将消息发送到主线程的消息队列中[AsyncTask
2022-05-04 09:35:34
267
原创 2020年“金九银十”的面试宝典
前言职场的金九银十跳槽季火热进行中,不同的是,今年的竞争比往年会更加激烈一些,形式更加严峻一些。对于求职者来说,面试是一道坎,很多人会恐惧面试,即使是工作很多年的老鸟,也可能存在面试焦虑。大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁员,但是也有很多大厂放出了“扩招”的信息,比如腾讯,比如字节跳动。危机与机遇并存。在这样的大环境下,同水平中,谁掌握的信息更多,谁准备的更充分,谁就有更有优势。所以,我根据牛客网还有小社群里Android程序员的腾讯,字节等的大厂面经整理了一下复习.
2022-05-04 09:33:48
193
原创 2020年Android开发还有出路吗?
所以,找准自己的定位及细分领域。这里我归类了如下几类:1、应用层开发,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。2、 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 嵌入式开发,不限于各种开发板子,物联网,智能家居,车联网/车载3、安全开发,不限于各种反逆向,反汇编,寻找安全漏洞4、音视频开发,不限于直播、点播、音视频通话、音视频会议,短视频等5、插件化、组件化、热修复开发,不限于自研和使用开源
2022-05-04 09:31:51
306
原创 2020Android最新大厂面试真题总结:Flutter+NDK
首先,我的相关经验仅限于技术/开发类招聘,产品、策划等方向我并不了解,不过我在腾讯和招聘过程中也认识了不少相关方向的小伙伴,如果有相关需求的同学也可以找我咨询他们的联系方式。回到正题,招聘相关的经验,我准备从时间点、准备、方向和面试经验四个方面来说。[](()2.1、时间点技术/开发类的招聘,对于本科生而言,需要重点关注两个时间点:实习生春季招聘和应届生秋季招聘,也就是大三下学期的那一年的3月开始(如我是2016届入学,也就是2019年3月左右开始的)的春季招聘,主要面向实习生招聘,实习时间一般为7—
2022-05-04 09:29:29
300
原创 2020Android不死我不倒,作为一个程序员,你觉得最大的悲哀是什么
###二、七个致命不理解1.父母不理解你天天坐办公室,有什么苦的?什么狗屁996?你爹妈年轻的时候哪里有五天工作制,全是上六天班的,以前在工厂上班,天天都站着,空调都没有,还能比你舒服不成?有的班上就不错了,别天天跟个祥林嫂似的。2.女友不理解你每天加班,加班,加班,每天都到半夜才回来,想你难得周末有空能一起出去逛个街,陪我买买东西,结果你和我说你周六还要上班,那好吧,我他马的等你到周日,我们刚准备出门,你说公司打电话给你,有个紧急的BUG要处理一下。我X,你眼里有我吗?算了,你和你的电脑和你的B.
2022-05-04 09:27:14
145
原创 Android JNI 进阶(含完整 Demo)
GetObjectArrayElement解释:在JNI 中只有基本类型和引用类型,String 是引用类型,所以遍历 String[]的时候,采用GetObjectArrayElement()来接收参数一:jobjectArray:所有的元素参数二:jsize:当前的位置ReleaseIntArrayElements解释:ReleaseIntArrayElements()方法是 C++通知 JNI 改变 java 的值,在代码中 java层 传递过来一个数组,然后修改完成后再返回给 java
2022-05-03 10:41:56
461
原创 Android DataBinding 从入门到进阶,看这一篇就够
<variablename=“goods”type=“Goods” /><variablename=“goodsHandler”type=“GoodsHandler” /><LinearLayoutandroid:layout_width=“match_parent”android:layout_height=“match_parent”android:orientation=“vertical”android:padding=“20dp”tools:c
2022-05-03 10:40:07
494
原创 Android AspectJ详解
@Aspect 用它声明一个类,表示一个需要执行的切面。@Pointcut 声明一个切点。@Before/@After/@Around/…(统称为Advice类型) 声明在切点前、后、中执行切面代码。这么说你可能有点蒙,我们换个角度解释。假设你是一个AOP框架的设计者,最先需要理清的其基本组成要素。既然需要做代码织入那是不是一定得配置代码的织入点呢?这个织入点就是Pointcut,有了织入点我们还需要指定具体织入的代码,这个代码写在哪里呢?就是写在以@Before/@After/@Around注.
2022-05-03 10:37:43
1391
1
原创 Android 12 行为变更,对应用产生的影响
方案二: Twicca App 没有使用方式一,而是检查调用者的包名是否与自身的包名相同public void onCreate(Bundle arg5) {super.onCreate(arg5);…ComponentName v0 = this.getCallingActivity();if(v0 == null) {this.finish();} else if(!jp.r246.twicca.equals(v0.getPackageName())) {this.fi...
2022-05-03 10:35:31
1004
原创 Android 12 第一次运行就报错
问题描述: Manifest合并失败:当组件定义了 < intent-filter> 时,针对 Android 12 及更高版本的应用需要为 “android:exported” 指定显式值(android:exported=“true”)。以前加上intent-filter的话,exported就默认是true。Android 12之后开始强制大家声明exported属性**。**例如:<application<activity android:name=“.ac
2022-05-03 10:33:36
736
原创 Android 12 启动画面-SplashScreen
效果:代码如下:💥 让其在屏幕上显示更长时间启动画面最长1000毫秒。如果你的广告页需要更多时间来加载数据,谷歌也提供了让其显示更长时间的方法,咱们一起来试试。效果:《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】跟上面对比明显发现时间延长了不少。代码如下:public class AdvertiseActivity extends AppCompatActivity&.
2022-05-03 10:31:33
1418
原创 Andoird中LiveEventBus的使用——用LiveEventBus替代RxBus
1)、//发送一条即时消息LiveEventBus.get(“key”).post(“value”);2)、//发送一条延时消息 3秒跳转LiveEventBus.get(“key”).postDelay(“value”,3000);2、接受消息,注册一个订阅在需要接受消息的地方LiveEventBus.get(“key”,String.class).observe(this, new Observer() {@Overridepublic void onChanged(@Nullabl
2022-05-03 10:29:59
482
原创 Andoird 自定义ViewGroup实现竖向引导界面
android:layout_height=“wrap_content”android:layout_centerInParent=“true”android:background=“#fff”android:text=“hello” /><RelativeLayoutandroid:layout_width=“fill_parent”android:layout_height=“fill_parent”android:background=“@drawable/w04” >
2022-05-03 10:28:28
147
原创 5G浪潮下,Android音视频开发将成为技术风口新潮流,人少钱多
本人有幸从一位字节跳动大佬那里薅到一份《音视频开发进阶指南》,都是字节大佬根据做音视频开发的亲身经历,总结的相关的知识点,循序渐进,剖析各个环节。刻苦钻研了两个月,后来在他的内推下我成功“挤进”了抖音音视频开发岗,非常感谢大佬的这份资料,在这里分享给大家,算是一个感恩回馈吧。[](()[《音视频开发进阶指南》](()===============================================================================================
2022-05-03 10:26:40
161
原创 C++ STL中的Binary search
cout<<b<<endl;int c=binary_search(a,a+9,40);//查找失败,返回0cout<<c<<endl;int d=lower_bound(a,a+9,10)-a;cout<<d<<endl;int e=lower_bound(a,a+9,101)-a;cout<<e<<endl;int f=upper_bound(a,a+9,10)-a;cout<<f
2022-04-29 14:46:09
132
原创 Binder相关面试总结(五)
public GroupBean() {}public String getName() {return mName;}public void setName(String name) {mName = name;}public List getMemberNameList() {return mMemberNameList;}public void setMemberNameList(List memberNameList) {mMemberNameList = memberNam
2022-04-29 14:44:19
147
原创 Apache之三种工作模式和配置性能优化
这里我们可以知道apache的模式是worker模式,然后版本是2.4.181)prefork模式Prefork MPM优点:先预派生一些子进程,然后等待连接;可以减少频繁创建和销毁进程的开销,每个子进程只有一个线程,在一个时间点内,只能处理一个请求不需要担心线程安全问题缺点:一个进程相对占用资源,消耗大量内存,不擅长处理高并发2)worker模式worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会
2022-04-29 14:42:06
382
原创 Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)
public TestButton(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {Log.i(null, “TestButton dispatchTouchEvent-- action=” + event.getAction());return super.dispatchTouchEvent(e
2022-04-29 14:38:09
135
原创 Android自动化页面测速在美团的实践
}private boolean allApiLoaded() {if (!hasApiConfig()) return true;int size = apiStatusMap.size();for (int i = 0; i < size; ++i) {if (apiStatusMap.valueAt(i) != LOADED) {return false;}}return true;}每个页面的测速对象,维护了一个请求url和其状态的映射关系 SparseIntArray
2022-04-29 14:36:09
1796
原创 Android网络收集和ping封装库
可以的StethoInterceptor大概流程整个流程我们可以简化为:发送请求时,给Chrome发了条消息,收到请求时,再给Chrome发条消息(具体怎么发的可以看NetworkEventReporterImpl的实现)两条消息通过EventID联系起来,它们的类型分别是OkHttpInspectorRequest 和 OkHttpInspectorResponse,两者分别继承自NetworkEventReporter.InspectorRequest和NetworkEventReporter..
2022-04-29 14:34:38
290
原创 Android程序员赚够100W,回老家发展,应该可以活得很好吧
事实上,很多人走了。但必须承认的是,“回家”与“回家”区别很大。有些人,“家”是农村,是县城;有些人,“家”是省会,是二三线城市。2019年年初我从京东辞职,北漂了五年。我辞职是回到了“三线城市”老家,GDP 近5000亿,全国排名50多;人均GDP 超过10万,全国排名30多。回家也并不是“买不起北京的房子”。毕竟和老婆都是独生子女,双方家里7套房,1个商铺,4辆车,供个北京的房子,问题不大。但是——性价比太低。简单说就是“活得累”。我当年读的高中,一本率90%,211率30%以上,所以北京的高考
2022-04-29 14:32:41
439
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人