业务面试题
# 总结可能会出现的面试题
介绍一下你的地铁路径规划功能是怎么实现的?
地铁路径规划主要分为数据层、算法层和展示层。前端主要负责用户输入起点终点、调用路径规划接口、解析返回的数据,并通过页面展示推荐路线。
后端根据地铁线路、站点关系、换乘关系等数据进行路径计算,返回包含线路、站点、换乘信息以及预计耗时的数据,前端负责渲染路线详情和导航流程。
路径规划算法是什么?
数据来源是什么?
数据主要来源于地铁线路基础数据,包括线路信息、站点信息、站点经纬度、站点之间连接关系、换乘关系等。
如何计算最优路线?
如何处理换乘?
如何计算时间
你们的路径规划和普通地图导航有什么区别?
普通地图导航主要针对道路交通,比如驾车、步行路线规划,而地铁导航主要围绕轨道线路进行计算,需要考虑站点、线路、换乘以及站内路线。
- 是否考虑站内换乘距离?
- 是否考虑拥挤程度?
- 是否考虑上下车位置?
如何实现推荐用户从哪个屏蔽门上下车?
这个功能核心是结合车站内部结构数据和换乘路线数据进行计算。
车站地图数据;站台方向;车门位置;换乘通道位置;出入口位置
需要哪些数据?
如何计算距离?
如何知道车厢位置?
一般通过线路方向和站台结构数据推算,例如地铁每节车厢停靠位置固定,可以提前维护车厢与站台区域的对应关系。
数据结构如何设计?
站点查询功能如何实现?
站点查询主要通过关键词搜索实现,用户输入关键词后,根据站点名称、拼音、简称进行匹配。
- 搜索怎么做?
- 模糊搜索如何实现?
- 是否做关键词缓存?
- 数据量大怎么办?
如果有10000个地铁站数据,前端如何优化查询?
后端分页
你是如何参与需求分析的?
首先问想要达成什么效果,再看看是否落地
追问:
如何拆解需求?
大需求,拆成小需求
如何评估开发成本?
时间周期;困难周期;技术栈难度
如何和产品沟通?
Vue3项目目录结构如何设计?
src
-api
-util
-service
-component
-screen
-hooks
-section
Vue3项目中为什么使用Pinia?
更轻量
追问:
Pinia相比Vuex有什么区别?
直接调用store的方法
如何设计store?
根据不同类型去设计
例如状态、信息
如何持久化?
使用插件
前端登录鉴权流程是什么?
首先请求-404-跳转登录页
追问:
Token存哪里?
Pinia持久化
Token过期怎么办?
接口报404,重新请求
Refresh Token了解吗?
axios如何封装请求?
追问:
请求拦截器做什么?
统一给请求头携带参数;
响应拦截器做什么?
当错误的时候统一处理错误提醒
如何统一处理错误?
在响应拦截器
路由守卫如何实现?
继续问:
- 如何判断登录状态?
- 如何跳转登录页?
- 如何处理白名单?
动态权限菜单怎么实现?
追问:
- 后端返回什么数据?
- 如何生成路由?
- 如何控制按钮权限?
如何实现按钮级权限控制?
Vue3中Excel导入如何实现?
追问:
- 使用什么库?
- File对象怎么读取?
- 如何解析Excel?
- 如何上传后台?
Excel导入如何判断用户填写的数据是否正确?
追问:
- 字段校验怎么做?
- 类型校验?
- 必填校验?
- 重复数据校验?
- 错误如何反馈?
Excel导出怎么实现?
追问:
- 前端生成还是后端生成?
- 大数据量怎么办?
浏览器全屏功能如何实现?
追问:
- FullScreen API?
- 如何监听退出?
全屏状态如何同步?
追问:
- 多组件如何知道当前全屏?
新手引导功能如何实现?
追问:
- 使用第三方库还是自己实现?
- 如何记录用户是否看过?
如何实现只展示一次新手引导?
Vue3中地图API如何实现?
追问:
- 使用什么地图?
- 如何加载地图?
- 如何添加marker?
- 如何绘制路线?
地图大量Marker如何优化?
追问:
- 聚合?
- Canvas?
- 降低刷新频率?
ECharts如何封装?
追问:
- 如何避免重复初始化?
- resize怎么处理?
- 生命周期如何处理?
ECharts数据更新怎么优化?
追问:
- setOption区别?
- 是否销毁chart?
移动端适配怎么做?
追问:
- rem?
- vw?
- rpx?
- flexible?
Taro如何实现多端适配?
追问:
- 微信小程序和H5区别?
- 条件编译?
页面加载慢如何优化?
追问:
- 路由懒加载
- 图片优化
- 分包
- CDN
- webpack优化
Webpack做过哪些优化?
追问:
- Tree Shaking
- Code Splitting
- 压缩
- 缓存
登录注册流程怎么实现?
追问:
- Token管理?
- 表单校验?
- 密码加密?
uni-app登录和Web登录有什么区别?
追问:
- 微信授权登录?
- App登录?
Vue表单校验如何实现?
复杂表单如何设计?
追问:
- 动态表单
- 表单组件封装
ECharts实现设备数据统计怎么做?
追问:
- 数据格式?
- 动态更新?
- 大数据量优化?
ECharts大量数据如何优化?
追问:
- sampling
- large模式
- 分页
- 数据降采样
40,000台设备数据如何展示?
追问:
- 为什么不卡?
- 前端做了什么优化?
日采集200万数据如何处理?
追问:
- 前端是否直接请求全部数据?
- 后端如何分页?
- 数据聚合?
实时监控数据如何更新?
追问:
- WebSocket?
- SSE?
- 定时轮询?
uni-app原理了解吗?
追问:
- 和微信原生开发区别?
- 和Taro区别?
uni-app如何调用原生能力?
uni-app如何适配不同平台?