2007年11月27日星期二

转会咯,从广州转北京咯!

我说的是从广州.NET俱乐部转到北京.NET俱乐部,哈哈。今天一早的飞机抵达北京,明天入职开始在百度为期三个月的实习。非常幸运的是,11月刚刚参加完广州俱乐部的活动,到了北京后就马上碰上了12月的北京俱乐部的Visual Studio2008 & Windows Server2008 交流会。如果你是北京俱乐部的成员,或者好像我这样“碰巧”有机会参加这次活动,那么到时候见咯。

2007年11月25日星期日

网络游戏:强迫不同玩家按同一个方式玩游戏

我不玩MMORPG,最近唯一沉迷于地Web Game是Travian。玩了半年的Travian之后,开始对网络游戏所谓的反作弊措施有了个感觉,那就是强迫不同的玩家按同一种方式玩游戏,以示所谓的“公平”。

为什么有这种感觉呢?这要从大陆Travian禁用GreaseMonkey说起。我之前虽然听说过有脚本可以增强游戏的UX体验,甚至提供众多自动化支持,然而却没有用过。事实上,一个GreaseMonkey脚本能做什么?就是自动化访问网页,自动化抽取信息并进行分析,仅此而已啊。真正的作用?就是原本你可以通过大量手工操作,打开大量页面或者需要人手计算的工作,变成它帮你做了,直接把结果显示在页面上了。

为什么这是不允许的?因为网络游戏就是要追求一种公平性,而且Web Game还特别强调这一点。总之,你有任何聪明才智都不能用于制作自动化工具,必须手动完成所有工作,这就是我所说的强制性了。

事实上,不同的玩家希望以不同的方式进行游戏,这是很正常的。暂时我们先把游戏当作纯粹的娱乐方式,不涉及任何现实世界的商品交易或者其他利益得失,那么玩家对于娱乐的个性选择就应该是被允许的,然而这种个性现在被限制了。然而这种个性在单机游戏中确是完全开放的,例如NFS:Pro Street提供了三种难度,从全套辅助系统的Casual,到完全手动操作无辅助的King,以及两者中间的Racer,这使得几乎任何层次的玩家都能从NFS找到合适自己的玩法(比King还骨灰或者比Casual还弱的除外)。

暂时而言,网络游戏提供这种个性化选择的唯一方法就是分服务器,这台服务器是这种配置的,那台服务器是那种配置的,然而服务器之间是不能够沟通的,你也不能中途转服务器(除非一切重新开始)。单机游戏的话则无所谓,中间随时可以更改个性化配置,而且有些游戏对于拟真度的选项还超多,如果把这些选项组合都用独立服务器列举出来的话恐怕是绝不可能的。

总而言之,至今为止网络游戏还无法解决玩家对这种娱乐形式的个性化定制需求的问题。如果这个问题能够被解决,将可能挖掘更多的潜在玩家客户加入到网络游戏当中。

TOEFL 成绩出来了

28+29+20+25=102,裸考的。不知道“裸考”是否是一个广泛被接受的说法,意思是完全不准备就去考试了。

显然,我曾经有半年的时间可以去准备TOEFL考试,但是我没有采取认识常规的复习方式,拖到考前几个星期,觉得压力太大了,干脆选择不复习了,祈求有80分就不管了。结果看起来还不错,口语异常低也算是预料之中的了,因为确实不知道能够如何提升,我说的是提升真正的口语能力,不是用pattern去应付考试中特定的题目。

我所谓的准备,就是保持着用英文思考,保持这种英文跟别人聊天,但事实上没有一个partner是真正的native speaker,所以效果只能说是保持,不能说是提高。有机会还是要找人keep住练,这样才能在将来的考试中做得更好。

2007年11月21日星期三

从 Adobe SHARE 说到 Silverlight 的 XPS 支持

在很久很久以前,我们仅仅知道Flash能够做一些JavaScript做不到或者做不好的交互,特别是复杂度高的交互,除此之外也没有什么理由使用Flash了。后来Flash加上了视频支持,却一直不受重视。然而突然有一天YouTube就出现了,人们才发现这项支持的真正价值,并且纷纷效仿。再后来,Flash还加入了对PDF文档的支持,这项技术最近已经被Adobe成功利用于开发Web2.0站点了,那就是Adobe SHARE

