当前位置:   article > 正文

day05、06面试题_neo4j面试题

neo4j面试题

day05


1、你所做的物流项目中,运输路线错综复杂,你们如何进行计算路线的?是距离优先还是成本优先?
在我们物流项目中,采用Neo4j图数据库存储了机构、路线等数据,通过指定两个网点即可查询出相应的路线,路线的维度会有两个,分别是转运节点优先和成本优先,
这两个维度我们都实现了,在系统中有全局的设定,根据这个设定来进行选择使用哪个维度进行路线规划。
2、为什么选择使用Neo4j图数据库存储路线?
之所以选择Neo4j图数据库来存储路线,主要是以下两个原因:
1、我们的业务模型与Neo4j的数据结构非常的像,都是节点以及节点之间的关系
2、Neo4j支持深度查询,这样就可以查询任意指定的网点之间的路线
3、路线运输模型在Neo4j中是如何设计的?
我们的路线运输模型,主要是开始网点 -> 二级转运中心 -> 一级转运中心 -> 一级转运中心 -> 二级转运中心 -> 结束网点。
4、在Neo4j中如何设置关系的查询深度?
查询时,在关系中可以指定最小深度和最大深度,其中最小深度是可以省略的,格式:-[:TYPE*minHops..maxHops]->
语法有点多,没有刻意的去记,有个参考文档
5、在SDN中如何自定义Cypher查询?可以直接定义JPA方法,为什么还要自定义查询?
findBy属性名首字母大写
基于SpringData的规则只能实现一些基本的CRUD操作,一些复杂的操作就需要自己实现方法查询了,比如:查询转运最少的路线等。


day06
1、你们项目的MQ的可靠性如何保障?分别说说发送和消费的可靠性保障。
首先,我们使用RabbitMQ时,使用的队列是开启持久化的,这样确保服务宕机后,数据可以恢复。
消息生产者:
消息发送到交换机,但是没有队列与此交换机绑定,此时我们的处理方案是记录日志,由人工进行处理
消息发送到交换机,但是交换机不存在,此时我们将消息在本地持久化,存储到MySQL表中,后续使用xxl-job进行补偿性的发送处理
由于服务器宕机或网络原因,导致不能连接到MQ服务器,此时发送消息会产生异常,我们将异常进行捕获,然后基于Spring-Retry机制进行重试,重试全部失败后将消息在本地持久化,存储到MySQL表中,后续使用xxl-job进行补偿性的发送处理
消息消费者:
开启自动确认模式
消费失败进行重试,重试全部失败后,将消息发送到指定的error队列中,由人工进行处理

2、你们项目中的机构是如何管理的?为什么需要做数据同步?是怎么做同步的?
我们项目中的机构的数据是与权限中台同步的,由于这是两套系统,所以我们采用MQ的方式进行同步,权限管家在数据变更时发出消息,我们微服务进行监听消息,对应的将数据同步写入到Neo4j中。

3、有设计过树形结构菜单的表结构吗?怎么设计的?
有的。对于树形结构的表,主要是三个字段,分别是id、parentId,其中parentId标记该节点的父节点id。我们采用hutool工具包中的TreeUtil进行对树形结构进行构建,可以快速的构造出树形结构json数据。
4、项目中有使用过三方地图服务吗?你们是怎么用的?都用了哪些服务?
有用过的。不过我们并没有直接使用三方的地图服务,而是采用公司内部的地图中台服务,可以非常方便的与三方地图服务对接起来,基本上简单的几行代码就搞定了。
我有用过地理位置功能,就是将中文地址转化为经纬度坐标,还有就是指定两个点坐标进行车辆导航的路线规划。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/852809
推荐阅读
相关标签
  

闽ICP备14008679号