自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 33岁,年薪30万:,android应用开发实战演练音乐播放器

不少行业都是有年龄潜规则的。这并非歧视,而是客观现实。比如说,35岁,对码农来说是100%纯天然的“老人”,对建筑师或医生来讲,那简直就是年方二八的豆蔻年华好么?虽然很多文章告诉你,从任何时候开始都不晚,但我们有时也没必要硬碰硬对吧。####2、匹配个人优势包括你的经验、知识、能力、人脉等等。前阵子有位从事物流行业的读者问我,他29岁,认识一个朋友是年薪60万的算法工程师,问自己现在转行写算法有没有可能年薪30万?咳咳,“年薪60万的算法工程师”,这和你有什么关系呢?许多人过分看重“行业”,而

2022-01-31 11:32:20 248

原创 30岁,程序员,烦透了,阿里面试100%会问到的JVM

三面:1h50min我感觉这场面试很多时候我都没正确get到面试官的问题,所以花了很长时间,不然还能从面试官那学到更多!!!面试的时候觉得面试官问的挺深的,但是复盘的时候觉得其实也都是些基础知识。1. 说一下项目,假装我是一个啥都不懂的人2. 让你来设计这个项目你会怎么设计,设计流程。讨论了一下项目细节以及我做的那部分工作3. 类中的几个基本函数有哪些4. 什么情况下我们一定要有拷贝构造函数(我打了个比方,string类就一定要有)。你这说的是一种情况,那你总结一下,什么情况下一定要有拷贝构造函

2022-01-31 11:30:55 195

