两年android经验面经

作者: New_X | 来源:发表于2019-02-26 15:09 被阅读296次

    去年跳槽不成功,在同花顺又呆了一年。一年来收获蛮大,就公司项目来说,已经是非常熟悉了,很多入职不久的,都是不断抱怨,框架太老,技术太旧。这个是实话,但是细看里面的思想和设计还是能学到不少东西的,一年来也顺手优化了许多东西,根据业务也思考了很多更合理的方案。

    不过还是打算跳槽了,薪资和无法推动项目是个大问题,总不能鱼渔都不得吧。我是抱着找不到好的,就北上的心态找的。

    做股票期货的,经验类似,面试太过顺利...
    1. Activity的启动模式
    2. Activity和Fragment数据交互
      线程间交互的方法都行,进程间交互的就更可以了,FragmentManager/getActivity()
    3. 单例的实现方法
    4. 事件分发机制
    5. 开源库用过哪些
      自己平时写项目学习,基本都用过,原理也了解;重构项目的资讯模块用了Retrofit & RxJava,自己思考优化了代码框架,比如线程切换、页面查找等,其实弄清楚原理,要改哪里一目了然
    6. 项目中Socket是怎么分包、编码的?
    • 包类型分为Text类型、Table类型、资源类型、曲线类型、交互模式数据(曲线类型属性主要是点,关键方法append,可以增量更新数据)
    • 公司自己定义了个Base64编码,算法当然不要去纠结了
    • 延伸了下压缩(主要用于Table和曲线类型)和加密(参考HTTPS)
    1. 股票的图怎么画?像左右滑动、点击出现十字光标这些
      原理知道即可:自定义View & 触摸反馈

    要了16K,和当初进同花顺一样,当天给了答复

    有赞

    重点在kotlin、RN和weex,其实也正常,电商类都偏向混合开发,毕竟活动更新很频繁,和自己的技术栈不是很符合,估计是挂了,也正常,以公司角度肯定最好是找搞过的,以个人角度技术栈对不上肯定也会被压薪资...

    1. Handler、Looper、MessageQueue的关系
    2. 类似微博分享功能适合的launchMode,为什么不是singleInstance?
    3. Binder具体的实现原理,数据拷贝次数:代理模式 & 协议,太细的忘了,开发艺术探索、内核剖析、源代码情景分析里都看过...
    • 个人觉得学以致用,比如App启动,没必要每步都记清楚,知道需要创建ApplicationThread、ActivityThread,然后和冷热启动结合想一下,activity的启动流程和生命周期结合想一下,虽然还没深入到那一步,但是启动模式实现肯定也是在AMS的,知识其实是相通的,多想想设计者这样设计的道理 -> 不过可能也是自己经验不够,理解不到位,不过死记真的没意思...
    1. RxJava:一个请求用完接着再用一个请求(concat)/两个请求并行使用哪个操作符(zip)
    • 其实场景是很常见的,比如我们也有委托双重认证,并发请求就更多了,但是RxJava用的少,没那个意识,资讯那块的请求很简单,不过提醒我了,双重认证可以封装简化 -> 可能不行,公司的网络框架没那么解耦的
    • 这种类似问题我是最烦的,确实不会,不过知道就是输入关键字搜索就可以知道的问题
    1. StringBuilder和StringBuffer的区别,StringBuffer的实现原理
    2. HashMap的rehash扩容是怎么操作的:没什么印象了
      1). 创建一个新的Entry空数组,长度是原来的2倍
      2). 遍历原Entry数组,把所有的Entry重新Hash到新数组里。为什么要重新Hash呢?因为长度扩大以后,Hash的规则也随之改变了
      -> 想问的应该是rehash的公式,之前看到过,不过没去记...
      -> 也有可能想知道的是:LoadFactor:HashMap负载因子,默认是0.75f;Capacity:HashMap的当前长度,HashMap的长度必是2的幂
    3. 栈虚拟机和寄存器虚拟机差异:听都没听过,不过知道寄存器处理速度是最快的
    4. Retrofit的注解是怎么解析的:动态代理、AOP
    5. Handler的内存泄漏原因;为什么内存释放不了,MessageQueue持有? -> 被带沟里了,肯定知道内部类持有外部引用导致activity无法释放;想的是线程是GC Root,Handler正在运行,会导致activity无法释放,所以被引导,顺势说了MessageQueue持有了activity
    6. JSBridge安全漏洞解决方法:知道有安全问题,但是没仔细研究
    7. ClassLoader双亲委派实现原理
    8. IntentService的实现原理
    9. 平时用过哪些框架:RxJava和Retrofit重构了资讯模块
    淘客吧

    View的绘制流程、承载的数据结构、树的好处
    算法题:把0排到最前面
    事件分发机制
    MVC MVP MVVM的区别
    ClassLoader的过程,ClassLoader的好处
    Handler内存泄露
    多线程机制
    HTTPS工作原理
    数据怎么压缩,数据的安全
    插件化原理
    ARoutet原理
    组件化通信
    内存优化做过哪些
    讨论了下负载均衡
    系统启动流程和activity启动流程
    成长最大的阶段

    阿拉丁,一面

    领导不在,同学内推的,面试官说进阿拉丁有点屈才,该试试大厂。我也想,但是不认识内推的人...
    HTTP和HTTPS区别
    HTTPS流程,项目中安全和压缩处理
    Binder机制
    ClassLoader机制
    对架构的理解
    OkHttp原理,怎么把参数组装的
    事件分发机制
    HashMap的哈希散列实现,线程安全吗,为什么?
    ArrayList和Vector扩容的区别
    HashTable,ConcurrentHashMap怎么实现线程安全
    jvm内存模型,新生代和老年代的比例?
    新生代里怎么划分?好处?
    熟悉哪些数据结构?
    设计模式在源码和项目中的使用
    单例模式的写法,思路
    java8对hashmap的优化
    hashmap和hashset区别,hash怎么散列的
    tcp三次握手

    头条,一面

    项目中成就最大的部分
    对Thread的理解?线程状态?阻塞和运行状态区别?
    锁的种类,什么是自旋锁,ReentrantLock?
    HashMap原理?
    HandlerThread原理和使用场景?
    -> IntentService
    线程池怎么实现,阻塞队列原理?
    -> 阻塞队列实现没去了解,下意识提了下Looper.loop循环,后面一看还真是,程序员的直觉
    Fragment初始化参数调用哪个方法?
    Fragment懒加载怎么实现?
    事件分发机制,分析3层View包裹,点击click
    自定义View怎么绘制,注意点?
    网络框架怎么重构封装的?
    TCP三次握手
    对资讯进行了MVP封装,讲讲MVC和MVP的理解
    为什么使用Bundle不用HashMap传输数据?
    Serialable 和 Parcelable区别
    glide的图片三级缓存
    交互模式

    爱库存

    面完有个面产品的漂亮小姐姐搭话,心里美滋滋
    大都问的项目,每个点延伸讲了很多,所以问的个数不多
    Service熟悉吗?
    Service进程保活?
    MVC和MVP

    • 发现大都问的相似,我都想停更了...

    祝好,持续更新...

    相关文章

      网友评论

        本文标题:两年android经验面经

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