自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 35岁Android程序员面临失业,是不是该考虑转行了?

看我上面说的这些,如果你真的想着放弃写代码,开始谋划着提前转行,那就更加大错特错了。因为其他行业可能更难,作为一名程序员,你起码还懂一门技术,而且这么技术的门槛,相对于其他行业的还不算低。身边总有朋友说自己想转行(转语言),觉得自己三十几岁干不动了。我想跟大家说的是,无论你是转语言还是说你去转行,一定要考虑下面这三点问题:1.不要跟风;很多朋友因为现在做的开发岗位可能不是最火的,也可能不是最热门的,所以听到别人讲去做其他的语言。比如你是做Android开发的,看到Python、人工智能等等比较火,

2022-04-28 11:13:16 2081

原创 2021年中总结之 -- 怎么挤进一线大厂?

========腾讯、阿里巴巴、字节跳动、华为、美团、滴滴、百度 …一线大厂一般有很多部门负责不同的项目,里面不乏知名大学毕业,技术大牛,往往在某一领域已经做到极致,有专门的团队负责某一功能点(性能优化、性能监控、中间件工具组件等),能投入人力物力去做好项目,并且薪酬福利可观,只是工作强度会很大。在上家公司期间,有幸我们组有位中山大学毕业的小伙计,从他身上看到很多优秀的学习习惯和方法,在这里不得不承认比你优秀的人还比你努力,是什么能让他变得如此优秀?多写多练,没有捷径 : 知识面广的人

2022-04-28 11:09:51 287

原创 2020年最新阿里、字节、腾讯

