2022最全WebGIS面试题分享

2022最全WebGIS面试题分享
最新回答
你与北诗

2021-07-29 02:46:20

2022年WebGIS面试题汇总如下

一、基础问题
  1. 请做个自我介绍

    需结合GIS开发经验,突出技术栈(如OpenLayers、Leaflet)、项目经历及解决实际问题的能力。

  2. 路由生命周期(导航守卫)

    全局守卫

    beforeEach(to, from, next):路由跳转前触发。

    beforeResolve(to, from, next):解析守卫,在所有组件内守卫和异步路由组件解析后触发。

    afterEach(to, from):跳转完成后触发。

    路由守卫

    beforeEnter(to, from, next):针对单个路由配置的守卫。

    组件守卫

    beforeRouteEnter(to, from, next):进入组件前触发。

    beforeRouteUpdate(to, from, next):路由更新时触发。

    beforeRouteLeave(to, from, next):离开组件时触发。

二、技术栈与项目经验
  1. 项目中使用哪些技术栈?

    示例回答:

    前端:jQuery + Bootstrap 或 Vue + Vue-router + Element-UI。

    后端:Node.js + Express 连接MySQL数据库。

    地图服务:OpenLayers加载天地图WMTS服务。

  2. 天地图的服务格式及加载方式

    天地图采用OGC WMTS标准,通过OpenLayers的ol.source.WMTS或ol.source.XYZ加载。

    ol.source.XYZ:需配置URL模板、坐标系(如EPSG:3857)。

    ol.source.WMTS:需配置原点、分辨率数组、级别、坐标系等参数。

  3. WMS与WMTS的区别

    WMTS:返回固定大小的瓦片,支持缓存,响应快。

    WMS:返回完整图片,无缓存,适合动态渲染。

  4. 其他OGC标准服务

    WFS(要素服务)、WPS(地理处理服务)、WCS(栅格服务)。

  5. 天地图的坐标系

    CGCS2000(中国2000国家大地坐标系)。

  6. Web墨卡托投影与地理坐标系的区别

    地理坐标系:三维(经纬度+大地高),如WGS84。

    Web墨卡托投影:二维(XY坐标),形状为正方形,常用于Web地图。

  7. 常用坐标系分类

    大地坐标系:三维(经纬度),如WGS84、CGCS2000。

    投影坐标系:二维(XY),如Web墨卡托(EPSG:3857)。

三、JavaScript与前端开发
  1. 为什么JS是单线程?

    JS需操作DOM,多线程会导致冲突(如一个线程删除元素,另一个线程添加子元素)。

    Web Worker提供多线程能力,但无法操作DOM。

  2. JS单线程问题及解决方案

    问题:同步任务阻塞页面,耗时任务(如网络请求)导致卡顿。

    解决方案

    异步任务:通过消息队列和事件循环(Event Loop)处理。

    执行顺序:同步任务 → 微任务(如Promise.then) → 宏任务(如setTimeout)。

  3. 宏任务与微任务

    宏任务:setTimeout、setInterval、I/O、UI渲染。

    微任务:Promise.then、process.nextTick。

    执行顺序:主线程 → 微任务队列 → 宏任务队列。

四、地图服务与优化
  1. 如何发布自定义地图服务?

    使用GeoServer(开源)或ArcGIS/SuperMap/MapGIS(商用)发布WMS/WMTS服务。

  2. 点图层加载优化

    方法

    使用矢量切片(Vector Tiles)减少数据量。

    启用聚类渲染(如OpenLayers的ol.source.Cluster)。

    分级加载(根据缩放级别动态显示点)。

  3. 查询河周边污染工厂的实现思路

    步骤

    使用空间查询(如PostGIS的ST_DWithin)筛选河流缓冲区内的工厂。

    结合属性查询(如污染等级字段)过滤结果。

    在前端通过OpenLayers高亮显示符合条件的工厂。

  4. 影像与矢量叠加实现

    前端:使用ol.layer.Group组合影像图层(如XYZ源)和矢量图层(如GeoJSON源)。

    后端:通过WMS服务叠加返回单一图片。

五、扩展问题
  1. 是否了解Cesium?

    Cesium是开源的3D地理可视化库,支持倾斜摄影、地形数据加载,常用于三维WebGIS开发。

  2. 是否熟悉Vue3和TypeScript?

    Vue3的Composition API和TypeScript的静态类型检查可提升代码可维护性,建议结合OpenLayers使用。

  3. 数据库与SQL经验

    常用数据库:PostgreSQL(PostGIS扩展)、MySQL、MongoDB。

    示例SQL

    -- 查询河流缓冲区内的工厂SELECT * FROM factories WHERE ST_DWithin(geom, (SELECT geom FROM rivers WHERE name='某河'), 1000);
  4. 浏览器适配经验

    使用CSS媒体查询Flex/Grid布局适配不同屏幕尺寸。

    测试主流浏览器(Chrome、Firefox、Edge)的兼容性。

六、开放性问题
  1. 项目中的亮点与挑战

    亮点:如高性能瓦片加载、自定义空间分析工具开发。

    挑战:如大数据量渲染卡顿,通过Web Worker或服务端渲染解决。

  2. 未来规划

    短期:深入学习三维GIS(Cesium)或大数据可视化(Mapbox GL)。

    长期:向全栈GIS开发或空间数据分析方向发展。

以上问题覆盖了WebGIS开发的核心知识点,建议结合实际项目经验准备具体案例,以提升面试通过率。