前天参加了微软的面试,作为一个整天写代码的程序员,心血来潮选申请的职位是PM(产品经理),结果坚持三轮面试下来,没有收到HR的通知,估计是悲剧了,大学也算是完整了,第一次尝到了被拒的滋味。但是这次面试的经历挺难得的,就像人生中的一节大课,想写下来记录一下。
前一段时间看到学校的微软的海报,于是回去很迅速的提交了中英两份简历,其实我对微软亚太研发集团并没有太多的概念,只是出于对微软的一种崇拜吧,特别是那句经典的windows开机每加快一秒就可以为世界节省10年或者更多的时间,在这样的一个公司工作应该是振奋人心的。
结果很快接到了来自北京的电话,说是要参加笔试。就是蓝桥杯java大赛的那一天,那天上午,真的非常不爽,因为最后三个程序写的一塌糊涂,四个小时下来很疲惫,我本身算法就是个弱菜,一股没参加过ACM的悔意涌上心头。下午回到学校,匆匆忙忙参加了笔试。
笔试的题目全是选择题,全英文的,很有意思,多选的了要倒扣分,满分100,考察的内容主要围绕算法的复杂度分析以及一些常用知识,比如不同的排序算法在不同的情景下的应用,还有就是一些计算机基础的,比如位运算,操作系统,栈操作,字符占位计算等。当然还有一些数学智力的题吧,最后一个题是一段读代码的题,不是很难,但是需要仔细。总体的感觉就是每一题都需要转动大脑。
过了几天,接到了邮件通知,要去香格里拉酒店参加面试(微软很大气,挑选了这么豪华的hotel面试),到了宾馆后,只有5个同学,HR给我们介绍了一下,这次的微软招聘流程,原来是从所有投递简历中,筛选30%参加笔试,然后选取了笔试成绩前30名的同学。突然发现这次面试的机会这么难得。心中也很紧张,其实我一开始就没有抱希望了,因为我申报的是PM,这次招聘的团队是bing研究所的,和别的公司不太一样的地方是,需要先面技术再面PM。
第一面是他们的老大peter,一个有白头发的大叔,开始和我聊了一下篮球(我喜欢打球),之后有谈到了一个以前做的非常水的项目,是一个选取公交线路的,他对我绘制折线公交线路很感兴趣,我和他讲了实现的方法,其实非常的简单就是数组保存了一些点的信息,有一个函数会判断两个站点之间是否需要绘制折线拐点,他说这样只适合小规模数据,有没有想过改进的办法,这个我的确有想过,也查找过google地图的方法,无果。但是google地图的路线应该是在服务端已经生成好的,因为他要快速的响应用户的请求。
之后就开始写代码了,他出了一个题就是说,有一个文件里面有很多汉字表示的数字,比如“五百三十二”,要我写代码,将这些汉字转换成阿拉伯数字,比如532.这个题目我大脑中的一个思路就是“自动机”,就是编译原理中用到的DFA,顺序的扫描一个字符串,一个个调用子函数,于是就按照这个思路写了,用的C语言。但是不知道当时抽的什么风,和peter说从后向前扫描(显然这个很不明智,比如五百二十和五百二十一就会出问题),他及时的提醒了我,我后来想这不是抽风,而是一种僵化的思维定式,因为大脑中要生成一个数字,我总是从低位开始计算。
写完代码后,给他讲了一边,他没有给出评价,而是把我的纸扣住了,跟我说“ok,现在你变成测试人员了,开始测试刚才的那段代码,你现在不知道那个程序是怎么实现的,写出你的测试用例”,这下我立刻尴尬了,每写出一个例子就很纠结,因为写的这些用例每一个都足矣把我刚才的程序搞崩掉,比如“二百一”,“五百一十三”,“二零零零”等等。。。。他笑了,我感觉自己真心悲剧了,但是这个过程让我学习了太多的东西,我的代码只能接收“正确”+“标准”的输入,也就是只能接收我期待的输入,才能有期待的输出。这无疑是一个失败的program。到这里时间大概过去了快一小时,之后又聊了一些关于研究生的事情,后来我才明白为什么。。。。
休息了5分钟吧,HR通知我参加二面,面我的是一个测试组的,很年轻,第一个问题就是用什么IDE,这个就是实话实说了,java用eclipse,C没有IDE,在linux下就是vim,windows下就是notepad++,编译器就是GCC,他问我为什么C不用IDE,我不知道怎么回答了,说了一个现在都觉得很搞笑的答案,我说喜欢代码的颜色,后来回想,把VS完全给忘了啊。然后他问我你知道MVC?能不能详细讲讲,我实话实说了,对MCV的理解就留在能把它翻译过来的水平Model View Controller ,自己没有实现过,都是在已有的模式上开发,比如android比如javaBean比如IOS.
之后又开始写代码,这次的问题是“现在有个很大的文件,里面是英语文章,要我写一个函数选出里面出现词频最高的10个单词,并且算出词频”,我觉得自己就是跪在这个问题上了,这次是用java来写,结果getNextWord上就悲剧了,我直接把所有的字符串读进了一个StringBuilder,然后用空格分隔,错误一:大文件可能会引起内存不足,错误二:空格分词是不全面的,还可能有句号,逗号等。于是改用从流中一个一个的读单词,这个改了以后,然后路就是选10个词的问题,我最初写的就是一个类似于选择排序的算法,这就需要遍历10遍所有的单词数组,很慢,面试官说这样也可以,问还有没有别的方案,于是我又说了一种就是,假定前十个词频最高,然后一次遍历后面的每一个单词与前十个单词中最小的那个比较,这样就形成了一种淘汰的方案,这样只要遍历一遍,但是前十个元素要不断的排序,也不好。最后面试官给我说了一种好的方法,最大堆,顿悟了,但是这个真心没有亲自用过,也想不到,然后我就想这次算是完了。面试继续,他说“现在我们需求变化了,改为查找所有单词中词频处在中间的那个单词”。我想排序肯定不是正确答案了,想了半天挤出来一句话“还是要先进行一趟快排”,这样我们就得到了一个flag,左面的都比他小,右面的都比他大,然后判断flag的位置和数组中点mid,如果小于,则说明目标值在flag的右半部分,然后递归了。。。但是代码还是乱了,我觉得二面真是让自己挫到家了。
休息了几分钟,HR通知我去三面,这次是他们的 产品负责人,我们聊了我以前做的一个东西,让我设计运营方案,一年的时间内,把这个产品卖给一个大公司,这个我就是瞎扯了,什么宣传之类的。答对了一个点,就是一定把基础功能做完善,巩固住核心。下一个问题是“你认为你的产品不会被别的竞争公司立刻学会的东西是什么?”,这个的答案得到了他的肯定,那就是用户贡献,也就是用户贡献的数据,这个是别人拿不走的,典型的是贴吧和SNS社区。之后是解决现在一个现在很关键的问题,比如QQ查找附近的好友,有的好友是两天前在这里,而今天已经不在这了,但是我们查找附近好友的时候还是会显示,让我提出解决方案,我说的是类似DNS查询的时间戳的概念,这个是可以解决的,然后面试官让我画服务器的部署方案,保证实现这个功能。之前有看过百度的数据可服务器部署方案,其实我就是模仿那个来的,但是面试问我为什么要有一个主控制服务器,我答得语无伦次了,但是这个事实上是需要的。
三位面试官都问我有没有问题,当然他们都是bing研究院的,问的都是写bing的问题,比如个性化搜索,和bing的壁纸。。。。
总结起来,发现自己有太多的不足,这次面试给我的收获就是——我还不够“聪明”,做什么事情都缺乏一个深入的思考,直接导致自己解决问题的能力不足,算法基础不够,微软看重的更多的是解决问题,写代码的能力。以下是几点总结,重要性依次递减。
- 因为不善于思考,所以导致了自己的不“聪明”,而这种“聪明”不是天生的,而是一种学习习惯,或者说是一种能力。我欠缺一种解决问题的能力, 写程序就是为了解决问题,显然过去的时间里,我更像一个技工一样,太专注语言语法细节,以及一些API。我更像一个解决方案的使用者而不是一个解决方案的创造者,这让我想起了《人月神话》里的一句话,你手中有了一把锤子,看什么问题都是钉子。我在面试中犯了很多这样的错误。
- 基础不扎实,算法的应用能力薄弱,同时对于产品的理解很不系统。
- 想问题不全面,能力局限在完成了baseline的版本,这个每个程序员都可以实现,你怎么证明你的不同?
- 有项目,但是没有项目经验,缺乏一个工程的概念,设计程序还停留在一个开发者的身份上。
- 最后一个比较尴尬,就是面试完才得知,前面的面试官都把我当成研究生了,我终于明白了peter为什么和我聊研究生,这是我的问题,以为简历 上写了就没有介绍,很没有经验,我实际是大三的。
后记:大脑僵了一个学期,感谢MS让我重新清醒了过来,今天中午在实验室和导师聊了这次面试经历,呵呵,老师说我”你个小本儿去MS面PM胆子挺大的“,其实结果我也预料到了,其实现在结果很好,收获颇多,说道为什么会想去面产品经理,原因有二:一是自己有做产品开发产品的经历,而是有社团经验,和同学们关系非常好~~,哈哈人生就是不断的去尝试啊~
这个学期就不再野了,暑假去腾讯实习,希望能够在自己第一份工作中有大大的收获,能够为团队做出贡献。
分享到:
相关推荐
项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:...
- **“HCS-filed-PM笔试考题”**:这个标题意味着这份资料包含了华为认证服务解决方案(HCS)领域的项目管理(PM)相关的笔试题目。这意味着考生需要掌握的服务解决方案方面的项目管理知识。 #### 描述解析: - ...
PM谱,一种重力波谱。该海谱数学表达式相对简单,而且仅与海面上方的风速有关,更方便计算,因此得到广泛应用。
"PM+"是一款专为项目管理设计的工具,尤其在NEC(New Engineering Contract)环境下,它提供了高效、全面的工程管理解决方案。以下是对"PM+工程设置"这一主题的详细解读: 1. **PM+简介**:PM+是项目管理的专业软件...
它具有秒、分、小时、日期、月、年等时间信息,并且支持24小时制和AM/PM格式。DS1302通过I2C或SPI接口与单片机进行通信,因此在C51编程中,我们需要了解并实现这两个串行通信协议中的任一种,以便读取和设置DS1302的...
2022年最新nuxtjs+pm2+elementUI完整项目,可运行线上项目。 包含接口健康检查 部署:可选docker+k8s或者pm2部署; 样式选择: less 构建:区分多个环境,生产环境可替换cdn地址
### 阿里PM实习笔试知识点解析 #### 一、问题背景分析 - **问题来源**:本案例来源于阿里巴巴PM实习笔试题目,旨在考察应聘者对于用户体验的理解与优化能力。 - **具体问题**:用户在使用微博的过程中,当刷新页面...
stm32+pm2.5+大气压bmp280+温湿度DHT11(原理图+程序) 1.四个按键K1,K2,K3,K4; 2.主界面1:大气压, 温度值,湿度值;主界面2:PM2.5 已经PM2.5的上限值 3.按下K1键修改界面:切花主界面1,主界面2,以及温湿度设置...
一文弄懂 Diffusion Model(DDPM)+ 代码实现
"安卓Android源码——PM25.zip"很可能是一个包含了与空气质量监测相关的应用或服务的源代码库,尤其是针对PM2.5颗粒物的监测。PM2.5是指空气中直径小于或等于2.5微米的颗粒物,它们对环境和人体健康有较大影响。下面...
【PMPM品牌营销策略解析】 PMPM作为一个新消费美护品牌,其成功的关键在于巧妙地运用品牌故事和创新的营销策略。品牌成立于2019年,秉持着“去往世界,探索世界”的理念,它在中国市场开辟了以探索为主题的护肤品牌...
例如,2009年PM笔试题可能会要求分析现有产品的问题并提出改进方案,这就需要考生具备一定的产品思维和商业洞察力。 3. **数据分析与逻辑推理**:百度的笔试题中往往会有数据分析部分,比如根据给出的数据进行统计...
在这个名为“PM2.5+DHT11上下限报警程序”的项目中,开发者创建了一个系统,该系统能够监测空气质量中的PM2.5颗粒物浓度以及温度和湿度,同时具备设定阈值报警功能。下面我们将详细讨论这个程序涉及到的关键知识点。...
该压缩包文件“明德小学PM2.5+SHT20+甲醛+光照+CO2+O2OK(2).zip”似乎包含了与环境监测相关的项目或系统,特别是针对学校环境的。从标题和描述中我们可以推断,这个项目涉及了几个关键的环境参数监测,包括: 1. ...
标题中的“上海展示PM2.5+SHT20+甲醛+光照OK(2).rar”似乎是一个项目或实验的成果展示,包含了监测环境因素的多个方面,包括PM2.5颗粒物、SHT20传感器数据、甲醛浓度以及光照强度的测量。这个压缩包可能包含源代码...
本文将基于给定的PDF文件内容——“SAP_PM+流程图.pdf”,详细介绍SAP PM中的五种基本流程图:Breakdown Maintenance(突发性维护)、Corrective Maintenance with Unstocked Material(无库存材料的纠正性维护)、...
在部署Python项目的实践中,PM2和Nginx是两个非常关键的工具。PM2是一个进程管理器,它用于确保Node.js应用始终运行,并提供一系列附加功能,如负载均衡和日志管理。而Nginx是一个高性能的HTTP和反向代理服务器,常...
【安卓Android源码——[安卓开源]PM25.7z】这个压缩包文件主要涉及的是安卓系统中与空气质量监测相关的源代码,尤其是PM2.5的处理和展示部分。在深入探讨之前,我们先来了解一下Android操作系统的基本概念。Android...
一个完整的KEIL5项目包,核心是stm32f103c8t6,通信模块是lora,采集有温湿度、甲醛、pm2.5,气压,海拔,可以直接下载,连线在代码中有说明,可以直接用。如果有意见可以向我提出,相互学习,共同进步。
机器学习在空气质量测定方面的应用——PM2.5测定.pdf