[心得] Google面试 & offer请益

楼主: Dust2080 (Dust)   2023-08-05 23:24:12
背景4大混血 资讯相关科系
一线ic 软件 0.5y + 一线ic韧体 1y
技能树方面 c++ leetcode 600题 纯刷题仔
其他技能除了C外 其他都接近0
希望认识的不要认亲><
目前拿到2个offer
A公司
工作内容: bsp
待遇: (N + 16k) * 14
优点: 正常工时 &爸爸是一线大厂 & 技能树在台湾发展性好
缺点: 要碰硬件
B公司
工作内容: 游戏app backend
待遇: N * (13 + 2)
优点: 使用c++ & 软件梦 & 短工时福利佳
缺点: 博弈 & 目前后端know how = 0
两边钱差不多,产业类别无所谓,比较在乎技能累积
两边的面试也有相当的难度,对于工程师的要求也应该会比较高
未来职涯希望几年后能跳到在台外商 or 不排斥往国外发展
另外想问几个点:
1.
对于BSP的了解就是读懂硬件规格,然后让他能work?
不知道这理解是不是对的 & 有没有其他困难和有挑战的点
2.
不同产业的后端的技能是不是能shift?
会不会因为展业导致技能树受到侷限?
博弈的app后端技术在台湾的市场状况如何,转职会不会受限?
如果不方便留言的也可以站内信><
- - -
Google 面试分享(L3)
时程表:
2022:
6/7:HR LinkedIn 传讯息
12/8:一面(coding)
2023:
2-4月:等新年度head count update & team match
6/6:二面(coding)
6/7:三面(coding, English)
6/8:四面(coding, English)
寻找愿意跟我match的team manager
7/11:五面(behavior + team match)
(一年内都可以team match, keep waiting……)
- - -
google面试流程 (2023 新制)
正式面试一般有5关
4关的coding & 1关behavior
4关coding中会有2关用全英文进行(2-4关中间2关)
根据HR表示,今年开始面试流程有一些改动,
所以可以从时程表中可以看到很多team match
现在面试流程是这样:
Step 1.
HR电话考试,通过可安排一面
Step 2.
一面,通过可安排team match
Step 3.
team match,这边比较像是确认产品线,
我是选择silicon,所以后续都是安排silicon的工程师来帮我面试
Step 4.
二面 + 三面 + 四面
Step 5.
寻找愿意跟你team match的manager,由他来完成behavior
Step 6.
team match
(根据coding成绩,极优秀的人可以先7再6)
Step 7.
Match上之后,会送hire committee,决定最后hire or not,有可能有加面的关卡
- - -
Step 1
HR电话问一些资料结构 & 算法的问题
选择题or问答题,会用英文出题
主要确认基础程式能力和英文能力
我大概刷100题左右时进行
当时英文能力太差,都用中文回答也过了
- - -
Step 2
45分钟coding面试,45分钟是硬上线
会出一题类似leetcode的题目
要先说明打算怎么解 & 分析时间复杂度
面试官同意后可以开始解题
边写要边解释每一行在做什么
写完之后需要自己建test case逐行验证正确性
如果是比较简单的题目会有follow up
我当时被问的是今年6月最后一天的daily (hard)
写的时候有三个edge case没考虑到
第一次他问我确定吗? 我检查一下之后发现改掉
第二次他问我要不要再检查一下? 我又改了一个
第三次他又问确定吗? 我说确定
然候他叫我跑test case,跑到一半才发现又错一个地方
结果后来我还是通过了,而且feedback还很好
这一关比较像是测验有没有能力继续往下走
如果这关没过就会直接结束面试流程
- - -
Step 3
以往都是一面完之后,就会一路面到behavior结束
但现在会先进行一个team match,选一个想要的职缺
然后会从这个职缺的产品找人当后续面试官
让你可以面试完的时候和他聊天,对部门多一点了解
每一个coding关,面试官都会独立写出feedback
feedback很详细,会根据算法 & 资料结构正确性之外
还会评论程式码整洁度 表达方式 互动细节……等等都是评分项目
每场面试都是独立的,面试官之间不会彼此讨论
每一关面试官,会根据综合评论,给出最后评分
Strong hire - hire - lean hire - lean no hire - no hire - strong no hire
我这关被问到简单的string存取,模拟接收封包的情景
follow up 是模拟封包传送错误的处理情形
解法不难也很直觉,大概是一般medium的难度
主要是考你怎么选资料结构 & 如何update data
这关我拿到hire
- - -
Step 4
这一关是英文进行
题目是根据某些规则算西洋棋走法数
是在leetcode没看过的题型
我有写出次佳解,并说出最佳解的时间复杂度
时间不够,没有follow up ,但有问我可以怎么优化
我只有回答出最佳解的方向,但不知怎么实作
这关拿到lean hire
- - -
Step 5
这关也是英文关
一开始他贴跟昨天一模一样的题目
如果出现这个情况一定要反应
不然会变成无效关,需要补面
后来他换了一题
根据某些情况算股票买卖时间点
也是leetcode没看过的题型
因为我知道时间复杂度是O(n)
所以我一开始花了20分钟想O(n)的解法,但是一直卡住
后来他给我一个提示
我花十分钟写了一个O(nlogn)的解法
他对我的解法和写code能力很肯定
我也说我知道最佳解的方向,但是我一直想不到实作方式
我的负评只有花了20分钟想不出有效解
其他评论都是正面的
这关拿到no hire
- - -
step 6
到这边如果评分太差,会直接结束面试流程
如果评分很高,就会先送hire committee决定录取与否
如果在中间,就会先team match
确认有team要你之后,他会帮你写推荐信
增加通过hire committee的机会
我拿到三个评价分别为 hire, lean hire, no hire
介于中间,所以先进行team match
这时候hr会去问有没有team manager想和你team match
你也可以自己找职缺,请HR帮你问
有找到人才会往下进行behavior,如果没找到就一直等
面试流程一年内都可以进行
我后来match一个做Linux kernel的team
behavior就是一般的样子,上网查很多资讯
Match过程蛮愉快的
manager会跟你介绍部门做的东西
并且一直问你喜不喜欢
不会问你会什么,也不会考试
- - -
Step 7
后来team match没有成功
因为manager有3个candidate可以选,最后选了别人
所以我现在还在等待team match的状态
一年内都可以match,match成功才会送hire committee
送完之后会有三个可能结果,hire, no hire, hold
hold可能就会需要再加面
如果面试没上,会进入冷却时间
冷却时间半年到一年,会依你这次面试差多少来决定
- - -
我目前规划:
我会先找工作也是因为google面试流程跟马拉松一样
而且看起来距离结束还有很长一段路要走,还不一定会上
所以先找一份工作当成过渡期
也顺便选择未来的领域
之后会继续面试google,也会尝试其他外商
- - -
Google 面试刷题方式
L3(初级) - L4(中级) 应该都是以刷题为主
面试难度大概介于mid - hard
我这次被问的题目大概是1 mid, 3 hard
但不是很难的hard
我有朋友被问过极难的hard (leetcode 2242)
我大概刷100题面HR问答
250题面第1关
550题面234关
我准备的刷题方式
是把leetcode的study plan先写完
然后每天写daily
并且按照这个网站刷https://neetcode.io/
写题目的时候
如果10分钟内想不到最佳解(包含时间复杂度)
就可以直接找答案来看
并且把解法学起来
每题写完的题目 也要去看看别人是怎么解的
即使原本不用看解答也能写对
并且把程式优化,修到最好的版本
要练习到每一题都要在第一时间想到最佳解
并且一次写就能写对的程度
面试当下如果说不出够好的解法
面试官也不会让你开始写
可以练习用run确认有没有compiler 问题
确认没问题之后直接submit
然后要一次对
hard的题目也一定要写
因为真的有可能问到这么难
各种题目题型都要刷(dp, bs, graph, array, …….)
各种特殊算法也都要会(union, trie, …)
Google面试重视的是能不能想出够好的解法
并且在接近0失误的情况下完成
还要能够验证正确性,清晰的解释给面试官听
以上全部要在45分钟内完成
所以在平常刷题时候要尽量要求自己写题能表现到完美
- - -
刷题的时候,每100题都是一个坎
基础建立时期:
0~100是程式基本资料结构和算法的建立,熟悉基本语法
100~200会接触到简单算法的模板(DFS, BFS, BS, DP……)
题型熟悉时期:
200~300开始会接触特殊算法
这时候会自以为有点小成
但是有些题目还是会卡超久都想不到
才发现有些算法根本想不到
300-400会开始熟悉所有题型
这时候会开始接触各种题型的hard
并且熟悉每种题型的解法
开始练习看到题目就要知道该怎么解
(有些题目跟你说解法,你还是不知道怎么解)
(蛤?为什么这题是Binary search?) -> 最常见
(这题dp条件要怎么更新?)
解法优化时期:
400之后,9成以上的题目都难不倒你
medium 即使没看过,基本也都能秒杀
hard题型如果遇过,也都能在1小时内写完
这时候会开始优化解法
不只要写对,还要写的美,写得漂亮
之后累积题目的速度就会变很快
也很容易写到以前写过的题目
可以看一下自己青涩时期的写法
并且重写一次,让现在的自己把他修得更美
后面就是题目累积和增加熟悉度
打周赛基本上都能轻松快速完成3题
(但我每次第四题都TLE 囧)
- - -
Google面试前准备:
面试前一定要找朋友mock interview
最好是有面试过google的朋友
面试的时候需要边写code边解释自己在写什么
对于没有练习过的人来说是一个很大的挑战
尤其是还需要用英文讲解
所以平常也要练习边写程式边讲解
面试当下不一定要写出能够work的code
所以call function的时候如果input参数忘记,可以简单写一下
跟面试官达成共识,让他知道你写这行想要做什么就好
平常也要练习考虑各种edge case
并且练习全部想好怎么写之后再开始写,不要边写边想
也不要写到一半才发现前面没考虑到,又回去改
再来就是面试的时候可以多和面试官讨论
例如确认input size or 有没有负值
如果想不到解法,也可以先讲暴力法
面试官都会斟酌给提示,引导你往最佳解思考
(我当时就是不确定还要硬掰,不好好跟面试官讨论QQ)
- - -
如果有什么面试细节不够清楚的
可以留言或站内信问我
谢谢各位的观看
作者: john11894324 (不要叫我大苹果)   2023-08-06 00:31:00
看起来可以进google的都是神人
作者: ArayaHellCat (喵喵)   2023-08-06 01:14:00
推分享
作者: jackeighteen (拍感动人心的照片)   2023-08-06 02:00:00
推流程分享,感谢
作者: insomniablue   2023-08-06 10:16:00
神人感恩我印出来贴墙上自己做BSP不太推荐太dirtyWork你应该可以找ai 或算法吧
作者: luckysmallsu (B.J.T)   2023-08-06 15:37:00
这个面试看完真的跪了
作者: toypoodle007 (玩具贵宾狗)   2023-08-07 08:53:00
外商裁人不手软 要小心
作者: maydaychaaaa (Halo)   2023-08-07 18:56:00
加油啊
作者: keelungReeve (基隆李维)   2023-08-08 08:53:00
砍米国补台湾印度啊, 反正lowball你也会去

Links booklink

Contact Us: admin [ a t ] ucptt.com