2个月/4家外企/15轮面试,我拿到了微软、Airbnb中国offer(Java岗)

背景:

硕士学历,有过留学经历,英文口语交流没问题,毕业后回国发展,但是想要进入外企,喜欢外企的文化理念以及工作氛围等等,所以这次也着手准备了,总共耗时了2个月,目标的4家公司分别是:Google、雅虎、微软和爱彼迎中国,拿到了微软和爱彼迎的offer,特分享面经,但因为面试保密协议,所以只透露部分题目,想要完整版的可以私信我。

Google

笔试:
Google的面试流程从一开始就跟别家的公司不一样,平时我们面试都是需要先投简历,简历通过了才会获得面试邀约,然后做笔试,但Google需要先在线做笔试,笔试通过以后再投简历。
Google的笔试没有具体的一个标准判断,只能够在线等Google的通知。这次笔试一共有3道题目,限时3小时,每个题目包括了small和large两组测试数据,每个题目都有自己的分数,这个笔试按照分数和用时综合排名。

题目(1):
你有3中操作可以做:1.在键盘上敲一个字符;2.复制一段现有字符串;3.粘贴剪切板上的字符到最后;
问:最少需要多少次操作才能生成一给定的字符串,字符串长度是100。

题目(2):
你需要从城市1出发,依次路过城市,2,3,4…N,每个城市。每个城市i到城市i+1都有公交车,题目会给出每个城市公交车的发车时间,发车间隔,路程需要的时间。每个城市你可以选择游玩或者不游玩,如果游玩的话需要消耗给定的时间。
问:求出能够在给定时间内到达城市N情况下,能够游玩的最多城市数量。

面试:
面试内容要求保密,所以略,结果是没通过,挂了。

微软Microsoft

微软的面试顺序:网申-笔试-面试(邮件通知,邀请现场面试会负责路费报销)

一面(笔试):

自我介绍(英文)
问了一下Java反射机制
做题:
按序输出格雷码,输入的参数是格雷码长度N。(在白板上写代码,要求是写能够运行的代码)
最长递增子序列。Longest Increasing Subsequence - LeetCode

二面(面试官很和蔼)

自我介绍(英文)- 2分钟左右
介绍项目
Java的基础知识(包括GC、运行时栈帧等)
做题:
求二叉树中任意两点形成的路径上节点(每个节点有个值)之和的最大值。

三面(Leader面)

自我介绍(英文)
问自身有什么优势
问前两面的题目
做题:
有三个转盘(A-Z),处于某一个状态start,比如MSF。求出将start转到另一个状态target所要转动转盘而形成的字符串序列。比如MSF->OFC:[MSF,NSF,OSF,OSE,…,OFC。此外,有另一个参数BlockList,是个字符串列表,输出的序列不能包含BlockList中的字符串,即转动时不能经过这些状态。

四面(HR)
随便聊了一些相关性问题,然后告诉我通过面试,回去等邮件通知。

雅虎(3轮面试+1轮终面)

三轮技术面试有两轮是典型的技术面,自我介绍+技术提问,算法题目相对微软要难一些,除了动态规划,也涉及到了后缀数组等不太常见的数据结构,还好之前有所准备,所以回答的还不错。

终面的面试官是一名移动部门的老大,问了一些数据结构设计和职业规划的问题,并用英文进行了一小段交流,但结果不是太好。

Airbnb(爱彼迎中国)

爱彼迎中国一共5面,一轮笔试,3轮技术,1轮终面。印象最深的只有两道题,整个过程非常长,问题也比较多,这里印象最深刻的有2道笔试题,如下:

模拟战争,有n个角色,每个角色有自己的位置location和动作(Hold:原地不动,Support:支援某角色,Move:进攻某角色),最后求每个角色最后的状态的数组
给你一个机票价格的列表,列表中每一项为【出发地,目的地,价格】,面试官给你一个起点s和终点e,要求你找出一个不超过K次转机的最便宜的从s到e的方案。

你可能感兴趣的:(面试,程序员,Java)