面试最后一问:你有什么问题想问我吗?

尽管,我们之前分享了这么多关于面试的主题:

然而,最后这个90%可见的最后一问可能直接让你功亏一篑。这么厉害的最后一问:”你有什么问题想问我吗?“

看似平淡无奇的问题,但是却蕴含着多方面的含义。这个问题表面上给了你更多了解公司和展现个人优势的机会,但是潜台词,也是考察你对公司的了解以及对想在这里工作的意愿,对岗位是否有自己的理解。这也是我们常常是说的,你的个人价值观是否与公司价值观一致的考察,价值观的一致是直接决定日后工作主动性以及对工作责任心的直接影响因素。

那么如何回答好这类问题呢?今天分享一个万能的Github上的开源项目:reverse-interview,即:反向面试。

Github地址:https://github.com/viraptor/reverse-interview

这里记录了网友们整理的如何应对反向面试的N多优秀回答!给正在准备面试的你们~

反向面试

大部分翻译自:https://github.com/viraptor/reverse-interview ,亦有其他网友补充。

下面列表里的问题对于参加技术面试的人来说可能有些用。 列表里的问题并不一定适用于某个特定的职位或者工作类型, 也没有排序 最开始的时候这只是我自己的问题列表, 但是慢慢地添加了一些我觉得可能让我对这家公司亮红牌的问题。 我也注意到被我面试的人提问我的问题太少了, 感觉他们挺浪费机会的。

如果你问过的问题没有被列出来, 请提交一个 PR。

翻译:English Korean Portuguese

预期使用方式

  • 检查一下哪些问题你感兴趣
  • 检查一下哪些是你可以自己在网上找到答案的
  • 找不到的话就向面试官提问

绝对不要想把这个列表里的每个问题都问一遍。

请记住事情总是灵活的,组织的结构调整也会经常发生。 拥有一个 bug 追踪系统并不会保证高效处理 bug。CI/CD (持续集成系统) 也不一定保证交付时间会很短。

职责

  • On-call (电话值班)的计划或者规定是什么?值班或者遇到问题加班时候有加班费吗?
  • 我的日常工作是什么?
  • 团队里面初级和高级工程师的比例是多少?(有计划改变吗)
  • 入职培训会是什么样的?
  • 自己单独的开发活动和按部就班工作的比例大概是怎样的?
  • 每天预期/核心工作时间是多少小时?
  • 在你看来,这个工作做到什么程度算成功?
  • 我入职的岗位是新增还是接替之前离职的同事?(是否有技术债需要还)?(zh)
  • 入职之后在哪个项目组,项目是新成立还是已有的?(zh)

技术

  • 公司常用的技术栈是什么?
  • 你们怎么使用源码控制系统?
  • 你们怎么测试代码?
  • 你们怎么追踪 bug?
  • 你们怎么集成和部署代码改动?是使用持续集成和持续部署吗?
  • 你们的基础设施搭建方法在版本管理系统里吗?或者是代码化的吗?
  • 从计划到完成一项任务的工作流是什么样的?
  • 你们如何准备故障恢复?
  • 有标准的开发环境吗?是强制的吗?
  • 你们需要花费多长时间来给产品搭建一个本地测试环境?(分钟/小时/天)
  • 你们需要花费多长时间来响应代码或者依赖中的安全问题?
  • 所有的开发者都可以使用他们电脑的本地管理员权限吗?
  • 公司是否有技术分享交流活动?有的话,多久一次呢?(zh)

团队

  • 工作是怎么组织的?
  • 团队内/团队间的交流通常是怎样的?
  • 如果遇到不同的意见怎样处理?
  • 谁来设定优先级 / 计划?
  • 如果被退回了会怎样?(“这个在预计的时间内做不完”)
  • 每周都会开什么类型的会议?
  • 产品/服务的规划是什么样的?(n周一发布 / 持续部署 / 多个发布流 / …)
  • 生产环境发生事故了怎么办?是否有不批评人而分析问题的文化?
  • 有没有一些团队正在经历还尚待解决的挑战?
  • 公司技术团队的架构和人员组成?(zh)