在Silverlight发布的时候,大多数Flash拥有的功能Silverlight都做到了(嵌入字体除外),当然也包括上述的视频与文档支持。只不过,视频支持变成了WMV,因此也就直接支持DRM了,而文档支持则变成了XPS。这个XPS支持能做什么?我们还是先来看看Adobe SHARE的示例文档吧,这个文档其实就是一个PDF,然而你无需安装任何客户端的PDF阅读软件,也不需要为浏览器加装任何PDF插件,就能够直接在浏览器中以Flash的形式阅读。

考虑一下,以往Sharepoint里面的文档要在浏览器中直接以只读方式打开阅读,可以转换为HTML版本再显示,Sharepoint内置了这一功能,然而这转换肯定会存在一定的失真。现在可以考虑转换为XPS了,然后使用Silverlight作为阅读器就可以了,和HTML版本一样不需要客户端安装有Office,然而用户体验却比HTML版本好多了,基本上不会失真。这XPS支持真的能做到吗?能。而且已经有人做了一个小小的演示,证明可以在web上面实现XPS Reader,请看:Simple Silverlight XPS Viewer

其实这次说到Silverlight的XPS支持这样一个“偏门”的话题,只是想说明很多RIA技术已出现,却暂时没有适合的应用场景,或者说官方给出的一些适用场景你觉得太狭隘了对你没有一点儿价值。举个例子,例如HD视频的支持,你可能会想这高清以现在的带宽谁享受得了,最多就是Microsoft和20st Century Fox合作搞个演示网站而已。实际上,我们真正需要的是一种创意,去想象如何使用这些还没有多少人使用过的技术去挖掘潜在的市场价值,正因为这些技术还没有多少人使用过,你一旦深挖就已经是专家了,你的领先地位就稳固了。

最后,大家发挥想象力想一想Silverlight现有的功能还能应用到什么有意义的场景中去吧,有想法的朋友可以直接在评论中留言哦。

2007年11月19日星期一

Silverlight 与 WPF 的一些差异

首先,这两者使用的namespace是不同的,不要以为都是<Canvas />作为根元素那就是同一个类,其实从XML语义的角度来说不同namespace的同名节点代表着不同类别的实体。Silverlight的默认namespace是http://schemas.microsoft.com/client/2007,而WPF的默认namespace则是http://schemas.microsoft.com/winfx/2006/xaml/presentation。有趣的是,WPF是不兼容Silverlight文档的,也就是说一个具备Silverlight namespace的文档用WPF方式直接打开XAML的话就会立即抛出异常,然而反过来做则是可以的。如果在Silverlight调用的XAML中使用WPF或Silverlight以外的namespace,则会抛出异常,这说明了Silverlight不是没做namespace检查,而是刻意兼容WPF文档的。

其次,这种兼容并不意味着完全一致的呈现方式,其实两者对于同样的XAML在呈现上是会有略微差别的。我现在发现的一个细微差异是关于StrokeThickness的“溢出”效果的。首先说说Rectangle吧,假设一个长宽都是100的Rectangle,而它的StrokeThickness从0向50增长,那么你可以看到其边框的变化是从无到有,从最细到完全填充整个矩形,在这个过程中边框的延伸都是向矩形内部方向的,没有对外溢出。然而如果StrokeThickness超过50继续增长呢?这时候WPF与Silverlight的表现就有所不同了,WPF表现为与StrokeThickness等于50时一致,没有任何变化;Silverlight表现为矩形的长宽自动扩大为StrokeThickness的两倍,以确保相对的两条边框是不会互相重叠的,因此矩形不断向外“溢出”。注意“溢出”是以矩形的中点为变换(Transform)中点(Center Point)的,也就是说向上下左右四个方向等距离延伸。

我们再来看看Ellipse,同样先创建一个长轴和短轴都是100的Ellipse,然后开始增加StrokeThickness,直到超过50。Silverlight的表现和之前的Rectangle一样,那就是向外“溢出”,不过变换中点变成了左上角,扩展后的圆形向右下延伸了。WPF则更奇怪一些,同样的“溢出”问题,不过根据原来100*100的区域进行了类似Clip(剪裁)的效果。也就是说,如果StrokeThickness为200,那么这时候圆的直径为200,然而因为Ellipse的长宽都设置为100,因此就剪裁出左上角100*100的区域,你只能看到左上角的1/4圆。

