文章目录
- 1. 你们这个项目多少人在做?人员分布是怎样的?做了多长时间?
- 2. 你们项目一共有几个端? 每个端都是哪些人在用? 作用是什么? 有哪些模块?
- 3. 你们项目一共有几个微服务? 每个微服务负责的任务是什么?
- 4. 你们项目一共有几个数据库? 你负责的数据库是哪个? 核心表是哪几张? 表中有哪些字段?
- 5. 你负责的核心业务的功能代码是怎么实现的?(比如分布式锁、分布式事务)
- 6. 找到你项目表述中的每个技术,然后这个地方为什么要用此技术?怎么用的?
- 7. 你的项目上线了吗? 有网址可以访问吗? app可以看看吗? 小程序可以看看吗?
- 8. 你们项目现在有多少用户,日活量是多少? 项目访问量、并发量是多少,服务器几台?
- 9. 你们项目在哪些地区推广的? 一共投放了多少台设备?效果怎么样?
- 10. 你们项目有没有做过广告或者营销? 盈利点在哪里? 如何推广用户?
- 11. 你开发这个项目过程中遇到什么难题没有啊?咋解决的?
- 12. 项目上线之前,测出大概多个bug,用什么记录bug? 线上bug如何调试?
- 13. 给你一个需求,从头到尾应该怎么实现? 说一下整个流程?
- 14. 项目上线之后有没有做后期维护?在维护过程中你都做了哪些工作?
- 15. 项目中有没有用过多线程, 使用场景是什么?
- 16. 刚进入项目组,如何熟悉项目?
- 17. 这个项目中哪个模块是你认为做的比较好,好在哪里,用了什么技术实现?
- 18. 还有2天就要上线,产品经理突然找你要加需求,怎么办?
- 19. 公司项目上线完整流程是什么样的?
- 20. 说一说你们项目的整体架构, 来给你纸笔 画一下
- 你工作过的这两家公司,你选择他们的原因,以及你在工作中的收获,还有离职的原因。
1. 你们这个项目多少人在做?人员分布是怎样的?做了多长时间?
我们项目组一共十个人,包括四个后端开发人员、两个前端开发人员、两个测试人员、一个项目经理和一个产品经理。
从需求分析、设计、开发到测试上线到最后的维护阶段,整个项目的周期大概是六个月左右。
2. 你们项目一共有几个端? 每个端都是哪些人在用? 作用是什么? 有哪些模块?
我们这个项目有三个端,运营管理WEB端、旅游公司WEB端和游客APP端。
游客APP端可以进行旅游线路搜索、旅游报团、门票购买、私人定制旅游、签到、户外徒步等操作。
旅游公司WEB端中,旅游公司管理人员可以上传编辑删除旅游线路数据、确定报名名额、处理订单、销售额统计分析、收益提现等操作;商家管理人员可在WEB端入驻店铺、销售商品、编辑商品、处理订单、销售额统计、收益提现等操作。
运营管理人员可以在运营管理端审核旅行社入驻信息、管理用户订单等操作。
3. 你们项目一共有几个微服务? 每个微服务负责的任务是什么?
我们这个旅游项目有10个微服务。
- 用户服务:负责管理用户信息、身份认证和权限控制,包括用户注册、登录、个人信息管理等功能。
- 行程服务:提供线路推荐功能,根据用户偏好、时间和地点等条件生成个性化行程推荐。
- 订单服务:负责旅游订单的创建和管理,包括产品浏览、下单、支付和退款等功能。
- 支付服务:负责处理支付相关的逻辑,包括接收订单支付消息、调用第三方支付平台进行支付操作并处理支付结果。
- 搜索服务:负责提供旅游线路的搜索功能。
- 客服服务:负责处理用户的咨询和投诉。
- 评论服务:管理用户对旅游线路的评价和评论,包括查看评论、发布评论和评分等操作。
- 数据服务:负责对旅游数据进行汇总、分析和挖掘以提供决策支持。
- 网关服务:负责处理路由请求并提供统一的访问入口。
- 监控服务:负责监控各个微服务的运行状态和性能指标,并提供警报和分析功能。
通过微服务拆分,实现了高内聚、低耦合的架构,每个微服务都能独立部署和维护,系统可扩展性和可维护性高。
4. 你们项目一共有几个数据库? 你负责的数据库是哪个? 核心表是哪几张? 表中有哪些字段?
我们项目有八个数据库。
- 用户服务数据库:用于存储用户相关信息,包括用户基本信息、权限信息。
- 行程服务数据库:存储旅游线路、偏好设置和行程推荐信息。
- 订单服务数据库:存储旅游订单信息,包括订单详情、支付记录等。
- 支付服务数据库:存储支付相关的记录,包括支付流水号、订单支付状态等。
- 搜索服务数据库:存储旅游线路的索引信息,支持快速线路搜索。
- 客服服务数据库,存储用户的咨询和投诉信息。
- 评论服务数据库,存储用户对旅游线路的评论信息。
- 数据服务数据库:存储各个微服务提供的数据汇总结果,如用户统计信息、订单统计信息等。
我负责的数据库是行程服务数据库、订单服务数据库、搜索服务数据库和客服服务数据库。
核心表包括:
- 行程服务数据库里的 行程表(trip):主要字段包括
行程ID(trip_id)、
用户ID(user_id)、
起始地点(start_loc)、
目的地(end_loc)、
出发时间(start_time)、
到达时间(end_time)、
距离(distance)、
行程时长(duration) - 订单服务数据库里的 订单表(order):主要字段包括
订单ID(order_id)、
用户ID(user_id)、
行程ID(trip_id)(关联的行程ID)、
下单时间(oder_time)、
总价(total_price)、
支付状态(payment_status) - 搜索服务数据库里的 线路表(route):主要字段包括
线路ID(route_id)、
线路名称(route_name)、
描述(desc)、
价格(price)、
线路类别(category)、
评分(rating)、
上架状态(status) - 客服服务数据库里的 用户表(user):主要字段包括
用户ID(user_id)、
用户名(user_name)、
邮箱(email)、
手机号(phone)、
地址(address)、
最后登录时间(last_login) - 客服服务数据库里的 客服记录表(customer_service_record):
记录ID(record_id)、
用户ID(user_id)、
客服人员ID(customer_service_id)、
记录时间(timestamp)、
消息内容(message)、
处理状态(status)
5. 你负责的核心业务的功能代码是怎么实现的?(比如分布式锁、分布式事务)
我负责的核心业务是订单服务,其中最重要的功能是处理用户下单操作。
处理用户下单时,要确保同一时间只有一个用户可以下单,避免超卖问题。
在这里我通过分布式锁机制来实现,使用Redis作为分布式锁的存储介质,用户下单时先尝试获取分布式锁,成功获取锁后才能执行下单操作,保证了并发下单时的数据一致性。
同时需要保证订单创建、库存扣减和支付操作的原子性,要么全部成功,要么全部失败,避免出现数据不一致的情况。
利用分布式事务管理器Seata或者消息队列RabbitMQ实现分布式事务。
用户下单后,先发消息到消息队列,库存服务和支付服务监听到消息后进行相应操作,如果其中一个服务出现问题,消息队列可以保证消息的幂等性和重试机制,从而保证订单相关操作的一致性。
6. 找到你项目表述中的每个技术,然后这个地方为什么要用此技术?怎么用的?
7. 你的项目上线了吗? 有网址可以访问吗? app可以看看吗? 小程序可以看看吗?
是的,我们的项目已经成功上线并且可以通过网址进行访问。
我们团队开发的这个旅游项目已经在生产环境中运行了。
我们的APP已经在腾讯应用宝等应用商城上线了,名字就叫“乐游游”,可以搜索和下载体验。
8. 你们项目现在有多少用户,日活量是多少? 项目访问量、并发量是多少,服务器几台?
我们项目有一百万注册用户,日活量大概一万左右。
项目的日访问量大概五万次左右,并发量大概是三百人次左右。
部署了3台服务器。
9. 你们项目在哪些地区推广的? 一共投放了多少台设备?效果怎么样?
我们的项目先在陕西的一些热门地区进行了推广,比如西安、华山、秦兵马俑等。
为了提供更好的服务和便利,我们在这些地方投放了大约200台设备。
这些设备安装在旅游景点、旅行社、酒店等地,为游客提供实时旅游信息景点介绍、路线规划等服务。
总体来说,推广效果很不错,得到了很多正面的评价和反馈。很多游客表示这些设备给他们带来了很大的便利。
我们也通过用户的使用数据和反馈进行了分析,对项目进行了改进和优化。
在这之后我们就在全国范围进行了推广,涵盖了很多热门旅游目的地,比如北京、上海、广州、成都等。
根据不同地区的旅游需求和市场情况,有针对地投放了大约500台设备。
10. 你们项目有没有做过广告或者营销? 盈利点在哪里? 如何推广用户?
是的,我们这个项目在推广过程中进行了一系列的广告和营销活动。
我们采用了在线广告、社交媒体推广、合作伙伴关系等渠道进行广告和营销。
通过在线广告,我们在搜索引擎和社交媒体上展示项目优势和特色,吸引用户。
同时我们与旅游公司、航空公司建立了合作关系,通过他们的渠道向目标用户宣传项目。
11. 你开发这个项目过程中遇到什么难题没有啊?咋解决的?
12. 项目上线之前,测出大概多个bug,用什么记录bug? 线上bug如何调试?
bug很多,我在项目开发过程中出现的bug有二十多个。
记录bug用的是禅道
我在项目开发的过程测出来的bug有二十多个,我们公司用禅道记录和跟踪这些bug。
禅道是一个常用的bug管理系统,它是一个集中管理和追踪bug的平台。
记录bug方面:
- 登录禅道:我会先用我的账号登录禅道系统
- 创建bug报告:然后创建新的bug报告,录入bug的标题、描述、复现步骤等信息
- 设置优先级:接下来根据bug的紧急程度设置优先级,帮助团队了解哪些bug急需解决
- 附加相关信息:同时把相关截图和日志文件附加进来
- 提交bug报告:最后,确认无误后提交bug报告
bug线上调试:
- 查看日志:对于线上bug调试,我会先查看服务器和应用程序的日志,了解具体的错误信息和异常栈信息。
- 复现bug:之后尝试复现bug,并且记录复现步骤。
- 调试代码:如果通过日志和复现不能定位问题,我会用IDEA的Debug模式逐步跟踪代码,在合适的位置添加日志输出进一步排查。
- 提交解决方案:找到bug的原因之后,我会把解决方案提交给开发团队。
13. 给你一个需求,从头到尾应该怎么实现? 说一下整个流程?
接口
-
需求分析:首先我会和产品经理沟通,确定需求的具体内容,包括功能、性能、安全等方面的要求。
-
设计架构:然后对需求进行分析,确定实现地技术方案、开发周期及人力资源等。
-
编码实现:接下来编码阶段根据系统架构和接口设计,结合项目开发规范和代码规范,进行代码编写。
同时进行单元测试确保代码的质量。
-
联调测试:完成编码后,进行系统联调测试,确保各模块间的数据传递和交互正常,并对整个系统进行全面测试,发现并修复潜在的问题。
-
部署上线:最后把系统部署到生产环境中并进行上线前的测试和检查,确保系统能正常运行。
同时进行系统监控和日志分析,及时解决问题。
具体场景,比如产品经理提出一个需求是实现在线售票模块。
我会先进行需求分析,确定需要哪些功能,比如查询线路、选择线路、下单支付等。
然后我会根据系统架构设计,确定系统的模块划分,比如用户管理、线路管理、订单管理等。
最后我会进行代码编写和测试,最终将系统部署上线。
14. 项目上线之后有没有做后期维护?在维护过程中你都做了哪些工作?
有后期维护。
后期维护中我主要做定时检查和分析日志文件,及时发现和解决潜在问题。
维护过程中遇到bug之后,我会根据优先级和紧急程度,及时处理和修复,并进行回归测试以确保问题的解决。
同时我会和产品经理和团队成员密切合作,收集用户反馈和需求,并根据实际情况进行功能改进和迭代。
作为后端开发人员,我会对数据库的数据进行备份和和恢复操作。确保数据的完整性和可靠性。同时我也会进行数据库性能调优和索引优化,提高系统的数据访问效率。
15. 项目中有没有用过多线程, 使用场景是什么?
并发量要大、要有阻塞
嗯,我们项目中使用了多线程技术,使用场景是在后台执行大量数据处理任务时,为了提高处理效率和系统性能,我们使用了多线程技术来并行处理数据。
为了提高系统的并发能力和响应速度。使用多线程技术处理用户的搜索、支付请求,提高系统的吞吐量。
线路价格、航班信息等数据是需要定期更新缓存数据,为了避免阻塞主线程,使用多线程来更新这些缓存数据,保证数据的实时性。
日常需要对数据库进行大量读写操作,为了提高数据库的并发处理能力,使用多线程同步执行这些操作,提高系统的性能和响应速度。
在使用多线程技术开发的过程中,要注意线程安全和资源竞争问题,使用锁机制和线程池等技术保证数据的一致性和系统的稳定性。
16. 刚进入项目组,如何熟悉项目?
刚进入一个新的项目组的时候,我会认真阅读项目的文档和代码,了解项目的整体结构和各个模块间的关系。
然后认真研究项目的技术选型和核心代码,调试程序,追踪代码的执行过程,了解业务处理逻辑。
最后我会多和开发团队中的其他成员沟通,了解他们对项目的理解和看法。
积极参与团队讨论,提出自己的观点。
17. 这个项目中哪个模块是你认为做的比较好,好在哪里,用了什么技术实现?
18. 还有2天就要上线,产品经理突然找你要加需求,怎么办?
首先我会认真听取产品经理的需求,并与开发团队成员沟通,评估这个需求对上线时间的紧迫程度和实现难度,告知产品经理可能会引起的风险和延误。
若我们认为这个需求可以在两天内完成并且不会影响项目进度和质量,我会尽最大努力完成这个需求。
若这个需求的实现难度较大,或者加入这个需求会导致不必要的风险,我会与产品经理沟通,找出合理的解决方案,如推迟需求上线时间、优化需求实现方案等。
19. 公司项目上线完整流程是什么样的?
项目上线的过程可以与盖房子类比,如果要盖一座新房子(开发一个新项目),上线就相当于房子全部建好了并准备入住。
- 设计阶段:设计需求文档来说明项目的功能和设计。
- 开发阶段:前后端开发人员按照需求文档编写代码,构建系统的各个模块。
- 测试阶段:进行单元测试、集成测试和系统测试,以确保软件的质量和稳定性。
- 部署阶段:把开发完成的代码部署到服务器上,配置服务器环境、安装依赖项。
- 发布阶段:把部署好的系统交付给最终用户使用,进行数据库迁移和数据导入。
- 监控阶段:项目上线之后,对系统进行监控确保正常运行,设置监控系统检测系统的健康状况,如错误日志监控、性能监控等。
总之,项目上线的流程大致可以分为
- 设计阶段确定需求
- 开发阶段编写代码
- 测试阶段测试功能
- 部署阶段配置服务器
- 发布阶段通知用户
- 监控阶段确保系统运行良好
20. 说一说你们项目的整体架构, 来给你纸笔 画一下
画出浏览器访问nginx,nginx代理进网关,网关进微服务
你工作过的这两家公司,你选择他们的原因,以及你在工作中的收获,还有离职的原因。