原创 2021最新腾讯Android面试真题解析(GitHub标星5,移动端开发技术栈

12.Message对象创建的方式有哪些 & 区别?13.给我说说AsyncTask的原理14.ViewPager + Fragment结合使用会出现内存泄漏吗 & 如何解决?15.Fragment如何实现类似Activity栈的压栈和出栈效果的?…数据结构与算法部分主要内容包括复杂度分析、数组、链表、堆、栈、队列、散列表、树、排序、查找、递归&回溯算法、贪心算法、其它有关算法与数据结构等。1.什么是时间复杂度 & 什么是空间复杂度?2.时间复杂度和空

2022-01-31 11:29:29 4106

原创 2021最新Android必备面试题,高级Android开发面试解答之线程篇

finalize:类的方法,垃圾回收之前会调用此方法,子类可以重写 finalize()方法实现对 资源的回收7、Serializable 和 Parcelable 的区别Serializable Java 序列化接口 在硬盘上读写 读写过程中有大量临时变量的生 成,内部执行大量的 i/o 操作,效率很低。Parcelable Android 序列化接口 效率高 使用麻烦 在内存中读写(AS 有相关插件 一键生成所需方法) ,对象不能保存到磁盘中8、静态属性和静态方法是否可以被继承?是否可以被重写?

2022-01-31 11:28:05 3534

原创 2021我的第一个offer,字节跳动Android岗,附上我的面经分享

2.对话框 & 弹框 & 通知 & 悬浮窗之 WMS 源码篇3.Android UI控件篇 高级自定义View, 主要是原理和手写实现4.Android 系统架构篇5.Android 通信篇6.Android Framework 源码篇7.Android 网络编程篇8.原生音视频图片开发篇[非JNI]9.Android 特殊知识点【不知道如何分类的知识点】10.Android 必须掌握的轮子 原理篇11.Android 架构篇12.Android 优化篇13.A

2022-01-31 11:26:40 113

原创 2021年音视频是行业风口?技术王冠?那么音视频应该怎么学习呢

1. ImageView 绘制图片2. SurfaceView 绘制图片3. 自定义 View 绘制图片二、AudioRecord API详解三、使用 AudioRecord 实现录音,并生成wav创建一个AudioRecord对象初始化一个buffer开始录音创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。关闭数据流停止录音四、用 AudioTrack 播放PCM音频1.Audi

2022-01-31 11:25:15 116

原创 2020首个Android开发岗面经汇总(腾讯、网易,安卓开发中遇到最难的问题

最近在博客网站上看见一些网友在分享,2020这一年的面经汇总,有前端、Java、大数据等等,我今天也来分享一篇Android 开发的面经总结分享,该文的面经来源于本人和朋友,这一年中面试经典记录,文中公司有腾讯、网易、美团、哔哩哔哩、百度等知名公司。在面试这些公司前,我和朋友花费一个月的时间,在网上查找了一些往年面试题和参考答案进行复习刷题。在此通过这些面试题中问道的知识点进行了整理,打造出来一份330页的Android核心知识点笔记,大家需要参考可以点击Github地址查看目录话不多,看下方面经吧

2022-01-31 11:22:25 175

原创 2020秋招金九银十程序员离职跳槽指南,作为过来人想对你们说这几点

虽然做的东西是比较有难度的,但是每2个月换项目,或者换模块,也会导致很多人对做过的东西无法充分吸收,导致了大家其实啥都会,但是啥都不会的错觉,因此这种状况久了就会产生离职的念头。5 厌恶领导很多时候,程序员会出现讨厌上级的心态,上级的无能,上级的偏心,也会使下属产生想法,这种情况也会导致员工离职。6 发展受限工资到位了,技术也能提高,加班也不多,关系处的不错,但还是有些人会离职,这就是这个人职业发展受阻,一般是由于公司架构稳定,项目成熟的情况这种原因很常见,因此这种离职的人群一般分布在资深工程师以上

2022-01-31 11:21:00 163

原创 Android 10 适配攻略,深度解析跳槽从开始到结束完整流程

应用在卸载后,会将App-specific目录下的数据删除,如果在AndroidManifest.xml中声明:android:hasFragileUserData="true"用户可以选择是否保留。对于SAF的使用,可以查看我之前写的SAF使用攻略,这里就不展开说了。最后这里有一个介绍Scoped Storage的视频,推荐观看:准备好使用分区存储 | ADS 中文字幕视频准备好使用分区存储2.权限变化==============================================

2022-01-30 12:51:48 1703

原创 Android Path菜单的简单实现,android开发软件

mHomeparams.width = LayoutParams.WRAP_CONTENT;mHomeparams.height = LayoutParams.WRAP_CONTENT;switch (position) {case LEFT_TOP:mHomeparams.gravity = Gravity.LEFT | Gravity.TOP;for ..

2022-01-30 12:48:58 362

原创 Alibaba架构师首发,Android组件化与插件化学习笔记,技术与实战齐飞

微信Android架构历史为何再次重构微信重塑模块化取舍和选择代码之外,架构之内4.蘑菇街 App蘑菇街 App 的组件化之路实现方式组件生命周期管理壳工程遇到的问题持续集成周边设施小结蘑菇街 App 的组件化之路·续统一的调用实现通过 Category 来统一组件对外暴露的接口更明确的表述注册这个组件关心的 URL注册这个组件能够被调用的方法/属性在 App 生命周期的不同阶段做..

2022-01-30 12:47:33 166

原创 Alibaba架构师甩出史上最强Android面试文档,覆盖整个互联网公司

Flutter题库:IntentService题库:Broadcast Receiver题库:ContentProvider题库:ListView题库:Intent题库:Fragment题库:Android性能优化:Android屏幕适配:AIDL题库:Android线程:Android中的动画:开源框架实战篇:===================================================================开发中都使用

2022-01-30 12:46:08 76

原创 AES加密解密(ECB模式),kotlin静态编译

decode = (Button) findViewById(R.id.btn_decode);tvDecode = (TextView) findViewById(R.id.tv_decode);initListener();}private void initListener() {encryption.setOnClickListener(this);decode.setOnClickListener(this);}@Overridepublic void onClick(View

2022-01-30 12:44:43 1581

原创 5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南

笔试:可能是线上笔试 或 当场笔试,校招笔试题目范围较宽,会涉及计算机基础知识、面试方向的知识技能、代码coding、数据结构 & 算法 等。技术面试:以字节跳动为例,校招一般是2-3轮交叉技术面试,实习一般是1-2轮,考察 计算机基础、编码能力 、技术方向基础知识以及技术深度、系统设计能力、抽象能力和工程化能力、软素质 等。一面更偏向基础知识、技术广度,二三面偏向技术深度、进阶能力。岗位match:一般是通过技术面试后,由业务部门负责人面试,偏向软素质、专业能力、个人发展与规划等。HR面试:

2022-01-30 12:41:53 7955

原创 51信用卡-Android-自动埋点实践,android开发框架xui

分析公司常用的一些数据指标,我们发现对于大部分指标而言,我们只需要有页面的曝光事件、控件的点击事件等一些发送时机、内容相对固定的埋点即可,而这部分埋点,恰恰可以比较方便的使用自动埋点(相对于代码埋点这种手动埋点来说,无痕埋点及可视化埋点均可被称为自动埋点)来进行采集。相对于可视化埋点来说,无痕埋点在前期不需要可视化工具进行埋点收集,SDK 开发投入较小,因此我们进行了第一步从手动埋点到无痕埋点的迭代。无痕埋点技术实现无痕埋点需要自动采集数据,因此针对页面、控件等元素需要生成其 ID,该 ID 需尽量具

2022-01-30 12:40:28 390

原创 Android 10手势导航的侧滑返回效果优化策略,34岁Android程序员裸辞

NavigationBarEdgePanel是一个自定义view,如下:public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPlugin {…}既然找到了地方,那就实现一下上下滑动吧。2,实现上下移动默认的那个箭头显示出来以后不会跟着手势上下移动,要实现上下移动就要先知道这个视图是怎么添加上去的。首先看一下EdgeBackGesturehandler,在其中初始化了NavigationBar

2022-01-29 12:45:53 301

原创 Activity之间的数据传递方法汇总,2021年字节跳动+京东+美团面试总结

intent.getParcelableExtra(String name);这两种实现序列化的方法的使用原则:1)在使用内存的时候,Parcelable 比 Serializable 性能高,所以推荐使用 Parcelable。2)Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。3)Parcelable 不能使用在要将数据存储在磁盘上的情况,因为 Parcelable 不能很好的保证数据的持续性在外界有变化的情况下。尽管 Serializable 效率低点,但此

