版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年去哪儿网技术面试问题及答案详解一、编程题(共3题,每题20分,总分60分)题目1(Java编程题,20分)题目描述:去哪儿网需要对用户搜索的航班数据进行去重处理。假设输入一个航班列表,每个航班包含航班号(字符串)、出发时间(时间戳)和价格(整数)。请编写一个Java方法,去除重复航班(航班号相同且出发时间相同的航班),并按价格从低到高排序。示例输入:javaList<Flight>flights=Arrays.asList(newFlight("CA123",1682444800,800),newFlight("MU567",1682444800,1200),newFlight("CA123",1682444800,850),newFlight("HU456",1682444800,750),newFlight("MU567",1682445600,1200));示例输出:java[newFlight("HU456",1682444800,750),newFlight("CA123",1682444800,800),newFlight("MU567",1682444800,1200),newFlight("MU567",1682445600,1200)]要求:1.不能修改航班对象的属性,只能通过排序和过滤实现去重。2.时间复杂度尽可能低(最好O(nlogn))。答案:javaimportjava.util.;classFlight{StringflightNumber;longdepartureTime;intprice;publicFlight(StringflightNumber,longdepartureTime,intprice){this.flightNumber=flightNumber;this.departureTime=departureTime;this.price=price;}@OverridepublicStringtoString(){return"Flight{"+"flightNumber='"+flightNumber+'\''+",departureTime="+departureTime+",price="+price+'}';}}publicclassFlightProcessor{publicstaticList<Flight>removeDuplicatesAndSort(List<Flight>flights){if(flights==null||flights.isEmpty())returnnewArrayList<>();//使用Map去重,key为航班号+出发时间组合Map<String,Flight>uniqueFlights=newHashMap<>();for(Flightflight:flights){Stringkey=flight.flightNumber+flight.departureTime;//如果key已存在,保留价格较低的航班if(uniqueFlights.containsKey(key)){Flightexisting=uniqueFlights.get(key);if(flight.price<existing.price){uniqueFlights.put(key,flight);}}else{uniqueFlights.put(key,flight);}}//转换为List并排序List<Flight>result=newArrayList<>(uniqueFlights.values());result.sort(CparingInt(f->f.price));returnresult;}publicstaticvoidmain(String[]args){List<Flight>flights=Arrays.asList(newFlight("CA123",1682444800,800),newFlight("MU567",1682444800,1200),newFlight("CA123",1682444800,850),newFlight("HU456",1682444800,750),newFlight("MU567",1682445600,1200));List<Flight>result=removeDuplicatesAndSort(flights);result.forEach(System.out::println);}}解析:1.去重逻辑:通过航班号和出发时间的组合作为唯一键,使用`HashMap`存储唯一航班。如果发现重复航班,比较价格并保留较低价格的航班。2.排序逻辑:使用`Comparator`按价格升序排序。3.复杂度分析:去重操作为O(n),排序操作为O(nlogn),总体复杂度符合要求。题目2(Python编程题,20分)题目描述:去哪儿网需要统计用户评论中的关键词频率。给定一个字符串列表,每个字符串代表一条评论,请编写Python函数统计每个词出现的次数,并返回出现频率最高的前3个词及其出现次数。示例输入:pythoncomments=["机票价格太贵了","酒店位置很好,服务也不错","航班准点率很高","机票价格太贵了,但是酒店位置很好","服务不错,准点率很高"]示例输出:python[('价格',2),('酒店',2),('服务',2)]要求:1.忽略大小写和标点符号。2.只统计中文词语(如"价格"、"酒店")。答案:pythonfromcollectionsimportCounterimportredeftop_keywords(comments):合并所有评论并分词all_text=''.join(comments)使用正则提取中文词语words=re.findall(r'[\u4e00-\u9fa5]+',all_text)统计词频counter=Counter(words)返回前3个高频词returncounter.most_common(3)示例comments=["机票价格太贵了","酒店位置很好,服务也不错","航班准点率很高","机票价格太贵了,但是酒店位置很好","服务不错,准点率很高"]print(top_keywords(comments))解析:1.分词逻辑:使用正则表达式`[\u4e00-\u9fa5]+`匹配中文词语。2.统计逻辑:使用`Counter`统计词频并获取前3个高频词。3.注意:忽略大小写和标点符号,只统计中文词语。题目3(算法题,20分)题目描述:去哪儿网在推荐航班时,需要根据用户的历史搜索记录生成相似航班。给定两个航班列表,每个航班包含目的地和价格,请编写函数计算两个列表的相似度(航班数量相同且价格差异不超过20%的航班被视为相似)。示例输入:pythonlist1=[("北京",800),("上海",1200),("广州",650)]list2=[("北京",850),("上海",1150),("广州",600)]示例输出:python0.6667要求:1.相似航班必须数量相同。2.价格差异不超过20%的航班算作相似。答案:pythondefcalculate_similarity(list1,list2):iflen(list1)!=len(list2):return0.0similar_count=0for(dest1,price1),(dest2,price2)inzip(list1,list2):ifabs(price1-price2)/price1<=0.2:similar_count+=1returnsimilar_count/len(list1)示例list1=[("北京",800),("上海",1200),("广州",650)]list2=[("北京",850),("上海",1150),("广州",600)]print(calculate_similarity(list1,list2))解析:1.相似度计算:首先检查列表长度是否相同,然后逐个比较价格差异是否在20%以内。2.结果:相似航班数量占比即为相似度。二、系统设计题(共2题,每题20分,总分40分)题目4(Java/Go系统设计,20分)题目描述:去哪儿网需要设计一个实时航班状态监控系统,支持每分钟接收大量航班状态更新(如延误、准点等),并对外提供航班状态的查询服务。请设计系统架构,并说明关键技术选型。要求:1.系统需支持高并发(QPS>10万)。2.数据需支持实时查询(延迟低于1秒)。3.允许航班状态数据持久化(支持事后追溯)。答案:系统架构:1.数据采集层:使用Kafka作为消息队列,接收航班状态更新。Kafka的高吞吐量和容错性适合处理高频数据。2.数据处理层:-使用Flink或SparkStreaming进行实时数据处理,计算航班延误率等指标。-数据写入Redis(内存数据库)缓存热点航班状态,支持低延迟查询。3.数据持久化:-使用HBase或Cassandra存储历史航班状态,支持快速分页查询。4.查询服务:-提供RESTfulAPI接口,优先从Redis获取实时数据,Redis未命中时从HBase查询。关键技术:-Kafka:高吞吐量消息队列。-Flink/SparkStreaming:实时流处理。-Redis:内存缓存热点数据。-HBase/Cassandra:列式数据库持久化。解析:1.高并发处理:Kafka分片+Flink批流一体。2.低延迟查询:Redis缓存+HBase后端。3.持久化:列式数据库适合时序数据。题目5(Python/Go系统设计,20分)题目描述:去哪儿网需要设计一个机票价格预测系统,输入用户搜索记录和实时航班数据,输出未来24小时内机票价格的预测值。请设计系统架构,并说明关键技术选型。要求:1.预测精度需达到80%以上。2.系统需支持实时更新(数据每小时更新一次)。3.需考虑节假日等特殊因素的影响。答案:系统架构:1.数据采集层:-使用Prometheus监控航班价格实时数据。-用户搜索记录通过Elasticsearch索引。2.数据处理层:-使用Spark每小时聚合历史价格数据。-使用TensorFlow或PyTorch构建时序预测模型(LSTM)。3.模型训练:-使用节假日、天气等特征增强预测精度。4.预测服务:-提供RESTfulAPI接口,输入航班号和日期,返回预测价格。关键技术:-Elasticsearch:用户搜索记录索引。-Spark:实时数据处理。-TensorFlow/PyTorch:LSTM时序预测模型。-Prometheus:实时数据监控。解析:1.预测精度:LSTM适合处理时序数据,结合节假日特征可提升精度。2.实时更新:Spark每小时聚合数据,TensorFlowServing部署模型。三、数据库题(共2题,每题10分,总分20分)题目6(SQL题,10分)题目描述:去哪儿网数据库中有以下表:-`flights`(航班表,字段:`flight_id`,`origin`,`destination`,`price`)-`bookings`(订单表,字段:`booking_id`,`flight_id`,`user_id`,`status`)请编写SQL查询:1.查询每个目的地的航班数量。2.查询每个用户的订单数量,只显示订单状态为“已支付”的用户。答案:sql--1.查询每个目的地的航班数量SELECTdestination,COUNT()ASflight_countFROMflightsGROUPBYdestination;--2.查询每个用户的订单数量(状态为“已支付”)SELECTuser_id,COUNT()ASorder_countFROMbookingsWHEREstatus='已支付'GROUPBYuser_id;解析:1.分组查询:使用`GROUPBY`统计目的地和用户ID的航班/订单数量。2.条件过滤:使用`WHERE`过滤订单状态。题目7(数据库设计,10分)题目描述:去哪儿网需要设计一个机票预订系统的数据库表结构,要求:1.每个航班可以有多条预订记录。2.用户可以预订多个航班。3.订单需记录预订时间、价格和状态(如“待支付”“已支付”“已取消”)。答案:sql--航班表CREATETABLEflights(flight_idINTPRIMARYKEY,originVARCHAR(50),destinationVARCHAR(50),priceDECIMAL(10,2));--用户表CREATETABLEusers(user_idINTPRIMARYKEY,nameVARCHAR(50));--订单表CREATETABLEbookings(booking_idINTPRIMARYKEY,flight_idINT,user_idINT,booking_timeTIMESTAMP,priceDECIMAL(10,2),statusVARCHAR(20),FOREIGNKEY(flight_id)REFERENCESflights(flight_id),FOREIGNKEY(user_id)REFERENCESusers(user_id));解析:1.多对多关系:通过`bookings`表关联`flights`和`users`。2.外键约束:确保`flight_id
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谚语物候规律在农业文化遗产数字化保护与传承中的创新应用课题报告教学研究课题报告
- 底栖生物采样试题及答案
- 高中体育健康知识模块教学与教师专业发展研究教学研究课题报告
- 妇科产房相关知识培训课件
- 灌区现代化改造工程项目技术方案
- 高中地理教学中的AR互动游戏设计与效果评估教学研究课题报告
- 安全工作动态通讯讲解
- 2025年印度驾照考试题库及答案
- 育儿培训考试卷子及答案
- 2026年神祕岛阅读测试题及答案
- 合作购车位协议书
- 咨政类课题申报书
- 产科护士长2025年度述职报告
- 沐足行业严禁黄赌毒承诺书1
- 大国三农-辉煌成就版智慧树知到期末考试答案章节答案2024年中国农业大学
- 小学三年级综合实践课课件(共10张课件)
- 嵌入式软件概要设计说明书
- NY525-2021有机肥标准-文档
- 大理大学2023年数据库期末题库及答案
- 公路工程重大危险源管理方案
- 铅锌矿的选矿工厂自动化控制技术
评论
0/150
提交评论