在去年 10 月份的时候入职了一家外企 , 恰逢最近几周公司大规模招聘 Android 开发 , 有幸参与了十几场面试 , 遂有感而发。在其中也从面试官的方面有了一些想法 , 希望分享给大家。
本来当做面试官对于我来说是一件比较新奇的事 , 但通过几场面试下来 , 感觉自己对面试有了更为立体的感觉。希望下面的分享能给大家带来一点点的帮助。以下是正文 :
首先说一下感想 , 在一个整个的面试过程中其实有几个关键的点 , 关键的点掌握的好有很大的几率通过面试
面对现有的如此多跨平台方案 , 为何当下最火的跨平台技术是 Flutter, 有哪些优势呢 ?
RN、Weex 均使用 JavaScript 作为编程语言 ,JavaScript 作为前端开发语言 , 在跨平台开发中可谓大放异彩 , 利用 web 技术不仅能开发出网站 , 也可以开发手机端 web 应用和移动端应用程序 , 似有一统三界 (Android、iOS、Web) 的趋势 , 这就是大家常说的“大前端”时代。这些技术方案流畅度不太好 , 平台一致性较差 , 至今还没能大面积取代原生开发。
Flutter 是以 Dart 语言编写 , 开发体验更接近客户端 , 从大家使用反馈来看也是如此 ,Flutter 开发环境这一套的流程对于前端开发来说并不太友好。Flutter 的定位同样是多端一体化 , 但是以客户端为首 , 先磨平 Android 和 iOS 双端开发体验 , 再逐步向 Web 端渗透 , 从 Flutter 规划的 Roadmap 也能看出 ,Flutter for web 目前仍处于预览版 ,Flutter 客户端方向都已经如火如荼上线了不少应用。
在此之前 , 大家常说“大前端”, 对于 Flutter 技术 , 在笔者看来称之为“大移动端”更贴切 ,Flutter 的 UI 框架优先支持客户端 (Android/iOS) 应用的同时 , 然后再适配 Web 端。移动互联网时代 , 不少公司都制定“移动优先”的战略 , 甚至只开发移动端 , 没有 Web 端。移动互联网的时代造就“大移动端”,Flutter 作为一款能做到媲美原生的高性能跨平台技术方案 , 或许一统天下。
在跨平台技术领域 , 只要挑战在 , 技术就不会停滞 , 伴随着技术不断演进与革新 , 终将走向美好。
Flutter 是彻底的跨平台方案 , 既没有采用 webView, 也没有采用 JS 桥接原生控件 , 而是自行实现一套 UI 框架 , 在引擎底层通过 Skia 渲染到屏幕。对于 UI 之外所需要使用的移动设备自身提供的服务 , 比如相机、定位、屏幕触摸等 , 则采用 Platform Channels 跟原生系统通信的方式来实现。
对于 Flutter 优势 , 回到前面讲到移动端技术选型的 4 要素 , 研发效率、动态性、多端一致性、性能体验 , 分别对应下面这一组词语。
图解 :
- Android 原生框架 , 通过调用 Java Framework 层 , 再调用到 skia 来渲染界面 ;
- 其他跨平台方案(如 RN), 通过 JSBridge 中间层来将 JS 写的 APP 转换成相应的原生渲染逻辑 , 可见比 Native 代码增加了更多逻辑 , 性能逊色差于原生框架 ;
- Flutter 框架 ,APP 通过调用 Dart Framework 层 , 再直接调用到 skia 来渲染界面 , 并没有经过原生 Framework 过程 , 可见其渲染性能并不会弱于 Native 技术 , 这是一个性能上限很高的跨平台技术。
当然 , 不得不说目前的 Flutter 确实不够尽善尽美 , 会存在一些不够尽善尽美之处 , 比如生态不够健全 , 包体积问题 , 但其该方案的上限比较高 , 想象空间比较大 , 相信更多开发者参与进来 , 经过更多打磨 , 未来会做得更好。
2017 年 5 月 Google I/ O 大会正式对外公布 Flutter, 到 2018 年 12 月发布 Flutter1.0, 引发全球大量的开发者和企业开始研究 Flutter。StackOverflow 2019 年的全球开发者文件调查中 ,Flutter 被评选为最受开发者欢迎的框架之一 , 超过了 TensorFlow 和 Node.js。
到目前 , 全球越来越多的公司已经在大家耳熟能详的知名 APP 中使用 Flutter 技术并落地 , 尤其国内知名互联网公司对 Flutter 投入度很大 , 社区也是非常活跃。
目前 Flutter 主要在移动端 Android/iOS 双端跨端 ,Flutter 的愿景是成为一个多端运行的 UI 框架 , 能够支持不仅仅是移动端 , 还包括 Web、桌面、甚至嵌入式设备。在 2019 Google I/O 开发者大会上推出的使用 Flutter 开发 Web 应用的框架 , 同年 9 月发布 Flutter 1.9, 并将 Flutter web 合入 Flutter 主仓库。
从架构图看 ,Flutter 采用同一个 Dart Framework 层来统一 Flutter C++ 引擎和 Web 引擎 , 最终可以运行在 Android,iOS,Browser 上 , 从 Flutter 引擎代码不难看出 Flutter 也是支持 Fuchsia 操作系统。
Fuchsia 是 Google 内部正在开发的一款新的操作系统 , 采用 Flutter 作为系统默认的 UI 框架 , 也就是说 Flutter 天然支持 Fuchsia, 这无疑让 Flutter 在众多的跨平台方案更有优势。
那么对于想坚持程序员这行的真的就一点希望都没有吗 ?
其实不然 , 在互联网的大浪淘沙之下 , 留下的永远是最优秀的 , 我们考虑的不是哪个行业差哪个行业难 , 就逃避掉这些 , 无论哪个行业 , 都会有他的问题 , 但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是努力提升自己 , 让自己站在最顶端 , 学历不够那就去读 , 知识不够那就去学。人之所以为人 , 不就是有解决问题的能力吗 ? 挡住自己的由于只有自己。点击我的 GitHub 下述资料免费领取
Android 希望 = 技能 + 面试
原文链接:https://blog.csdn.net/m0_57065039/article/details/115763883