写点什么

10 天用 Flutter 撸了个高仿携程 App,2021 年 Android 面试心得

用户头像
极客开源
关注
发布于: 刚刚

一面


1,请编程实现单例模式,懒汉和饱汉写法 2,请编程实现 Java 的生产者-消费者模型 3,HashMap 的内部结构? 内部原理?4,请简述 Android 事件传递机制, ACTION_CANCEL 事件何时触发?5,Android 的进程间通信,Liunx 操作系统的进程间通信。6,JVM 虚拟机内存结构,以及它们的作用。这个问题也比较基础,JVM 的内存结构如下图所示。7,简述 Android 的 View 绘制流程,Android 的 wrap_content 是如何计算的。8,有一个整形数组,包含正数和负数,然后要求把数组内的所有负数移至正数的左边,且保证相对位置不变,要求时间复杂度为 O(n), 空间复杂度为 O(1)。例如,{10, -2, 5, 8, -4, 2, -3, 7, 12, -88, -23, 35}变化后是{-2, -4,-3, -88, -23,5, 8 ,10, 2, 7, 12, 35}。


二面


1,bundle 的数据结构,如何存储,既然有了 Intent.putExtra,为啥还要用 bundle。2,android 的 IPC 通信方式,是否使用过 3,Android 的多点触控如何传递 核心类 4,asynctask 的原理 AsyncTask 是对 Thread 和 Handler 的组合包装。5,android 图片加载框架有哪些,对比下区别 6,图片框架的一些原理知识 7,其他的一些 Android 的模块化开发,热更新,组件化等知识。


三面、主流框架


  1. EventBus(1)EventBus 是通过注解+反射来进行方法的获取的(2)使用 ConcurrentHashMap 来保存映射关系 调用实体的构建:调用实体中对于 Object,也就是实际执行方法的对象不应该使用强引用而是应该使用弱引用,因为 Map 的 static 的,生命周期有可能长于被调用的对象,如果使用强引用就会出现内存泄漏的问题。(3)方法的执行 使用 Dispatcher 进行方法的分派,异步则使用线程池来处理,同步就直接执行,而 UI 线程则使用 MainLooper 创建一个 Handler,投递到主线程中去执行。


2.RetrofitJava 中的动态代理 Retrofit 中的动态代理 Retrofit 作用


3.OkHttp 请求任务队列复用连接池

总结

现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。


我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。


Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。但是周末花一天时间体验一下它的开发流程,了解一下它的优缺点、能干什么或者不能干什么。这个时间,并不是我们不能接受的。


如果有时间,其实通读一遍 Flutter 的文档,是最全面的一次对 Flutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。


(跨平台开发(Flutter)、java 基础与原理,自定义 view、NDK、架构设计、性能优化、完整商业项目开发等)



本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
10天用Flutter撸了个高仿携程App,2021年Android面试心得