公司

  • 有没有会议/旅行预算?使用的规定是什么?
  • 晋升流程是怎样的?要求/预期是怎样沟通的?
  • 技术和管理两条职业路径是分开的吗?
  • 对于多元化招聘的现状或者观点是什么?
  • 有公司级别的学习资源吗?比如电子书订阅或者在线课程?
  • 有获取证书的预算吗?
  • 公司的成熟度如何?(早期寻找方向 / 有内容的工作 / 维护中 / …)
  • 我可以为开源项目做贡献吗?是否需要审批?
  • 有竞业限制或者保密协议需要签吗?
  • 你们认为公司文化中的空白是什么?
  • 能够跟我说一公司处于不良情况,以及如何处理的故事吗?

商业

  • 你们现在盈利吗?
  • 如果没有的话,还需要多久?
  • 公司的资金来源是什么?谁影响或者指定高层计划或方向?
  • 你们如何挣钱?
  • 什么阻止了你们挣更多的钱?
  • 你们认为什么是你们的竞争优势?

远程工作

  • 远程工作和办公室工作的比例是多少?
  • 公司提供硬件吗?更新计划如何?
  • 额外的附件和家居可以通过公司购买吗?这方面是否有预算?
  • 有共享办公或者上网的预算吗?
  • 多久需要去一次办公室?
  • 公司的会议室是否一直为视频会议准备着?

办公室工作

  • 办公室的布局如何?(开放的 / 小隔间 / 独立办公室)
  • 有没有支持/市场/或者其他需要大量打电话的团队在我的团队旁边办公?

待遇

  • 如果有奖金计划的话,奖金如何分配?
  • 如果有奖金计划的话,过去的几年里通常会发百分之多少的奖金?
  • 有五险一金或者其他退休养老金等福利吗?如果有的话,公司有配套的商业保险吗?

带薪休假

  • 带薪休假时间有多久?
  • 病假和事假是分开的还是一起算?
  • 我可以提前使用假期时间吗?也就是说应休假期是负的?
  • 假期的更新策略是什么样的?也就是说未休的假期能否滚入下一周期
  • 照顾小孩的政策如何?
  • 无薪休假政策是什么样的?

其他资源

欢迎关注我的公众号:程序猿DD,获得独家整理的学习资源和日常干货推送。
如果您对我的专题内容感兴趣,也可以关注我的博客:didispace.com

