retrofit教程,HTTPS面试常问全解析,真香_面试 retrofit 几层拦截器(4)

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

一面

面试官:先介绍一下自己吧,做过哪些项目,掌握哪些技能

我内心:(简历都有写的,你自己不会看么?只好照着简历里写的说了一遍)
熟悉Android Framework,组件化开发及MVC/MVP/MVVM程序设计框架;熟悉UI/ NDK开发,掌握TCP/IP,HTTP网络通信机制,有OkHttp使用包装经验,熟悉安卓图形处理OpenGL ES机制,有Camera视频开发经验。熟悉国密加密解密算法,有通过OMA访问手机SE,利用SIM卡进行加密解密的经验;有在支持NFC手机上进行读取NFC标签及支付的经验。有前端及后台服务器的开发经验,熟悉开发框架React,Vue,Spring Boot及Mysql数据库。熟练掌握的语言有C++11, Java, Python, Kotlin等,能熟练使用Git,VS Code, Android Studio等工具和开发环境。

面试官:懂的还挺多(这时才低头看我简历)工作经历也挺多的,那说说做的最满意的项目是哪个

我内心:(白眼)
描述了我北京一家公司的社交APP,介绍功能,实现,用到的技术,设计思想等等。

面试官:说一下项目中的性能优化怎么做的

我:首先是启动优化,MultiDex 分包机制,dex分包预加载等等。稳定性–内存优化,流畅–卡顿优化等等,反正我整理的这份一线互联网大厂高频面试知识点资料里关于性能优化的全给他讲了一遍。(文末会无偿分享给大家)

面试官:(有点懵13了,没想到我能讲这么多)内存泄漏,还有哪些检测工具?LeakCanary 的原理知道吧?

答:利用Application#registerActivityLifecycleCallbacks Activity生命周期回调onActivityDestroyed方法通过调用RefWatcher#wather方法来检测对象是否回收,通过removeWeaklyReachableReferences—>gcTrigger.runGc—>removeWeaklyReachableReferences—>heapdumpListener.analyze 三步二次检测来确定内存泄露,最终dump 内存信息来分析到最终显示分析出的泄露信息。

面试官:有点东西啊,来说一说,在5.0以上和4.0加载dex时的方式有什么区别?

不知道

面试官:说说什么是同步屏障,在Android绘制的过程中,掉帧是如何处理的

Android绘制原理,同步屏障,然后发送VSync脉冲信号

面试官:OOM、ANR 异常怎么处理

EZ,我的博客里都有解析的,大家感兴趣可以去我的主页看一下,就不多说了。

面试官:okHttp的原理了解吗?如何对它封装的

答:重试拦截器、桥接拦截器、缓存拦截器、连接拦截器、请求服务拦截器(封装)。每一个拦截器负责的工作不一样,就好像工厂流水线,最终经过这五道工序,就完成了最终的产品。

GreenDao的实现原理

忘记了

Retrofifit实现原理

只记得,Retrofifit 是一个RESTful 的HTTP 网络请求框架的封装。

整个面试大概是有一个半小时,他就简单问几句,中间喝了几次水,期间没有人给我递杯水问到后面我是有点不耐烦了的。

感想

几天后收到了二面的通知,直接拒绝了。一面给我的感觉非常不好。让我讨厌的面试官有以下几点

1、打断别人说话

在回答他提出的问题,我说着说着,他就打断:这个不是这样的,应该是这样的。或者没等我把这个答案说完,就直接顺出了下一个问题。

2、没礼貌

摆着一副架子,好像是我求着要他给我通过面试一样,一个半小时的面试,自己都要喝水,我一直在讲,也没有给我递杯水。面试中途还接了几次电话,把我晾在那里。

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用OkHttp的Interceptor来拦截参数。在使用Retrofit时,可以通过自定义OkHttpClient并添加Interceptor来实现。以下是一个示例: ``` OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); Request requestWithNewParameter = originalRequest.newBuilder() .addHeader("Your-Header-Name", "Your-Header-Value") .build(); return chain.proceed(requestWithNewParameter); } }) .build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .build(); YourApiService apiService = retrofit.create(YourApiService.class); ``` 在上面的示例中,我们添加了一个Interceptor来拦截每个请求并添加一个自定义的Header。你可以根据需要修改拦截器的实现来拦截并修改请求参数。 ### 回答2: 在Android开发中,Retrofit是一个非常流行的网络请求库。它提供了拦截器(Interceptor)的功能,可以对网络请求的参数进行拦截和修改。 拦截器是一个接口,可以在请求之前或者响应之后对请求进行处理。在Retrofit中,可以通过实现Interceptor接口来自定义拦截器。 通过拦截器,我们可以对请求进行一些通用的处理,比如对请求头进行添加、修改、删除等操作。我们可以在拦截器的intercept方法中获取到请求的参数,然后根据需求进行修改。 拦截器可以被添加到OkHttpClient的拦截器链中,通过addInterceptor()方法来添加。当发起网络请求时,拦截器会按照添加的顺序进行拦截。这样,我们就可以在请求中添加或修改参数。 拦截器还可以对响应进行处理,比如对返回的数据进行解析、转换等操作。拦截器可以获取到响应的数据,然后可以对数据进行一些处理,并返回给调用方。 通过使用拦截器,我们可以在不修改原有的网络请求代码的情况下,对请求和响应进行一些通用的处理。这样可以提高开发的效率,并且可以保持代码的整洁和可维护性。 总的来说,Android Retrofit拦截器功能非常强大,可以非常方便地对网络请求的参数进行拦截和修改,提供了非常灵活的扩展性。 ### 回答3: 在Android中,Retrofit是一个广泛使用的网络请求库,用于方便地从服务器获取数据。拦截参数是指在使用Retrofit发送网络请求之前,可以通过拦截器对请求的参数进行修改或添加一些额外的信息。 在Retrofit中,可以通过自定义拦截器来实现对参数的拦截操作。拦截器是一个接口,它提供了两个方法:intercept和proceed。 intercept方法用于处理拦截逻辑,我们可以在这个方法中获取到请求的参数信息,并对其进行修改或添加额外信息。可以使用request.body()方法获取请求体,再通过request.newBuilder()方法创建一个新的请求,最后通过chain.proceed()方法继续请求的发送。 proceed方法表示继续发送原始请求,如果不调用该方法,请求将会被拦截,不会发送到服务器。 要使用拦截器,首先需要创建一个OkHttpClient对象,并通过addInterceptor方法将拦截器添加到OkHttpClient中。然后将创建的OkHttpClient对象传递给Retrofit.Builder的client方法。 以下是一个示例代码,演示如何使用拦截器对请求参数进行拦截: ``` OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); // 获取原始请求的参数 HttpUrl url = request.url().newBuilder() .addQueryParameter("key", "value") .build(); Request newRequest = request.newBuilder() .url(url) .build(); return chain.proceed(newRequest); } }); OkHttpClient client = builder.build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://example.com/") .client(client) .build(); ``` 上述代码创建了一个OkHttpClient对象,并添加了一个拦截器。在拦截器的intercept方法中,获取了原始请求的参数,然后对其进行了修改(添加了一个名为key值为value的参数),最后调用chain.proceed方法继续发送请求。 通过拦截器,我们可以对请求的参数进行灵活处理,例如对请求进行签名、添加公共参数等操作,提高了开发的灵活性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值