1.如何对Android应用进行性能分析(★★★★)2.什么情况下会导致内存泄露(★★)3.如何避免OOM异常(★★★★)4.Android中如何捕获未捕获的异常(★★★)5.ANR是什么?怎样避免和解决ANR(★★★★★)6.Android线程间通信有哪几种方式(★★★)7.Devik进程,linux进程,线程的区别(★)8.描述一下android的系统架构?9.android应用对内存是如何限制的?我们应该如何合理使用内存?(★★★★)10.简述android应用程序结构是哪些?(★★

2022-04-28 11:05:46 287

原创 2020年最新字节、阿里、腾讯

1.广播有几种形式 ? 都有什么特点 ?2.广播的两种注册方式 ?3.广播发送和接收的原理了解吗 ?(Binder机制、AMS)五、ContentProvider基础相关1.ContentProvider了解多少?2.ContentProvider的权限管理?3.说说ContentProvider、ContentResolver、ContentObserver 之间的关系?六、数据存储相关1.描述一下Android数据持久存储方式?2.SharedPreferences的应用场景?注意事项

2022-04-28 11:03:59 267

原创 2020 字节跳动,网易,华为

1.自我介绍:简单介绍了一下自己,还有自己做过的OpenGL视图库和骨骼动画播放引擎讲了一些。但是面试官应该是不怎么熟悉这些的。不过也算突出了自己的特点了。2.然后应该是想看看我基本界面编辑会不会,然后问了常用的布局有哪些?这个问题很简单嘛,自己把FrameLayout,LinearLayout,RelativeLayout讲了一通,然后又讲了Coordinatorlayout和ConstraintLayout。3.然后他问了开发是使用什么工具,怎样调试程序,和解决bug的。自己把日常的做法讲了一遍

2022-04-28 10:59:33 163

原创 2018 再见,你好 2019

[](()优快云 博客专家篇17 年申请的时候没有成功,18 年年初的时候给自己立下 flag,要拿到博客专家的称号。在 18 年中的时候也顺利实现了。从开始写博客开始,到现在差不多有三年了吧。依然清晰地记得,我是从大三下学期的时候开始写博客的,中间断断续续,但也坚持了下来。终于在 18 年 7 月份的时候拿到了博客专家的称号,这是对自己坚持,自己努力的一分肯定。一开始写博客的目的很简单,第一:总结自己学习的东西,方便以后查阅;第二,对外展示自己,在面试的时候顺便可以装 b。后面写着写着,逐渐养成

2022-04-28 10:57:17 2747

原创 2014-2020我6年的Android开发之路,那些被大厂优化的同事,让我对未来有了深思

这事不展开说了,每个程序员都知道,做码农,如果不能乐在其中,是很痛苦的一件事,因此,入行需谨慎。第二:静气如果你新入行,菜鸟级,你的工作主要是改bug,不停的接受改bug的任务,总之,都是小事,这时,也许你会焦虑,我的对策是:马上定一个目标学习计划,主动学习,因为大学里的知识体系基本无用,Android不难,三个月会有小成。第三:平台自行车再快,也没有宝马快。努力固然重要,平台也很关键,因为那里有很多大牛人可以迅速带你成长,如果你现在还没有一个好的平台,你就泡一些大牛出 没的论坛,看几本好书,找机会

2022-04-28 10:55:05 129

原创 Android Jetpack之Room的学习

Entity 。 用于定义封装实际数据的实体类,每个实体类都会在数据库中有一张相对应的表,并且表中的列是根据实体类的字段自动生成的。Dao 。 Dao 是数据访问对象的意思,通常会在这里对数据库的各项操作进行封装,在实际编程的时候,逻辑层就不需要和底层数据库打交道了,直接和Dao层进行交互即可。Database 。 用于定义数据库中的关键信息,包括数据库的版本号,包含哪些实体类以及提供Dao层的访问实例。此图说明了Room的不同组件之间的关系。[](()添加依赖要使用Room之..

2022-04-27 12:26:51 210

原创 Android Framework学习笔记(十)Content Provider启动过程

返回了ActivityThread类型的mMainThread对象的acquireProvider方法。frameworks/base/core/java/android/app/ActivityThread.javaActivityThread#acquireProvider()public final IContentProvider acquireProvider(Context c, String auth, int userId, boolean stable) {final ICont

2022-04-27 12:25:16 265

原创 Android Dalvik虚拟机实战

p 命名法对函数的局部变量寄存器命名没有影响,它的命名规则:函数中引入的参数命名从p0开始,依次递增。Dalvik字节码的类型、方法与字段1、类型Dalvik字节码只有两种类型,基本类型与引用类型。2、方法Dalvik使用方法名、类型参数与返回值来详情描述一个方法。方法格式如下: Lpackage/name/ObjectName;->MethodName(III)Z3、字段Dalvik虚拟机定位字段与字节码静态分析时会用到它。格式如下:Lpackage/name/ObjectName;

2022-04-27 12:23:44 201

原创 Android aab打包

自2019 年 8 月 1 日起,你在 Google Play 上发布的应用将需要支持64 位架构。检查 64 位库的最简单方法是检查 APK 文件的结构。构建后,APK 将与应用程序所需的任何本机库一起打包。本机库存储在基于ABI 的各种文件夹中 。不需要支持每个 64 位架构,但对于你支持的每个原生 32 位架构,你必须包含相应的 64 位架构。对于ARM架构,32 位库位于armeabi-v7a 中。64 位等效项是arm64-v8a。对于x86体系结构,查找x86(用于 32 位)和 x86_

2022-04-27 12:21:56 452

原创 Activity详解与实现

[](()3 创建布局并在Activity的OnCreate中设置创建布局public class ActivityTest extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置布局setContentView(R.layout.activity_test);}}[.

2022-04-27 12:20:15 184

原创 30秒上手新一代Http请求神器RxHttp

Ok,倒计时结束!!! 到这,你已经学会了[RxHttp](()的精髓。是的,不用怀疑,就是这么简单,使用RxHttp,任意请求,任意返回数据类型,都遵循这三个步骤,我们称之为请求三部曲,如下:重要事情说3遍任意请求,任意返回数据类型,皆遵循请求三部曲任意请求,任意返回数据类型,皆遵循请求三部曲任意请求,任意返回数据类型,皆遵循请求三部曲gradle依赖OkHttp 3.14.x以上版本, 最低要求为API 21,如你想要兼容21以下,请依赖OkHttp 3.12.x,该版本最低要求 A

2022-04-27 12:17:56 375

原创 27道 Handler 经典面试题,你能答出多少?

好了,确实这个字段就表示是否阻塞的意思,再去看看enqueueMessage方法中,唤醒机制:boolean enqueueMessage(Message msg, long when) {synchronized (this) {boolean needWake;if (p == null || when == 0 || when < p.when) {msg.next = p;mMessages = msg;needWake = mBlocked;} else {needWake

2022-04-27 12:16:11 872

原创 2020年Android程序员找工作的坎坷之旅

我以前自己也是面试官,面试了不少人。通常情况下一个职位可能会面试10多个人,一般来说小中企业对APP,前端没有过于复杂的技术需求,所以最后通常会从里面选出一个技术差不多,薪资要求不高,年龄尽可能小的人。所以这就是尴尬的来源,没有大厂的工作经验,意味着在大型商业项目,对某些技术栈的深入,及海量用户的开发需求方面,经验严重不足。这样的话导致很难进大厂上班。小厂的APP很多都是1-2人开发,最多可能是业务需求可能比较复杂,但是对APP的极致性能优化,海量用户使用场景,还有某些比较复杂的业务可以用大厂提供的SDK实

2022-04-27 12:14:14 111

原创 2020-Android大厂(字节跳动,腾讯

[](()【 [有人说这是2021字节跳动-初级Android工程师的面经?吓到我了!我还是去搬砖吧!](()】我在大三的时候,没有参加春招,也没有参加秋招,我大三 三月份的时候在实习僧上投了几个简历,发现面的都很水,原来我在大学的时候,成绩还算ok,编程能力在班里也是前几的,但是说实话,找工作经验真的不足吧,我编程的时候,没关注过JVM原理,也没关注过Java里面一些实现机制,一些【[源码](()】也没看过,这个时候,我就知道还需要努力了。 我找了个几个人的小公司,先干着了,边干边复习吧,补一补基础,

2022-04-27 12:09:28 175

原创 2017-2020历年字节跳动Android面试真题解析(累计下载1082万次,持续更新中

第二节 Java并发面试题 81第三节Java虚拟机面试题 (⭐⭐⭐) 121第四章 Android面试题 140第一节 Android基础面试题 (⭐⭐⭐) 140第二节Android高级面试题 (⭐⭐⭐) 208第五章 其他扩展面试题 346一、Kotlin (⭐⭐) 346二、大前端 (⭐⭐) 346三、脚本语言 (⭐⭐) 349第六章非技术面试题 350一、高频题集 (⭐⭐⭐) 350二、次高频题集 (⭐⭐) 352每个问题我们都附上1个标准参考答案,都是我们反复摸索消化(

2022-04-27 12:07:16 300

原创 Android Jetpack架构开发组件化应用实战

首页分为5个Tab,主要为首页、项目、导航、体系和我的。整个页面框架使用BottomNavigationView + Navigation来搭建。通过menu来配置底部菜单。 通过NavHostFragment来配置各个fragment。系统提供的FragmentNavigator的navigate方法中是通过replace来加载fragment。 这就导致在切换Tab的时候fargment会重复的调用onCreateView方法。这肯定不是我们需要的。那么我们需要自定义自己的FragmentNavig.

2022-04-26 21:56:06 202

原创 Android Http基础:图片下载并显示和WebView的应用

}ImageThread(加载图片的线程):public class ImageThread extends Thread {//声明要传递的参数private String url;private ImageView imageView; **《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】** private Handler handler;//创建构造方法,对参..

2022-04-26 21:54:04 144

原创 Android - Fragment,View动画,组合动画

aa.setRepeatMode(Animation.REVERSE);//让iv播放aa动画iv.startAnimation(aa);平移动画//Animation.RELATIVE_TO_SELF 相对于自己,值要填百分比//Animation.RELATIVE_TO_PARENT 相对于父控件,值要填百分比//Animation.ABSOLUTE 绝对坐标,值要填具体值TranslateAnimation ta = new TranslateAnima

2022-04-26 21:52:29 1548

原创 Android - AndroidStudio更改缓存目录

这三个文件夹默认都是在C盘,想要将此移动到其它目录,请继续往下看。[](()二、AndroidStudio缓存目录的配置。在我们将上述三个目录移动到指定的新目录下之后,需要做的就是重新配置这三项,使AndroidStudio到新目录读取我们的配置。[](()1.关于.android文件夹的配置这个文件夹是由Android SDK配置生成的模拟器,也是最占空间的一个。首先,需要添加一个系统的环境变量ANDROID_SDK_HOME,路径是SDK的安装目录,如下图:添加好环境变量后到新的路径下修改

2022-04-26 21:50:59 505

原创 2020年,Flutter-和-React-Native-谁主沉浮-

Dart 基于 C/C++、Java、支持抽象、封装、继承和多态等特性。Flutter 团队之所以选择 Dart,是因为它与构建用户界面的方式相匹配,使用 Dart 桥接,应用程序的大小更大,但效果要快得多。与使用 JS 做桥接的 React Native 不同。开发速度企业,特别是初创企业寻找一个能够在更短的时间内为他们提供服务应用的平台。谈论Flutter 与 React Native 开发速度; React Native 获得了优势。 其即用型组件可帮助开发人员快速制作应用程序。 另一方面,Fl

2022-04-26 21:41:25 270

原创 Android Studio 4

视图方面目前我们编写 UI 有三种方式,xml、代码编写自定义 View、Jetpack Compose。目前这三种方式全部在 Android Studio 4.0 上支持预览。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlE4cO1F-1650863979252)(https://user-gold-cdn.xitu.io/2019/10/30/16e19ec980e21c07?imageView2/0/w/1280/h/960/ignore-error/1)]三

2022-04-25 13:19:58 186

原创 Android - Fragment,View动画,组合动画

fm.beginTransaction()和ft.commit()要配对使用6.Fragment和Activity的通信Fragment获取Activity中的数据//通过getActivity()获取到所在Activity的引用,然后就可以拿到Activity里面的内容了EditText et_name = (EditText) getActivity().findViewById(R.id.et_name);Toast.makeText(getActivity(), “name:”+et_

2022-04-25 13:17:55 237

原创 Andorid性能优化之traceview的使用(不懂揍我)

步骤3: 直接左键双击可以打开我们的文件如图:部分1:是时间选择范围,整段就是我们刚刚用代码埋点指定的。上面的时间标志是时间戳。部分2:表示当前埋点的代码有5个线程。可以点击任何一个线程查看部分3:这里有4个按钮Call ChartFlame ChartTop DownBottom Up接下来我们具体看看这四个按钮1.1.1、Top Down点开我们的Top Down,如下:红色框1: 表示main里的一些情况。T 《Android学习笔记总结+最新移动架构视频+大厂安卓.

2022-04-25 13:16:22 119

原创 AdapterViewFlipper 图片_文字 轮播动画控件

如果宽、高中使用了 wrap_content 时,会导致 AdapterViewFlipper 容器的宽高,最终变成第一个item的宽高。即使后续item的宽高超过第一个item,也不会生效,内容显示只会被限定在第一个的宽高范围内。原理也很好理解,后续item没有绘制出来时, wrap_content 计算出来的结果,就是第一个item的宽高。当后续 item 显示的时候,没有地方去重新更新父容器 AdapterViewFlipper 的宽高。2. 常用方法AdapterViewAnimator支持

2022-04-25 13:14:52 113

原创 Activity的启动模式

FLAG_ACTIVITY_SINGLE_TOP 等价于 singleTop。位于栈顶的Activity会重用实例,调用onNewIntent函数接收intent。Intent intent = new Intent(this, MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);startActivity(intent);FLAG_ACTIVITY_SINGLE_NEW_TASK启动新的TASK,这个新的TAS

2022-04-25 13:13:05 292

原创 Activity生命周期详解

3、当执行到onResume回调方法时,Activity可以响应用户交互,一直到onPause方法之前,此阶段Activity称之为foreground lifetime。三、在实际应用场景中,假设A Activity位于栈顶,此时用户操作,从A Activity跳转到B Activity。那么对AB来说,具体会回调哪些生命周期中的方法呢?回调方法的具体回调顺序又是怎么样的呢?开始时,A被实例化,执行的回调有A:onCreate -> A:onStart -> A:onResume。当用户

2022-04-25 13:11:25 152

原创 50w字+的Android技术类校招面试题汇总(附答案

(3).如何在未排序整数数组中找到最大值和最小值? 字节跳动(4).在Java中如何从给定数组中删除多重复制?(5).大数相加(今日头条)3.1.3 链表(1).那查询第一个跟倒数第二个呢?(这就不一样了,第一个直接给了头结点,倒数第二个需要从倒数第一个开始查询,走两步) 腾讯(2).arrayList底层原理 滴滴 字节跳动(3).如何在一次遍历中找到单个链表的中值? 中国平安(4).如何证明给定的链表是否包含循环?如何找到循环的头节点? 优酷(5).两个有交叉的单链表,求交叉点

2022-04-25 13:07:16 273

原创 20分钟掌握Android-Gradle

}Task依赖单独声明一个task在实际开发中几乎不会有任何的意义,更多的时候是让多个task组合起来,一个依赖另一个,形成一连串的任务集。task hellohello.doFirst{println "hello "}task world(dependsOn: “hello”) << {println “world”}上面这段代码定义了两个task,当我们执行hello任务的时候,会输出 hello,而执行world任务的时候,由于声明了dependsOn: "

2022-04-25 13:05:20 88

原创 2020适合中高级工程师的面试题——java基础

从一个根出发,搜索所有的可达对象,这样剩下的那些对象就是需要被回收的12、静态代理和动态代理的区别,什么场景使用?静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。14、Java中实现多态的机制是什么?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现重写Overriding是父类与子类之间多态性的一种表现重载Overloading是一个类

2022-04-25 13:02:59 107

原创 2019预备BAT大厂Android研发岗秋招必问30+道高级面试题(附详细答案解析

remove 方法无法删除set集  Objects.hash(firstName, lastName);经过测试,hashcode修改后,就没有办法remove了。observer 我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。广播没有unregisterrecevier各种数据链接没有关闭,数据库contentprovider,io,sokect等。cursor内部类:.

2022-04-25 12:58:26 139

原创 Android 自定义SeekBar显示进度百分比

super.invalidate();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (!placedBall)placeBall();if (value == min) {// Crop line to transparent effectBitmap bitmap = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(), Bit

2022-04-24 12:24:38 299

原创 Android 组件通信中有哪些不为人知的细节?

Intent 我们很熟悉了,指明了要启动哪个Activity。IApplicationThread 是个接口,里面定义了很多方法,列举部分如:#IApplicationThread.java{//回调静态广播void scheduleReceiver(in Intent intent, in ActivityInfo info,in CompatibilityInfo compatInfo,int resultCode, in String data, in Bundle extras, bo

2022-04-24 12:22:43 110

原创 Android 开发规范(完结版)

单个的大写字母,后面可以跟一个数字(如:E, T, X, T2)。以类命名方式(参考3.2 类名),后面加个大写的 T(如:RequestT, FooBarT)。更多还可参考:[阿里巴巴 Java 开发手册](()4 代码样式规范4.1 使用标准大括号样式左大括号不单独占一行,与其前面的代码位于同一行:class MyClass {int func() {if (something) {// …} else if (somethingElse) {// …} else {// .

2022-04-24 12:20:41 575

原创 Android 从源码分析Bitmap和BitmapFactory常用API

Convenience for calling {@link #getScaledHeight(int)} with the targetdensity of the given {@link DisplayMetrics}.*/public int getScaledHeight(DisplayMetrics metrics) {return scaleFromDensity(getHeight(), mDensity, metrics.densityDpi);}getRowByt..

2022-04-24 12:17:30 603

原创 Android ONE store支付

详情:[https://dev.onestore.co.kr/devpoc/reference/view/Apps](()3-1、配置应用ID3-2、填写银行信息3-3、应用内商品注册 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】3-3.1应用内商品个别注册3-3.2应用内商品批量注册3-4、配置认证密钥3-5、下载示例应用3-6、新增应用内支付库(Library)3-7、设置 Android Manifest

2022-04-24 12:13:55 803

原创 Android Hook 机制之简单实战

public HookedClickListenerProxy(View.OnClickListener origin) {this.origin = origin;}@Overridepublic void onClick(View v) {Toast.makeText(v.getContext(), “Hook Click Listener”, Toast.LENGTH_SHORT).show();if (origin != null) {origin.onClick(v);}}}

2022-04-24 12:11:37 467

原创 20道25K+Android工程师面试必问面试题

6.ContentProvider实现原理ContentProvider 有以下两个特点:封装:对数据进行封装,提供统一的接口,使用者完全不必关心这些数据是在DB,XML、Preferences或者网络请求来的。当项目需求要改变数据来源时,使用我们的地方完全不需要修改。提供一种跨进程数据共享的方式。Content Provider组件在不同应用程序之间传输数据是基于匿名共享内存机制来实现的。其主要的调用过程:①通过ContentResolver先查找对应给定Uri的ContentProvide

2022-04-24 12:09:50 352

原创 2020最新中高阶Android面试题总结-下(附解题思路)

二、单例模式引起的内存泄漏。解决:Context是ApplicationContext,由于ApplicationContext的生命 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 周期是和app一致的,不会导致内存泄漏三、非静态内部类创建静态实例引起的内存泄漏。解决:把内部类修改为静态的就可以避免内存泄漏了四、非静态匿名内部类引起的内存泄漏。解决:将匿名内部类设置为静态的。五、注册/反注册未成对使用引起的内存泄漏。

2022-04-24 12:07:54 184

空空如也

空空如也

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

TA关注的人

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