# 面试前准备-1
对自身情况做一个检查
# 1. 准备一段自我介绍
我就主要讲讲我的工作和学习经历吧
# 1. 关于工作经历
我毕业之后一直在做前端这块,最开始是用jquery做的开发,那时候主要做一些商场系统或一些官网页面,有移动的端的也有pc的,有时候也会用jquery各种库做一些动效,做各种适配和兼容,那时候用的UI框架基本上是bootstrap,esui之类的,不过大部分是自己布局的,我的css也是那时候熟练起来的
之后在一家公司,那时候小程序出来用小程序做了一个简易的商城,再在之后就接触到mvvm了,最开始的时候主要学习和使用的是vue,直到现在为止最常用的全家桶是vue2+vuecli4x,主要做过各种后台管理系统,阿里的ant以及element框架都有用到过,移动端主要是用Vant以及饿了么的mint框架,在开发的同时,自己也封装过各种小组件,像富文本、国际化、上传、进度条、pdf等等
我任职的有家公司是做大屏可视化的,因为也是初创公司,人员比较少,当时我是技术负责人,里面有很多东西,包括对各种三维数据的了解以及处理,前端接口如何与硬件设备对接,前端框架如何与cesium库结合等,我都是从什么都不懂慢慢摸索过来的,当时我的主要工作是将三维场景跑起来,然后做一些三维场景功能的demo,像对小模型、视点、巡更、气泡、标注等的工具增删改次、模型单体化、视频融合等功能给组员,让他们去做业务的开发,同时做一些表格把控项目进度
上家公司业务方面就不赘述了,主要还是做后台管理系统,后面由于业务原因要做数据中台,所以把elk相关知识好好啃了一遍,主要难点是es数据与vue的结合,以及es的语法,es有些接近mongodb这种结构化语法,由于是数据中台,有些数据来源需要用爬虫,我又用node做了点爬虫的工作,查了各种资料,最终还是用了nightmare和puppetter这两个库来爬取数据并存到mysql数据库里面
# 2. 关于学习
关于学习的话,学习的时候以及工作中解决了问题之后,经常会忘,总要反复查资料,后来养成了记笔记的习惯,最开始是用csdn,后来在印象笔记里面,后面越来越觉得找起来有些费力,同时发现别人写的博客感觉很厉害,心痒羡慕的同时,也发现有些东西身边的朋友也需要,如果有博客就可以很方便的把自己的想法分享给别人,同时也可以和朋友一起相互督促学习,想着博客总归都是前端知识,就动起了自己搭一个博客的年头,于是自己琢磨出了vuepress的博客,到目前为止,所有学习笔记都记录在博客上面,同时也有对应学习笔记的源码放在GitHub上,我的博客不定期地在更新,现在有几个朋友也是在看我的博客学习,所以我应该会一直更新下去
有段时间,在做开发的时候,特别是查一些文档,感觉心有余力不足,后面发现是自己面向对象的思想有些薄弱,又学了一些java基础的一些东西,同时对js面向对象的相关知识点进行查漏补缺,后面了解到ts也了解了一些,同时做了一个vue+ts的小demo
前端技术日新月异,所以有时候一有时间就会零碎的学一些东西,所以对note、ts、webpack都有一些简单的理解,不过后期的话,我应该不会这么零散地去学习,本身做博客就是为了整合知识点,目前主要还是希望在大前端这条路上发展吧,现阶段主要系统过完react以及node+ts的知识点,后面有余力应该会再啃一些flutter和electrion的东西
# 2. 整理一下之前的业务场景
# 2.1. 三维可视化
# 2.1.1 三维可视化知识点
对于三维场景的学习主要还是公司业务上学习到的,所以理解总结的或许有些地方不到位,但我会尽可能保证准确性以及完整性
# 2.1.1.1 三维可视化有哪些主流公司
仅限于我了解到的
# 2.1.1.2. 三维可视化有哪些主要的引擎
- webgl
- three.js
- cesium.js
- marsv.js => 火星科技,在cesium的基础上封装
# 2.1.13. 我了解到的三维可视化知识点
主要是cesium
- 加载地球
- 加载地球底图
- 底图类型
- 天地图
- 高德地图
- 谷歌地图
- 百度地图
- 微软地图 => bingMap
- 底图功能
- 基础底图
- 可显示所在点的经度、纬度、海拔、方向以及视高
- 复位底图
- 点击后回到指定视区
- 视图
- 可切换三维视图、二维视图、哥伦布视图
- 全屏
- 方向盘操作
- 按下鼠标左键并向四周拖拽不释放可修改视图角度,双击重置视图;单击并拖拽旋转,修改视角方向
- 鼠标右键
- 可显示此处经纬度、显示当前视角信息、开启光照效果、开启深度检测、绕此处环绕飞行、移动到此处、第一视角站到此处
- 基础底图
- 注意事项
- 主要是一些地图的底图,每个地图加密算法不一样,坐标点不一样,天地图未经过加密,其他地图坐标都是通过天地图的坐标转换而来的
- 底图类型
- 加载地球模型
- 主要用3dtiles来加载模型
- 主要用cesiumlab (opens new window)工具处理导出
- 3D Tiles是用于流式传输大规模异构3D地理空间数据集的开放规范。为了扩展Cesium的地形和图像流,3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据。
- 3D Tiles是由一个从一开始就使用WebGL的团队设计的,而OpenGL在此之前已经使用了很多年。因此,与glTF一样,从接收3D Tile到使用WebGL渲染3DTF的流程简化为快速简单,并最大限度地减少客户端处理。为了减少WebGL绘制调用的数量,可以预先批量处理或批量处理切片。
- 3dtiles有两种方法直接获取模型数据,第一个是用geojson盖在上面,第二个是处理模型的时候分开,然后用单体化的类去获取
- 主要用3dtiles来加载模型
- 加载模型数据格式(这里的都是较大场景)
- 单模型场景
- 即把所有场景效果改成false
- 倾斜摄影
- 原格式为osgb,由无人机飞行得来,用cesiumlab可以转化成3dtiles
- 城市建筑白模
- 原格式为dae,因为没有贴图,模型较小,用cesiumlab可以转化成3dtiles
- 人工模型
- 原格式为dae,在白模的基础上加上贴图,有精模和简模之分,模型很大
- bim数据
- 建筑模型,单体化比较好做,原格式为dae,用cesiumlab可以转化成3dtiles
- 单模型场景
- 小模型加载 => gltf
- GLTF——3D图形界的JPEG
- glTF(GL TransmissionFormat),即图形语言交换格式,它是一种3D内容的格式标准,由Khronos Group管理(Khronos Group还管理着OpenGL系列、OpenCL等重要的行业标准);
- glTF的设计是面向实时渲染应用的,尽量提供可以直接传输给图形API的数据形式,不再需要二次转换
- glTF对OpenGL ES、WebGL非常友好
- glTF的目标是:3D领域的JPEG
- 作为一个标准,自2015年10月发布(glTF 1.0)以来,已经得到了业界广泛的认可,你可以相信它的水平
- GLTF具体的信息可以去官方网站上看:https://www.khronos.org/gltf/
- 加载地球底图
- 地球标注
- 单个点
- 点、图标点、文字、小模型
- 二维空间、二维贴地
- 有深度检测功能
- 线、曲线、面、圆、矩形
- 三维空间
- 墙、立体、圆柱体、矩形体
- 单个点
- 场景控制
- 开场动画
- 旋转的地球
- 双屏对比
- 加载不同的地球底图
- 鹰眼
- 小地图
- 大部分是二维地图
- 巡更漫游
- 显示隐藏巡更线
- 增删改巡更路线
- 开始巡更、停止巡更、暂停巡更
- 打开关闭深度检测
- 开启摄像头
- 巡更到某个位置会打开摄像头
- 监控视频格式主要是*.w3u8
- 主要使用videojs插件
# 2.1.2 三维可视化业务场景
# 2.1.2.1 模型部分
- 加载模型
- 标注的增删改查
- 视点的增删改查
- 巡更的增删改查
- 关键点事件处理(一般是加载视频)
- 其他
- 单体化……
- 视频投影……
# 2.1.2.2 硬件设备
- 需要对接一些硬件设备信息
- 展现方式为标注
- 硬件设备信息详情主要是:
- 文字信息(大部分不是实时的)
- 图片信息(需要实时或者普通接口)
- 视频-摄像头(一般使用hls进行对接【对方提供*.m3u8格式视频流】)
# 2.1.2.3 统计图
- 二维或者三维,统计设备信息
# 2.1.2.4. 布局
- 设备报警信息放哪里
- 相关统计图放的位置
- 哪些页面放哪些模块
# 2.2. 后台管理
- 封装了axios
- 配置了nginx,使vue使用proxy之后打包可以正常运行
- 封装了若干插件
- 进度条、上传、 quill 富文本、使用 i18n 实现国际化等
~End~