一、网络

1、https原理

2、tcp/ip协议

三次握手:https://www.cnblogs.com/cenglinjinran/p/8482412.html

四次挥手:https://www.zhihu.com/question/63264012

二、多线程

java基础知识相关

Android相关

1、从点击一个图标到这个应用启动的全过程

https://blog.csdn.net/freekiteyu/article/details/79318031

性能优化

https://www.jianshu.com/p/797395731747

三、第三方插件

1、ProtoBuffer

2、EventBus

https://www.jianshu.com/p/e7d5c7bda783

https://www.jianshu.com/p/d9516884dbd4

https://baike.baidu.com/item/EventBus/20461274?fr=aladdin

ThreadLocal、ThreadLocal内存泄漏问题

HashMap,ConcurrentHashMap

反射

注解

3、ButterKnife

和androidx冲突问题,R2代替R

4、Retrofit

官网:https://square.github.io/retrofit/

与OkHttp的区别:定位不一样,OkHttp功能更强更多,而Retrofit是对OkHttp的进一步封装和增减,使其使用更安全,更方便

四、jetpack

1、RecyclerView

缓存问题

多种布局问题:https://www.jianshu.com/p/66702b7a6881

刷新界面问题

空数据界面显示问题:RecyclerView设置空数据视图

 

2、ConstraintLayout

https://www.jianshu.com/p/17ec9bd6ca8a

五、java基础

1、反射

(1)java反射机制是什么?

java反射机制是一种在程序运行状态下,动态获取或者调用类或对象的方法、字段等所有成员信息的功能。

其本质就是在得到指定类X的Class(Class对象)后,根据该Class对象反向获取类X的各种信息。当X.java被编译后生成X.class文件,当程序运行时,JVM会在磁盘中寻找X.class文件并加载到JVM内存中为其分配内存空间,同时JVM会自动为X.class创建一个Class对象,在ClassLoader中,有且只有一个X类的Class对象。

(2)为什么要使用反射(使用反射有什么好处)?

1)可以动态编译,在运行期才确定类型,体现java的灵活性。比如某个类“A”由同伴开发,但没有开发完,而我需要预先写道代码中,如果直接通过new A()的给方式,编译肯定会报错,但使用Class.forName("A")这样的反射方式就可以通过编译,不影响自己开发和编译。由于Class.forName("...")中的参数是字符串,可以将该字符串写入配置文件,通过I/O的方式读取,这样就可以通过修改配置文件来控制加载哪个类了,java中的Spring就有很多这种操作。

2)可以访问类中用private修饰的字段、方法、构造函数等成员。

3)可以对某些类/方法/字段起到“后门”作用。比如某些类方法/字段比较敏感,为了避免外部人员不小心使用到而导致某些严重后果,就需要“隐藏”起来(比如用private修饰),但是内部开发人员又需要用到,这时候就可以使用反射的方式来实现。因为相比于通过new的方式直接使用,反射方式会复杂一些,且需要对该敏感的类/方法/字段比较了解。(这个说法是在某教学课堂上老师讲到的,听起来挺有道理的,但其它地方好像没听说过这种说法)

4)可以越过泛型。比如ArrayList定义好元素的类型后,就无法添加其它类型了,但是通过反射的方式却可以做到,可以参考后文的链接。

(3)反射有什么弊端?

1)性能差;原因后面有说明。为了避免这一点,有些地方通过使用注解生成器的方式将需要反射的地方提前到编译期完成,比如EventBus就可以通过选择使用注解生成器来实现这一点。有个比较有名的java反射框架jOOR,可以了解一下。

2)会破坏一些类的安全性。上面的第2)和第3)点也说到了,可以使用private修饰的成员等这些不太希望被“外人”使用的功能。

(4)反射为什么性能差?

没找到权威答案,网上零零星星收集了一些(参考https://www.zhihu.com/question/19826278):

1)jvm无法优化反射相关得代码;

2)动态加载,原本在编译期做的事,等到运行期才做;

3)反射的具体逻辑是委托给MethodAccessor实现,而该类需要在第一次调用invoke时才会实例化对象,是一种lazy init;

4)method.invoke方法,每次调用时都需要对参数进行数组包装;

5)method.invoke方法中要对方法的可见性做检查;

6)MethodAccessor对象实现反射有两种方式:开始15次是native方式,以后是java方式。在使用java方式时,其invoke方法中要检查参数的类型匹配。

https://blog.csdn.net/lililuni/article/details/83449088?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight

2、面向对象

(1)面向对象的三大特性:封装、继承、多态;

多态:1)重写,override,子类覆盖父类的方法;重载,overload,同一个类中方法名相同,参数必须不同,返回值、修饰符可以不同。

Android开发重要知识点的更多相关文章

  1. 2016-2017-2 20155322 实验四 Android 开发基础

    2016-2017-2 20155322 实验四 Android 开发基础 实验内容 下载和安装Android Studio 学会使用Android Studio进行简单的Android开发 实验知识 ...

  2. 40k*16 薪,五年Android开发4轮面试拿下腾讯 Offer !(附真题)

    概述 感觉毕业后时间过得真快啊,从16年6月本科毕业入职了一家不大的公司,到现在快五年了,前段时间金三银四想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了腾讯的offer,想把 ...

  3. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  4. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...

  5. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  6. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  7. Android 开发必备的知识点——JVM基础【转】

    image 1.JVM与操作系统的关系 Java Virtual Machine JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机.它能识别 .class ...

  8. 两年Android开发三面上岸腾讯,这些核心知识点建议收藏

    概述 感觉毕业后时间过得真快啊,从 19 年 7 月本科毕业入职后,到现在快两年了,前段时间金三银四期间想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,面试好几家大厂,最后选择了腾讯.也祝 ...

  9. Android开发网上的一些重要知识点[经验分享]

    1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是s ...

  10. Android开发的基础知识点

    1.Android开发的四大组件: Activity:android应用程序上看到的一页. Service:运行在后台,可以其他组件交互(音乐播放器). BroadcoastReceiver:用来对外 ...

随机推荐

  1. Goby漏洞发布 | CVE-2024-38856 Apache OFbiz /ProgramExport 命令执行漏洞【已复现】

    漏洞名称:Apache OFbiz /ProgramExport 命令执行漏洞(CVE-2024-38856) English Name:Apache OFbiz /ProgramExport Com ...

  2. SQL 高级语法 MERGE INTO

    根据与源表相联接的结果,对目标表进行插入.更新.删除等操作. 例如,对目标表,如果源表存在的数据则更新,没有的则插入,就可以使用MEREG进行同步. 基本语法 MERGE INTO target_ta ...

  3. 【笔记】node常用方法(持续更新)

    1.path.basename(path[, ext]) path <string> ext <string> 可选的文件扩展名. 返回: <string> pat ...

  4. 痛定思痛,好好做人,从头过一遍PyTorch框架(一)(1.深度学习简介、2.预备知识)

    现在是2024年2月24日,13:59,从研一就开始断断续续说要过一遍框架,到现在博一下学期,还一直拖着呢,拖延症太可怕啦,决定好好做人,不拖了,就从现在开始,好好过一遍,呜呜呜呜呜呜呜呜,(罪该万死 ...

  5. TypeScript 5.1 & 5.2

    getter 和 setter 可以完全不同类型了 以前我们提过,getter 的类型至少要是其中一个 setter 的类型.这个限制被突破了.现在可以完全使用不同类型了. v5.1 后,没有再报错了 ...

  6. CSS – Icon

    前言 Icon 并不容易搞. 市场有许多平台支持 Icon, 有些收费有些免费. 有些 icon 很丰富, 有些很缺失. 尤其是在做网站的时候寻找 icon 是一个挺累的事情. 这篇就来聊聊 icon ...

  7. Windows 调试工具课程

    本文是我在集团内部上的课程记录而成的博客内容.在本次课程里面将和大家介绍一些在 Windows 上常用的调试工具,以及调查问题的常见套路.适合于伙伴们入门 Windows 调试 本文以下内容是采用原本 ...

  8. 系统编程-进程-当文件操作遇上fork

    我的关联博文: 系统编程-进程-fork深度理解.vfork简介 系统编程-进程-先后fork或open一个文件的区别 test1:   lseek基本使用 #include <stdio.h& ...

  9. C++指针等于地址加偏移量

    概述 本文通过c++示例代码演示指针的加减法运算及对 "指针 = 地址 + 偏移量" 的理解. 研究示例 1. 首先来检查各种变量类型所占的内存大小 #include <io ...

  10. Cache和DMA一致性

    DMA应该多多少少知道点吧.DMA(Direct Memory Access)是指在外接可以不用CPU干预,直接把数据传输到内存的技术.这个过程中可以把CPU解放出来,可以很好的提升系统性能.那么DM ...