查看: 7862| 回复: 15
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 面试挂别人与被挂的经历,刷题分享

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 thomasboy 于 2020-12-22 00:16 编辑

背景介绍:YOE 3+,在大厂参与过15+的面试,目前也在积极备战刷题。今年9月开始萌生了跳槽的想法,于是开始准备刷题和面试。
刚开始觉得自己有经验,同时又面试经验丰富,科班出身,心态非常放松,刷题大概100+,于是约了一堆大小公司,结果感受到了被社会毒打的快乐。。。。。
于是推了很多约好的面试,开始踏踏实实刷题,这里和大家讨论一些经验和心得,互相帮助。

面试别人的心得:
第一,公司内部培训,要求我们不问一些需要 ·灵机一动· moment的问题,因为这些问题无法真正考察candidate的水平,所以在刷题的时候基本上脑筋急转弯基本可以跳过不看。

第二,就是在技术面重的bq问题,对于这种问题,说实话我们只是用来写notes, 没有人在技术面试因为你bq回答的不好而把你挂掉(除非这一轮是完全的bq)。划重点,在bq问题套用star模版 (situation, task, action, result)。如果面试官有兴趣,他会去问这个task的一些细节,但作为candidate,千万不要给自己挖坑,争取在最短的时间把这个问题过了,以后可以有更多的时间思考问题。

第三,关于问题,我个人的习惯是问一道题medium to hard的问题,然后expect对方给出 clean code solution 然后有时间discuss optimize的思路,看看对方是背答案还是真的理解这个solution。所以有时候刷题的时候,如果最优解很难理解,不要太过担心,写出一个ace的solution,能够给出优化方向并明确,清晰的表达出,为什么可以优化,优化过的time complexity就可以。例子:利口 亿四领 Word Break II - 如果能够徒手写一个 bug free backtracking的算法,那么已经是很不错的candidate了。接下来我会引导conversation到,在计算的过程中,有很多duplicate,如何进行优化?当然如果刷题基本功扎实,套路上来就是backtracking + memo,那就是直接秒掉的水平。


自己被挂:
分享一些自己吊打的经历,基本上有了工作经验以后,拿到面试是没什么问题的,这里深入探讨两个栗子

1. 一个非常简单的问题,就是把两个string 加起来,输出结果。这道题是easy难度的问题,我也写出来了,但为什么会挂了呢?
  我自己想了想,主要是两个问题,第一个问题是 1. 这种问题应该是的标准应该是徒手秒写,简单来说,就是熟练度。 我写的非常磕磕绊绊,其实就是刷题的功底不够,刷的少。所以在这里,血泪教训提醒大家,刷题的熟练度! 熟练度!第二个方面就是自己在写代码的时候,由于刷的经验少,套路不懂,所以总是jump 来 jump去去修改自己的一些细节,给人造成的感觉就是代码跟不上思路,会让别人question你的coding ability。

2. 一个startup,问了一个比较有意思的问题,是设计 1v1 online game,问我怎么设计response schema,server end一些处理的逻辑,我觉得自己答的也还行,为什么挂了呢?
  我后来复盘的时候,第一是客观因素,他觉得这个游戏我没玩过,所以规则说的特别模糊,我跟他讨论规则讨论了半天,最后才弄明白这游戏怎么玩。所以我觉得,朋友们遇到这种类型的面试,千万不要慌,直接问requirement,坦白点,说自己不懂游戏规则,最好能让他shared coding pad上打出来。我跟他谈笑风生了半天,最后写代码的时候就10分钟了。。。 第二是写完代码我没有scan,有一个地方忘记increament一个value,是明显的一个bug。 后来我上网stalk了一下面试官的资料,本来以为nobody,后来发现是🐶家senior,所以挂的这一轮也正常。

复盘分析:
结合这两个例子,同时也避免闭门造车,自己给出了以下的actionable item,欢迎大家讨论,如果觉得有用,求点大米
1. 重视刷题熟练度,针对这一点我自己计划按照利口的frequency去刷题,前200+多刷几遍,同时每个题记录做题时间,争取所有题目平均到20分钟左右ko掉。对于一些问题,最优解太过复杂,可以选择性的跳过。比如top k element,这道题,最优解可以用quick sort来partition,但其实这道题明明就是考heap的,所以不用太过纠结与最优解的理解。

2. 刷题的时候要总结套路,这个套路是什么呢,就是先写大体逻辑,最后填充细节。比如backtracking的题,把提醒归类总结一下, 如果被问到了,把helper function的输入和输出界定好,写出来,终止条件和开始backtracki的细节在基本框架写好之后再填充。这样的话有助于分类记忆,同时能够让面试官觉得大体思路很清楚,然后对于coding的细节处理也很到位。

3. 不要习惯性的click submit。刷完题,自己想出一些edge case,eyeball 并且口头描述一遍逻辑,最后提交代码。这一点很重要,第二栗子的挂就在自己没有察觉一个很明显的bug,所以刷题的时候养成习惯,审查题目的input,然后写完代码以后自己过一面。

能想到的就这么多,求点大米~~谢谢




评分

