美文网首页
2021-11记录

2021-11记录

作者: bridegg | 来源:发表于2021-11-11 00:01 被阅读0次

    电话面试1:

    (无准备)

    问题1:ArrayList和LinkList的区别和底层实现

    由于没准备,我都忘记区别了,何谈底层
    答案:
    arrayList是基于数组实现的,构造时会初始10个长度的数组,每次执行add都会通过size+1扩容,因为有下标,所以查找速度快
    LinkList是基于链表实现的,不需要扩容,链表特性,增加元素删除元素都是修改节点索引,不需要扩容,查找需要遍历,增删方便

    问题2:HashMap实现原理

    同问题一忘得一干二净(只会用了,其实扫一眼就想起来了)
    答案:主干构成是数组(默认长度16),每个key通过hashCode计算后通过code%size均匀分配到每个数组容器中,因为不同的key计算出来的hashCode会可能分配到同一个容器中,所以每个容器又增加了一个链表结构(java8中如果链表长度超过阀值会将链表转换为红黑树,查找更快),put时通过key转化的code找到对应容器,遍历比对链表中存在该key,不存在则新增,若存在则替换

    问题3:用过什么网络请求框架,说说执行流程

    被前面两个java基础问蒙了,以至于回答nohttp回答成okhttp,然后和面试官的不愉快开始了(其实是我的问题)
    答案:nohttp,大致由Request请求体,Queue队列管理器,cancleMap集合,Response处理四个大模块组成,其中Request中又封装了header,params,缓存,等实用工具,Queue队列管理器是基于PriorityBlockingQueue+FutureTask组成的类似线程池的功能,为了可以取消请求每次添加队列的时候会像cancleMap添加一个key和当前队列,Response中是通过request中传入的泛型处理解析数据然后回调到业务层(电话聊得时候我一直说的这个逻辑,然后人家以为我说okhttp)
    okhttp,大致由httpBuilder,runningCall,realCall,插值器,response几个部分组成,builder创建httpClient创建realCall,同步就直接创建realCall(里面有有个request插值器),异步创建AsyncCall(其实就是子线程的realCall),最后执行execute,execute会将realCall扔到runningCall中,在runningcall中真正执行请求,返回走一坨插值器(插值器链),然后返回Response,执行回调。
    (因为我的问题,把noHttp说成OkHttp,以至于后面都是纠结为啥不用插值器,因为noHttp在Request中的确方便。。)

    问题4

    说说mvp咋实现的,mvvm用啥实现的
    (因为前面的1问题,印象分已经很差了,导致我已经想快速挂电话了,没有认真回答)
    最后人家小哥哥很详细的介绍了项目,很认真负责,而我。。。哎。。。

    电话面试2

    由于电话面试1被乱杀,我很详细的看了看okHttp源码,NoHttp源码,各种Map,List,等java基础(就是回忆下代码)

    问题1:android Js桥实现原理

    答案:通过Native注入API的方式,规定入口,版本号,加密方式,数据协议,基于以上方式创建各种类型API

    问题2:Scroll和WebView滑动冲突解决

    我的回答:
    2种
    1将WebView高度定义为满屏高度,然后通过事件分发拦截处理(可以通过NestedScrollView告诉前端滑动参数,也可以判断是否滑动到底部处理)
    2通过WebView加载完毕后通过measure重新测量Web内容高度动态修改webView高度
    电话面试小哥哥说我不对,其实很简单就是让前端同学通过js告诉原生开发者webView高度(我:????理论了一番我觉得我回答的没错。。。)

    问题3:如何处理接口篡改和重查

    https,验签,数据加密传输(公私钥),时间戳

    问题4:说实话真的没听清问的啥,好像是css里的一个样式有什么参数

    我如实回答css样式我都是百度,毕竟菜鸟里啥样式都有,遇到了cv就好(大忌,不要这么答)
    后来我按照发音查了下应该是flex,参数说实话我也真的没记,flex-direction,flex-wrap,flex-flow,justify-content,align-items,align-content,都是干啥的参考https://www.runoob.com/w3cnote/flex-grammar.html

    问题5:讲讲注解

    emm说实话这个问题也问懵我了,我不知道该讲啥,瞬间没有逻辑了,回答的一塌糊涂。。。

    问题6:讲讲android类加载机制

    上一个问题我脑子已经蒙了,所以这个我本来会的东西,差点回答成jvm的组成还没回答好,其实很简单,android仿照java的jvm自己做了一套虚拟机叫Dalvik,jvm识别class,Dalvik识别dex,apk里有dex,解压拿到dex后通过android的classloader(BaseDexClassLoader)加载类,这里有两个一个是boot一个是path,path加载sdk的,boot加载本程序的,这两类加载器有个双亲检测机制,就是boot有的方法,path就不加载,path有的方法boot不加载(有点不严谨,其实是当没有当前加载器没有加载该类的时候会向父级调用查找可以理解super)

    问题6:最有成就感的是啥

    因人而异吧,就是说你感觉自己做的最开心或者最牛逼的事呗

    相关文章

      网友评论

          本文标题:2021-11记录

          本文链接:https://www.haomeiwen.com/subject/bmzizltx.html