捷报 | 蔓藤教育学员获得Microsoft一面邀约

post image


看到我们的学员一个又一个收获自己心仪的面试和Offer,小编真为大家感到开心,一切的付出都是值得的!


今天小编特意邀请到了三个月内面试过微软,Pinterest,Airbnb,Google等公司的优秀学长,跟大家分享一下他在找工作时遇到的问题与思考,希望对正在求职的小伙伴能有帮助。


1

微软面试我学到了什么?

a.

交流是面试的重点


很多人都指出来过,面试其实是一个面试官与被面试者相互交流的过程。在算法,设计等硬功的基础上,很多面试官更看重面试者是不是能通过与自己的交流和沟通系统地分析和解决问题。毕竟面试是要挑出将来和自己一起工作的最佳人选。如果交流得当,是可以从面试官那得到很多帮助的。所以面试的时候一定要把握好每一个和面试官交流的机会。


比如上来先感谢一下面试官百忙中抽出时间面试自己

,在提前知道面试官姓名的情况下,做功课了解一下面试官的背景喜好,在回答设计问题时给出多个备选方案,分析利弊并根据面试官喜好推荐最终方案等等小trick往往能在面试中起到意想不到的作用。


b.

刷题是面试的基础

借用一下模板: 刷题不是万能的,但是不刷题是万万不能的,当然已经在行业里混出一定名头的除外。其实我对刷题也是深恶痛绝的,认为它绝不代表一个人的真实水平。但现在整个行业就是这个样子,做题还是相对公平的一种能在短时间内选人的基本手段。


所以建议无论面什么职位,level,最基本的题型还是尽量熟悉一下。我刷题主要集中在 leetcode, 在两个月内做了3遍。临近面试的时候到本版看一些新题查缺补漏。刷题的时候主要集中在把题型做熟,力图能举一反三,而不是多做题上。事实证明,面试过程中几乎没有遇到过原题,但大多数面试题都能在leetcode里找到相似的解题思路。


c.

千万不要忽视recruiter的作用


这次能顺利拿到A家offer,recruiter可以说起到了至关重要的作用。从面试安排,到面试反馈,再到为我争取到加面机会(A家是一票否决的),还有后来的offer谈判,recruiter都帮了很大的忙,让我及时了解每一步的

结果。比如面试完后每次recruiter都会给我电话,告诉我有几个strong signal, 几个OK signal等等。我有什么问题和想法基本上也直接和recruiter说(当然这是个例,不建议随便采用)。Recruiter 不能直接决定是不是能录取你,但他们在整个过程中起协调作用,所以在整个过程中的影响绝对是不容小视的。


2

选择Manager V.S. Engineer工作?

我是比较想继续走management这条路的。我有一些很senior的朋友不愿做manager。 一是因为engineer职位相对较多,稳定且以后跳槽容易;二是因为底层的manager 大多是付出大于收益的,感觉不是很划算。而且还有一些人心中还保留着技术至上的想法,更愿意把时间和精力花在研究新技术上。从我个人经验来说,感觉底层的manager其实是很关键的一个群体,国人在各大公司相继失守跟底层manager的缺失不无关系。底层的manager确实没有太多权利,但在hiring和performance review两个环节往往能起到一定的作用。


Hiring 不用多说了,直接关系到公司的人员构成比例。在performance review 环节,大多数公司都大同小异,会在不同的部门间有一个所有manager参加的calibration,而且每人一票。这个时候烙印往往能做得很团结, you scratch my back and I scratch yours,从而为整个群体争取到最大利益。而反观国人,经常是满屋子烙印manager里面零星点缀的几个,根本就是一场打不赢的战争。所以我一直都在周围的朋友中大力劝说他们有机会出来争取manager职位。只有形成优势才能保障本群体的最大利益。也只有在底层的manager里达到一定的数量基础才能产生更多的高层管理者,从而进一步扩大群体利益。

3

怎样写好求职简历?

下面这个是很有趣的程序员是如何读简历的:

