一、网络

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. RxJS 系列 – Join Operators

    前言 前几篇介绍过了 Creation Operators Filtering Operators Join Creation Operators Error Handling Operators T ...

  2. SQL Server Temporary Table & Table Variable (临时表和表变量)

    参考: 在数据库中临时表什么时候会被清除呢 Temporary Tables And Table Variables In SQL 基本常识 1. 局部临时表(#开头)只对当前连接有效,当前连接断开时 ...

  3. SpringMVC —— 请求参数(传递json数据)

    接收请求中的json数据             注解       json格式(POJO)    json数组(POJO)    @RequestBody与@RequestParam区别   

  4. Web刷题之polarctf靶场(2)

    1.蜜雪冰城吉警店 点开靶场, 发现题目说点到隐藏奶茶(也就是第九杯)就给flag, 但是明显就只有八杯, 猜测大概率考的是前端代码修改 把id=1修改为id=9, 然后回到页面点击原味奶茶即可弹出f ...

  5. 暑假集训CSP提高模拟17

    \[暑假集训CSP提高模拟 \operatorname{EIJ}_{2}(6)-1 \] \(\operatorname{EIJ}_{k}(A)\) 定义为有 \(A\) 个球,\(k\) 个盒子,盒 ...

  6. JSP+Java编程资源

    <JSP+Servlet+Tomcat应用开发从零开始学(第2版)>源码课件视频下载地址: https://pan.baidu.com/s/1HkFRul3wYBxe-skXCoQPwg ...

  7. c++可变模板参数

    在C++中的可变模板参数使用省略号 ... 来表示一个参数包(Parameter Pack),其具体位置决定了这个包是模板参数包还是函数参数包,以及如何进行参数展开. 1. 模板参数包:c... Ar ...

  8. USB type-c CC管脚如何做到正反接检测功能

    USB Type-C 连接器的 CC (Configuration Channel) 管脚用于实现插头方向检测和电源管理.具体来说,USB Type-C 连接器具有两个 CC 管脚:CC1 和 CC2 ...

  9. 墨天轮国产数据库沙龙 | 许力:阿里云原生Lindorm TSDB数据库,驱动工业IT&OT超融合数字化系统升级

    分享嘉宾:许力 阿里云Lindorm 数据库产品经理 整理:墨天轮 导读 大家好,我是阿里云Lindorm 数据库产品经理许力,今天非常有荣幸给大家介绍阿里云 Lindorm 数据库面向工业场景的最佳 ...

  10. 09-react的组件传值 props

    // 组件传值 props 接收传递过来的数据 import ReactDom from "react-dom" import { Component } from "r ...