看到Ellipse的效果后,我们可以反过来解释Rectangle的,其实WPF中的Rectangle不是不“溢出”,而是“溢出”后经过剪裁就和没有“溢出”一样。我们发现了的Silverlight与WPF差异,也就在于“溢出”后是否对区域进行剪裁。

这时候使用Expression Design做设计的朋友就要注意了,因为Expression Design导出的XAML无论选择WPF还是Silverlight,其namespace都是WPF的,虽然都能正常打开,但在Silverlight中看到的效果可能就与你想要的效果有所差别。

最后,有兴趣关注Silverlight的朋友,欢迎订阅我的blog:

2007年11月18日星期日

Google Maps for Mobile

今天在Read/WriteWeb看到5 Essential Mobile Web Apps,这是根据上次Tell Us Your Favorite Mobile Web App!评选出来的,里面有Google Maps for Mobile,而且从界面看起来像是很轻量级的Java版。刚开始仅仅知道这东西有BlackBerry版,后来在Palm上通过wifi用过Java版,而且好像还不支持代理必须二进制数据流直接连接,因此从来没有想过在手机上用。我的手机仅仅开了cmwap,只能经过HTTP网关(其实就是HTTP代理)访问Internet,不支持直接的二进制数据流。现在又看到它的名字了,自然要去下载一个到手机再试试,结果发现可以用了!

开头我去英文网站(.com)下载了个英文版,发现在中国没什么值得看的,因为仅仅提供公路图不提供鸟瞰图。后来想起中国的地理数据是不允许“出口”的,因此Google Maps本身就与中国版本的Google地图脱离开来了,随之去中文网站(.cn)下载了个中文版。中文版的功能当然和Google地图一样啦,另外Google地图做了的mashup(例如搜索结果中的餐厅能看到dianping.com上的信息)也在移动版上体现出来了,因此真的很好用。暂时而言,我觉得这东西用于出行时随身寻找餐厅还是很有意义的。

2007年11月15日星期四

现在的游戏体积越来越庞大了!

一个20G的分区,装两个游戏(连带资料片)就装不下第三个了,什么道理。游戏载体都从CD变成DVD,从D5变成D9了,动不动就占用硬盘6G到9G的空间。看来以后玩游戏,还是要有个相当大的游戏分区哦。

2007年11月12日星期一

我希望 IM 能够自动清理好友

我们都知道,有些关系是长期的,有些关系是短期的,然而IM上面添加了的人就是长期的,这是很不与时俱进的一件事情。

两个人之间的关系是随着时间发生变化的。有些人我开始并不太信任,我会希望放在一个次一级的区域,例如他看不到我是否上线,除非我主动联系他,他也不能看到我其他联系方式,然或随着合作的增加而把这个人放进普通朋友一栏。有些人则是因为一次两次的合作而添加了,之后再没什么来往,我对于他是否上线不感兴趣,这没必要每次都提醒我,我希望若干时间不联系后IM能够自动把他给“存档”了,仅在日后搜索结果中出现。

IM不好的地方,在于强迫你对所有好友一视同仁。而现实中当然不是这样的,你对某些人更关注一些,而对另外一些人不太关注,最后你还希望没有人知道上述区别,好像他们每一个都是你心目中的VIP。IM作为一种工具,应该帮助我们做到这一点,而不是让我们自己通过work around去解决这个问题,例如使用多个IM加不同类型的人之类的。

2007年11月9日星期五

ActionScript3 与 JavaScript 的对比在哪?

最近在看《Flash ActionScript 3 殿堂之路》,觉得作者还是非常专业和非常用心的。

说作者专业,因为这本书的作者不仅仅能够在书中指出没有程序设计经验(特别是没有OO经验)的新手应该注意的事项,还能指出一些ActionScript3与Java以及C#的区别,以便于Java或C#程序员更高效的利用这本书。因为对于从Java或C#迁移过来的程序员而言,他们有丰富的OO经验,需要学习的仅仅是语言之间的差异以及新的框架与库。

不过我想说的是,为什么没有ActionScript3与JavaScript的对比呢?它们都是ECMAScript,都为前端开发人员所用,一个是Flash/Flex方向,另外一个是Ajax方向。就我个人而言,我有相当的C#与JavaScript经验,然而ActionScript3与JavaScript更相似,我当然是希望拿JavaScript作对比的。ActionScript3与C#作对比只能停留在一个比较表面的层次,要说到关联数组、函数对象这些只有JavaScript才能作对比,C#根本没这些概念。