好吧,如果你也看不懂,那还是好好像小编一样把自己的简历写好吧。不管程序员们如何解读你的简历,你的简历还是要吸引HR的眼球,所以还是不要偷懒好好按照HR标准写好简历吧!关于如何写简历,可以参考:


4

硅谷公司是如何选拔技术人才的?

我总结成3C (Culture, Communication, Curiosity),下面也展开一些重点。

1

技术

平常扎实的技术积累,包括系统知识点,不同编程语言,开源工具,团队合作工具,比如, Restful架构有哪些特点,动态语言的优劣。


2

基本功

代码简洁优美没有bug,常见算法的应用,优化技巧,比如如何把一个O(n^2)的算法优化成线性。好的编程习惯一定要坚持,格式:缩进可以良好排版,括号要对齐,变量名起的有意义。边界检查,参数检查,异常处理,单元测试。主动写出合理的Test case,一些常见的null检查。不管你之前做过多少年,只要申请工程师职位都要经历过编程的基本考核。


3

交流

实技术人员用到的英文都比较浅显,听和读应该问题不大,但最好在说和写方面下大功夫,这能突破一些天花板,更多融入团队交流。


4

系统设计

系统设计:包括设计大型系统的架构选型,各种不同组件的tradeoff,数据库系统,网络系统,分布式系统。比如什么时候适合用NoSQL,如何做一个推送系统,缓存系统如何搭建。



还有更多福利哦!


最近小编和一位硅谷的大牛面试官交流获得了许多科技公司面试的经验传授。


这位前辈之前在LinkedIn做技术工作同时,也花了不少时间在招聘上,成为了当时LinkedIn前三的面试官,包括挖掘候选人,参与校园招聘,草拟面试题,电话面试,Onsite面试,填写反馈,和最后决定是否发放Offer,都有完整的流程和经历。


那么我们的LinkedIn面试官大大对所有希望进军硅谷的同学们有哪些求职建议呢?


Q
&
A

a.

您在面试中会重点考察面试者除了技能之外的哪些点?面试者身上哪些特点往往会是各公司认为不能接受的?

1)首先,看背景是否符合职位的需求,比如做分布式计算的工程师,对系统底层,大数据架构就要有一些涉猎。

2)第二,聪明,如果我交流的时候发现他们能很快意识到我说的意思甚至补充我心里想的,这种人非常讨喜。如思路异与常人,很快给出最优解,能挑战一些难度大的问题。

3)第三,好奇和热情,如果面试者说不清为啥要申请,或者没啥主动提问的,我会觉得对公司兴趣不大,没有好好做功课,态度上不够积极,而就算最后技术很出色,在评价上也是要打折扣。另外如果他技术面很狭隘,技术兴趣不广泛,可能也要考虑是否能胜任创业公司不断变化的环境。


不能接受的❌


1)不愿意学习,对他说的或者写的很自大,但却不虚心接受其他人指出的问题和建议。


2)企业文化不合,对公司的使命和价值观有一些偏差,这个比技术功底更致命,主要是找志同道合的。


b.

对于初级程序员的面试,最难的部分可能就是所谓的设计题。这部分是什么流程?

设计题可以分成两个部分,系统架构设计和利用面向对象编程原理进行程序设计。前者所涉及的技术往往包括数据库,并发处理和分布式系统等等,对于经验要求和知识要求比较高。系统面试的流程如下:


1

题目描述

往往非常简单,如:设计一个XX系统。 或者:你有没有用过XXX,给你看一下什么界面和功能,你来设计一个。

2

阐述题意

面试者需向面试官询问系统的具体要求。如,需要什么功能,需要承受的流量大小,是否需要考虑可靠性,容错性等等。

3

提供方案

面试者提供一个初步的系统设计

3

Follow Up

面试官这对初步的系统中提出一些Follow-Up的问题:如果要加某个功能怎么办,如果流量大了怎么办,如何考虑Consistent怎么办,如果机器挂了怎么办。

