高级知识点

2019-05-20  本文已影响0人  崽子猪

1.OKHttp同步和异步的区别

    同步:execute()方法

        请求网络数据要在子线程中完成操作,然后发送到主线程

        同一时间只允许跑一个线程任务,是耗时操作

    异步:enqueue()方法

        允许多线程任务,效率高

    同步是阻塞式的,是在当前线程执行

异步是并发式的,它会自动启动一个新的线程处理逻辑

2.简述OKHttp的使用步骤

    添加网络配置

    导入OKHttp依赖                               

创建请求对象(get请求不需要此步骤)

    创建FormBody

    创建请求体

    请求对象.newCall(请求体)

    绑定

    调用同步execute()或异步enqueue()处理数据

3.OKHttp使用了哪些设计模式

    单例模式   

原型模式

外观模式

代理模式

策略模式

亨元模式

桥接模式

组合模式

创建者模式

建造者模式

责任链模式

观察者模式

装饰器模式

    适配器模式

过滤器模式

工厂发放模式

模板方法模式

抽象工厂模式

4.HttpURLConnection及OKHttp3的对比分析

    HttpURLConnection:是一种多用途、轻量极的HTTP客户端,请求到的数据是流,使用它来进行HTTP操作可以适用于大多数的应用程序;

      按照层级来说。

    OkHttp和HttpUrlConnection是一级的,用socket实现了网络连接,OkHttp进行网络请求封装,优化了网络请求效率,使用方便简单。

5.Retrofit2常用注解

      @GET             GET请求

      @POST             POST请求

      @Headers             添加请求头

      @Path             替换路径

      @Query             替代参数值,通常是结合get请求的

      @QueryMap            参数值以HashMap的形式传入,结合get使用

      @Field             替换参数值,是结合post请求的

      @FieldMap            参入值以HashMap的形式传入,结合post使用

      @FormUrlEncoded      用表单数据提交

6.Retrofit2发送get、post请求的方式

网络权限

导依赖

定义API接口

添加@GET 或 @POST注解

初始化retrofit

构建retrofit

调用同步或异步请求网络数据

7.Retrofit2发送同步异步请求

    网络权限

导依赖

定义API接口

初始化retrofit

构建retrofit

调用同步或异步请求网络数据

8.Retrofit和OKHttp的区别

  Retrofit底层是使用OKHttp封装的,网络请求的工作本质上是OkHttp完成,而Retrofit 负责网络请求接口的封装,使用接口和注解形式请求网络数据,使用方便简单。

  Okhttp通过创建okhttpclient,request,和call对象进行同步异步数据请求。

9.Overload和Override的区别

    重载(Overload)是重载,在同一个类中可以有多个名称相同的方法,参数类型和参数个数不同

    重写(Override)是重写,表示子类中的方法可以与父类中的某个方法的名称和参数完全相同(多态性)

10.String、Stringbuffer、Stringbuilder的区别

    String为常量,长度不可变,Stringbuffer和Stringbuilder长度可变

    Stringbuffer为变量,线程安全,效率低

    Stringbuilder为变量,线程不安全效,效率高

11.实现字符串倒叙

    ①使用数组循环

    ③Stringbuffer的循环 

    ②String的reverse方法

    ④栈的先进后出 

    ⑤迭代完成 

12.集合

Collection单列:(1)list:有序可重复

                      ①ArrayList:底层数组,查询快,增删慢,线程不安全,效率高 

                          ②Vector:底层数组,查询快,增删慢,线程安全,效率低

                          ③LinketList:底层链表,查询慢,增删快,线程不安全,效率高

              (2)set: 无序唯一

                          ①HashSet:底层哈希表 

                          ②TreeSet:底层红黑树

                          ③LinketHashSet:链表保证元素有序

                  哈希表保证元素唯一

Map双列:(1)HashMap:线程不安全效率高

①LinketHashMap:有序唯一

        (2)HashTable:线程安全效率低

(3)TreeMap:底层红黑树

13.抽象类和接口的区别

抽象类:抽象类用来抽象具体对象,可以有具体的方法和属性,抽象类只能单独继承

接  口:接口  用来抽象具体对象,主要用来抽象功能,可继承接口,并可多继承接口,也有抽象方法和不可变常量

14.线程的几种状态

    新建(new)

可运行(runable)

运行(running)

阻塞(block)

死亡(dead)

15. final/finally\finanlize()的区别?

    final:被修饰的类,不能被继承,方法不能重写,变量变成常量,

  finally:用于异常处理,执行清除操作。

finanlize:在垃圾收集器删除,对象之前调用此方法

16. 使用GreentDao的时候,会在Gen文件下生成的文件有什么?

      DaoMaster:    GreenDao的数据库对象。

      DaoSession:  管理所有的Dao数据对象

      以及对应的数据对象的Dao类,封装了对应数据对象的表操作。

17. GreenDao的常用注解,以及增删改查的方法?

    @Entity

@Id

@Property

@NotNull

@Transient

@Unique

@Generated

插入:Insert

删除:delete

修改:update

查询:query 

18. 简述GreenDao的优缺点

      优点:性能大,

    内存开源最小化

    对Android进行高度优化

      缺点:文档为英文

19.常用的排序方式

选择排序

冒泡排序

二分查找排序

快速排序

插入排序

归并排序

20.Java中的引用类型都有哪些?

    强引用:不会被回收

    弱引用:gc回收器触发会被回收

    软引用:系统检测内存不足时会被回收

    虚引用:等于null

上一篇下一篇

猜你喜欢

热点阅读