2022-01-29 12:43:04 197

原创 @Android程序员:这-5-道刁钻的-Activity-生命周期面试题

今天我们一起来看五道 Activity 生命周期的面试题,相信看完之后面试官再问到相关的问题,你就能胸有成竹了。A Activity 打开 B Activity 时都有哪些生命周期回调。这道题相信很多同学都有遇到过,简单:A.onPause -> B.onCrete -> B.onStart -> B.onResume -> A.onStopNaive ! 这样回答只是及格,因为仅在 B Activity 的 launchMode 为 standard 或者 B Activi

2022-01-29 12:41:38 6163

原创 Android 9(1),androidui库

volume.setRemovable((boolean) volumeList[i].getClass().getMethod(“isRemovable”).invoke(volumeList[i]));volume.setState((String) volumeList[i].getClass().getMethod(“getState”).invoke(volumeList[i]));list_storagevolume.add(volume);} catch (IllegalAccessEx

2022-01-28 13:07:07 83

原创 Android - 更安全地保存静态密钥,androidble开发教程

在日常开发中我们经常需要保存一些私密的信息,例如加解密的密钥等等。这时候我们就要来考虑如何存储密钥了。先来简单介绍几种存储方式:Java硬编码方式SharedPreferences存储文件存储数据库存储以上几种存储方式是很不安全的,例如采用硬编码方式存储,程序包很容易被反编译获取到密钥。SharedPreferences、文件和数据库又有可能因为用户的误删操作而丢失密钥,所以一般很少存储到这一类的文件中。那么问题来了,我们应该用什么方式来确保密钥的存储相对更安全呢?密钥存储

2022-01-28 13:05:42 1145

原创 Android - 代码的组织方式,splash界面,获取应用的版本号

5.获取应用程序版本号//用PackageManager拿到PackageInfo,PackageInfo中的versionNamePackageInfo packinfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);String version = packinfo.versionName;6.源代码版本控制安装VisualSVN Server——SVN服务器,一直下一步即可导入仓

2022-01-28 13:04:17 79

原创 Adroid ListView的下拉刷新的实现,移动端h5开发后上线

}if (getFirstVisiblePosition() == 0 && mRefreshState != REFRESHING) {if ((mRefreshView.getBottom() > mRefreshViewHeight|| mRefreshView.getTop() >= 0)&& mRefreshState == RELEASE_TO_REFRESH) {// Initiate the refreshmRefreshState =

2022-01-28 13:02:52 422

原创 Activity的初级,中级,高级问法,android开发艺术探索电子

Intent implicitIntent = new Intent();implicitIntent.setAction(“com.test.image”);implicitIntent.addCategory(“android.intent.category.DEFAULT”);MainActivity.this.startActivity(implicitIntent);具体界面的配置如下: 注意如果是其他App的Activity,需要添加android:exported="

2022-01-28 13:01:27 295

原创 Activity生命周期详解,一名毕业三年的女程序媛面试头条经验

//Activity 即将销毁时保存数据}@Overridepublic void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {super.onRestoreInstanceState(savedInstanceState, persistentState);//Activity 重建或者恢复时候取出数据}五、在AndroidManifest.xml中设置andro

2022-01-28 13:00:02 62

原创 AccessibilityService 实现自滚动指定条目实现点击效果

<accessibility-service xmlns:android=“http://schemas.android.com/apk/res/android”android:accessibilityEventTypes=“typeWindowStateChanged|typeNotificationStateChanged|typeViewClicked|typeAllMask”android:accessibilityFeedbackType=“feedbackGeneric”andro

2022-01-28 12:57:12 291

原创 7年老Android收到阿里offer,跟领导提离职被怼:为年薪百万不做兄弟

什么是Service?(校招&实习)说说Service的生命周期。(校招&实习)Service和Thread的区别?(校招&实习)Android 5.0以上的隐式启动问题及其解决方案。给我说说Service保活方案IntentService是什么 & 原理 & 使用场景 & 和Service的区别。创建一个独立进程的Service应该怎样做?Service和Activity之间如何通信?说说你了解的系统Service。谈谈你对Activit.

2022-01-28 12:55:47 58

原创 30岁专科程序员感悟:如果不是受限于专科学历,我决定在技术这一条路走到底

技术专家岗第二职业岗不管是选择哪个方向,重要的是提前准备。公司哪天看上我,要我去做管理,3个人我管不下来怎么办?公司哪天看上我,要我去负责架构,我一脸懵怎么办?公司哪天倒闭,我觉得当个网红也不错,可我不会带货怎么办?这是个比较漫长的过程,毕竟有的大佬才 28 岁就开始担心职业发展的问题了,有 6-7年的时间需要准备。每天学习一点点,能学到的东西真不少,但是能坚持下来的,也肯定是神仙。人类的惰性毕竟是没有太好的办法克服,自控能力差是天性。自己无法约束自己的,需要偶尔投资一些线上课..

2022-01-27 12:23:48 228 1

原创 27道 Handler 经典面试题,你能答出多少?,android开发入门与实战第二版

再结合上述的例子,也就是当有新消息要插入表头了,这时候如果之前是阻塞状态(mBlocked=true),那么就要唤醒线程了。否则,就需要取链表中找到某个节点并插入消息,在这之前需要赋值needWake = mBlocked && p.target == null && msg.isAsynchronous()也就是在插入消息之前,需要判断是否阻塞,并且表头是不是屏障消息,并且当前消息是不是异步消息。 也就是如果现在是同步屏障模式下,那么要插入的消息又刚好是异步消息,那

2022-01-27 12:20:59 211

原创 22-35岁程序员学习指南+35岁后程序员自救指南=不焦虑,不迷茫

ient/strip%7CimageView2/2/w/1240)35岁后自救指南1.纯技术路线根据舒伯的职业生涯阶段理论,31~44岁是安定期,程序员应该稳定于一项工作,发现适当的晋升通道,确立自己将来的保障。混圈子、混人脉、靠内推靠猎头靠自己1、提升名气、使简历发光这部分仍然是为了能顺利进入面试做的,提升自己在行业中的名气,计算机中有三个途径能提升自己的行业名气。(1)、Github提交MergeRequest,自造轮子在所有的技术面试环节,github所提交的开源项目,是一个.

2022-01-27 12:15:19 183

原创 Ajax跨域请求(一),android系统工程师面试宝典

POST(2)HTTP的头信息不超出以下几种字段:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain凡是不同时满足上面两个条件,就属于非简单请求。浏览器对这两种请求的处理,是不一样的。三、简单请求3.1 基本流程对于..

2022-01-26 10:55:09 77

原创 @Android程序员:不是安卓不行了,通用流行框架大全

安卓人如何走向胜利?这位 Android 前辈是深耕 Andorid 领域多年老工程师。他在职期间参与过 Launcher 定制化、ROM 定制、电商等众多领域的开发工作,算是见证了国内智能手机厮杀的前世今生,也对 Android 开发有了一些独到的见解。很多年前,他和一群国际顶尖的开发者围绕着:组件化开发、性能监控、Android 演进式架构等等做了深入的讨论。这让他意识到:Android 开发并不是单纯的实现业务逻辑,而是一整套架构的搭建。比如自动化测试、性能监控、组件解耦等。从这之后,他开始刻意

2022-01-26 10:52:18 91

原创 3个月疫情倒闭了近90000家企业,为什么互联网公司每天都在招人?招聘一个程序员要多少成本

1、假如一个勤奋的中级程序员工程师,一年薪水 20w 的话,一年 365 天,大约有 52 周,扣掉双休日还有 365-52x2 = 261 天,加上法定假大概 10 天,休假大约 3 周,还有乱七八糟的病假、事假大约 10 天,也就是说,工作的时间只有 261-10-3x7-10=221 天,平均每个工作日的薪水是 200k/221≈905元,那么按照多数人朝九晚五且扣除一小时午休等原因的一小时以后,每天工作 7 小时,时薪大约是905/7=129元。2、另一方面,考虑 Google、FB、Micros

2022-01-26 10:49:28 5923

原创 261,移动端开发语言

调试版安全码SHA1获取方法:文件路径在C:\Users\Administrator\.android下的debug.keystore文件,执行命令keytool.exe -list -v -keystore C:\Users\Administrator\.android\debug.keystore这里的默认密码是:android输出下面:D:\Code\Code_for_androideclipse2019\01hello\app\src\main\jni>keytool.exe -list

2022-01-26 10:48:03 75

原创 2021还能学Android吗?我的“零,android面试自我介绍

Android: 一词的本义指“机器人”,同时也是Google于07年11月5日发布的基于Linux核心的开源手机软件平台,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android工程师: 是以手机开发为主要对象,包括但不限于手机操作系统、手机游戏、手机其他多种功能的开发和优化人员。Android系统架构: 由Linux Kernel、Android Runtime、Libraries、Application Framework、Applica

2022-01-26 10:46:38 97

原创 2021最强Android中高级大厂面试源码秘籍,为你备战2022金三银四,直通大厂

11.LottieAndroid使用详解及源码解析12.Fresco 源码分析——图片加载流程13.rxandroid 源码解析14.SlidingMenu源码解析15.PhotoView源码解析16.MaterialDialogs源码解析17.Android-async-http 源码解析18.AndroidAnnotations源码解析19.fastJson源码解析20.Material-Animations-masteri源码解析21.T..

2022-01-26 10:45:14 1009

原创 2021-08-06 Jetpack之DataStore介绍和工具类的封装,android适配屏幕大小

缓存键值对数据,这样数据会一直留在内存中,浪费内存。(4)apply()方法是异步的,可能会发生ANRapply() 方法是异步的,本身是不会有任何问题,但是当生命周期处于 handleStopService() 、handlePauseActivity() 、 handleStopActivity() 的时候会一直等待 apply()方法将数据保存成功,否则会一直等待,从而阻塞主线程造成 ANR。DataStore带来了哪些改变呢?与其说DataStore相对SharedPre.

2022-01-26 10:43:48 212

原创 Android Framework学习笔记(九)Broadcast的注册,移动APP开发框架盘点

注释2处根据actions列表和userIds(userIds可以理解为应用程序的uid)得到所有的粘性广播的intent,并传入到stickyIntents中。注释3处将这些粘性广播的intent存入到allSticky列表中,从这里可以看出粘性广播是存储在AMS中的。注释4处获取ReceiverList列表,ReceiverList继承自ArrayList,用来存储广播接收者。注释5处创建BroadcastFilter并传入此前创建的ReceiverList,BroadcastFilter用来描述

2022-01-25 10:11:05 143

原创 Android Framework学习笔记(一)Android 系统架构,移动终端开发考试题

整体结构Android7.0的根目录结构说明如下表所示:|– Makefile (全局Makefile文件,用来定义编译规则)|– abi (应用程序二进制接口)|– art (ART运行环境)|– bionic (bionic C库)|– bootable (启动引导相关代码)|– build (存放系统编译规则及generic等基础开发包配置)|– cts (Android兼容性测试套件标准)|– dalvik (dalvik JAVA虚拟机)|– developers (开发者目录

2022-01-25 10:09:40 106

原创 Android FrameWork 面试整合题集,android项目开发实战密码

2、覆写 UncaughtExceptionHandler 的 onCreate 和 uncaughtException 方法。@Overridepublic void onCreate() {super.onCreate();Thread.setDefaultUncaughtExceptionHandler(this);}@Overridepublic void uncaughtException(final Thread thread, final Throwable ex) {new

2022-01-25 10:08:15 101

原创 Android Drawablw,这篇文章可以满足你80%日常工作

了解完Drawable,下面具体谈谈StateListDrawable的使用StateListDrawable使用基本描述:StateListDrawable的作用就是使所显示的Drawable对象能够随着目标组件状态的改变而自动切换。要定义StateListDrawable对象时,我们会使用<selector…/>标签作为根元素,在其中包含<item…/>用来表示状态属性##简单示例<?xml version="1.0" encoding="utf-8"?..

2022-01-25 10:06:50 683

空空如也

空空如也

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

TA关注的人

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