3

解决问题

面试者根据面试官的Follow Up逐个解决问题


c.

从面试官的角度给出一些系统设计上的考量标准是什么?

我先给一个内部培训面试官的方法,大致说了考量环节。根据我的经验,也列出一些关注点


  1. Adapt to the changing requirements (适应变化的需求)
  2. Produce a system that is clean, elegant, well thought (设计干净,优美,考虑周到的系统)
  3. Explain why you choose this implementation (解释为何这么实现)
  4. Be familiar with your experience level to make decisions (对自己的能力水平很熟练)
  5. Answer in high level of scale and complexity (在一些高层结构和复杂性方面有设计)


其实大家大可不必追求完美,在真正的面试中,没有人能对答如流,往往面试官也会给出善意的提示,就算你没回答某个子问题,在面试后的评价中也会综合衡量,跟其他的面试者比较,最终打出一个分数。很多人在2到3分左右,目标是尽量在3分以上。


d.

我不是算法大牛,不是ACM队员,听说Google,Facebook有很多牛人才能进,那我怎么能拿到好Offer?

首先要是要有信心,算法不是想象那么难。


第一:因为面试常见的算法就那么几种。只有你努力去总结归类相似题目,才能只做很少的题就可以会很多的题。不要盲目关注数字。做题质量非常重要。标准是:你做过的题目,让你再做一次,你就能“完美解决”。


第二:即使你知道一题的解法,你未必能写好。因为你可能每次写出来的程序都很随性,这样会漏洞百出。程序员是一个非常讲究严谨性的职业,如果你在总结题目的时候能够找到这些题目的模板,你把模板提炼好,碰到类似的题目,可以一边写模板,一边想想怎么在模板上做一点简单的改动。这样节省时间又保证不会出错。



f.

面试时候如何表现自己体现沟通能力?

首先你要站在面试官的角度,面试官招你进去当同事,他希望同事怎么样的人就决定了他的立场。学会换位思考。


让面试官时刻明白你的意图,不要闭着眼睛不停写。对于面试官来说,他根本不知道你的解题进行到哪一步了。你可以反复和面试官交流自己的想法,得到面试官认可以后再动手写。可以讲讲你怎样想到这个思路的。记住,你并不是要说服他接受你的想法,而是要把你的想法解释给他听。


面试官提出质疑的时候,第一,不要觉得面试官什么都不懂,怎么这都不知道(其实他只是看一下你是否真的懂),第二,面试官比你经验丰富得多,很有可能就是你犯错了,赶紧想想是不是真的有问题。


g.

面试中出了Bug怎么办?

BUG Free很重要,这个需要我们平时不断的练习,按照我们方法的准备,还是可以避免一些坑。但碰巧你可能不在状态,写出了BUG被面试官指出,是不是就挂了呢?

别担心,出BUG很正常,也许面试官来面你之前正在DEBUG:( 衡量一个程序员能力的标准,并不是他能想出多牛的算法(那为什么还要面算法题?)而是当遇到问题的时候,程序员去分析和解决问题的能力。而出BUG的时候,正是展现你是否是一个合格程序员的时候。

DEBUG流程:

1. 通过TEST CASE定位BUG所在位置

2. 不要立即修改代码,重新梳理逻辑。因为很有可能还有其他BUG。

3. 走完所有逻辑之后,心里有数怎么改了,再动手开始改

4. 用TEST CASE再走一次新的代码。

5. 在整个过程中,不停的告诉面试官你在干嘛(在不影响正常写程序的情况下)


这样,成功排解BUG,不但不会减分,还会因为你优秀的DEBUG能力和与此同时展现出来的沟通能力而加分。


h.

面试中不同人考察的内容都有哪些?

给一张表大家可以了解:


最后希望大家在找工作方面能有所收获,不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰~想想还有点小激动呢,嘿嘿~~ 同学,梦醒了么,该去搬砖了。



All comments(0)

No comments yet