首发于 数据应用学院
[原创]算法教练谈谈码工面试

[原创]算法教练谈谈码工面试

在北美从事工程相关的朋友中流传着这么一句话。“你是从事什么工作的啊?”回答简洁明了,硅工码工或者矿工硅工指的是从事半导体相关行业的,比如计算机硬件,芯片设计等。码工指的是从事计算机软件相关工作,日常需要编写不少程序,称之为程序猿,或者程序媛

矿工则指的是金融领域相关的工程师,比如设计并实现金融的数学模型(主要采用计算机编程)。这三个工种,听上去有些自嘲,但都是就业市场的香饽饽,都可以在美国高薪职业排行榜上占据一席之地。其三个领域的顶尖公司也都是大家耳熟能详,甚至被很多人列为心中的dream company。其中码工和矿工更是以广大的市场,高额的薪金福利吸引着众多还未毕业就已经为之奋斗的莘莘学子。



解构码工面试密码

码工,顾名思义,写代码的,也就是常说的软件工程师。这是学计算机专业的同学们最门当户对的职业,也是很多希望转行的朋友们的第一选择。软件开发是件有趣而枯燥的事情。有趣是因为只有你想不到,没有你做不到的。50年前没有人能预测计算机即将进入快速发展时期;40年前Bill Gates,Steve Jobs仍然默默无闻;

30年前,windows开始慢慢进入普通人家;20年前也没人能想到互联网的到来会改变企业采购,销售,库存,人力资源等方方面面;10年前你能想象在没有手机,没有网络的世界会是什么样子吗?今天,大数据又以迅雷不及掩耳盗铃之势影响着我们的生活。枯燥是因为你需要用自己的努力一行一行的码代码,要经历requirements,design,implementation,unit test,integration test,maintenance等一系列软件开发流程。

兴趣是成为优秀码工的基本素质有句话说的好,Programming is a labor of love。其实做任何事情都是一样,唯有真正的热情,才能完成真正的伟大事情。还有一些人认为编写代码是机械的,就像自嘲里说的那样,码工码农,我们用青春来码墙。也有人说印度的软件行业之所以发达,是因为他们高中生都会写代码,因为计算机门槛低,什么人都能学。

事实上,编程是一件极具创造性的工作,也可称之为是一门艺术

最优秀的软件工程师则是工匠,他们能把自己独具慧眼的创造力融入到每一行代码中。他们追求代码的精致,甚至雕琢至完美;他们把大型系统像拼图一样组装到一块,严丝合缝。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。


软件工程师,那自然需要对一门或者多门计算机语言比较精通,了解语言特性,熟悉常用的library或者package,对流行的framework或者开发环境有一定的认识和了解。但这些远远不能作为优秀程序员的标准,甚至都没有达到很多公司入职的门槛。

那我们来说些干货,什么样的人适合这个行业如何迈入FLAG(Linkedin如今将要成为Microsoft旗下的品牌)和极具发展潜力的unicorn这些顶尖科技公司的大门如何成为一名优秀的码工

就像之前所说,你热爱编程,喜欢挑战,对新鲜事物永远向往。因为这个行业发展迅速,新的技术层出不穷。如果你愿意站在科技的最前沿,是一个对编程感兴趣,对技术敏感,逻辑思维能力强严谨细心勇于挑战难题,以解决一个程序设计难题为乐的人,那就去大展拳脚吧。

当然你要耐得住寂寞禁得起熬夜、愿与电脑长相厮守

数据结构和算法,数据结构和算法,数据结构和算法

重要的事情说三遍。一个刚从象牙塔走出来的学生,也许简历稍显简单,项目经验也略显不足,那面试官如何从众多竞争者中选人呢?自然是面试,那众多科技公司都以数据结构和算法作为基础和核心考察科目。别怪我没提醒你,FLAG这类公司在面试fresh或者junior level的职位时,70%(也许更高)的面试都是这一类。Leetcode,lintcode,carrercup等这些网站提供了极其丰富的资源,大家不妨去刷刷题,熟悉下面试可能会被问到的题目类型。