另外书中关于ActionScript3与Java以及C#的对比,也停留在很表面的编码方式的对比上。作者很强调这本书是“面向原因(why-oriented)”的,因此在ActionScript3的教学方面更倾向于揭示本质而非介绍编码方式。然而我并不确认这是因为作者对Java以及C#的认识仅仅在于编码方式的层面,还是他认为揭示Java以及C#本质与ActionScript3本质的差异就扯得太远了,反正这本书缺乏这方面的内容。

我举一个例子,书中讲到ActionScript3的基本数据类型是immutable的,因此虽然还是以引用方式存在,但是一旦要改变其值就不是在原对象上作改变,而是新建一个对象保存新的值然后把引用指到新的对象。书中的对比并没有提到C#中的string其实也是immutable的,事实上任何一个对.NET CLR本质有一定了解的人都知道string是通过immutable来模拟值类型特性的,这是和ActionScript3的做法比较类似的。更深入的知识,例如ActionScript3是否也像Java或C#那样子使用拘留池(intern)来为字符串对比提供便利,这书里面好像也没说到(全书我还没看完)。例如((new String("abc")) == (new String("abc")))的结果是true还是false呢?这就涉及到拘留池的问题了。

说作者用心,是因为这本“面向原因”的书确实为所谓的“语言迷”(就是很喜欢研究语言风格以及底层实现的人)提供了深入学习ActionScript3的途径,同时还顾及了其他各种读者群体,例如完全的编程新手,或者是从其它OOP语言迁移过来的程序员。

说实在的,我觉得这样一本书对于语言迷而言更有善一些,因为我一翻开书就能够确定“嗯,这个作者很pro,至少他是懂很多东西才来写书的,不像某些国产书那样作者完全是不懂装懂的”,然后我会确定我想要读这本书。对于新手而言,可能还是“案例导向(case-driven)”的方式更好一些。因为我自己也时常考虑写书的事情,想着如何将自己的经验浓缩为case study,然后发现这并不是一件简单的事情,因此挺佩服国外那些“案例导向”的书的作者的,特别是Manning的In Action系列的书。

事实上,虽然作者写了新手可以跳过某某章节,然而对于如饥似渴的读者而言,又怎么可能随便忽视掉书上的知识。不过确实有看不懂,那怎么办?那就比较容易让人有挫折感(frustrated),这就不太好了。“案例导向”的好处就是,即使读者基础不好,他跟着case一步一步做下去,或发现case的应用程序的功能逐步完善,这样就有成就感了。就算他连打字都会打错吧,但他总能够直接打开源代码查看两个version之间的差异吧,一看就发现果然如书上所说稍微用一点新技术新version上的功能确实就比旧version的要好了,这样他就信服了。

无论如何,这本书都算是一本高质量的国产书,也算是国内第一本深入讲解ActionScript3的书籍,因此我很乐意在豆瓣上给它五星。如果将来翻译为英文版发布,我也会去Amazon写review给它个五星,哈哈。

P.S.大家还可以参考一下aw对此书的书评

Recruiting Events: Baidu (Part 4)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

布丁告诉我,Baidu是没有专门的HR面的,不过三面看起来有点像是HR面。面试的mm问了我很多很细节性的问题,例如有没有给人提过建议、最近团队合作解决的一个问题、难相处的人等等。这些问题都不与特定的技术相关,虽然有些问题回答时可能要撤上技术解释,而且看起来是以早准备好问题列表的,因此说像是HR面。

我的自然感觉还好吧,那么多个问题下来几乎说了一个钟,比Tencent的那个HR面长多了。我觉得这次的问题都比较好答,没有什么是不希望告诉她的,因此也就不存在说多了的情况吧。至于什么时候有结果,布丁说他也不知道,不过他说Baidu一般就是两次或三次面试。

2007年11月7日星期三

Facebook 与 hang out

之前曾经在一个用英文编写的中国web2.0观察blog上看到一个观点,解释为什么国内没有出现Facebook现象,也就是一个大的social network聚拢了绝大多数用户。它的解释是,Facebook提供的服务其实在线hang out,它真正入侵了的市场是传统的hang out场所(例如pub),总而言之,这算是一种娱乐服务。基于美国的Internet一直围绕着信息与商务发展这一特性,Myspace和Facebook跳出来提供娱乐服务自然能够抢占到相当的市场份额。然而中国的Internet一直在信息与商务服务方面发展得不怎么样,反而娱乐服务是过度供应了,因此无论你推出怎样一种全新体验的娱乐服务,都不可能在娱乐服务的整体市场中抢去大份额。

