顺丰科技GIS笔试复盘:坐标系、空间数据库与WebGIS考点全解析
作为一个经历过顺丰科技2019年秋招GIS开发工程师笔试的人我一直想把当时那套客观题整理出来。说实话当年拿到卷子的时候我有点意外——整个笔试几乎全是客观题单选、多选、判断、填空没有一道传统意义上的“手写代码”或“系统设计”但覆盖的知识点非常杂从GIS基础理论、坐标系投影到空间数据库、编程数据结构全都有涉及。这种出题风格其实很考验平时积累的扎实程度临时抱佛脚基本没用。这篇文章我就把当时整理、回忆出来的题目按模块拆开结合我对每道题的理解和踩过的坑给后面准备顺丰科技以及其他物流类大厂GIS岗位的同学做个参考。题目是回忆版具体表述不一定和原卷完全一致但考点方向是准的。1. 顺丰科技GIS笔试为什么这么考出题逻辑与考点分布1.1 物流行业的GIS应用场景决定了考题方向顺丰科技做GIS开发核心不是做测绘也不是做遥感而是把GIS能力落到物流业务里。一个快递从下单到签收中间会经历地址解析、路径规划、配送范围圈定、车辆实时监控、区域热力分析等多个环节每一个环节背后都有GIS技术的支撑。理解了这一点你就明白为什么笔试会考那么多“基础但琐碎”的知识点。比如地址解析用户下单填写的地址是自然语言需要把它转成标准化的省市区街道门牌号再关联到地图坐标上这里面就涉及到地理编码Geocoding的流程设计。再比如路径规划顺丰的干线运输和末端配送都要做最优路径计算这背后是路网拓扑和最短路径算法。还有配送范围的圈选一个站点负责哪些小区、哪些写字楼需要用缓冲区分析或者空间连接来做。所以顺丰的GIS岗位笔试本质上是在筛选两类人第一类是GIS科班出身、空间数据基础扎实的人第二类是虽然GIS技术深度一般但计算机基础好、能把GIS工具应用到工程场景中的人。出题人显然不想只招“会用ArcGIS画图”的人而是希望你能在分布式系统里做空间计算服务在海量轨迹数据上做空间分析在WebGIS架构上做地图可视化。1.2 题型分布与知识点占比分析整个笔试的客观题我印象里大概有60到70道时间限制比较紧平均一道题只有不到两分钟。题型分为四类单选题、多选题、判断题、填空题。多选题的得分规则比较严格少选多选都不得分这个在答题策略上需要特别注意。根据我整理的回忆版和当时同批面试者的交流知识点的占比大致如下表所示考点模块大致占比典型考查方向GIS基础理论约30%空间数据结构、拓扑关系、空间分析概念坐标系与地图投影约15%WGS84/GCJ02/BD09、投影类型、变形特性空间数据库与SQL约20%空间索引、空间函数、SQL查询编程基础与数据结构约15%时间复杂度、二叉树、队列栈WebGIS与开发框架约10%GeoServer、OpenLayers、ArcGIS API测绘遥感基础约10%分辨率、波段、影像处理这个分布其实很有参考价值。你如果只复习“ArcGIS怎么操作”而不去看空间数据库和数据结构到了考场上会很吃亏。我当时就是吃了“重GIS轻编程”的亏后面几道时间复杂度题基本是蒙的。2. 坐标系与地图投影笔试里最绕、但必须吃透的模块2.1 坐标系高频题WGS84、GCJ02与BD09的区别这一块可以说是国内GIS岗位笔试的“必考点”顺丰科技也不例外。原因是物流行业每天都要处理手机GPS上报的坐标、地图API返回的坐标而国内地图坐标普遍经过加密偏移如果你不清楚坐标系之间的转换逻辑做轨迹纠偏、站点匹配的时候就会出现几十米甚至上百米的偏移。当年的题目大概是这样的用户手机上报的GPS坐标属于哪种坐标系高德地图使用的坐标系是什么两者相互转换时要注意什么这里要记清楚一个基本链条GPS原始坐标是WGS84这是卫星定位得到的真实经纬度国内出于地图合规要求高德地图使用GCJ02国测局坐标百度地图使用BD09百度坐标其中BD09是在GCJ02基础上又做了一次二次加密偏移。所以如果你拿到的是WGS84坐标直接在百度地图上标注位置会偏出去几百米必须做两次转换。顺丰这种有自研地图服务的公司对坐标系的处理格外敏感。笔试里还可能给出一段坐标转换的场景判断题比如“某轨迹数据源是百度坐标需要在高德底图上展示能否直接叠加”答案显然是不能必须先把BD09转换成GCJ02。反过来如果要做GPS轨迹回放得把平台坐标转回WGS84才能和原始定位对比。2.2 投影坐标系与地理坐标系选择判断题的常见坑另一个高频考点是地理坐标系GCS和投影坐标系PCS的区别。简单说地理坐标系是用经纬度来表示地球表面点的位置是一个三维球面坐标投影坐标系则是把球面展开到二维平面后用平面坐标X、Y来表示。笔试里常见的判断是“在ArcGIS中WGS 1984 Web Mercator属于投影坐标系还是地理坐标系”——答案是投影坐标系虽然它的名字里有“WGS84”但Web Mercator已经做了墨卡托投影。这个坑特别多人踩。因为很多同学一看到WGS84就默认是地理坐标系但实际上WGS 1984 Web Mercator (EPSG:3857) 是一个投影坐标系广泛应用于Web地图切片。如果题目里问“EPSG:4326和EPSG:3857有什么区别”你要能答出来4326是WGS84地理坐标系单位是度3857是Web墨卡托投影坐标系单位是米。还有一道判断投影变形的题墨卡托投影属于等角投影适合航海导航但高纬度地区面积变形严重高斯-克吕格投影是等角横切椭圆柱投影按6度带或3度带分带适合大比例尺地形图。题目可能会给你一个场景比如“全国范围的面积统计应该选择哪种投影”正确答案不是Web Mercator而是适合面积分析的等积投影比如Albers等积圆锥投影。2.3 比例尺与分辨率换算客观题里的计算小题顺丰笔试里还有一类小题是比例尺换算。给出地图比例尺1:10000问图上1厘米对应的实地距离是多少米。这类题不难但很考验你做题是否细心。1:10000的意思是图上1单位长度对应实地10000单位长度所以图上1厘米对应实地100米。但稍微绕一点的是影像分辨率和比例尺的关系。题目可能会问0.5米分辨率的卫星影像在1:2000比例尺下能不能满足成图要求这涉及到一个经验公式成图比例尺的分母约等于分辨率乘以2到4倍换算关系大概可以按“分辨率×2000成图比例尺分母”来估算。0.5米分辨率大致能支撑1:1000到1:2000的成图需求所以答案是“基本满足”。这类计算题在客观题里占分不多但是属于“送分题”和“送命题”的分界线——会的人一眼看出答案不会的人浪费时间推公式。我的建议是考前把这些常用的换算关系记成一张小便签比如“1°纬度约111公里”“1:10000下1厘米100米”“0.5米分辨率对应1:2000”等考场上直接调用。3. 数据结构与空间数据模型GIS开发笔试的硬核部分3.1 矢量与栅格不仅要会选还要会说为什么顺丰的笔试里有一类题是给出一个应用场景让你选择用矢量数据还是栅格数据。最常见的场景是配送站点周边3公里范围内的小区分布分析应该用哪种数据模型答案自然是矢量数据。因为小区、站点、道路这些都是离散的地理实体适合用点、线、面来表达而且要做缓冲区分析和空间关系查询时矢量数据的拓扑关系更明确精度也更高。反过来如果做整个城市的配送需求热度图用栅格做核密度分析更高效因为栅格本身就是规则格网适合做逐格网的统计计算。这背后其实是两种数据模型的本质差异。矢量模型用坐标序列来记录几何对象优点是数据量小、精度高、拓扑关系清晰缺点是数据结构复杂、空间分析计算量大栅格模型用像元来覆盖整个空间优点是数据结构简单、叠加分析方便缺点是数据量随分辨率急剧增大而且因为是离散格网精度受限于像元大小。有同学会问实际开发中到底用哪种我的经验是看业务需求需要精确计算面积、长度、做拓扑分析时用矢量做大范围连续表面的分析、影像分类、插值时用栅格。顺丰的时效地图、网格化配送管理很多时候是把矢量数据栅格化再按网格维度做聚合计算所以两种模型都会用到笔试里考察选择判断是很正常的。3.2 空间拓扑关系点线面的九交模型与常见判断题GIS里描述两个几何对象之间位置关系最经典的理论是DE-9IMDimensionally Extended Nine-Intersection Model用两个几何对象内部、边界、外部的交集维度组合成一个3×3矩阵。笔试不会让你默写九交模型矩阵但会考一些具体的拓扑关系判断。比如一条河流线要素穿过一个小区面要素两者之间的关系是什么答案是“穿越”Crosses。再比如两个相邻的行政区面要素共享一条边界两者的关系是“相接”Touches。还有完全重叠、包含、内部、相等等关系这些都是GIS里的基本拓扑关系词。顺丰的笔试里我印象比较深的一道判断是“拓扑关系在数字化采集时是否会自动建立”答案是否定的。矢量数据在数字化手绘或自动矢量化之后必须经过拓扑检查、拓扑编辑才能构建和维护节点、弧段之间的连接关系。ArcGIS里的拓扑工具条就是干这个事的。出这道题的意图是看你对GIS数据生产流程是否真的动手操作过而不仅仅是背概念。3.3 空间索引与常用算法R树、四叉树、抽稀算法空间索引是GIS开发笔试里偏计算机的部分。题目一般会问空间数据库常用的空间索引结构有哪些最典型的是R树R-Tree和四叉树Quadtree。R树把空间对象按最小外包矩形MBR组织成一个树状结构查询时先判断MBR是否相交快速过滤掉大量不相干的对象。四叉树则是将空间均匀递归划分为四个象限适合管理海量点数据。这一块顺丰考得不算深但有一道题我记得很清晰——Douglas-Peucker抽稀算法的描述判断它主要用于矢量数据压缩通过保留曲线上的特征点来减少数据量。题目问你“DP算法是否会导致矢量数据拓扑关系发生变化”答案是“可能”。因为抽稀本质是对坐标点的筛选如果抽稀程度过大相邻线要素之间的交点、共享边界可能会发生位置偏移甚至破坏原有的拓扑一致性。这也是实际做轨迹压缩时非常常见的坑。还有一个算法是判断点是否在多边形内部Point-in-Polygon。经典做法是射线法从待判断点引一条水平射线计算与多边形边界的交点数奇数为内、偶数为外。这个算法在配送范围匹配、地理围栏判断里使用频率非常高笔试也常出。4. 空间数据库与空间SQL顺丰笔试的实战派题目4.1 空间SQL必考函数ST_Contains、ST_Intersects、ST_Distance空间数据库是顺丰科技GIS开发笔试的重头戏因为物流业务里大量的空间过滤、区域匹配、距离计算最终都要落到数据库SQL上。PostGIS作为最常用的开源空间数据库扩展几乎是必考的。当年的题目主要考几个函数的使用语义。ST_Contains(A, B)判断A是否包含BST_Intersects(A, B)判断两个几何对象是否有交集ST_Distance(A, B)计算两个几何对象之间的最小距离ST_Within(A, B)判断A是否完全在B内部。这些函数的细微差别是高频考点比如ST_Contains和ST_Within的区别一个是被包含方在前一个是包含方在前搞反了结果就错了。还有一种场景题给定一个配送站点的经纬度坐标用SQL查询出半径3公里内的所有订单。这道题的SQL写法有很多种低效的做法是等经纬度加减一个固定值来做范围过滤高效的做法是用PostGIS的ST_DWithin函数结合空间索引。ST_DWithin(A, B, distance)可以在指定的距离范围内判断两个几何对象是否相交配合GIST空间索引查询性能可以做到毫秒级。顺丰的笔试考得比较务实不会让你现场写一大段SQL而是考你对这些函数的理解是否正确。比如多选题里问“下列哪些函数可以用于判断两个面要素是否重叠”正确答案包括ST_Intersects和ST_Overlaps而ST_Crosses适合线和面、线和线的关系判断不能用来判断两个面的重叠。这个细节很容易被忽略。4.2 空间索引与查询优化为什么加索引后还是慢空间SQL题目里还会牵扯到性能优化。我记得有一道判断是“空间查询只要加了空间索引就一定快。”答案是否定的。空间索引减少的是空间过滤阶段的候选集规模但如果你在查询里对空间字段做了函数运算比如ST_AsText(geom) LIKE %xxx%数据库就无法正常使用空间索引查询性能照样很糟糕。更常见的做法是把空间字段的过滤条件和属性字段的条件组合使用。比如查询“某个区域内且状态为已签收的订单”正确写法是先通过空间索引缩小范围再叠加status已签收的属性过滤这样从千万级订单表里查询也能快速返回。反过来如果属性过滤条件本身就能排除大部分数据先做属性过滤再做空间过滤反而是更优的。这种优化思路笔试里不一定会直接问但面试官可能在客观题背后的沟通环节追问所以理解原理很重要。另外还有一道题考了空间数据类型。题目给出一张表的字段定义问哪些字段适合建立空间索引。答案是geometry字段。varchar类型的经纬度字符串不适合建空间索引因为字符串无法直接参与空间运算。这也是实际项目中经常遇到的坑——有人把经纬度存成varchar结果每次查询都要转成数值才能计算性能差得离谱。4.3 字段处理细节日期格式与数值精度顺丰笔试里还出现过一些和SQL基本功相关的小题比如GIS属性表里日期字段怎么赋值。题目问“日期字段要存成yyyyMMdd格式SQL里应该如何写入”正确答案就是字符串20240825或者日期转换函数产生的日期值关键是必须满足格式匹配。虽然这个考点和GIS本身关系不大但GIS工程师经常要和业务表的日期字段打交道比如按天分区的订单表、按小时聚合的轨迹表日期格式错误会直接导致数据关联不上。再比如数值字段保留两位小数的处理。题目问“GIS属性表里面积字段要保留两位小数SQL怎么处理”答案是用ROUND函数比如ROUND(area::numeric, 2)。这里有个坑PostgreSQL里如果直接用ROUND函数处理浮点类型有可能会报错必须先把字段转成numeric类型再四舍五入。类似的细节还包括筛选某个字段是否有重复值时用GROUP BY HAVING COUNT(*)1的组合而不是简单的DISTINCT因为DISTINCT去掉重复但无法告诉你哪些字段值重复了。这些小题看着不起眼但都是实际处理GIS属性数据时的日常操作。5. 编程基础与WebGIS拉开差距的模块5.1 数据结构基础题时间复杂度和容器选择GIS开发工程师说到底还是开发工程师所以编程基础一定会考。顺丰笔试里出现的编程基础题不算难但覆盖面比较广。有一道题是在一个List中频繁执行插入和删除操作应该选用哪种数据结构正确答案是链表因为数组的插入删除需要移动大量元素时间复杂度是O(n)而链表在已知节点的情况下插入删除是O(1)。还有一道题是二叉树的前序遍历顺序我印象里是给了一个简单的二叉树让你选出前序遍历的结果。前序遍历是根左右只要记住这个口诀就能做对。队列和栈的区别也是必考。队列先进先出FIFO栈先进后出LIFO。顺丰的题目给了一个场景多个快递订单按时间顺序进入分拣系统分拣机按照先进先出的顺序处理问应该用哪种数据结构。答案是队列。这类题本质上是考你能不能把数据结构对应到实际业务场景中。5.2 WebGIS与常用框架GeoServer、OpenLayers和地图服务WebGIS模块的客观题主要围绕地图服务架构和图层的发布方式展开。比如ArcGIS Server、GeoServer发布的地图服务分别是什么常见的有WMSWeb Map Service、WMTSWeb Map Tile Service、WFSWeb Feature Service。WMS按需渲染地图图片WMTS把地图切好瓦片后直接分发WFS返回的是矢量要素数据而非图片。顺丰笔试里有一道判断是GeoServer是否可以发布矢量切片服务。答案是肯定的GeoServer支持通过Vector Tiles扩展发布矢量瓦片。还有一道题问在浏览器端做地图可视化时OpenLayers和Leaflet都属于什么类型的库。答案是JavaScript地图开发库两者都支持加载瓦片底图、绘制矢量要素、实现交互操作。这里我多说一句WebGIS的考察重点其实不在“会不会写某个API”而在“有没有整体架构意识”。比如题目给出一个地图服务架构图让你判断前端、后端、空间数据库这三层分别对应什么组件。前端是OpenLayers后端是GeoServer数据库是PostGIS这三层构成了最经典的WebGIS技术栈。顺丰这种体量的公司地图服务会有更复杂的架构但笔试阶段考到这一层已经够了。5.3 遥感与影像处理的边缘考点遥感基础在顺丰的GIS笔试里占比不大但也不能完全放弃。最常考的包括多光谱影像的波段含义、空间分辨率与识别能力的关系、影像融合和正射校正的目的。有一道题问0.5米分辨率影像能识别以下哪个目标选项包括小汽车、行人、车牌号。答案是大约可以识别小汽车行人约需要0.1-0.2米分辨率车牌号需要更高的亚米级甚至厘米级分辨率。还有一道题考了正射影像的作用——通过消除地形起伏和传感器姿态引起的几何变形让影像具有地图的几何精度。这和热词里“gis正摄影像如何压缩”相关压缩处理一般是在保证几何精度和清晰度的前提下对影像做有损压缩或重采样来减小文件体积方便在线发布。遥感题目虽然占比小但如果时间充裕建议把分辨率、波段、影像类型这几个基础概念过一遍。这部分的分数属于“拿到不难、丢分可惜”的类型。6. 答题策略与复盘从客观题到技术面的衔接6.1 时间分配与多选题的得分策略客观题的题量不小时间紧合理分配时间非常关键。我的经验是单选题和判断题控制在每道1分钟以内填空题稍微多留点时间因为要写具体数值或名称多选题每道2分钟左右因为选项多、组合多容易看错。多选题是整张卷子最容易失分的地方。顺丰的规则是少选多选都不得分这就意味着你拿不准的选项不要选。如果你能确定两个选项正确但第三个选项不确定宁可只选两个确定的也不要抱着“多选一个可能得分”的心态去赌。因为我实测下来蒙错的概率远大于蒙对的概率不如把确定的都写上。如果时间到了还有几道题没做优先做计算题和常识判断不要在某一道复杂的SQL题上死磕。客观题的价值在于整体得分率不是单题满分。6.2 高频错题复盘坐标偏移和空间索引是重灾区我在复盘自己的错题时发现错得最多的是坐标系相关的判断题和空间索引优化选择题。坐标系的原因是记忆不牢把GCJ02和BD09的转换关系记反了空间索引的原因是概念混淆以为加了索引就对所有查询生效忽略了函数运算会阻断索引使用。针对这些错题我的做法是整理了一个“一页纸错题本”把每个易错知识点浓缩成一句话。比如“WGS84转百度坐标必须先转GCJ02再转BD09”“ST_DWithin只能用于空间索引字段直接参与的情况”“射线法判断点在多边形内奇内偶外”。考前翻一遍比盲目刷题效果要好得多。6.3 从客观题推断公司技术栈为面试做准备客观题除了用来筛人其实也是你了解目标公司技术栈的窗口。从顺丰科技的这些题目里你能明显看出他们做GIS开发的技术方向PostGIS空间数据库、GeoServer地图服务、JavaScript地图前端、坐标系转换、轨迹数据处理。这些关键词在后续的技术面中大概率会被深入追问。所以我的建议是笔试结束后趁热把题目里涉及的技术栈记下来逐个查一遍整理出自己的技术清单。如果笔试考了DP算法抽稀你就去了解一下轨迹压缩在物流里的实际应用如果考了ST_DWithin你就去研究一下PostGIS在千万级数据下的索引调优。这样笔试的每一道题都能变成你面试的弹药。对我个人来说这份笔试复盘最大的价值不是“押中了面试题”而是逼着我系统过了一遍GIS开发的知识体系。很多知识点在学校里学过就忘了笔试像一面镜子把你的知识盲区照得一清二楚。不管最后有没有拿到offer这个过程本身就值得认真做一遍。最后再分享一个小技巧如果你也在准备类似的大厂GIS笔试不要只盯着GIS教材看把数据结构、SQL优化、WebGIS框架这些内容拉通复习同时多动手操作PostGIS和GeoServer等开源工具因为客观题能考察的深度有限真正的分水岭往往在“用过”和“听说过”之间。