小程序跨端开发

共 22 题
#

1. 小程序双线程架构(逻辑层/渲染层)与通信瓶颈本质

A 逻辑层可以直接操作渲染层 DOM,实现高效更新
B setData 传输是同步内存拷贝,没有性能开销
C 双线程架构以安全隔离与管控为动机,setData 跨层传输的序列化与消息开销是通信瓶颈本质 ✓ 正确答案
D 渲染层可以直接执行业务 JS 逻辑
#

2. 小程序运行时与 setData 的底层原理及性能优化要点

A setData 是同步操作,调用后立即完成渲染
B setData 慢在序列化、跨层消息与 diff 开销,应通过路径更新、合并调用与数据裁剪来优化 ✓ 正确答案
C 每次 setData 应尽量提交完整数据对象以保证渲染一致
D setData 的数据量大小不影响性能
#

3. 小程序自定义组件与基础组件的差异及组件间通信方式

A 自定义组件可以随意影响外部页面样式,无需隔离
B 基础组件可以包含业务逻辑与自定义 properties
C 父组件通过 properties 传数据,子组件通过 triggerEvent 触发事件回传,是推荐的双向协作模式 ✓ 正确答案
D 组件间只能通过 selectComponent 通信,没有其他方式
#

4. Taro 3 的运行时适配原理(React 适配到小程序 DSL)

A Taro 3 在编译期把 React 组件静态转换为 wxml,运行时无需模拟 DOM
B Taro 3 每个 DOM 操作都会单独触发一次 setData 保证实时性
C Taro 3 不允许使用 React Hooks,因为无法在小程序运行
D Taro 3 通过模拟 DOM 环境让 React 运行时完整运行,再用适配层把虚拟 DOM 翻译为小程序组件与 setData ✓ 正确答案
#

5. Taro 如何将 React/Vue 组件编译为小程序 wxml/wxss/js

A JSX 与样式经编译生成 wxml/wxss,业务 JS 打包进逻辑层,动态复杂结构由运行时递归渲染兜底 ✓ 正确答案
B 业务 JS 逻辑代码会被静态转换为 wxml 指令
C CSS 编译后原样保留 px,不做任何换算
D Taro 编译后不再需要任何运行时支持
#

