Gugu interview
2025.7.1
三月初找到实习,四五月份放松,六月下旬去实习。实习一周多,忽然意识到又该刷算法题了——秋招近在眼前了。
实习公司虽说还不错,福利待遇也很好,但是岗位还是有点小众了——音视频客户端。这样下去不好跳槽也不好润啊。
上网一看,大部分公司招聘的 Software Engineer 还是后端知识为主。况且任何公司业务的核心也都是后端,所以秋招还是润去后台开发了。
于是开了leetcode会员,看到了这本小册子——不错,有意思!刷题同时还能了解国外企业的招聘流程!那就开始吧~
其他有意思的小册子:
- 后端
- https://leetcode.cn/leetbook/detail/7-day-interview-hou-duan/
- https://leetcode.cn/leetbook/detail/da-han-hou-duan-gang-ti-mu-he-ji-shang/
- https://leetcode.cn/leetbook/detail/2024-hou-duan-mian-shi-gong-lue/
- 算法
- https://leetcode.cn/leetbook/detail/arithmetic-interview-cheat-sheet/
- 数据库
- https://leetcode.cn/leetbook/detail/database-handbook/
- 并发
- https://leetcode.cn/leetbook/detail/concurrency/
- 极客时间
- https://uaxe.github.io/geektime-docs/%E5%90%8E%E7%AB%AF-%E6%9E%B6%E6%9E%84/
编码问题
谷歌(Google)技术面试非常困难而且富有挑战性。想要获得电话面试,你需要将简历提交到他们的 在线申请 系统或者通过内部员工进行推荐。
面试过程的第一步,你可能会收到一个在线评估链接。 评估有效期为 7 天,包含两个编码问题,需要在一小时内完成。 以下是一些供你练习的在线评估问题。
686. 重复叠加字符串匹配
给定两个字符串 a
和 b
,寻找重复叠加字符串 a
的最小次数,使得字符串 b
成为叠加后的字符串 a
的子串,如果不存在则返回 -1
。
注意:字符串 "abc"
重复叠加 0 次是 ""
,重复叠加 1 次是 "abc"
,重复叠加 2 次是 "abcabc"
。
示例 1:
示例 2:
示例 3:
示例 4:
好久没做题,看蒙了。思路感觉是不断从b中减去a,但具体细节就有点难以想到了。
看错题目了,原来重叠就是不断append
一看题解,KMP算法,失敬失敬!
https://leetcode.cn/problems/repeated-string-match/solutions/1170729/gong-shui-san-xie-yi-ti-san-jie-qia-chan-3hbr/
https://zq99299.github.io/dsalg-tutorial/dsalg-java-hsp/14/04.html#kmp-%E6%80%9D%E8%B7%AF%E5%88%86%E6%9E%90
https://oi-wiki.org/string/kmp/
kmp算法循环匹配即可。
面试
- 电话面试
- 现场面试
- 招聘委员会
- 录用审核
假设你通过了简历审阅,招聘人员会联系你。通常情况下会有两次电话面试,如果表现优秀,你将会获邀参与现场面试.
电话面试通常会持续 30 至 60 分钟。
电话面试的内容涵盖数据结构与算法。准备好用你最擅长的编程语言编写 20 至 30 行代码。代码应该保持整洁、健壮、富有表现力。
面试官会询问一两个有许多后续的编码问题。你需要在与面试官共享的 Google Doc 中编写代码,并阐明你的思考过程。 我们建议你使用耳机或扬声器,以便可以自由输入任何内容。
你将会面对一个开放式问题,面试官会提出一些辅助性问题来澄清,并制定要求。 你需要使用算法解释该问题。 将算法转化为可行的代码。 (提示:不要因为时间有限而担心无法尽善尽美。将它写下来,然后逐步改进。当然,你也要确保考虑到特殊情况和临界条件,并为投入生产做好准备。) 优化代码,遵循测试用例并找出错误。
就是这样!通过电话面试,现在你已经收到了现场面试的邀请。现场面试是 Google 面试中最重要的一个环节,你获得录用的能力很大程度上取决于你在现场面试时的表现。根据以往的经验,在现场面试后收到录用通知的候选人比例大致为 1/5 到 1/7。
你通常会与五位 Google 员工会面,每次约 30 至 45 分钟 ,其中一位为午餐面试官,他不会提交面试反馈,所以大可借此机会自由提问。
所有候选人都将有机会突出其在四个不同领域上的优势:
一般认知能力:通过开放式问题可以了解你处理和解决问题的方法。这些问题往往没有标准的正确答案,这意味着 Google 看中的是你解释思考过程的能力以及你如何利用数据来做出明智决策。 领导力:准备好讲述你是如何运用沟通和决策技巧来调动他人的积极性。这些经历可以是如何在工作或组织中担任领导角色,也可以是如何帮助团队取得成功(即便是以非正式领导者的身份)。 与角色相关的知识:Google 感兴趣的是如何结合你的个人优势与经验来推动积极的影响。不仅仅是你目前如何做出贡献,还包括如何成长为不同的角色,哪怕是当下尚未创造的角色。 Google 精神:分享你个人独立以及团队协作的工作方式,如何帮助他人,如何在迷茫中找到方向,以及如何推动自己走出舒适区。 值得注意的是,无论你的工作经验如何,Google 都非常重视你的分析能力。请准备好展示你在数据结构和算法方面的扎实功底。如果你的优势体现在多年的从业经验,但对计算机科学的基础知识感到生疏,那么就不得不花更多的时间来磨练基本的计算机科学基础技能。否则,你可能会因为无法反转二叉树而像 Max Howell(Homebrew 作者)一样被拒绝。
Google 希望了解你的编码技能和专业技术知识,包括工具、编程语言,以及关于数据结构和算法等主题的一般知识。讨论过程中通常会反复提到相关的话题,就像在工作中的讨论那样,从而推动彼此思考并学习不同的方法。因此,请准备好深入探讨您的解决方案。打破自己的极限,找出最佳答案 —— 这可能就是你将来的工作方式。
Google 的现场技术面试历来在白板上进行,但为了提供更加真实的编码体验并减少耗时,Google 已经开始提供笔记本用于在某些网站上进行编码面试。这些 chromebook 上会有一个面试程序,并允许你选择你所喜爱的编程语言。
在整个面试过程中,请随时向面试官询问,以确保你完全理解他们的问题。
在现场面试之后,每个面试官(午餐面试官除外)都必须提交详细的面试反馈。 每个面试官的反馈都对其他面试官保密,以确保自己的反馈不会影响其他人。 每个面试官都会给出一个评分,并做出聘用 / 不聘用的决定。
假设反馈得分足够好,那么你的整个信息包将被提交到招聘委员会进行审查。
招聘委员会将彻底审查所有提交的反馈意见,并作出聘用 / 不聘用的建议。
如果招聘委员会建议聘用,那么,恭喜!你已经到达这一流程的最后阶段。在这一阶段,10-12% 的候选人未能得到录用。招聘人员会请求外部参考资料和薪酬历史记录,进行材料检查,并为“待遇审核”流程准备信息包。
录用审核流程:
预审委员会 薪资委员会评估 高管审核
在最后的高管审核中,录用被否决的可能性非常小。