实际上说到hang out,就必须提及我之前听说过的一个理论,也就是大学生为什么那么喜欢玩Counter Strike,原因当然是这也算一种hang out的方式。不过这是几年前的理论了,现在玩CS的人应该没那么多了。校内网成为一个hang out新去处,却做不到Facebook现象,不过应该比之前的CS要好——毕竟大多数女生愿意上校内网但不会玩CS。

那么为什么比Facebook更具备social功能的LinkedIn以及比CS更具备联机游戏能力的Battle.NET不能成为大众hang out的选择呢?因为这两者的目的性都太强了,而hang out就是一群朋友聚在一起,享受那种什么也不做的感觉。如果目的性很强地去做一件事,那就变成teamwork了。为此可以再举一个例子,就是麻将和桥牌,一种可以作为hang out活动而另一种不可以。也曾经有人对麻将有种解释,说中国人之所以喜欢玩,是因为容易上手,再没有经验的玩家也可能碰到牛屎运,再配合我之前所说的“赢就是最大的兴趣”的理论,麻将当然受欢迎。桥牌则正好相反,必须专业学习,你的赢面才大,自然玩的人就少。

最后,我们需要观望的就是下一轮的hang out服务将会是什么样的。可能不再依赖于social network了,但总之那必然是一样很休闲的活动,谁都能体会到其中乐趣的。

2007年11月5日星期一

Recruiting Events: Baidu (Part 1, 2, and 3)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

今晚参加了Baidu的宣讲会,不过没有参加笔试,这篇文章算是一次性总结一下之间应聘Baidu的经验。首先当然要感谢布丁的内部推荐,让我在广州宣讲兼笔试前一个月就开始了Web开发软件工程师职位的电话面试。

第一次面试比较轻松,虽然也提到一些技术,不过就我个人感觉而言,还是吹水成分比较大。我觉得说说自己的项目这样的话题,都算是吹水吧,反正我是确实有经验和体会的东西。然后很少一点点JavaScript与CSS相关的细节,仅此而已。当然说完后,他说这算是了解一下情况,之后会再有面试,让我觉得这好像就是第零次面试。不过讨论的氛围确实也很轻松,就真的是了解情况那样,我也问了一下有没有可能去北京面试,他说需要在部门内问一下是否能如此安排。

第二次面试是在上个星期,还是电话面试,这次还是从做过的项目开始讨论,不过深入了不少,另外也问了我两道往年的笔试题。其中有一些地方答不上来吧,例如说到JavaScript中如何统计一个字符串中的字符频率,我想到得最好的办法就是把它打散为数组,然后排序,然后看每个字符连续的个数,那就是频率了。另外一个想法是,读取字符串的首个字符,用replace把这个字符串中的这个字符全删掉,看看字符串缩短了多少,这也就是频率了,重复此操作直到字符串清空。我觉得理论上时间复杂度最低的算法,也必须把每一个字符都扫过一次,也就是说字符串长度为n,那么时间复杂度最少就是O(n)了,至于JavaScript中怎么写,就看你把这个复杂度自己做了,还是让JavaScript内部操作了,例如排序就是让JavaScript自己按快速排序算法来承担了一个时间复杂度。

另外一个想不出答案的问题就是,CSS的两列布局,其中一列定宽另外一列不定宽。我记得我在网上看过解决方案,然而当然没仔细看,估计是收藏了就算那种,哎……我不知道电话面试中直接搜索是否是一个可行的策略,反正我选择了不搜索,思考不出来也就老实告诉他。之后,我在A List Apart找到了一个篇相关的文章:In Search of the Holy Grail。总的来说,我觉得第二次面试还算不错吧,当然这完全是个人感觉。

最后当然是今天参加的宣讲,其实仅仅去了解一下Baidu而已,例如得知了工程师的起薪是16万一年,这看起来比Microsoft的15万起薪要高一点点哦。不过后来有人解释给我听,16万是指上限,从来没听说过应届毕业生进去能够从16万开始拿的,反过来Microsoft那个15万是下限。