相反的,在面试这类公司,或者说一些general hiring的面试,对于计算机语言反倒没有什么太多限制,你可以选择你最熟悉的语言。面试官所看重的是你的思路,是观察你在遇到困难挑战时如何去面对,是考察你能否用计算机程序清晰的把你的思路编写出来,是否有周全的考虑到每一个可能出现的情况。顺便说一句,你的编程习惯、风格,如何和人交流,表达自己的想法,面试官都看在眼里。

系统设计也是会被经常问到的一种题目类型,考察的是面试者是否能全局的去思考问题。这类题目听上去很简单,而往往是个很开放性的问题。在和面试官交流的过程中,他会给你一些提示,把你往正确的方向引导。

面试官们想要看的是在45分钟到1个小时之内,你考虑了多少种情况解决掉多少问题。他们追求的不是一个答案,而是在整个面试过程中,考察你思考论述的过程

很多同学也许没有丰富的项目经验,那如何去准备呢?多参与一些项目,现在的open source的项目非常多,可以多去看看别人的代码,甚至是参与其中,在实际的系统中去实践。


课堂中可能也会有系统设计的题目,比如设计一个数据库,或者是操作系统课上的多线程项目。不再再把它仅仅当成一个简单的project,不要为了交作业而去做,而是把它当成实际问题,思考系统设计过程中的架构和博弈。多和有经验的工程师去交流,当然你也可以从面试的过程中学到很多东西。

除了general hiring的面试以外,也有一些针对某一些技能的面试,比如前端工程师,网络安全工程师,数据科学家。那对于这一类的面试,数据结构和算法的比例和难度或许会降低一些(只是或许哦!)但对某些领域的知识就要求深入一些,对于有过research经验的同学也可以试试对症下药,找一些和自己研究领域相关的职位。



矿工之角色分析

我们再来说说矿工,顾名思义,挖矿的民工。矿工是从英文Quant而来,quantitative analyst的简称。因缘巧合,Quant多来源于金融业,正好和矿、金矿无缝对接起来。Quant大多在商业银行、投资银行、对冲基金等公司工作。


大数据时代的到来,让很多科技公司也出来了很多data scientist,data analyst的职位。Quant简单说来就是什么时候买东西,什么时候卖东西。买卖什么呢?金融衍生品,比如股票,基金,债券等等。换一个高大上点的说法,quant的工作就是设计并实现金融的数学模型,包括金融衍生品的定价,风险评估,市场预测,当然也包括交易等。矿工的小工种也分很多,比如desk quant,直接服务于trader,开发他们所需要的价格模型,说的直白一点,是最接近money的quant,看着眼前几十个几百个million甚至更多的数字在眼前忽上忽下的跳动,你感到兴奋与激动吗?

当然压力也是可想而知的。

Model quant,这些人需要独立开发模型,有做pricing,有做风险评估,有做市场预测等等。他们所做的模型需要对desk quant进行support和validate。压力相对较小但也远离money。Research quant,这是一帮数学很优秀的家伙,多数是有丰富科研背景的Ph.D。他们需要尝试各种公式和模型,对可能出现的各种市场环境做评估,帮助上层executive做决策。如果你喜欢挑战,喜欢科研,相信你不会觉得枯燥。当然也要耐得住寂寞—— 在没有研究出什么大的成果之前,你可能默默无闻。(当然你的角色仍不可或缺。)Quant developer,投行里的软件工程师,他们需要把desk quant和model quant开发出来的数学模型自动化,比如高频股票交易。在一个前所未有的数据、信息高速发展的时代,这一切都离不开计算机,那当然也离不开能驾驭计算机的伟大的工程师们。所以Quant,很多时候也是一名优秀的码工。


那什么样的人适合去做Quant呢?

