# 面试前准备-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盖在上面,第二个是处理模型的时候分开,然后用单体化的类去获取
    • 加载模型数据格式(这里的都是较大场景)
      • 单模型场景
        • 即把所有场景效果改成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~