6. uni-app 的 Vue 技术栈统一与条件编译(#ifdef)机制

A 条件编译在运行时根据设备环境动态执行
B 条件编译仅支持在 style 样式中使用
C 条件编译可以嵌套任意 JS 表达式进行判断
D #ifdef 指令是构建期的预处理,编译时仅保留目标平台的代码块,未选中平台的代码不会进入产物 ✓ 正确答案
#

7. Skyline 渲染引擎与 WebView 渲染的差异与迁移成本

A Skyline 与 WebView 的渲染能力完全一致,无需适配
B 迁移到 Skyline 后所有 CSS 属性全部支持
C Skyline 仍依赖 WebView 内核,只是优化了样式
D Skyline 自绘渲染提供更强的布局、动画与滚动能力,但存在特性差异,需兼容性检查并按页面灰度迁移 ✓ 正确答案
#

8. Taro 跨端到 H5/RN 时的 API 抹平与差异处理策略

A Taro 各端实现完全一致,不需要差异处理
B 跨端项目禁止使用任何平台特有 API
C 通过统一 API 封装层按平台分发实现,配合条件编译与能力探测降级处理各端差异 ✓ 正确答案
D H5 端会自动调用小程序原生 API
#

9. uni-app x(uts 语言)的原生编译与性能优势

A uts 编译期分别编译为各端原生代码并使用原生渲染,消除了桥接开销,带来启动与渲染性能优势 ✓ 正确答案
B uts 代码在运行时由 JS 引擎解释执行
C uni-app x 仍基于 WebView 渲染页面
D uts 完全支持 eval 等 JS 动态特性
#

10. 小程序首屏渲染优化,骨架屏、分包预下载、数据预拉取

A 骨架屏能减少首屏数据的网络传输时间
B 骨架屏是最有效的性能优化,能直接缩短渲染耗时
C 数据预拉取只适用于 H5 端,小程序不支持
D 分包预下载与数据预拉取分别减少包下载等待与数据请求等待,骨架屏缓解白屏感知,三者可组合使用 ✓ 正确答案
#

11. 长列表虚拟化(recycle-view)的实现与回收机制

A 虚拟列表会一次性渲染所有数据项,保证滚动流畅
B 虚拟列表要求每行高度必须完全一致,否则无法使用
C 虚拟化只渲染可视区节点并用占位撑高,滚出的节点回收入池复用,从而控制节点数量 ✓ 正确答案
D recycle-view 不需要依赖滚动偏移计算渲染区间
#

12. 小程序内存占用监控与页面栈深度(10 层)限制应对

A 页面销毁后定时器会自动清理,无需手动处理
B navigateTo 会关闭当前页面再打开新页面,因此不增加栈深度
C 小程序内存只与页面数量有关,与数据量无关
D 页面栈最多 10 层,超出后 navigateTo 会失败,可用 redirectTo/reLaunch 控制栈深度 ✓ 正确答案
#

13. 小程序与 WebView H5 混合开发的通信(JSSDK/postMessage)

A web-view 可以加载任意域名而无需配置
B postMessage 发送的消息会立即触发小程序的 bindmessage
C H5 通过 wx.miniProgram.postMessage 发消息,bindmessage 在特定时机(如后退、销毁)触发,消息传递存在延迟语义 ✓ 正确答案
D H5 无法通过 URL 参数接收小程序传递的数据
#

14. 微信开放数据域(排行榜)的隔离机制与主域通信(sharedCanvas)

A 主域可以直接读取开放数据域中的原始关系链数据
B 开放数据域在隔离上下文中绘制内容到 sharedCanvas,主域获取共享画布后再展示,从而既保证数据可信又实现内容共享 ✓ 正确答案
C sharedCanvas 只允许主域写入,开放数据域只读
D 开放数据域可以自由访问主域的所有全局变量
#

15. 小程序监控埋点与异常上报体系设计

A 监控应覆盖性能、异常、接口与业务四类数据,上报采用批量合并与失败重试,并考虑后台限制与隐私合规 ✓ 正确答案
B 小程序切后台后定时器仍会持续运行,可放心使用定时上报
C 埋点上报可以直接阻塞业务主流程以保证数据准确
D 小程序埋点无需声明隐私协议即可采集用户行为
#

16. 小程序支付与虚拟支付的合规限制(iOS 虚拟商品)与 IAP 替代方案

A 虚拟商品在 iOS 端无需任何限制,与安卓一致
B iOS 端可以用任意第三方支付通道收取虚拟商品费用
C iOS 端虚拟商品必须走 Apple IAP 合规链路,微信提供 wx.requestVirtualPayment 等合规通道,实体商品不受此限 ✓ 正确答案
D 引导用户绕过 IAP 是官方推荐的合规做法
#

17. 小程序隐私授权演进,getUserProfile 废弃后的头像昵称填写能力、隐私协议弹窗与用户信息授权新规的合规适配?

A getUserProfile 仍可获取用户真实头像与昵称
B 只要在后台配置了隐私指引,代码中无需任何授权判断
C 未同意隐私协议时 API 仍会正常返回数据
D 头像昵称改用 chooseAvatar 与 nickname 输入由用户自主填写,涉及用户信息前需弹隐私协议并获得同意,未授权时需提供降级体验 ✓ 正确答案
#

18. 原生组件与同层渲染,原生组件层级高于 web-view 的历史问题、cover-view/cover-image 的适配与同层渲染后的变化?

A 原生组件始终无法被普通元素覆盖,只能使用 cover-view
B cover-view 曾用于覆盖原生组件层级,同层渲染后多数场景原生组件可被普通元素覆盖并支持嵌套,但部分组件仍有原生层级边界 ✓ 正确答案
C 同层渲染后 video 组件仍无法嵌入任何普通 view
D 同层渲染解决了所有平台的兼容问题,无需真机验证
#

19. 小程序启动流程(冷启动/热启动/按需注入/用时预拉取)

A 冷启动需下载并初始化,热启动复用已有逻辑层实例;按需注入减少首屏 JS 执行,preloadRule 提前预下载分包 ✓ 正确答案
B 热启动也需要重新下载代码包并执行全部 JS
C 按需注入会一次性注入所有页面的代码,加快启动
D preloadRule 是在运行时动态请求分包代码的机制
#

20. 分包加载、独立分包与分包预下载的设计与限制

A 主包可以直接引用分包中的代码,实现代码复用
B 独立分包可不依赖主包独立启动,适合分享落地页;preloadRule 可提前预下载分包减少跳转等待 ✓ 正确答案
C 分包预下载没有流量与体积成本,可以无限制使用
D 独立分包可以自由跳转到任意普通分包页面
#

21. 小程序登录态(code 换 session_key/openid)与 UnionID 体系

A code 可以多次使用,前端可直接用 code 换取 session_key
B 后端用 code 调 code2session 换 openid/session_key 并自建登录态,session_key 只存服务端;UnionID 用于打通同一用户的多应用身份 ✓ 正确答案
C session_key 应保存在小程序前端缓存中以便解密
D openid 与 UnionID 在不同小程序之间是相同的
#

22. 不同小程序平台(微信/支付宝/抖音)API 差异的适配层设计

A 各平台 API 完全一致,无需适配层
B 适配层只能在编译期生效,无法运行时分发
C 条件编译可以完全替代运行时能力探测,不需要降级
D 通过统一 API 契约与平台分发器抹平差异,配合能力探测与条件编译,把平台差异收敛在适配层,业务层不直接调平台 API ✓ 正确答案