在参加完women’s discory day之后,收到了SIG tech面的邀请(也就是继oa,phone interview,event day后,倒数第二轮的面试),在预约好时间之后,便迎来了痛苦tech面。

面试流程:

  1. 提前十五分钟进面试链接。这是因为他们会需要你提前读题,有解题思路,一定要仔细看邮件,不要掐点进去了,那就是妥妥浪费自己机会和时间[doge]

  2. 俩面试官会分别自我介绍,讲自己所在团队,和负责内容。在他们说的时候最好仔细听,可以将感兴趣或疑问的点记下,在最后提问环节就可以提出紧密相关的问题以表示对他们团队和公司的兴趣。

  3. 之后便是自我介绍,讲下学校背景,擅长的编程语言合作过的项目,最好挑重点的说保持精简,因为面试官们需要把控编程和技术提问的时间,如果想展示擅长的技术,最好将时间留给后面提问互动。

  4. ice break结束,考官会问“有没有把题目看了”,有的话便会让你讲下解题思路,其中会包括你要用什么数据结构,整体的逻辑处理。他们也会给些建议,比方提醒你考虑数据结构的时间和空间复杂度(只是提醒,肯定不会明确说)。同时,他们会很人性地向你确认并告诉你,你的解答方法思路是不是在正轨上。(也许不在正轨会有提示?没试过,没这个支线的剧透)之后,他们会给你提问的时间,可以借机确认好解答的目的和edge case,来展现你思考的全面性,和对任务的严谨和沟通能力。

  5. 他们会关掉他们的视频,告诉你你可以关掉mic,然后就开始长达30min的沉浸解题时间。 把代码写出来是第一重要的,其次可以尝试写出最优解,比方说nlogn的方法。题目会自带test,在codesignal界面上点run就会自动跑test,很方便,他们也会教你怎么跑test。

  6. 到时间后,他们会重新打开摄像头,让你跑test,然后讲解代码,用的什么data structure,为什么选择它,它的time和space complexity是多少,整体的代码逻辑也要讲清楚。随后,如果代码不是最优解,便会引导你说出最优解,然后code出来。

  7. 题目大体讨论考察完之后,会问理论问题。这次包括:

  • concurrency, 多人同时读写怎么处理?锁怎么设置?
  • hash table,如何实现的?time complexity是多少?有没有time complexity不是1的情况?有的话,最坏可能达到什么情况?
  • binary tree的概念和它的time complexity
  1. 你向他们提问环节,这时候一定要问之前提到的他们的工作内容,团队负责任务细节来表示你的兴趣,千万不要说没问题了[笑哭R]。

面试内容

这次碰到的是:主题是movie搜索网站,要你设计储存它给的movie数据(title, genre list, year),然后input是query,包含(year range和 genre),输出是一个iterative movie class(class是现成的),但要ordered by year。

具体解决办法不方便说了,题目本身不难,但optimization的办法应该是logn结果。

总结:

感觉考点是

  1. 对代码的熟练度和抗压,能不能在半小时内将思路在监督(他们说这个没监督,但鬼才信[doge])的情况下快速写对
  2. 对data structure(map或dict和hash table的time complexity的原理),和基础算法(binary tree)这些足够熟悉,能想到或者写出最优解,并答出基础理论知识(基础concurrency)
  3. oop的熟悉,来运用class(这个感觉很基础了)
  4. 沟通表达能力。 能不能讲述清楚自己的思路,能不能在和考官的互动下愉快地理解get到他们的提示。

建议:

  1. 刷design题目,去leetcode tag/design里面刷吧,都是oop,对data structure的理解都有好处
  2. 自己设定时间,比如30min/40min内看题、写题、测试(根据自己能力,保持在拉伸区锻炼,不要太焦虑),之后不管是跟pair还是自言自语地讲解题思路用英文说出来,尽量清晰明了有条理。
  3. 多看看自己心仪公司的面试题目。在glassdoor上面会有很多分享,然后针对地准备理论问题。

祝大家好运[赞R]👍