更新:布丁告诉我,那个16万是下限来的,并且不是狭义上仅仅软件工程师这一类别,而是广义上的工程师职位(例如包括我申请的Web开发工程师)。

Recruiting Events: Tencent (Part 4)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

得知自己进了Tencent的三面,下午Microsoft笔试出来后急急忙忙就跑过去了。去到呢,发现原来没多少人在等,然后大家接着都到了,等候区的HR都先用同一个问题问候大家“刚刚有趣Microsoft或者中国移动的笔试吗”,结果大家都说是,汗……

不知道是不是我走路速度快,我前面竟然只有一个人正在面试,所以很快就到我了,而等我出来的时候等候区已经挤了一堆人。HR面其实很快的,基本上就三大问题:自我介绍、其它公司应聘情况与期望年薪。当然,第一个问题会深入一些,例如问问你觉得大学期间最成功的事情啊,或者你说说自己的优点缺点并附例子啊,之类的。问技术我可以吹水,但是这些我完全不知道对方是如何根据我的回答进行评估的,没有任何tricks可言,所以我暂时也不知道怎么评价自己的这次面试好。

暂时而言,我不确定自己是否说太多了,因为在别人面前我不擅长一言不发并且摆出让人难以捉摸的样子,就算我不说话,我的姿态也会有所表现,所以还是难以控制我向对方透露的信息,还不如保持说话好了。但是保持说话又可能说多,我这次就让她知道了我投了Google、参加了Microsoft并且准备看看Baidu,还说了更期望在广州工作,貌似还是泄露了挺多东西哦。

2007年11月4日星期日

Recruiting Events: Microsoft (Part 1)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

下午参加了Microsoft的笔试,因为受到NDA保护,细节就只能掠过咯。其实昨天在Tencent面试等候区域,就碰到了一位参加了上一批次参加过Microsoft笔试的人,他说笔试分为四大部分:公共、编程、测试、策划。今天去到发现确实也就是这样,公共部分的选择题就是考基础的,C/C++/C#题目混杂在一起;编程、测试、策划分别考SDE、SDET、PM这三个方向,但无论报什么职位都要全做。

这四个部分的时间安排分别是50分钟、40分钟、30分钟、30分钟。地一部分我刚刚好50分钟做完。第二部分我做超了10多分钟,因为代码要用C++写,哎……不熟悉啊,允许C#的话就好了。第三部分狂赶了一下,然而第四部分也没足够的时间,只能随便答了一些。

总之,感觉自己对C/C++的熟练程度影响了答题速度,这是最劣势的一方面。另一方面,use your time wisely也做得不够好,前面选择题我懂得解不出(或者觉得没有一个答案正确的)就跳过,因为选错了还要倒扣分,浪费时间也和倒扣份差不多,但到了后面我就没有严格的时间控制了,但只编程部分浪费了大量的额外时间。

拼写检查(spell check)依赖症

我发现我已经有拼写检查依赖症了。以前还只有Microsoft Word这个级别的软件有拼写检查,输入几句话才不会去开个这样耗费内存的软件来检查有没有拼写错误呢。后来有些轻量级的软件或则web应用也引入拼写检查了,再之后浏览器都能通过插件实现全面的拼写检查了,这下就完蛋了——我已经记不住单词的正确拼写方法了,反正差不多就随便写,然后软件会帮我纠正。看来以后还是要多查字典,多脱离软件的帮助进行写作,否则就只能期望什么时候TOEFL考试软件也能加上此功能了。

2007年11月3日星期六

Recruiting Events: Tencent (Part 3)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

今天早上考完TOEFL,就被告知Tencent二面有我份,于是下午就又跑去了面试。被HR引导到休息区之后,发现我要见的面试官已经有两位同学在等了,等了很久里面那位才出来,之后就是漫长的等待……这位面试关平均40分钟面一个人吧。期间HR和我们吹吹水,有问到大家还去了哪些公司面试之类的,发现在等待的人当中也有不少是中大的。

轮到我面试的时候,发现这次终于不是吹水了(一面我觉得很吹水,但其他人都说很技术)。例如说了说HTTP协议的细节,面试官说很多用ASP.NET的人都不了解HTTP协议,我想这是肯定的吧,反正问HTTP协议对我来说是简单的事情。(只要不是好像上次那样给Mango突然问我一句“你知道什么是Partial Response吗”就好,其实我是知道Content-Range这一请求首部的,但不知道对应的响应代号应该是206而不是200。)然后讲到ASP.NET只会用于Tencent的内部应用,不会用于互联网应用,又问问我仅仅研究web是否太窄了,我就把Bean对iPhone式移动web应用的热情搬出来和他吹。

