Glean SWE New Grad面试题和答案
Glean SWE New Grad面试题和答案 (English Translation Coming Soon)
Glean面试经验,和FLAG大厂比到底香不香?
最近刚面完Glean的New Grad SWE岗,不得不说,这家做企业AI搜索的独角兽,面试体验和FLAG大厂还真挺不一样的。大厂更像是标准化流程,每个环节都像流水线一样清晰;而Glean给我的感觉更“精悍”,每轮都直击要害,对候选人的要求非常specific。
说实话,Glean的面试流程还挺长的,我前前后后经历了四轮,战线拉得老长了。下面给姐妹们详细扒一扒,希望对想冲这家的小伙伴有帮助。
第一轮:Technical Screen
一上来就是真刀真枪的Coding。一个小时的Technical Screen,面试官是个很nice的工程师。简单寒暄之后,直接甩出一道Algorithm题。这轮主要考察你的代码基本功和Data Structure的理解。
面试题:Given m sorted arrays of size n, find the kth largest element.
这题其实是“在多个排序数组中找第k大元素”的经典变种。我当时第一反应是用min-heap。踩过坑的人都知道,直接把所有元素丢进一个max-heap里再pop k次,Time Complexity会爆炸。正确的解法是维护一个大小为k的min-heap。先用每个数组的第一个元素初始化heap,然后pop堆顶,再把pop出元素的下一个元素push进去,重复这个过程m×(n-1)次。这个解法的Time Complexity是O(k log m),Space Complexity是O(m)。面试官在我写完代码后,还追问了几个关于Time Complexity和Space Complexity的细节,大家一定要对自己的代码了如指掌。
第二轮:Recruiter Call
第一轮面完两天就收到了positive feedback,约了HR小哥的电话。这轮就比较轻松了,30分钟,主要问了些Behavioral Questions,比如“Why Glean?”,“你的职业规划是什么?”之类的。大家提前准备好自己的故事就行,重点突出你对Glean的了解和热情。我当时提到了他们做的企业级AI搜索很有前景,能解决很多公司的内部信息孤岛问题,感觉自己对他们的product很有passion。
第三轮:Technical Round 2
本以为接下来是更难的Coding,结果这轮一个小时的面试,前20分钟是简历深挖,主要聊我之前做过的一个Backend项目,问了很多关于API设计和数据库选型的问题。后40分钟,画风突变,开始搞数学证明了。
面试题:Prove why the median is the best value for balancing an array.
这题不需要写一行代码,纯粹的数学证明。我当时有点懵,但冷静下来想了想,其实是考察你对绝对值函数性质的理解。你需要证明对于一个数组X,函数f(y) = Σ|xi - y| 在y为中位数时取得最小值。我现场手写了证明过程,分了n是奇数和偶数两种情况讨论。这轮面试感觉Glean非常看重候选人的逻辑思维和抽象思考能力,而不只是一个会刷LeetCode的机器。
第四轮:Virtual Onsite
等了两周才等到onsite,真的是度日如年。Onsite是两场背靠背的面试,一场2小时的Assignment,一场1小时的LeetCode。
Assignment Round:
这是一个Low Level Design的题目,要求从零开始实现一个简易的table模块。功能点分了5个part,从最基本的增加行列,到实现join操作。我当时紧赶慢赶,在2小时内只实现了前3个part,join操作写了一半。感觉时间非常紧张,对代码速度和设计能力要求很高。这部分考察的是你的工程能力,而不只是单一的Algorithm。
LeetCode Round:
这轮是1道Medium和1道Hard。
Q1 (Medium): You're given a sorted array with one element that is out of place. Write a function that sorts the array.
这题我用了两次Binary Search。第一次找到那个“out of place”的元素,第二次找到它应该在的位置,然后把中间的元素都挪一下。Time Complexity可以做到O(log n)。
Q2 (Hard): LeetCode 317. Shortest Distance from All Buildings.
这是原题,一道典型的BFS题目。你需要从每个房子开始做BFS,计算到所有空地的距离和。为了优化,还需要记录每个空地被多少个房子访问过。这题的细节很多,边界条件要处理好。我当时写的磕磕绊绊,最后勉强写完了。感觉这轮的重点是考察你在压力下写出复杂Algorithm的能力,以及对图论中BFS和DFS的熟练掌握。
最后,再给大家补充几个Glean可能会问到的问题类型和解答思路:
System Design题:设计一个类似Glean的内部搜索系统。
这个问题非常开放,你需要从需求分析开始,聊到System Architecture,比如如何做data ingestion,如何建立index,如何设计ranking algorithm。可以提到用爬虫去抓取公司内部各种应用(Confluence, Jira, Slack)的数据,然后用Elasticsearch来做索引和搜索。对于ranking,可以结合TF-IDF和一些机器学习模型,比如Learning to Rank。这里面可以秀一下你对Backend和Frontend架构的理解。
Data Structure题:实现一个支持LRU (Least Recently Used) Cache。
这题也是经典,需要用一个HashMap和一个双向链表来实现。HashMap用来在O(1)时间内找到节点,双向链表用来维护节点的访问顺序。每次访问一个节点,就把它移动到链表头部。当Cache满了,就淘汰链表尾部的节点。这题的重点是考察你对HashMap和链表这两种Data Structure的组合运用。
Dynamic Programming题:经典的背包问题或者变种。
比如给你一堆文件和它们的体积,以及一个U盘的容量,问最多能装下多少文件。这种DP问题,关键是定义好状态dp[i][j]的含义,然后写出状态转移方程。对于这类Algorithm,多刷LeetCode是王道。
结果
Onsite第二天就收到了拒信,HR的feedback说我在Assignment那轮没有达到预期。说实话,有点小失落,但整个面试体验下来,感觉Glean是一家技术驱动、非常务实的公司。他们招人真的很看重基本功和工程能力,而不只是刷题。
展望一下,虽然这次没能上岸,但Glean的技术栈和产品方向我还是非常看好的。未来企业AI搜索绝对是一个巨大的市场,能解决很多大公司的效率问题。希望自己以后能有机会再战吧!也祝各位求职的姐妹们都能拿到心仪的offer!
#北美求职 #软件工程师 #面试经验 #Glean #AI #NewGrad #SWE #面经 #求职 #湾区
