ACM有所成绩并不代表可以随便拿到offer,还是需要有所准备。
最近才知道,非常有必要,多向学长或者拿到offer的前辈取经。 再次特别感谢学长的毫不保留的经验,以及和姐妹们一起找工作的刺激经历!
所以决定写下自己的面试经历,方便自己日后总结。
2020-1-2:字节跳动前端一面,挂。
因为没有好好准备,这次面试可以忽视。
2020-1-7:深信服算法一面,过。
- 问题1:提前有一堆数据,然后给出一些关键字,求有哪些数据包含了关键字。
- 问题2:提前给定N个关键字,然后给定一个文本,求每个关键字各出现了多少次。
- 问题3:给定模式串A,给定单词B,在允许一次失配的情况下,问B在A中出现多少次。
- 问题4: 有一堆数据,但是你不知道有多少个,让你随机抽取10个。
上述问题被我用自己的语言描述成了一句话,面试官是用实际问题来问的。 做题多,然而实际运用的能力不一定强。
第一题:
面试官:你有一个电话簿,然后有个人打电话过来了,我现在只知道4个数字,问可能是谁打的。
我: 可以把原先的电话本的所有电话的每个4位数存在map里,映射一下就ok了。
面试官:假如不一定是4位呢?
我: 所有长度都存在map里,手写hash也行。
面试官: 加入不是电话簿呢,有很多消息呢。
我: 那后缀自动机可以搞定。 (然后介绍了后缀自动机的功能和复杂度)
(整个过程面试官都在引导我,很感谢。)
第二题:
面试官:给定N个关键字,然后给定一个文本,求每个关键字各出现了多少次。
我: 建立AC自动机....介绍了一通
描述怎么建立fail树,怎么线性得统计次数。
第三题:
面试官:给定模式串A,给定单词B,在允许一次失配的情况下,问B在A中出现多少次。最好用到KMP
我: 我在hihocoder上用二分+hash写过失配两次的题目。这里既然要用到KMP的话,估计exKMP+hash也可以搞。
然后介绍了怎么写。
第四题:
面试官:有一堆数据,但是你不知道有多少个,让你随机抽取10个。
我: 显然要随机,但是由于不知道有多少个,我们可以用蓄水池抽样算法。 具体怎么做我忘了。比较ACM中没遇到过。
面试官:是的,是蓄水池算法(露出惊喜的味道,估计其他很多人都没听过?)
总结:因为是针对ACMer的算法岗,所以问题还比较友好,面试官水平也高,过程很遇到。
经验:多和面试官互动,可能能想出更好的算法。