第一喜欢技术类的,对数学和编程相关的工作感兴趣。能够做一些技术工作的人里,又包括了只喜欢纯数学做理论,和只喜欢写程序这样的人。或许前者更适合留在大学教书,后者不如去互联网公司。但要做 Quant,你应该对两者都有一定的热情。第二要对金融市场有兴趣。技术做的好的人一般选择也比较多,能建模能编程的人去别的科技行业也能找到不错的工作,单纯从收入上来说我不觉得 Quant 这一行就一定比其他行业有优势。但市场本身是一个绝对独特的存在,做 Quant 的人肯定是对市场的兴趣远超过去研究高能物理或是人脸识别。Quant不仅仅是码公,真正意义上的Quant不仅要有良好的编程能力,严谨的数学思维,还要有对市场的直觉,编程都只是实现目的的手段而不是目的本身。

有句玩笑话,Quant = PhD + Cpp Expert + Good Math Basic + Smart + Perfect English。可以看出Quant的门槛还是相对较高的,尤其是顶级投行,PhD并不是一个必要条件,但确实不少Quant是PhD出生。你需要对一两门计算机语言非常熟悉,如果你是desk quant,那你所需技巧就更广泛一些,因为你要在很短的时间内解决各种问题,你可以运用各种工具各式技巧。数学,这是必须的。你需要熟练运用数学的、物理的方法进行经济、金融、投资的建模和分析;需要把所有的智力全部用在证券定价模型、投资模型、套利模型等各种投资策略模型的开发和定量分析上,采用计算机编程设计并实现衍生物定价、风险估价或预测市场行为的金融数学模型。

不同的Quant职位的需求不同,有的偏向于统计,有的偏向于随机概率,有的偏向于工程数学,有的偏向于machine learning。但基本每一个quant的job description都要求quantitative,numerical,和analytical的能力。需要提一句的是,虽然东西很多,要求刚刚走出校门的学生全部都精通有些不切实际,面试官更看重的是人的潜力和对新鲜东西的渴望。很多东西可以进了公司之后再慢慢培训。但提前对编程和金融衍生品知识进行准备会让你赢在起跑线上:C++ Primer, Data Structures and Algorithm Analysis, Options futures and other derivatives (这本号称华尔街圣经,就是厚了点),这些经典的书是个不错的开端。

不同职位对编程语言的要求不一样,要准备的编程语言有:C++,Java,Matlab, R, Python,Perl, SAS,SQL,Excel/VBA等等。看上去很多,但精通一门比什么都会一点要好得多。面试Quant,brain teaser也是经常会被问到。有事没事儿多动动脑子没坏处。




最后再来点纯干货,那就是矿工的四大名著,对于找工作的同学会有所帮助。


  • Quant Job Interview Questions and Answers

Mark S. Joshi, Nick Denson, Andrew Downes

  • Frequently Asked Questions in Quantitative Finance

Paul Wilmott

  • A Practical Guide To Quantitative Finance Interviews

Xinfeng Zhou

  • Heard on the Street: Quantitative Questions from Wall Street Job Interviews

Timothy Falcon Crack


不管是什么工,码工也好,矿工也罢。都是一份工作,更是一份事业。你可以把它当做养家糊口的工具,也可以是修炼自身的积淀、实现人生价值的平台。热爱、执着、探索。选择一份自己喜爱的职业,并为此持之以恒的努力下去。新的画卷已经展开,新的旅途即将开始。同学们,加油!



Feng老师

本文作者为数据应用学院资深算法教练,美国某巨头金融企业资深工程师

深圳SEO优化公司揭阳高端网站设计价格大庆外贸网站建设哪家好罗湖网站优化排名民治网站改版价格太原SEO按天扣费公司海西营销网站哪家好遵义外贸网站建设报价通化网站建设设计公司漳州网站建设公司济南网站优化软件推荐滨州SEO按效果付费哪家好文山百度爱采购公司梅州建设网站公司吉林如何制作网站报价阜新网络广告推广报价重庆设计网站公司龙岩百度关键词包年推广公司横岗模板推广报价宝鸡网站设计模板哪家好东莞网站制作设计哪家好巴中关键词按天扣费报价阿坝网站优化报价莱芜营销型网站建设报价汕尾网络推广多少钱呼和浩特网站优化双龙阿里店铺运营公司铁岭网站改版多少钱双龙推广网站价格鄂州关键词排名包年推广推荐孝感网站推广方案多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化