最后他考了我一道数据结构的问题,说明是很基础的,并且他对ACM不感冒。所谓基础,就是指hash,哈哈。hash的执行方式我当然答得上来,然后问我hash除了存储以外的作用,开头我想不到,提示密码学后想了一会儿终于明白他指的是md5这样的东西,然后又是吹水。接着他还问了有什么是二分搜索适合做的,而hash不适合做的,其实二分搜索的特征就是顺序存储,经过一些提示后我终于想到是例如要选择top 10元素就必须用顺序存储,但他说还要再简单一些。其实最终的答案是大小关系,我想他的意思是顺序存储要对比a[i]与a[j]的大小,直接对比i和j就是了。然而我当时脑袋里想的什么呢?我想,Object是一切对象最抽象的根元素,顺序存储就是说元素之间存在偏序关系……汗……其实大小关系就是一种特殊的偏序关系嘛,然而我的思维偏向于抽象的方面了,例如Object和偏续,实际上他想到的是实实在在的数据结构——就是说存储的就是纯数值。看来我是想复杂了,以后一定要弄明白当前对方的视觉,否则思想一致但视觉不同也会答不上来。

2007年11月2日星期五

Google 发布 OpenSocial API

期待已久的Google的“比Facebook开放得更彻底”的API终于发布了,名为OpenSocial,并且作为一个API项目在Google Code上发布文档。

Open Social API包括3大主要部分,分别用于操作个人数据、操作活动数据以及数据持久。暂时而言,这些API都标记为并未发布将来可能仍会修改,不过新闻稿几个小时之前已经发布了,而API文档刚刚也上线了。这些API都基于Google Data(GData)协议,使用Atom协议以及Atom发布协议进行数据的查询以及更新,因此只要使用统一的GData操作库或者Atom操作库,应该就能轻松地从第三方网站或者客户端访问Google的数据。另外与此相关的另一个重要的基础API就是Google Auth,它的用途是验证Google账号的登录。

这次Google和那么多大型的social network合作来做一个API,其口号也就是“一次学习到处编写”(怎么那么像“一次编写到处运行”呢),也就是说开发人员已经无需学习不同social network的API了,使用Google的OpenSocial就能够操作各个social network合作方的平台。现在,支持OpenSocial的合作伙伴包括如下的16个:Engage.com、Friendster、hi5、Hyves、imeem、LinkedIn、MySpace、Ning、Oracle、orkut、Plaxo、Salesforce.com、Six Apart、Tianji、Viadeo、XING。根据我个人的猜想,这些厂商应该是在不同的侧面以及不同的层次提供OpenSocial的支持吧。

2007年11月1日星期四

Recruiting Events: Tencent (Part 2)

所有Recruiting Events系列文章由Cat Chen记录并发表于http://Chinese.CatChen.biz,目的不是公布招聘有关的题目或技巧,仅用于个人知识归纳以及经验总结,如需转载请保留出处。

今天下午去参加了Tencent的一面。原本安排了我上午去的,然而昨晚Tencent在bbs发了几轮不同职位的面试名单后都没有我份,我就认定没有了,原来技术职位的面试名单后来才出。结果今天早上去上课,人人都问我“你不是去Tencent面试的吗”,我faint……

去到酒店跟HR说明了,然后就照样填表,等面试官把这一时段内的面试完了就轮到我了。因为我冲忙赶去,没有打印他们指定的51job.com简历,直接拿了我的简历去参加面试了(其实这应该比51job.com的更清晰)。所谓的技术面,其实就是考综合素质吧,反正我不觉得考了什么技术。面试官拿着我的简历,问了我上面一些东西,例如MVP是什么啊,Imagine Cup是什么啊。然后他看到我熟悉Web开发,又随便问了一些相关问题,顺便考了一下IQ之类的。

我出来的时候,还是不明白到底我面试了什么职位,这是最faint的。到底他们招服务器端的人,是指Web服务器还是指IM服务器?另外我还看到有前端职位面试者的,那个是Web前端还是客户端软件的前端?反正我觉得我和面试官是对不上的,他说会推荐我去Web相关部门,那么难道Web相关部门没有出来做招聘?还真不知道呢……