参与人数 58大米 +130 收起 理由
pipichao + 1 赞一个
nickburs + 1 很有用的信息!
mxiao6 + 1 很有用的信息!
宫522 + 1 赞一个
kangzipo + 1 赞一个

查看全部评分


上一篇:求一个gRPC的入门级公开课
下一篇:最近三个月,收到20个OA,1个面试,0 个offer

本帖被以下淘专辑推荐:

推荐
火喵喵 2020-12-22 03:44:18 | 只看该作者
全局:
楼主说的特别对,我再啰嗦几句。
1 增加熟练度一来是能写的快,二是能看出马甲变换。如果只刷前200题,一定要有能看出是哪一个经典题目的变形。
2 学习套路,sliding window,two pointer这些,能解决一堆题目的。那种只能解决一两题的,或者非常难想的最优解不学也罢,比如next permutation。
3 可以多次run code,但是只能submit一次,one take。哪怕是最傻x的错误也不能算过,面试的时候没有submit button,一定要在平时养成review code 的习惯。
4 不要上来就dp,除非你很有把握。先想想greedy的办法,然后有一个推演的过程。我给你一个题目有个很简单的greedy算法,你上来想都别想就dp,面试官的心都碎了。

评分

参与人数 8大米 +17 收起 理由
宫522 + 1 赞一个
yangc22 + 2 给你点个赞!
只是Leon + 1 这样的经验分享正是俺需要的
14417335 + 5
troybitchen + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

全局:
爱吃番茄市 发表于 2020-12-22 14:23
楼主你说的第三个例子,别人如果刷题很熟悉给出backtracking+memo解法,你说秒了,是指把他挂了,还是指直 ...

你这转折猝不及防啊hhh

评分

参与人数 1大米 +1 收起 理由
已注销-EA34 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
491450451 2020-12-22 07:27:14 | 只看该作者
全局:
说实话 我觉得楼主肯定没问题,会懂得复盘而且能精准找到自己的软肋+又有面试别人的那么多经验其实已经in the bag 一半了
回复

使用道具 举报

🔗
 楼主| thomasboy 2020-12-22 04:37:31 | 只看该作者
全局:
火喵喵 发表于 2020-12-22 03:44
楼主说的特别对,我再啰嗦几句。
1 增加熟练度一来是能写的快,二是能看出马甲变换。如果只刷前200题,一 ...

是的是的~

2. 套路的学习主要是能大体上思路特别快,比如sliding window这种,至于什么时候推进left pointer什么时候推进right pointer这样的细节,题目和题目不一样,记住框架以后再细分也有助于理解算法

回复

使用道具 举报

🔗
LeoRUXV 2020-12-22 07:44:12 来自APP | 只看该作者
全局:
感谢分享zszs
回复

使用道具 举报

🔗
 楼主| thomasboy 2020-12-22 08:29:56 来自APP | 只看该作者
全局:
491450451 发表于 2020-12-21 15:27:14
说实话 我觉得楼主肯定没问题,会懂得复盘而且能精准找到自己的软肋+又有面试别人的那么多经验其实已经in the bag 一半了
谢谢鼓励~ 刷题这种东西还是没办法偷懒,特别是熟练度,还得多刷,一起加油
回复

使用道具 举报

🔗
Smilenceyu 2020-12-22 08:46:53 | 只看该作者
全局:
火喵喵 发表于 2020-12-22 03:44
楼主说的特别对,我再啰嗦几句。
1 增加熟练度一来是能写的快,二是能看出马甲变换。如果只刷前200题,一 ...

非常同意,lz说的也是。其实candidate平均水平是很一般的,但是对我们自己出去面试来说,熟练度很重要,所以基本类型的那些模板,先练熟了,背也行。

比如connected components,sliding window

不管三七二十一先把模板咔咔一写,一方面看起来很流畅,另一方面增加自信并且避免在一些常规细节翻车
回复

使用道具 举报

🔗
jgao93 2020-12-22 09:38:26 | 只看该作者
全局:
楼主还在面吗?我也在准备跳槽。如果可以的话我们可以互相mock。另外有什么系统设计的心得吗?
回复

使用道具 举报

🔗
jgao93 2020-12-22 09:40:36 | 只看该作者
全局:
火喵喵 发表于 2020-12-22 03:44
楼主说的特别对,我再啰嗦几句。
1 增加熟练度一来是能写的快,二是能看出马甲变换。如果只刷前200题,一 ...

next permutation直接调用STL库lol...不过本身算法也不太难,一下就记住了,我觉得比DFS简单
回复

使用道具 举报

🔗
 楼主| thomasboy 2020-12-22 11:36:43 | 只看该作者
全局:
jgao93 发表于 2020-12-22 09:38
楼主还在面吗?我也在准备跳槽。如果可以的话我们可以互相mock。另外有什么系统设计的心得吗?

目前没在面了, 不过可以mock啊

对于在职打工人,我不推荐面试oriented准备方法,我觉得roi太低了。
我目前在看这本书 design data-intensive application 一面是确实觉得增加了很多专业知识储备,另一方面也是帮助我去真正的提高system design的能力。 至于快要面试的时候,尽量多看看面经把我觉得,知道基本component,sql的话复习下 table schema design, nosql / graph database的话把data pipeline架构了解一下就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表