又一次Erlang 面试

2013-01-09

       这一次是真的接受了人家的面试了, 是一家中小型的游戏公司, 主要是页游方向。虽然面试的最终结果是被拒绝了,我心里也不是那么失落了 –早有心理准备嘛! 令我感到吃惊的是,没有笔试环节,直接就进入面试了。临走之时忘了请教这个问题,到现在 我也没有搞明白其中缘由。

       从自我介绍开始,聊聊家乡, 学校, 实习, 面试官和我逐步聊到了技术上。 面试官十分在意我一个在校的学生是怎么接触到Erlang和函数式编程的。这个问题我倒是不曾预想到过。个人感觉,要是真的对计算机技术感兴趣,想广泛的了解计算机的同学,都会了解到Python, Lisp和并行计算,分布式计算的一些东西吧。那我的经历就是 Lisp -> 函数式 ->  并行计算 ->  分布式  -> Erlang。 面试官倒是称赞我能够了解到这些东西。接着开始询问技术了。 

   1, “函数式编程“和”命令式编程“的特点各在哪里?

      虽说这样的问题是看起来很简单了,曾经阅读过的于此相关的文章也不少了, 结合自己学习使用各种语言的经验来回答, 怎么着也能说出个子丑寅卯来,但是,要你自己跟对面的两个前辈讲一讲,那感觉就完全不一样了。毕竟人家前辈有多年的经验,我生怕自己一句话讲错了。我说:a) 函数式语言写的程序bug 率低, 函数式语言写程序容易出错,bug率高一些。 b)函数式语言更偏向于数学的概念, 帮助锻炼思维 , SICP 就是没有高校的CS入门教材, 命令式语言程序运行效率高, 细节或者说是限制比较多, 概念也多, 容易出错。 c) 函数式语言大多动态类型, 弱类型, 命令式语言多强类型,静态数据类型, 。。。 当然了,最终的结果当然还是我的回答错漏百出。我发现自己讲的东西没有条理性,也就是平常的时候自己没有下功夫总结的缘故。但是,总结是学习过程中非常重要的环节,只把信息塞进脑子中,却不能使之条理化,规范化,过不了多久又忘却,这是效率低下的方式。这一点今后要努力形成好的习惯了。

   2, 既然说Erlang在分布式上很厉害,为什么现在最被广泛使用的分布式框架却是Java 开发的?

      我勒个去。 准备不足啊,没有研究这一块儿。Hadoop 也只是听说过, 看过一些介绍的文章而已。 我只能苦逼的说自己没有对这方面下功夫,不太清楚,猜测有以下几个原因: a)  因为Java在跨平台和组织大型程序上能力都很强悍,语言使用广泛, 运行效率也不错, 有各种开源、闭源的lib, 好拓展,也容易和别的程序对接;b) 强类型的语言, 容易在编码阶段就及早检查出错误; c) 语言简单, 开发者相对较多, Erlang 的函数式语法比较奇特,不易学习, 学习使用的人较少,等等。 面试官听了之后笑了笑,说“你刚才还说函数式语言写的程序bug率低, 这儿怎么又说强调ava的强类型能帮助写出bug少的程序呢?”, 我一愣, shit, 这是怎么回事儿?  我有解释了一通, 回头一想,不对啊, 说不通啊。 

      接着问了其他几个问题,但是我认为上面两个比较重要吧,可以说很多东西。似乎我的回答大都从语言的层面的考虑的,很少从项目设计,团队合作,项目经验上来进行表述,没有经验是硬伤啊! 这次人家不要我,也是说创业型公司没有办法,只能招有经验的多面手。聊到页游的开发工作,面试官说现在的页游开发模式基本上已经固定下来了,游戏大多套用那几套框架。这事儿我倒是听说过,只是没想到发展这么快,连基本的模式都固定下来了。 我一直关注Erlang的招聘,总是在几个招聘网站上逛游,发现从12年十一月份开始,Erlang的招聘似乎越来越多了,对此我感觉非常奇怪。按理说,到年底了,没理由会越来越多啊。 面试官告诉我,其实很多页游公司一直都是缺Erlang程序员的,也无从说起从11月份开始招聘多起来了。的确也是,51job上就是只有四十多家公司来回的发招聘信息。

      面试的最后,面试官问我在Scheme和Erlang上是否都有自己的作品出来,我只能摇头了,说目前都在进行中。他建议我在Github上放一些自己的作品,好让招聘的面试官们在面试之前就能通过代码了解我个人的技术水平,节省大家的时间。 这些工作,我倒是正在进行啦,得赶紧做了。

 

如果有任何意见,欢迎留言讨论。


[ 主页 ]
COMMENTS
POST A COMMENT

(optional)



(optional)