关于移动互联网的跨平台技术演进,2024年最新干货面试教程视频
一线互联网Android面试题含详解(初级到高级专题)这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,
- Native 调用 JavaScript:
JavaScript暴露一个对象如JSBridge给window,让Native能直接访问。
那么App内加载H5的过程是什么样的呢?
App打开H5过程
打开H5分为4个阶段:
- 交互无反馈
- 打开页面 白屏
- 请求API,处于loading状态
- 出现数据,正常展现
这四步,对应的过程如上图所以,我们可以针对性的做性能优化。
优缺点分析
下面,我们进行H5的优缺点分析:
优点
- 跨平台:只要有浏览器,任何平台都可以访问
- 开发成本低:生态成熟,学习成本低,调试方便
- 迭代速度快:无需审核,及时响应,用户可毫无感知使用最新版
缺点
- 性能问题:在反应速度、流畅度、动画方面远不及原生
- 功能问题:对摄像头、陀螺仪、麦克风等硬件支持较差
虽然H5目前还存在不足,但随着PWA、WebAssembly等技术的进步,相信H5在未来能够得到越来也好的发展。
小程序
2018年是微信小程序飞速发展的一年,19年,各大厂商快速跟进,已经有了很大的影响力。下面,我们以微信小程序为例,分析小程序的技术架构。
小程序跟H5一样,也是基于Webview实现。但它包含View视图层、App Service逻辑层两部分,分别独立运行在各自的WebView线程中。
View
可以理解为h5的页面,提供UI渲染。由WAWebview.js来提供底层的功能,具体如下:
- 消息通信封装为WeixinJSBridge
- 日志组件Reporter封装
- wx api(UI相关)
- 小程序组件实现和注册
- VirtualDOM,Diff和Render UI实现
- 页面事件触发
每个窗口都有一个独立的WebView进程,因此微信限制不能打开超过5个层级的页面来保障用户体验。
App Service
提供逻辑处理、数据请求、接口调用。由WAService.js来提供底层的功能,具体如下:
- 日志组件Reporter封装
- wx api
- App,Page,getApp,getCurrentPages等全局方法
- AMD模块规范的实现
运行环境:
- iOS:JavaScriptCore
- Andriod:X5内核,基于Mobile Chrome 53/57
- DevTool:nwjs Chrome 内核
仅有一个WebView进程
View & App Service通信
视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层将触发的事件通知到逻辑层进行业务处理。
优缺点分析
优点
- 预加载WebView,准备新页面渲染
- View层和逻辑层分离,通过数据驱动,不直接操作DOM
- 使用Virtual DOM,进行局部更新
- 组件化开发
缺点
- 仍使用WebView渲染,并非原生渲染,体验不佳
- 不能运行在非微信环境内
- 没有window、document对象,不能使用基于浏览器的JS库
- 不能灵活操作 DOM,无法实现较为复杂的效果
- 页面大小、打开页面数量都受到限制
既然WebView性能不佳,那有没有更好的方案呢?下面我们看看React Native。
React Native
RN的理念是在不同平台上编写基于React的代码,实现Learn once, write anywhere。
Virtual DOM在内存中,可以通过不同的渲染引擎生成不同平台下的UI,JS和Native之间通过Bridge通信
React Native 工作原理
在 React 框架中,JSX 源码通过 React 框架最终渲染到了浏览器的真实 DOM 中,而在 React Native 框架中,JSX 源码通过 React Native 框架编译后,与Native原生的UI组件进行映射,用原生代替DOM元素来渲染,在UI渲染上非常接近Native App。

React Native 与Native平台通信
- React Native用JavaScriptCore作为JS的解析引擎,在Android上,需要应用自己附带JavaScriptCore,iOS上JavaScriptCore属于系统的一部分,不需要应用附带。
- 用Bridge将JS和原生Native Code连接起来。Native和 JavaScript 两端都保存了一份配置表,里面标记了所有Native暴露给 JavaScript 的模块和方法。交互通过传递 ModuleId、MethodId 和 Arguments 进行。
优缺点分析
优点
- 垮平台开发:相比原生的ios 和 android app各自维护一套业务逻辑大同小异的代码,React Native 只需要同一套javascript 代码就可以运行于ios 和 android 两个平台,在开发、测试和维护的成本上要低很多。
- 快速编译:相比Xcode中原生代码需要较长时间的编译,React Native 采用热加载的即时编译方式,使得App UI的开发体验得到改善,几乎做到了和网页开发一样随时更改,随时可见的效果。
- 快速发布:React Native 可以通过 JSBundle 即时更新 App。相比原来冗长的审核和上传过程,发布和测试新功能的效率大幅提高。
- 渲染和布局更高效:React Native摆脱了WebView的交互和性能问题,同时可以直接套用网页开发中的css布局机制。脱了 autolayout 和 frame 布局中繁琐的数学计算,更加直接简便。
缺点
- 动画性能差:React Native 在动画效率和性能的支持还存在一些问题,性能上不如原生Api。
- 不能完全屏蔽原生平台:就目前的React Native 官方文档中可以发现仍有部分组件和API都区分了Android 和 IOS 版本,即便是共享组件,也会有平台独享的函数。也就是说仍不能真正实现严格意义上的“一套代码,多平台使用”。另外,因为仍对ios 和android的原生细节有所依赖,所以需要开发者若不了解原生平台,可能会遇到一些坑。
- 生态不完善:缺乏很多基本控件,第三方开源质量良莠不齐
展望未来
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。






既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
一线互联网Android面试题含详解(初级到高级专题)
这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率

如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。
最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
弃自己的梦想和追求;
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-tn9WdRPK-1712812523519)]
更多推荐



所有评论(0)