登录
  • #刷题
  • #工作信息
  • #求职
  • #攻略

面试挂别人与被挂的经历,刷题分享

thomasboy
3434
14
背景介绍: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,然后写完代码以后自己过一面。

能想到的就这么多,求点大米~~谢谢
14条回复
热度排序

发表回复