1. 微软
春招笔试巨难,ACM难度,0AC
4月底被捞起来,一二面安排在同一天
第一面: Leetcode 1096 Hard, 简化版无括号嵌套版本,这道题目比较难
第二面: 大概是
- 算法题:给定一堆序列标号(标号用整数),形式为[a,b],表示标号为a,b的两个物体的体积关系满足:a > b,用合适的数据结构存储数据,并判断这堆序列是否有效。(比如[a,b], [b, d], [d, a]这个就不是有效的,因为a > b, b > d, 那么 a > d, 但是最后一个序列说的是 d > a,矛盾了。)
等价于判断有向图有没有环,拓扑排序或者dfs
当时准备不充分,第一道题目没思路,第二道题答出了DFS,没说出拓扑排序,写了DFS的代码
五一之后收到三面:
三面写一个百分位数的算法
我理解的是等效于快速选择算法
前三面都没有英文面试,之后没消息,过了两三个星期打电话问HR,HR说不清楚,最后凉。
复活面:6月中旬,偶然抓住机会复活面
一面:给一种字符串加密方法,加密过程是把一个串不断左右左右移动: abcde => dbace
面试官沟通描述了加密过程,让我写解密过程,我被他说的比较晕,以为写加密过程,思路有些模糊。然后面试官提示了解密的规律。然后我就看出来了。但是奇数长度和偶数长度不一样这点我还没有看出来,面试官在指出,然后我找了奇数和偶数的规律,分开写了规律。问奇数和偶数的情况是否能统一成一种规律。这里我想到了添加一个空格的方法,把奇数变成偶数。还有一种方法是把两个字符看成一个整体。
二面遇到女面试管,首先让英语介绍疫情期间生活的变化,之前完全没有准备,减分很大。然后做题:
Given an array with around 10w elements, each element is within [0,10w], how to get max subsequense length with same value if you have a opportunity to swap two elements?
Sampes:
1,1,0,2,3,1,0,1,1,3,4 => output: 4
0,2,3,1,0,1,1,3,4 => output: 3
1,1,0,0,2,3,3,1 => output: 3
类似于Leetcode 1156. 单字符重复子串的最大长度
这题直接想很难想,比较好的思路是用滑动窗口,先不要考虑交换,先假设就是强制把0变成1, 然后来看此时的最大值。然后再去看是否能交换。
不难发现,微软的面试随机性很大,这几道题目在常见的面经都没有出现。所以除了准备前LC前500道常见算法,还有参加周赛,增加对新题目的解题思路的掌握。
其他外企
其他外企笔试
2. Hulu 笔试难度巨大 ACM劝退
3. Paypal 简历没过,据说30HC,群里有2000人。。。
4. 英特尔: 选择题底层,编程题只能用纯C(纯C写计算器,链表的快速排序。。。)
5. 英伟达: 选择题底层,好像只有选择题
6. 亚马逊: 笔试相当于Leetcode周赛难度,3道题,2道以上进面试?我A了1.6,第二题暴力,实际上是dp
7. Thought Works: 有个英文的行测,特别难, 预约了面试时间,没有回复挂。。。