<think>好的,用户现在的是在面试中被到项目中是否使用MQ(消息队列)时应该如何回答。我需要先理解用户的需求,他们可能在准备面试,想要知道如何结构化和优化自己的回答,以展示自己的经验和能力。 首先,用户可能希望了解如何组织回答的结构,比如从项目背景、技术选型、实际应用场景、遇到的问题及解决方案等方面展开。同时,他们可能想知道如何具体举例说明,比如使用RabbitMQ或Kafka的情况,以及如何处理消息丢失、重复消费、顺序性等问题。 接下来,我需要考虑用户可能的背景。他们可能是刚入行的开发者,或者有定经验但缺乏面试经验的人。他们需要的是清晰、具体的回答框架,以及能够展示自己技术深度和解决问题能力的例子。 然后,用户可能希望了解如何在回答中体现自己的技术选型能力,比如为什么选择某个消息队列而不是其他,比如Kafka和RabbitMQ的区别。同时,他们可能需要指导如何处理项目中遇到的挑战,比如高并发、系统解耦、异步处理等场景。 还要考虑用户可能没有意识到的点,比如消息队列的监控、容灾备份、性能优化等高级话题。这些内容可以增强回答的全面性,展示候选人的综合能力。 另外,用户可能希望避免常见的错误,比如只说用了MQ但没说明具体应用场景,或者没有提到遇到的问题和解决方案。需要提醒用户具体化回答,用STAR法则(情境、任务、行动、结果)来组织内容。 最后,要确保回答符合之前提到的格式要求,比如使用中文,结构清晰,分点说明,包含实际案例和技术细节,同时避免使用Markdown格式,保持口语化但专业。</think>在面试中被及“项目中是否使用MQ(消息队列)”,回答需体现技术选型能力、实际应用场景和问题解决经验。以下为结构化回答模板: --- ### **、回答框架(STAR法则)** 1. **情境(Situation)** 简要说明项目的业务场景和痛点(如高并发、系统解耦需求)。 2. **任务(Task)** 明确MQ需要解决的核心问题。 3. **行动(Action)** 描述技术选型、设计逻辑和关键实现。 4. **结果(Result)** 量化效果(如TPS提升、响应时间降低)。 --- ### **二、具体回答示例** #### **案例1:电商订单支付场景** **S(情境)** “我们电商平台的订单支付模块,存在高峰期支付回调延迟、系统耦合度高的问题。订单服务直接调用库存服务和积分服务,旦下游服务宕机,会导致支付事务阻塞。” **T(任务)** “需要解耦核心业务,实现异步处理,保证最终致性。” **A(行动)** - **技术选型**:对比RabbitMQ(ACK机制、灵活路由)和Kafka(高吞吐)后,选择RocketMQ(事务消息支持更好)。 - **核心设计**: 1. **支付成功消息**:支付回调后,发送事务消息到`order_pay_topic`; 2. **消费者订阅**:库存服务消费扣减库存,积分服务增加积分; 3. **补偿机制**:通过`死信队列`处理失败消息,人工介入兜底。 - **关键代码**: ```java // RocketMQ事务消息发送 TransactionSendResult result = producer.sendMessageInTransaction(msg, arg); // 本地事务执行(如更新订单状态) ``` **R(结果)** “支付响应时间从2s降至200ms,系统可用性从95%提升至99.9%,日均处理订单量从10万提升至50万。” --- #### **案例2:物流状态异步通知** **S(情境)** “物流系统需要向用户推送运输状态变更(如已揽件、派送中),但同步HTTP调用导致推送延迟和接口超时。” **A(行动)** - **技术选型**:使用Kafka(支持高吞吐日志型数据)。 - **设计优化**: 1. 物流状态变更时,写入`logistics_status_topic`; 2. 消息按`用户ID分区`,保证同用户消息顺序消费; 3. 消费者批量拉取消息,通过WebSocket或APP推送。 - **防重处理**: ```sql -- 消费前检查Redis幂等键(用户ID+运单号+时间戳) IF redis.setnx(key, 1) == 1 THEN process_message(); END ``` **R(结果)** “消息处理吞吐量达到5w+/s,推送成功率从80%提升至99.5%。” --- ### **三、高频追及应对策略** #### 1. **为什么选择RabbitMQ/Kafka/RocketMQ?** - **RabbitMQ**:强致性、ACK机制、适合业务消息(如订单); - **Kafka**:高吞吐、日志场景(如用户行为埋点); - **RocketMQ**:事务消息、顺序消息(如金融场景)。 #### 2. **如何保证消息不丢失?** - **生产者**:开启Confirm模式(RabbitMQ)或事务消息(RocketMQ); - **Broker**:集群部署+磁盘持久化; - **消费者**:手动ACK,消费成功后再提交offset。 #### 3. **消息重复消费如何处理?** - **业务层幂等**:数据库唯索引、Redis幂等键; - **去重表**:记录已处理消息的MD5或业务ID。 #### 4. **消息积压怎么办?** - **临时扩容**:增加消费者实例; - **降级处理**:跳过非核心消息(如日志),事后补偿; - **源头限流**:生产端降低QPS。 --- ### **四、回答技巧** 1. **突出业务结合**:避免只谈技术,强调“为什么用MQ”而非“怎么用MQ”; 2. **细节降维打击**:提到`消息轨迹追踪`、`灰度发布`、`集群监控`(如Kafka Eagle)加分; 3. **主动延伸**: “我们还结合了本地消息表(Message Table)实现最终致性,比如订单超时关单场景。” --- ### **五、避坑指南** - ✘ 错误回答:“用了,就是发消息和消费消息。” - ✔️ 加分回答: “我们通过MQ实现了核心业务解耦,并针对消息顺序性(如订单状态流)采用`分区有序消费`,同时设计了二级重试(5s→10s→30s→死信队列)保障可靠性。” --- ### 总结 回答核心逻辑:**痛点→选型→设计→结果→优化**。结合真实数据(如QPS、响应时间)和技术细节(如分区策略、幂等方案),展现系统性思考能力。
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值