前言

面的一坨屎,自己项目之外的一问一个不知道,手撕快速幂也忘了。

内容

自我介绍

  • Q. 介绍一下自己
  • A. 学校背景,实习经历,能力提升

业务内容提问

  • Q. 项目是什么,你做了什么

  • Q. 架构演进?

  • Q. socket.io?

  • Q. RocketMQ 能做事务吗?

  • A. 半消息

都没有往深了问,看来是主管之类的。因为完全没有反馈,所以根本看不出来是什么态度。

八股

从这里开始崩盘

  • Q. Mysql 索引使用的什么数据结构
  • A. B+ 树是一个 n 叉树,数据节点都存在叶子节点中,叶子节点是一个双向循环链表,所以查询范围数据很快
  • Q. B 树能做吗?
  • A. 没考虑过。当然是能做的,因为
  • Q. 那如果我设置了多个 index,只用一个 index 或者几个 index 能查询到数据吗?
  • A. 可以
  • Q. 有没有查不到的情况
  • A. 不知道

流程思想

  • Q. 微信扫码登录怎么做的?
  • A. 直接懵了,说的前言不搭后语,提了 JWT 和 Session,乱说一通
  • Q. 操作流程提示了下
  • A. 我不太清楚,但是我的项目中有类似的:Session 中存储手机和电脑登陆状态,因为手机已经登陆,所以授权的时候就是修改电脑状态,然后服务器发现了电脑状态修改,就返回用户数据。
  • Q. 这部分就到这里吧。

微信扫码登录的核心流程(OAuth2.0)

  1. 电脑端生成二维码

    • 电脑版微信启动时,向微信服务器请求一个 临时登录凭证(二维码本质是一个包含唯一 ID 的加密链接)。
  2. 手机微信扫描二维码

    • 用户用手机微信(已登录状态)扫描二维码,手机微信会检测二维码的合法性,并向微信服务器发送确认请求。

    • 关键点:手机微信本身已通过长期 Token 保持登录状态,无需重新输入账号密码。

  3. 手机端确认登录

    • 手机微信弹出提示“确认登录电脑版微信”,用户点击确认后,手机微信将 临时登录凭证 和 用户身份标识 发送给微信服务器。
  4. 电脑端轮询登录状态

    • 电脑版微信后台持续轮询服务器,询问临时凭证的状态(未扫描/已扫描/已确认)。

    • 一旦服务器返回“已确认”,电脑版微信即可获取到用户的 长期会话 Token,完成登录。

  5. 建立电脑端会话

    • 微信服务器为电脑版微信生成独立的会话 Token,后续电脑版微信通过该 Token 维持登录状态。

八股追问

  • Q. 我看你是做 JAVA 的,你知道什么是弱引用吗?
  • A. 不会

手撕代码

  • Q. x 的 y 次方
  • A. 随便写了个循环,在提示要优化下又写了个二分递归。快速幂完全给忘了。

职业规划

  • Q. 职业规划如何
  • A. 常规说法,被打断
  • Q. 你的技术栈和我们不一样,如果说真要你做 infra 你怎么规划
  • A. 如果我们的岗位被 AI 优化了,我可以去做 AI agent 相关的技术,因为我有这方面的经验。不符合要求,看看 D 老师怎么说:

核心原则:承认差异 + 展现清晰的过渡计划 + 连接自身优势 + 强调价值贡献

