day05、06面试题

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、项目中有使用过三方地图服务吗?你们是怎么用的?都用了哪些服务?
有用过的。不过我们并没有直接使用三方的地图服务,而是采用公司内部的地图中台服务,可以非常方便的与三方地图服务对接起来,基本上简单的几行代码就搞定了。
我有用过地理位置功能,就是将中文地址转化为经纬度坐标,还有就是指定两个点坐标进行车辆导航的路线规划。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种面向对象的编程语言,而华为OD(Open Day)是华为举办的为期1-2天的校园招聘活动。在华为OD面试中,通常会有Java方面的问题。 面试者可能会被要求介绍Java的特点和优势,可以提到以下几点:首先,Java是跨平台的,可以在不同的操作系统上运行。其次,Java有丰富的类库和API,开发者可以借助这些工具提高开发效率。再次,Java具有良好的内存管理和垃圾回收机制,可以提高程序的性能和稳定性。此外,Java还有强大的多线程支持和安全性能,可以满足大规模企业级应用的需求。 除了Java的特点,面试者可能还会被要求回答一些具体的 Java 面试题。例如,可能会涉及基本的语法知识,如Java中的数据类型、循环结构、条件语句等等。还可能会涉及到Java的面向对象特性,如封装、继承、多态等。此外,还有可能会问到Java的异常处理、Java的I/O操作、Java集合框架等高级知识点。 在回答这些问题时,面试者应该清晰、简洁地表达自己的思路和观点,尽量避免模棱两可的回答。另外,面试者还可以结合自己的实际项目经验和编码能力,提供具体的案例或示例来支持自己的回答。在面试过程中,沟通能力和解决问题的能力也是重要的评判标准,所以面试者应该积极与面试官互动,展示自己的学习能力和团队合作能力。 总之,在Java华为OD面试中,面试者需要准备好Java基础知识,并能够根据问题灵活作答,展示自己的技术能力和潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值