✨ 回答框架与话术建议

  1. 坦诚承认差异,展现清醒认知:
  • “非常感谢您再次给我机会阐述这个问题。在之前的交流以及我对小鹏技术方向的了解中,我非常清晰地认识到贵团队的核心技术栈是基于 C++和 Python 的后台系统(可以具体提一下了解到的方向,如自动驾驶平台、车联网后台、高性能计算等),这与我之前主要使用的 Java 技术栈确实存在差异。我完全理解这种技术栈的转换需要付出相当的努力和学习成本。”
  1. 提出具体、可行的短期(0-6 个月)学习与融入计划:
  • “因此,我的首要和明确的职业规划就是:在入职后的前 X 个月(比如 3-6 个月),全力以赴地学习和掌握团队所需的 C++/Python 技能以及相关的领域知识(如车规级软件、特定中间件等)。 我的计划包括:

  • 系统性学习: 利用入职培训、公司内资源(文档、代码库)以及业余时间,通过[提及具体学习资源,如经典书籍《Effective C++》、特定在线课程、公司内部 Wiki]进行快速补强。

  • 深度参与实践: 我非常希望能尽快参与到实际项目中,哪怕是从阅读代码、修复小 Bug、编写单元测试开始。我相信在实战中学习和解决问题是最有效的方式。

  • 积极寻求帮助: 我会主动向团队里的前辈和同事请教,尽快熟悉团队的开发规范、工具链和最佳实践。

  • 利用基础优势迁移: 虽然语言不同,但我深厚的大型分布式系统开发经验(来自 Java 背景)、对软件工程原则(设计模式、数据结构算法、网络、并发、数据库)、软件质量保障和工程效能的理解是通用的。这些基础能力将帮助我更快地理解业务逻辑和系统架构,将精力聚焦在语言和特定工具链的学习上。”

  1. 连接自身独特优势(特别是 AI Agent 经验):
  • “同时,我注意到小鹏在智能化领域的持续投入(提一下了解到的,如智能座舱、AI 赋能等)。我过往在 AI Agent 方面的实践和兴趣点,让我对如何将智能化技术应用于实际业务场景有更深的理解。 在打好 C++/Python 基础、深入理解业务后,我期望能在中期(比如 1-2 年),将我在 AI Agent 领域的经验(如任务编排、决策推理、与环境的交互等)与我们的汽车软件系统相结合,探索如何利用智能化技术提升[提及具体可能方向,如:车载语音助手的智能化程度、后台服务的自动化运维效率、用户体验的个性化推荐等]方面的能力,为团队在智能化演进方向上贡献一份力量。” (注意:这里要自然衔接,不要喧宾夺主,重点还是在先掌握核心技术栈)
  1. 强调长期价值贡献与稳定性:
  • “从长期(3 年+)来看, 我的目标是成为团队在[提及相关领域,如高性能后台服务、智能车联平台等]方向上的技术骨干或专家。我期望能持续深耕汽车软件领域,特别是智能化方向, 不仅能够独立负责核心模块的设计与开发,更能前瞻性地思考技术演进,解决复杂的技术挑战,并帮助团队培养新人。我非常看好智能电动汽车的未来,也渴望在一个像小鹏这样处于行业前沿的公司长期发展, 将我的技术能力转化为对公司和产品的实际价值。”
  1. 展现强烈的意愿和决心(关键!):
  • “我深知从 Java 转向 C++/Python 需要付出额外的努力,但我对此有充分的心理准备,并且充满热情。 技术栈的差异对我来说是一个挑战,但更是一个学习和成长的机会。我选择小鹏,正是因为看中了公司在智能汽车领域的领先地位和技术挑战,我非常有信心并且已经下定决心投入必要的时间和精力,以最快的速度弥补技术栈的差距,达到团队的要求,成为一名高效、有价值的成员。”

反问

  • Q. 我这次面试不太好,您觉得我有什么需要特别加强的地方?
  • A. 你从哪些地方知道你面的不好?
  • Q. 首先是微信流程那块,没有说清楚;其次是手撕代码,肯定还有优化空间;最后是职业规划,完全不知道怎么答。
  • A. 校招和社招不一样,我们评价机制不同。安慰我,感动。问你职业规划是想让你知道如果你进了我们业务,技术栈真的不一样,只是同步信息。
  • A. 还有什么想问的吗?

反思与复盘

八股重要,但灵活变通的思想同样重要。

第二天岗位信息就没了。