2008年6月27日星期五

蔡学镛:2008编程语言走势解盘

农历新年前,许多大师或老师会对名人、股市、甚至国家的运势做出各种分析,这倒是让我灵光乍现,想利用这段时间概略地分析今年编程语言的可能发展。

Java类语言:Java似乎会逐渐走下坡。J2ME会受到Google Android、Adobe Flash Lite、.NET Compact Framework的影响;J2SE的对手则是.NET和AIR;J2EE在中小型网站受到PHP、Ruby-on-Rails(RoR)很大的冲击。幸好,目前大型企业好像还是买J2EE的帐。

在J2ME和J2SE方面,未来似乎可以用JavaFX奋力一搏;在J2EE方面,也有Groovy/Grails可以抵挡RoR。尤其目前大家怀疑PHP和RoR只适合用在中小型网站,大型企业网站似乎还是用J2EE比较安心,Groovy/Grails可以保障大家在J2EE上既有的投资。如果你是Java爱好者,最近有点想改用RoR,那么你可以去看看Grails,或许你会因此想继续留在Java阵营。

PHP语言:因为PHP对初学者相当友善,所以过去这几年使用者数量增加快速,但是似乎已经到达瓶颈,这可能是RoR造成的。随着RoR推出新版,PHP会受到更大的挑战。连开发工具厂商CodeGear都在2007年推出Ruby和PHP的开发工具,显见这两个语言似乎都会逐渐走入企业市场。

Python语言:Python早就移植到.NET和Java,2008年会持续推出修订版本,而且也会推出全新的Python 3000。Python 3000不以相容于2.x版为目的,而是要运用过去培养出来的经验,彻底翻新Python。目前Python编程员的需求也已经超越Perl。

Perl语言:目标远大是一件好事,但目标远大却没有足够的资源可以完成目标,就会陷入绝境。Perl 6就是这样的例子,它比.NET更早提出,但这几年下来,.NET已经从1.0进入到3.5,Perl 6却连1.0都还没诞生。Perl擅长文字数据处理,但是在大部分语言都支持Regular Expression,加上文字数据大量XML化之后,Perl的优势已经消失大半。

Ruby语言:Ruby可能会在2008年推出2.0,加上2007年底已经推出的RoR 2.0, Ruby整个就是一股挡不住的气势。可能在2008年底之前,Ruby在TIOBE的排行榜上就会超越Perl,只剩下Python和PHP这两个对手了。

JavaScript语言:Web应用蔚为主流,而JavaScript又是浏览器的标准语言,所以这几年来相当受到重视。在Adobe推出AIR,Mozilla推出Prism之后,JavaScript可以开发出「某些种类」的桌面应用,JavaScript的用途变得更广。而JavaScript的兄弟ActionScript,随着AIR的推出又会更受欢迎一些,但是Silverlight的推出,又会抵销ActionScript成长力道。

C语言:系统语言方面,C语言的地位还是一样重要,C++则会慢慢走下坡;D语言崛起,将会接收相当多原来C++的使用者,而Delphi则是一蹶不振,当年Delphi/Kylix跨Windows/Linux的美梦已然消失。

D语言:多年来,D语言平均一个月推出两个版本,改版速度相当快,在2007年1月推出1.0版后,不出几个月,又推出2.0版。1.0版持续做bug修订,尽量不加新特色,2.0版则继续进行实验性的翻修。虽然D语言1.0才正式推出1年,但已经成为相当受欢迎的系统语言,可惜至今仍然没有很好用的IDE。

Lua、PowerShell、Erlang语言:可说是未来几年窜升力道最强的潜力之星,但都还不至于成为主流语言。Lua是相当小的语言,适合嵌入其他的环境中,和其他语言一同使用,根据TIOBE开发语言排行榜数据显示,这几年Lua越来越受到重视,尤其2007年Lua更是往上猛窜二十几个名次,由此可见Lua的需求大增。随着Windows Vista系统的出货,未来几年PowerShell会成为相当重要的系统管理语言。目前的多核心环境、网络分布式计算、容错的需求,则让Erlang持续受到重视。

Roughly Drafted Magazine的报导指出,在2007年第三季,Apple iPhone在美国的Smartphone市场占有率已经到达27%,超过Windows Mobile。继美洲和欧洲之后,2008年iPhone会在亚洲开始贩卖,并推出第二代机种,也预计在2008年推出SDK(软件开发工具包),让我们可以为iPhone写原生(Native)程序。

所以,如果你需要为Smartphone开发应用,除了考虑Windows Mobile之外,你也必须思考是否要用Objective-C语言开发的MacOS应用了(iPhone使用精简版的MacOS X)。

转换语言的成本通常很高,所以一年之内,各个语言通常不会有太大的兴衰变化,这篇文章其实是描述以2008为中心,前后数年期间各类编程语言的整体状况;把时间拉长,发展态势会比较明显,不受到短期震荡的影响,预测未来就不至于太过离谱,让大家当作未来选择语言的参考。

作者简介:
蔡学镛-技术顾问
清华大学资讯工程硕士,曾任华硕集团软件工程师、元智大学信息系讲师、美商欧莱礼出版社技术编辑、台湾微软特约专栏作家

2008年6月26日星期四

Creating Dynamic Subdomains in Windows/IIS using ISAPI_Rewrite

Subject: Creating Dynamic Subdomains in Windows/IIS using ISAPI_Rewrite
From: Reasonable Alan



* Introduction
* Requirements
* Solution 1: Create Multiple IIS Web Sites
* Solution 2: Using ISAPI_Rewrite
* Comparisons
* Conclusion

Introduction

Do you have a web site that is hosted on a Windows Server that has been growing and now it makes more sense to redefine the architecture and separate that web site into subdomains? In this article, we will be discussing two methods of setting this up. And later in the article, we'll provide you with a comparison analysis and our conclusions.

Back to Previous
Requirements

1. Ability to update DNS records
2. IIS web server admin access
3. ISAPI_Rewrite component (for Solution 2)

Back to Previous
Solution 1: Create Multiple IIS Web Sites
Setup DNS Server

You have two options. Since you probably have a limited number of subdomains to manage, you can either list them out individually or just use a wildcard.

Wildcard method: Add the following entry into your DNS server and change the domain and IP address accordingly.

*.example.com IN A 1.2.3.4

Declare manually: Add an entry for each of the subdomains.

sub1.example.com IN A 1.2.3.4
sub2.example.com IN A 1.2.3.4
sub3.example.com IN A 1.2.3.4
Setup the Web Server

First make sure you have created a root directory for each of the subdomains, as if you are working with a new web site. Your directory might look like the following:

d:\inetpub\wwwroot\example.com\sub1\
d:\inetpub\wwwroot\example.com\sub2\
d:\inetpub\wwwroot\example.com\sub3\
d:\inetpub\wwwroot\example.com\js\
d:\inetpub\wwwroot\example.com\css\
d:\inetpub\wwwroot\example.com\img\

Next, we create a web site for each of the subdomains. Let's create the first one and you can repeat this for all others.

* Open IIS Management Console.
* Click on the Web Sites folder and select New : Web Site.
* Click on Next to continue.
* Enter the description for your site then click Next. An example would be: sub1.example.com.
* On the IP Address and Port Setting, enter sub1.example.com into the Host header for this Web site field.
* On the next page, enter the path d:\inetpub\wwwroot\example.com\sub1\.
* On the next page, select your options click Next and you're done.

Now here's the fun part. Since you have created a new site for each subdomain, but there are files that are shared across them, such as javascript, style sheets, and images. What you could do is to create a virtual directory to link them to each of the web sites. Here's how you do it.

* Right click on the subdomain you have just created in IIS Management Console and select New : Virtual Directory.
* As an example we'll share the style sheet folder (css). Click on Next and enter css in the Alias field.
* Enter the path d:\inetpub\wwwroot\example.com\css\ into the Path field and click on Next.
* Specify the permission on the next page and you're done.

Solution 1: Summary

What we have accomplished here is we have separated your web site into multiple subdomains, while still keeping only one copy of the shared files across them.

Back to Previous
Solution 2: Using ISAPI_Rewrite
Whoa! That's a lot of steps to create all the subdomains I want. Is there an easier way? Well there is an alternative way. Let's get started first then we'll run the comparisons.
Setup DNS Server

Add the following entry into your DNS server and change the domain and IP address accordingly.

*.example.com IN A 1.2.3.4
Setup the Web Server

We are assuming that you already have a web site created for your main site: www.example.com. So let's just double check to make sure it will be able to accept all variations of the subdomains.

* Open IIS Management Console and select your web site.
* Right click on it and select Properties.
* Click on Web Site tab.
* Click on Advanced button.
* Make sure there is one entry under the Multiple identities for this Web Site with Host Header Name field blank. This entry will intercept all requests that comes to this IP address.
* Make sure the IP address is only used by this web site.

Setup httpd.ini for ISAPI_Rewrite

Add the following code to your httpd.ini in the web root. Make sure they are in the correct order.

# Convert http://example.com to http://www.example.com/
RewriteCond Host: ^example.com
RewriteRule (.*) http\://www\.example.com$1 [I,RP]

# Assuming we have limited number of shared folders.
# We will execute them accordingly regardless of the subdomain.
# Example: http://sub1.example.com/img/logo.jpg -> /img/logo.jpg
# Example: http://www.example.com/img/logo.jpg -> /img/logo.jpg
RewriteRule (/css/.*) $1 [I,O,L]
RewriteRule (/js/.*) $1 [I,O,L]
RewriteRule (/img/.*) $1 [I,O,L]

#Redirect all other subdirectories not matching
#to the list above as subdomains
#example: www.example.com\sub1 -> sub1.example.com
RewriteCond Host: www\.highspeed\.com
RewriteRule /(\w*)/(.*) http\://$1\.example\.com$2 [I,RP]

# If the web site starts with www then point the file to the root folder
# If you specifically created a folder /www/ then you can comment out this section.
RewriteCond Host: (?:www\.)example.com
RewriteRule (.*) $1 [I,O,L]

# Any web site starts other than www will be re-mapped to //
# Example: http://sub1.example.com/default.asp -> /sub1/default.asp
# Note: if the folder does not exists, then the user will get a 404 error automatically.
RewriteCond Host: (.*)\.example.com
RewriteRule (.*) /$1$2 [I,O,L]

#Fix missing slash char on folders
#This has to be at the end because if invalid dir exists,
#we should show 404 first
RewriteCond Host: (.*)
RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,RP]
Test the Subdomains

Assuming we have the company website and two subdomains created: sub1, sub2.
URI Location on Server
http://www.example.com /
http://sub1.example.com/img/logo.jpg /img/logo.jpg
http://sub2.example.com /sub2/
http://abc.example.com /abc/ -> 404 Not Found
Solution 2: Summary

The second solution is easier to implement and only requires one instance of the website, the user has to be careful about creating the folders. For example, the user can not create a folder d:\inetpub\wwwroot\example.com\sub1\img\ because it would conflict with the ISAPI_Rewrite Rule of (/img/.*). Therefore the files in that folder will not be accessible.

Back to Previous
Comparisons
Multiple IIS Webs - Pros

* No conflicts to worry about between folders.
* Separate log files to track them individually.
* Can be setup for server farms and load balancing easily.

Multiple IIS Webs - Cons

* Need to create new site per subdomain.
* Requires access to IIS server.

ISAPI_Rewrite - Pros

* Easy to setup.
* One server instance and log file.
* To add a subdomain, just add a new folder.

ISAPI_Rewrite - Cons

* Need to keep track of directories to avoid conflicts.
* Need dedicated IP address.
* Additional resource for processing each file.
* Need to find server that supports ISAPI_Rewrite.

Back to Previous
Conclusion

While ISAPI_Rewrite solution is much easier to implement, it is recommended for smaller sites with one development team. This is because of added resource and exceptions that the team has to keep track of. For a larger site, even though the admin has to setup multiple instances of the servers, these only need to be done once. Plus, the subdomains are probably developed by different teams and are distinct enough to warrant their own web instance.

So which one should you choose? Give the ISAPI_Rewrite a try first. When you think your sites are big enough you can always switch to the other method anytime.

Back to Previous

Happy coding!

Quoted from http://www.seoconsultants.com/windows/isapi/subdomains/

2008年6月23日星期一

Agile Application Management and Development Platform




OutSystems technology combines the productivity offered by visual modeling tools with the level of extensibility found in integration suites and custom development frameworks. The OutSystems Platform gives you everything you need to rapidly create and deploy enterprise applications and then change those applications at any stage of their life cycle. At the core of our value proposition you will find a highly intuitive visual environment and a breakthrough deployment technology that is helping businesses deliver business applications and services in weeks, instead of months or years.

Visual development that works
OutSystems Service Studio, a visual IDE, makes it easy to create web pages, business logic and data entities with just a few clicks.

Hassle free deployment
Getting your applications live is one click away. No deployment procedures required!

Build on your skills
You can use C#, SQL and JavaScript to create components that will be available as visual building blocks.
Centralized Management
You can manage several applications, services and integration components from a single web-based console.

Others like you
The OutSystems Community is open and growing. Meet other users and access our forums, online help, samples, and tutorials.


Read the OutSystems Platform Overview (pdf)


Free! What's the catch?

OutSystems Express Edition is free for commercial and personal use up to 5 applications users. Also, your database must be on the same server as your applications and you must have a single application server (no clustering).

OutSystems Express Edition is best suited for individual use, small IT departments or departmental IT teams. If you want to know more about other editions of the OutSystems Platform, please see the OutSystems Platform Editions feature list.

C++各大有名库的介绍

KlayGE国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎,并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。   在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。

C++各大有名库的介绍——游戏开发

1、Audio/Video 3D C++ Programming Library

参考网站:http://www.galacticasoftware.com/products/av/

  AV3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及S3M),控制接口(键盘,鼠标和遥感),XMS。

2、KlayGE

参考网站:http://home.g365.net/enginedev/

  国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎,并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。

3、OGRE

参考网站:http://www.ogre3d.org

  OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

亿起发 —— 一起发

一个广告affiliate网站
http://eqifa.com/

其他类似的包括: alimama.com和baidu.com的主题推广等。
国内叫做广告联盟。

mixi.jp的一个评论

说起 mixi.jp,日本本地的用户应该很少有不知道的。上两周虹还在京都的时候,老冒提出来要虹和 mixi.jp 的人接触一下,或者看看 mixi.jp 有什么特别的,为什么会成功。毕竟同在亚洲地区,可能比 MySpace 等欧美的 SNS 要更具参考性。所以虹找了朋友一起试玩了一下,并且找到了 mixi 的职员和用户聊了一下

创办者笠原健治原先一开始(99 年)做的是一个求职网站(転職・アルバイト・派遣の求人情報 Find Job !),不过当时的环境和政府政策使得类似站点发展趋势并不太好,笠原转而把目光从"工作"转向了"休闲",2004 年 3 月份 mixi 上线了(当时国内已经开始冒出 BSP、比较优秀的 blogger 以及 Web 2.0 的讨论了)。
mixi 可不是"吃饭",创办时的理念实际上是 mix + i,用户界面与功能相当直观简单,可以收发电子邮件(台湾的 xuite 也是同样的提供个人邮箱)、写日记(blogging)、发表书评(豆瓣?)、推荐 CD 或 DVD (像是集成了 Amazon)等,也可以为其他会员的日记写评语,免费会员有 100MB 在线存储空间,并且可以简单使用 mixi 来搭建一个属于自己的 bbs (国内可能就是类似于豆瓣那样的群组)。

和国内这些年从聊天室、BBS 到 QQ 群、在线讨论组的演变不同,日本很少有长时间挂在线上无聊的在 QQ 群里打屁、蹲点,或者不停的刷新 BBS 版面,mixi 的出现,让他们有了跨越地域的方便沟通的机会。涉及的话题从政治、经济到动漫、音乐,甚至仅仅是私人聚会,和国内互联网中单调的话题类别相比,显得极为丰富和不同。这可能跟日本人从小的社团活动培养"兴趣"的社会背景有关,而且从 mixi 的用户群来看,各个年龄层次和文化水平层次都有,其中还包括国内少见的 50 岁以上的年龄群体,以及从政之类的严肃工作环境的人士。

从网站服务的元素构成来看,和欧美同类服务相比显得相当简单,甚至是朴素。不过其中也包含了一些特色功能,大部分日本的 BSP 都会提供的一个服务,中文翻译过来叫做"脚印",mixi 也用到了。说白了,就是有其他 mixi 用户走过路过某用户的日记或页面,就会被完整记录,每天有类似于统计报告的邮件发送到该用户的邮箱里(知道谁来串过门了,被谁关注了)。这一点虽然只是小处的问题,不过却可以着实方便的更多结识相同兴趣者(潜水员登记?)。国内好像就见到 sohu 的 BSP 有类似的功能。

mixi 的用户们比较乐于把网络中的讨论和实际生活中的聚会、活动结合起来,当然由于其讨论组话题的种类繁多,引申到生活中的活动也相应的变得极为丰富。邀请是不限量了,但是 mixi 的邀请机制充分发挥了其作用,参与相关话题的讨论,或者生活中的朋友、同学、同事、邻居,地理环境或者交际关系上的不同性质可以立体交错的形成不同的圈子,网络和生活两面的结合,形成了 mixi 的一种流行趋势。

从网站经营的角度来看,mixi 并没有多做宣传和推广,大部分依赖用户们的口口相传,网站里的直投广告也不多,主要收益来自于书籍或光碟等媒体商和其他内容中涉及的产品厂商,每天的相关链接产生的固定赞助或者点击(次数计费)费用。网站结构上的简单,使得运营成本和维护上也相对简单和低廉。

在日本的互联网用户当中,不知道 mixi 或者没有 mixi 账户的人会被讥笑,目前 mixi 已经成为了日本的一种时尚文化,其中也会产生一些令人啼笑皆非的麻烦,比如 mixi 依赖症。mixi 成为日常生活中的一部分,过渡沉迷于 mixi 的社群活动,也很在意自己在其中的表现,无论是 post 的照片还是日记。会担心写得好不好,有没有人看,访问人数下滑了之类的。这也从另一方面反映了 mixi 在日本当地用户中的地位。

此外,mixi 周边的开发不算多,使用和衍生应用都无需什么互联网技术一类的,非常生活化。目前已知的仅有一个比较完全的相册功能,短地址功能(类似于 tinyurl),以及一个热心网友开发的 mixi 专用浏览器。这个月 mixi 就要在日本上市了,TSE 方面提供的资料表示每股将在 140 万日元左右,发行量在 7.5 万股左右。对于一个创业仅两年多,没有靠任何投资资本的社会化网络,从任何一个角度来说,都是非常成功的。

在此有点思路,想提几个问题,一起思考一下:

1. Web 2.0 只是技术和理念上的突破么?一个技术含量高,功能繁多的网站是不是就是有价值的网站?

mixi 的平台并没有什么复杂的技术,功能简单、易用、实用为主(日记、邮箱、群组、相册)。不排除一些第三方的服务加入集成,基本功能却很全,很稳定。

2. 国内门户带来的权威化"报纸阅读式"的根深蒂固的影响,用户自主化的内容到底能占目前国内互联网信息的多少比重?字称 Web 2.0 的网站有多少做到了真正的"去中心化"?

mixi 首页没有任何内容信息,所有内容承载都来自于用户的日记、讨论组,不搞评比、不搞推荐,完全让用户自主发展,完全让用户自己选择内容渠道,谁都可以是某方面的权威,谁也都可以是读者,完全体现"去中心化"。虽然很丰富的内容,却也不会迷路,良好的搜索功能以及分类话题的索引都很方便的可以查找用户自己所需的内容。网站里的功能是死的,如何应用是用户的自由,不是么?

3. 网站组织活动,有多少是用户感兴趣的?有多少是真正能对用户产生驱动力的?

忽然想起网易 163 邮箱用什么积分换免费的易趣抵价券,结果发现用好几百分才能换个十元、几十元抵价,想想这些积分要花上一年多时间,还算了。其他的比较流行的抽奖和 T-Shirt 设计购买活动,不是抽奖假得很,就是 T-Shirt 根本卖不出去。问题在于此,难道真的不能把这些钱花在实际的用途上么?最早的时候,mixi 曾免费推过一批 amazon 的礼物券,那是和 amazon 的第一次合作,个体用户获取额度都不小,当时的投放量也实在不少,而且类似实际的活动两年之中并不少。相比之下,国内小家子气的大网站们一年时间里都拿几十块钱遛猴呢?还是给自己旗下的网站做广告呢?真是够"维护中心"的。

4. 社会化网络是社会化的网络还是社会的网络化延伸?

没有生活中鲜活角色的支持,网络只是网络。虽然日本并没有要求什么实名制,但是在 mixi 大部分用户当中,在与其他会员接触中(网络和生活两方面),早已经体现了一个鲜活的社会角色,而不是一个空泛的 ID。

5. 除了感情、美女、爱国、恶搞以及 IT,中国年轻的一代上网族就没有别的话题了?

不知道是不是国内的教育环境问题,经常上网的一群年轻人以及不太上网的一群中老年人,从网络里获取和交流的信息实在很狭隘,并且经常对于网络和生活抱着两种态度、拥有两种人格。这一点在 mixi 那边截然不同,上面也说过,日本人从小就很注重(也热衷)学校的社团活动(相当于国内的兴趣小组),而且课时数量比远高于国内一周往往只有一两课时的现象。于此,在繁忙工作之余,还能保留一项或几项兴趣,以网络的简单形式进行展现和交流,然后在休息日可以集合这些经常一起讨论的网友们(实际也是朋友了)参与某些相关活动(哪怕是喝个茶,面对面聊聊)。

甚至,一些本来并不了解这些东西的人也出于某些原因(吸引眼球,想闹出名,或者为了创造网络人格)去谈一些看起来在国内很热门的话题,势必让整体的内容素质下降,并衍生出来抄袭的问题。试想一下,诺大的互联网,哪一个话题,哪一种兴趣不能展开讨论?光体育中热门的话题就有足球、篮球、桌球、网球、极限运动(滑板、旱冰、自行车)等等日常生活经常参与和观看的运动可以讨论。

6. 社会化网络到底可以做什么?

有一个一样做投资的德国朋友说,国内的社会化综合网络就像 BSP,或是仅仅是旧式的虚拟社区,一群人还在刀耕火种,嘴里却嚼着 Web 2.0 的科幻术语。说实话,在目前情况下,虹也不是很了解。

或许 mixi 可以有国内同类网站借鉴的东西,个人理解,问题不在于网站的技术层面,无论是用户还是网站创办人,社会化网络还是需要社会基础。有的时候,面对中国互联网这么大一个市场,对于创业者来说,也真是一件麻烦事情,竞争者多,用户分布广,媒体观点杂,实在应该对他们的尴尬处境表示崇高的敬意。

最后附上一些 mixi 用户对于 mixi 看法(时间关系,不是太多):

藤田,男,17 岁,中学学生:同学们都在 mixi 上玩,我不去就太土了。

北谷,男,28 岁,律师:大家平时工作很忙,没什么时间出去认识新朋友,mixi 花少量时间就可以认识不少朋友,随便聊聊解闷,休假日的时候还可以一起出去玩,很方便。

村上,女,35 岁,家庭主妇:平时在家也没事,在 mixi 上可以随便写写心情,也可以看到不少有趣的东西,而且不少折价消息以及时尚新闻都比别的地方要多,这些都该是女人关心的吧?

麻生,女,22 岁,大学生:快毕业了,踏入社会之前,需要做不少功课,也要给自己一个展示的机会,mixi 也有不少供职信息,还能从其他会员那边学到不少东西。

雪野,男,56 岁,政客:mixi 有大量的关注,我正好可以把我们的政见通过这么一个便于拓展的平台散布出去,获取更多的选票。

近藤,女,26 岁,网店主:原来在 ebay 上的生意很一般,有一次把几件商品介绍到 mixi 的日记里,销路忽然变得很好了,之后我就关了原来的网站,专门在 mixi 上做起了网购。

小森,男,36 岁,企业家:我是一个网球迷,不过平时在俱乐部里的人数不多,都不一定能找到合适的球友一起打球,偶然间朋友推荐我上 mixi,发现在东京打网球的朋友还是很多,除了平时可以切磋锻炼之外,还有不少网球方面的信息,很有趣。

* 注:本文应老冒要求,所以对 mixi 关注了一下,mixi 本身还没有开通国际服务(mixi.com),所以只有日文服务,对于国内用户和欧美用户都不太合适(语言障碍),智力正常者应该不会把此文判断为软文,谢谢。同时感谢一下花奈,提供了不少有价值的信息。

同样做校园招聘产品,为何差距那么大呢

现在校园招聘如火如荼,各个网站都在动脑筋。在垂直搜索领域,聚合校园招聘职位作为产品向外推广,表面看起来很简单,但由于各网站对校园、应届生的理解不一样,即对用户的理解程度不一样,做出来的结果完全不一样。

对于一个网站来说,主要考虑点是产品、技术、推广、策略(商业模式),其中又以产品的模式是最重要的,技术只是手段、工具、途径。用户不会关心你的技术是如何实现的。一个网站一切一切的基础又是对用户的理解的程度与深度。满足用户的需求,一切都会来,炒作不是最重要的,有当然也不错。

我以校园招聘产品为例子,说明一个网站对用户理解的程度决定了一个网站的成败。
上海2个在校生(他们的应届生身份决定了他们比中国所有招聘网站更了解应届生的需求)业余办了一个应届生求职网www.Yingjiesheng.com,现在alexa排名是8319,每天有48000人浏览,每人平均浏览页面是7.5(这个数据基本反映了网站粘性),对于 2人大学生业余运作0推广费用的网站,这个成绩是很不错的。因为中国前10招聘网站的真实流量都不如这个求职网站:

1/Yingjiesheng.com :
http://alexa.chinaz.com/index.asp?domain=yingjiesheng.com
alexa:8319,uv:48000,pv

而作为搜索聚合校园招聘职位的垂直网站,他的访问量也超过了公司化运作的中国最大的2个垂直职位搜索网站:

jobui:
http://alexa.chinaz.com/index.asp?domain=jobui.com

alexa:11456,uv,58500,pv2

Globehr:UV:57000, pv为3.6

(pv很低的网站代表粘性不强或作假)。
而我查了一下,同样做校园职位聚合其他招聘网站每天有几千人访问就不错了。可以说所有中国定位于做校园几十加招聘网站的总流量加起来也不如应届生网。

顺便给大家介绍一下,你如何判断一个你完全不熟悉的网站的真实访问情况情况的小技巧:如每天有多少人访问这个网站:

利用站长工具,根据alexa排名查询http://alexa.chinaz.com/,然后根据pv去除,如一个网站pv只有3,你要除以2或3才是它真实的流量(去处它作假的水分),还可以基本判断他的会员数:

如一个网站alexa排名是3万左右,每天有1万人上,即独立IP访问量为10000,他的平均pv为5,还可以判断其活跃用户数(都只是大概,但差距不会太大)

 每天新增注册用户数=UV*1%=10000*1%=100
 活跃用户=注册用户/10=3万×10%=3000
 最高同时在线=活跃用户×20%=3000×20%=600
 收费交易客户数=活跃用户×5%=3000×5%=150

另外看一个个人网站或小网站,频数或杂乱程度数和一个网站的表现成反比,这是我的经验,主页“乱七八糟”的网站都是好网站(应届生就是,密麻麻排列公司),你看k68,连用户排列都在主页出现,给人以真实的信心,真的是真正了解互联网做的(还有就是qihoo)。你如果看一个网站主页只有一频,且简洁美观,这个网站一定离倒闭不远了。一个个人网站一定不要考虑美观,如他开始考虑美工设计,反应站长开始玩虚的,形式大于内容,一定会倒闭。中国现阶段做互联网过分注重细节的人一定失败!


扯远了,再回头看看应届生求职网www.Yingjiesheng.com, 为何说他的校园产品获得应届生的青睐:

首先他懂得校园职位来源(即信息源),其他招聘网站最多只知道1到2个信息来源,而应届生网公布至少6个来源:

企业原发信息;各学校 BBS的校园宣讲会职位信息(自动收录上海、北京、广州深圳四地 77 个大学的 BBS招聘信息);招聘网站信息(三大招聘网站:前程无忧、中华英才、智联招聘);地方性人才交流中心招聘网站校园招聘职位(如大上海人才网、南方人才网等共 27 个地方性招聘网站);知名企业的官方网站公务员职位(200 家);兼职职位

由于站长动用了校园学生,本身又是学生的优势,校园宣讲会职位很多都是独家的,而且他们还懂得聚合公务员职位。

从如何指导大学生求职方面,如《应届生求职全程指南》、《公务员备考》等,比其他招聘网站都做的实用而有价值,而且有很多创新,包括改写了很多求职歌曲,即求职金曲。不一一而足。你们自己去体会,知道一个网站对用户有用的产品一定是建立在对用户深刻了解的基础上。

如求职资料产品他拷贝抄袭1010Job的企业评论,聚合和应届生相关的企业点评,能够满足用户所需。

所以:“确解用户之意,切返用户之需”。是最最重要的。

用户无法描述道他要找什么,除非让他看到想找的东西。你在应届生网可以看到大学生想要的东西,所以网站表现不错。



最后要说明的是我不是再给应届生网做广告宣称,相反,我对这2个人没有好感,我曾经委托同事约他们谈收购,我的如意算盘是花36万元收购他们(每天1000元),从市场推广的角度,每天给我们带来5万真实有效的UV,即2分钱1个真实有效的UV(你们要知道如果到新浪做banner广告要20元才带来一个真实有效的UV,到Google/baidu买关键字要2元一个UV)。没有比这更划算的互联网生意;对这2个小孩来说,投入了2万元,一年就可以套现几十万。还未毕业就可以成为百万富翁。

可是他们可能是看了一些谈判的书,一定要坚持到一个距离双方中间的餐厅谈并购合作。显得狂妄而小家子气,结果形成了双输的局面。可惜。

2008年6月21日星期六

Affiliate网上赚钱的网站

http://goukou.com/blog/

goukou.com主页竟然是一个研究中国文革的。

这个blog里面公开了自己网站的Affiliate收入,包括乐天和Google这样的网站。

路由器IP地址切换转换专家

http://www.ruanjian1860.cn/

世纪城路由器IP地址转换切换专家

还在为路由器不能转换IP而苦恼吗?
群发,QQ群发,邮件广告、搜索排名、点击投票都需要转换IP,但路由器转换IP需要重启路由器,普通的ADSL IP转换软件用不上,直接接ADSL只能用一台电脑...
世纪城路由器IP地址转换切换专家,最新技术成果,彰显世纪城软件的实力,网上唯一一款可以转换路由器IP的软件,让您的多台电脑共享线路,还能各转各的IP互不干扰,太方便了!
您终于可以几十台电脑一起工作,各转各的IP互不干扰,终于可以几十台电脑一起论坛群发,QQ群发,点击投票了,确实是件令人开心的事情!

只要申请的线路为ADSL 或 动态IP的光纤,可以使用本软件自动切换IP,具体功能如下:
1)自动控制器:自动通过路由器WEB管理页面,进行PPPOE的连接及断线动作,支持所有的具备WEB管理的路由器;
2)IP地址定时切换器:可以以分钟为单位切换IP地址,注册用户保证每次路由器拨号IP跟上次不同,避免长时以相同IP进行某项操作,被对方封锁IP,该项功能...

一个人北漂的日子:北京求职90天纪实 —— 第一部分 北伐前夜

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区
 
  坚持就是胜利!同志们,给我顶住!顶住! ――――陈佩斯 《主角与配角》
  
  一切要从离开中兴说起,春节的时候,我下定了决心从中兴离开,在返回中兴上班的第一天,我一大早赶到办公区,在自己的座位上向科长、开发经理和项目经理发邮件表示要离职。
  
  我一直觉得我的那封离职邮件写的很有个性,在中兴里面能像我这样写离职申请的人恐怕也没有几个,不过我觉得那完全符合我的风格,那才是我真实的感觉。

  春节期间我征求了多方意见,决定离职,对于这次离职,我陈述以下理由:
  
  一、对南京的生活不适应

  到南京已经近一年了,作为一个北方人对这里过分潮湿的气候很不适应,夏季因为空调的关系,连续不停地感冒非常影响工作和生活,而冬季各种电热器具又很难达到理想的取暖效果,严重影响休息。也许有的北方人可以适应这里的环境,但是我不行。

  理由充分指数:★★★☆☆
  
  二、离家太远

  南京距离XX市过远,每次回家都需要经过太长的车程,占用了相当长的假期时间,不仅如此,在春节长假等特殊时段,购买车票也变得非常困难,甚至可能导致无法及时返回公司(请不要讨论飞机的问题,公司对探亲路费没有任何补贴,我的资金无法保证,另外我和博格坎普有点儿类似)。家中老人年势渐长,也不希望我离家太远,出门闯荡也要有个限度,毕竟我还算不上心怀天下,没有纵横四海的气度。

  理由充分程度:★★★☆☆
  
  三、公司加班政策令人难以理解

  无论公司怎么发表“不鼓励员工加班”、“惯性加班”等等诸多言论,我只看重实际情况,一二四六的加班从一进入公司就令我感到非常不满,这种掩耳盗铃式的加班方式没有为生产力带来任何实质性的提高,反而助长了正常工作时间的拖沓和懒散,而没有加班费更是加剧了惰性的延伸。中国国内公司的加班风气已经臭名昭著,很可惜,我们公司也在其中扮演并不怎么光彩的角色,整个IT行业风气不正就从这种完全无视劳动法规的加班制度开始的。对这种“制度”我不再多言,还是建议老大们看看《最后期限》的第十五章,其实道理大家都懂,可是风气一日不扶正,只懂得道理也毫无用处。

  理由充分程度:★★★★☆
  
  四、个人不喜欢通信行业

  近年来通信行业可以说热火朝天,可是惭愧得很,本人对通信这一行业一直不是很感冒,之所以来中兴是因为专业生僻无人问津,加上就业人潮汹涌,能找个栖身之所实属不易,于是就到招人众多的中兴来。一年来我刻意培养我对通信行业的兴趣,很可惜的是,直至今日,我仍然对通信没有什么兴致,可我这第一份工作和通信相关,对今后也许会有较大的影响,是否会继续从事通信行业也未可知。

  理由充分程度:★★★★☆
  
  五、项目管理与研发流程难以令人满意

  这是和工作息息相关的方面,我所在的科室本来是研发流程最规范的团队,但是经过中研院的整改之后,已经顾此失彼,难以维系了。尤其是我现在所在的XXX项目,说得不客气一点儿,毫无“管理”和“流程”可言,虽然表面上项目不断做计划订目标走流程,可是画虎不成反类其犬,整个项目为了XXX测试匆忙上马,紧急集结的员工在没有经过学习和培训的情况下就冲到第一线,代码量形成“井喷”,质量根本无从保证,组织混乱漏洞百出,可以说是公司做项目急功近利的一个典型案例。这样的项目让员工失去信心,毫无斗志,又怎么能给员工以动力呢?

  理由充分程度:★★★★★
  
  六、“市场驱动”令人疑虑

  理由充分程度:★★★★★
  
  还有其他各种缘由,不一一列举了,在中兴这近一年当中,本领是学到了的,但看到的问题同样也多如牛毛,总之我对在中兴的工作已经不再抱有更多的希望,因此我提请离职,让自己冷静一下,分析这十个月来的点滴,算是对自己负责。
  
  离职申请中的言语有过激的地方,但全是我想说的。如果看官中有中兴的朋辈,看罢之后也许有人会猜到我所属的项目是哪一个,心照不宣即可,如果您能会心微笑,也算是心有灵犀了。我把这份离职申请发给几个弟兄“共享”一下,他们一致的反应是“太牛了”,我心里想,要的就是这种感觉。
  
  科长的反应完全在我的预料范围之内,马上找我到会议室谈话,其内容无外乎就是询问原因什么的,最后不忘加一句“回去再好好考虑一下”,走出会议室的门,我心想:“第一轮结束。”
  
  刚回到座位上,和我在一个项目的W就告诉我,项目经理已经把我的离职申请转到部长那里了,呵呵,动作挺快,我本来打算稍晚一点点再对阵部长的,看来有人比我性子急,没关系,多一轮而已。
  
  第二轮来得很快,不过不是部长,是我们那个成天笑咪咪的开发经理,我知道他不会和我多谈什么,因为这本来就不是他的权力范围之内的事情,果然,三言两语,第二轮结束,其间气氛融洽,不象是讨论离职的问题。
  
  直到第二天,部长才来找我,我们这个部长平时很少和我们接触,整个科室和他说过超过三句话的恐怕只有我那个科长,一个部长做到这个程度也挺绝,在中兴当部长主要还是靠资历,管理能力得靠后考虑。因为之前从没有沟通过,而且我的生杀大权在他的手里,和他谈的时候我基本上什么都没说,就是在等他的那句“再考虑考虑”,他最后说这句话的时候,还很自觉地加上了一个期限,还好不是一万年,而是一星期。一星期?没问题,我给足老大的面子。
  
  有了这么一个期限,省了我不少事,一星期之后,发给老大邮件,表示坚持己见要求离职,其后的发展仍然在我的预料之内,他回复邮件说“项目紧张”云云,希望我等到四月底离职。从那时到四月底,两个多月的时间,项目当时确实非常紧张,我料到他不会在这个节骨眼上放人,我之所以在这个紧要关头提出离职,目的就是当形势缓和之后可以顺利走人,如果等到形势大好再提出,就不知道还会有什么莫名其妙的事情等着我了。
  
  其后的日子一切正常进行,但是我知道,项目经理还没出动,这件事情就没有结束。果然,几个星期之后,他邀我中午去楼顶。项目经理可是个能言善辩的高手,和部长完全不在一个档次上,先不管他才学几何,但是嘴上功夫确实相当到位,和他在一块儿,基本上就是跟着他的步调走,我不善言辞,这种情况之下贸然出击无异于以卵击石,当然,以我颇具忍耐力的性格特征,就算是希特勒来动员我也不会为德国人扛枪的,本着重结论不重过程以及避免正面冲突的原则,对于“再考虑考虑”这样的建议(如果一个领导只会用这句话结束和一个准备离职的员工的面谈的话,那么至少可以认为他的思想工作不大过关,即使他可能已经进行了数十万字的演说),我毫不犹豫地答应,至于是否真的考虑,那就是我自己的事情了。事后他又以工作贡献大为缘由,从上面申请了点奖金给我和同组的同事W,我想这怕是稳住我的手段,此后的发展印证了我的想法。
  
  此后科长又找我谈过两次,因为我的一再坚持,本来打算交给我的设计任务迟迟不能下发,四月份的时候,项目经理再次出动,我想这个时候该动真格的了,项目已经进入平缓期,前期打下的埋伏该出手了,于是我搬出部长的承诺:“四月底”。我不知道项目经理对部长的这个“最后期限”有什么看法,恐怕一肚子埋怨等着泼到部长头上呢,但是对我他的办法不是很多,思想工作对于一个死心塌地准备离职的人来说,有什么作用呢?他这个时候基本上是本着能拖就拖的原则,当然他自己恐怕也在和我的对峙中觉得烦了,于是说目前项目还要重组,部门要重新划分,我所在的科室很可能划到新的部门去,到时候等新部长来再跟我谈谈。于是,整个离职面谈被拖到了五月份,有一个带薪的五一长假我自然也很高兴,拖就拖吧。
  
  令我感到好笑的是,新部门成立之后,任部长的就是我们原来那个项目经理,他本来想找个别人来和我谈,结果还是把自己推到我面前,我想,这下子,该结束了吧。中兴的领导,都有一个很不好的毛病,或者说是心理疾病,就是一旦有人离职,就会觉得这个人是被华为挖走的,于是之前的每次面谈,各个领导都是花半个小时以上抨击竞争对手,而我,则每次都很耐心地听他们讲完华为血腥的故事,这次也不例外。在例行公事般的“口头宰杀华为”之后,他搬出了最终兵器--涨薪,这个武器在他还是项目经理的时候是没有办法使用的,因为没有这个权力,但是现在不同了,他充分“肯定”了我在项目中的贡献,认定我是项目中的“中坚力量”,声称即将到来的涨薪肯定会有我。我不禁暗自好笑,如果不是我提出离职的话,涨薪的机会恐怕轮三年也轮不到我的头上,这种手段太做作,也太虚,何况大家都知道中兴的涨薪幅度小得可怜,涨薪名额也少得可悲,千年不涨薪的现象比比皆是,总是看到有人在BBS上痛骂(能让员工如此“放肆”,也算是中兴一条优点,如果是华为,恐怕早就被摁死了),而且这次如果涨了,下一次,不知道猴年马月,这种小恩小惠自然动不了我的大义,不用客气,顶回去!
  
  千般招数用尽,他也疲了,于是基本认同我离职,当然,手腕是要用上的,不是还有脱密期和竞业禁止协议么?这位老大倒也不客气,准备都给我用上,呵呵,毒也要有个限度吧,我当即表示,两种方式法律上只许使用其一不可兼施!他愕了一下,转而说“我去问问人事”,后来又说“我想,要有三个月的脱密期,毕竟你这是个新项目”,我微微一笑,脱密就脱密,三个月不干活白拿工资,你既然愿意让一个无名小卒白吃三个月,我自然乐得接受。此后不出一个小时,他又找了我去,仿佛给我很大恩惠般的说:“脱密期就不用了,不过之前给你申请的XXXX元奖金,希望你能退回来,也算是你为中兴做的最后贡献吧!”我想,在中国这个地界,什么事情都有可能发生,发出去的奖金往回要也不算什么稀罕事,不需要莫名惊诧,于是痛痛快快答应,离职流程可以发起了!
  
  中兴的离职流程可谓壮观,大大小小二十七道手续,还好,一般来说发封邮件过去,基本上比较痛快的就给办了,比如图书馆、配置管理账号什么的,需要我楼上楼下跑的手续并不是很多(主要是固定资产退回库房比较累,要把电脑搬过去,还好库房和我在同一个楼层,借个小推车一会儿就搞定了),要求是在五个工作日内办好,不多不少,我正好用了五个工作日,违约金那道手续最痛苦,一万多块钱啊,转眼之间就没有了,就为了这些银子,很多在中兴的人忍气吞声,做着自己不喜欢的工作,看着自己不喜欢的人的脸色,与其窝窝囊囊地活,不如痛痛快快地死,在这一点上,我想我还是到达一定境界了,或者可以说,疯到一定境界了。
  
  最后一道手续后,我在人事部门拿到了离职证明,中兴离职正式结束,这一天是5月16日。户口档案保险等暂存中兴(三个月后户口就要收管理费,还挺高,一年算下来要七百多,真够黑的),这个时候开始,我自由了,但我没有自由的快感,我知道,更严峻的挑战还在后面,而事实证明,我还是低估了现在求职的难度。在北京寻找工作的日子,是残酷的。

一个人北漂的日子:北京求职90天纪实 —— 第二部分 出师未捷

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区
  
  
  我猜到了开头,却猜不到这结局。 ――――紫霞 《大话西游》
  
  前面胡扯了几千字,其实都不是重要的部分,有牢骚也有任性,反正我认定的路子就是要走下去,一般人是挡不住我的。需要提到的是,现在很多人离职的时候都要考虑到父母、女朋友(男朋友)什么的,这些确实是需要考虑到的,但被他们完全控制就显得失去自我。所幸的是我本人没有女友,到现在感情领域还是一片未开垦的处女地(未婚的女士们如果有啥想法的话请给我来信,我不喜欢太吵的……跑题了),父母对我的决定完全尊重,说白了就是我自己的事情百分百自己决定,不需要婆婆妈妈磨磨叽叽,因此一路杀出南京并不奇怪,我倒还觉得进度有点慢。
  
  我在南京又逗留了几日,主要是因为买不到当天的车票,而且我还要考虑托运行李销银行卡什么的杂事,还要和诸位兄弟吃个饭,话个别,扯扯淡,总之是没有正经事情。
  
  5月23日,我下了火车,踏上北京的土地。
  
  到北京之后,我寄住在我大伯的家里,北方话称大爷。大爷生性内向,性子直却很少说话,一般和我说话的都是大娘和我那个堂妹,她们可是说话的高手,尤其我那个堂妹,可以以一己之力扫平整个小区的物业部门,全小区的物业一提她的大名无不退让三分,可谓女中豪杰。
  
  大爷家在北京的西南远郊,远到什么程度呢?到六里桥需要一个小时的时间,如果到中关村的话,基本上就再加一个小时,到上地的话,再加半个小时,到大北窑的北京CBD的话,共需近三个小时,到望京科技园的话……我想到天津也不会花那么长时间的。可是这个地方房子便宜啊,没有办法,北京的房价是最终BOSS级的,变态且扭曲,政府那软绵无力的房价调控,骗骗小孩子还可以,拜托,大家都是成年人,给点儿敬业精神好不好?
  
  刚到北京当然就是访朋拜友,大家都有正经事情做,当然是学校里的人相对最清闲了,刚到北京的几天,我主要就是拜访清华的Q博士和正在清华兼职的L,Q博士专业是物理,如果没记错的话应该是纳米物理,反正我不大懂,这个年头还喜欢读基础学科博士的人确实不是很多了,更何况还是女博士。Q博士和我是高中同学,见她那天她正在准备去韩国某大学访问几日,说是要买些礼物给认识的一些韩国朋友,于是我跟着她跑到前门外,在大栅栏的瑞蚨祥和张一元搞了点名牌货,又去看了看景泰蓝,然后回清华那边吃了点烤鸭。L是我高中同学P的小学同学(P在哈佛读博士,牛人一个),因为我曾受P之托辅导她考东大的硕士,因此认识,她高考第一年不如意复考一年,故比我晚一年毕业,此时正是她无事可做的时候,跑到北京报了个GRE班,闲时又跑到清华的一个研究所做个兼职。对于她报的GRE班,一直令人难以理解,又不出国,考这个麻烦的东东干啥?后来她七月底回到XX市之后,也觉得烦,索性推迟了考试的日子,这是后话。
  
  到了北京,工作不能不开始考虑了,于是联系了正在百度上班的M。本来我在刚毕业的时候也投了百度,怎奈我的研究方向和百度不大符合,不然恐怕我也能经历百度上市了。M是东大2002级硕士软件方向第一名,数学专业的本科,不过本科学校不大出名,到东大之后发现其实他对计算机的感觉还没培养起来,刚进研究所的时候还不懂得装windows,因为数学有底子,研究算法倒是一把好手,研究方向是数据挖掘,也正好是百度要求的方向,虽然进入百度稍有波折,但最终得以成行,算是happy ending。此番进京,我便首先投奔他而来,他自然不会推辞,给我内部递了简历,我问要英文的么?他说中文的就行拉,百度从来不用英文。此外我自己也上网寻了其他公司几个职位投了简历。求职拉开序幕。
  
  5月30日,我接到第一个面试通知电话,但不是百度的,而是瞬联,一家美资通信外包企业,号称薪水近万。瞬联希望我6月1日到金运大厦面试,查一查地图,在西直门北一公里文慧桥附近,西直门在我前年到北京时就去过,路线心里基本有数。
  
  1日很快就到了,我跑到西直门,因为手里还没有纸质简历,因此急急忙忙找了个地方打印了简历,两点钟,进入文慧桥附近的金运大厦,我的第一个面试即将开始。
  
  来到瞬联门口,保安把我请进去,简单登个记,就把我领到一个大会议室,会议室里已经有三个人在做笔试题了,两男一女,那个女的好像也是刚到,还没开始答题。我寻个座位坐下,不多时一个HR样子的MM拿了几份题过来,问我是要做C、C++还是Java,我选了C的,她便抽出一份交给我,又给我几张纸,说大概半个小时的时间,做完了叫保安,然后也给了那个女的一份题,便出去了。会议室的门必须要有工卡才能打开,这个时候我们基本上就是“关”在会议室之中。
  
  我看了看题目,说实话现在已经记不得当时考的什么题目了,反正不是很难,不过是读个程序或写个小程序之类,刷刷点点半个小时内写完,这个过程中之前来的一个男的答完题目,叫了保安出去了,我做完的时候,另外那一男一女还没有结束。我到会议室的门口向保安做个手势,他过来开门,接过我的试卷,引着我到另外一间小会议室,说过一会儿会有人过来面试。
  
  大约十分钟,一位经理模样的女士进屋来,态度比较亲切,但还是让我觉得有些紧张。她示意我到靠近窗子的地方坐下,我坐的位置离她有点儿远,不得不竖起耳朵仔细听她说什么。她简单看了下简历,然后就让我用英语介绍一下我之前的项目,“如果用英语实在不能交流的话,我们再用中文”,她顺便给我留个不是很好下的台阶。这时我发现,对于我之前的项目,从来没有考虑过用英语去描述它,之前也没有准备,于是只好借着白板胡扯起来,其间有些单词还想不起来,讲的过程中又过分关注整体的架构,对自己的工作讲的很不到位,场面甚是狼狈。
  
  她似乎对我的混乱英语勉强可以接受,在我描述的过程中还提醒我要讲自己的工作,而不是系统的架构。她还挑出我的简历中某些部分会有误导,让她误认为我懂得某些东西,而实际上我只是做过和那些东西略有相关的部分,虽然我在简历中说的没有问题,但是不注意看的话,确实容易令人产生一些误解,甚至可能会被认为玩文字游戏,蛮危险的。
  
  我瞎扯了半晌之后,她终于说可以转为中文了,我长长喘了一口气,满头的汗可以开始蒸发了。
  
  经验总结1:面试外企,一份英文的自我介绍和项目介绍是必不可少的,不必练习的非常熟练,自然就好,如果你本来就是英语大牛的话,算我废话。
  
  她似乎对我的项目经历不大感冒,我之前做的东西各个通信设备厂商都有各自的一套,中兴的只有中兴才用,因此对于她来说,这个经历等于没有。她又问了下我对TCP/IP这些东西是否熟悉,并向我介绍说她们的工作主要关注通信设备应用级开发,各种业务功能等,她的项目组对我的经验来说有偏差,因此她想考虑把我介绍到开发通用系统的大项目组去,他们那边可能还会有一次面试。另外还跟我说明天会发一个瞬联的简历模板到我的邮箱,让我根据模板填写自己的简历,把那些有可能引起误导的部分去掉(狂汗),然后她会把修改好的简历转过去。
  
  她还顺便介绍了一下瞬联的工资结构和福利等信息,和一般的企业没有什么太大的差别,不过没有年终奖,相对的是每年都有涨工资的机会,目的是避免有些人拿到年终奖就跑路,而把年终奖以涨工资的形式分布到各个月份当中。
  
  瞬联面试不可谓成功却也不能说失败,just so so,面试的过程中我接到两个电话,因为电话是静音模式因此没有接听到,一看就是中关村的,猜想可能是百度的消息来了。回去的车上,电话又过来了,真的是百度,约定第二天下午中关村银科大厦19层笔试(后来M说挺奇怪,以前都是在18层的,这是题外话)。
  
  第二天准时赶到海淀图书城后面的银科大厦,上楼去发现已经来了不少参加笔试的,我们大约十个人被带到一个会议室,发了题目和答题纸,然后考官便出去了,没有多说什么。我突然发现不知道考试时间长度是多少,但也没多问,埋下头就开始做题了。
  
  我做的很放松,题目是百度的一贯特色,字符串和socket编程从来都不少,socket的题目有两道,一道是socket相关函数都有哪些,简单介绍一下,另外一道是小程序,通过socket发送hello world到另外一台机器,网络编程我没有接触过,这两道题目都不会,因此都空下了(事后证明这是一个败笔,其实socket编程稍稍准备一下就OK,很简单)。简答题中还有简单说明进程线程的经典题目,其他的题目也记得不是很清楚了,其中有一道编程题目是给一个递归的函数,要求用递归和非递归的两种方法写出程序,递归的不在话下,非递归的本来想通过递推的函数计算出来级数形式,发现不大可行(也许是我的方法不对,数学好久不搞了,突然变得手生),于是改用比较直接的方式,加三个临时变量,仍然是递推的方式做完。大题目必然是字符串或查找相关的,大概就是有一个关键字表,在一个文本里查找这些关键字,我正想这题的时候,一个百度的家伙推门进来瞪着眼问“兄弟们你们还要多长时间啊?”一个女生回答说“我们要答两个小时”,这时我才知道考试时长两小时,看看时间,已经快一个半小时了,抓紧时间!还好,大题有了思路,大概就是把关键字表建成树形,遍历文本,每一个字符建立一个指向关键字表树节点的指针,一个字符一个字符遍历下去,如果符合关键字的话,指针将在树上不断向下移动,如果可以移到叶子,说明找到一个关键字,输出,如果没找到叶子就出现不符合的现象,说明查找失败,将该指针删除,这样整篇文本遍历之后,关键字也都可以输出了。
  
  提前五分钟交卷,打电话给M说我笔试结束了,他从里面出来,和我在百度的大厅坐了一会儿,发现百度的气氛确实很自由,大厅里还摆着百度之星程序设计大赛的宣传板,以及上一届百度之星们的签名,据M说上一届排名比较靠前的选手基本上没到百度来,因为他们实在太牛了,都是常年玩Top Coder的家伙,来百度的基本上都是排在后面的选手,当然即便是排在后面的,实力也是足够强劲。我和M讨论了一下刚才笔试做的题目,原来这套题目在百度最近用过不少次了,所有题目他都知道,根据我的描述,他说笔试应该没有问题了,等面试吧。
  
  这段时间我父母从XX市过来了,到我大爷家给他家的露台搭个棚子,这是他们的强项,不需要到外面找人干,自己就能摆平,当然他们的另一个目的就是来看我,我倒是觉得看不看的无所谓,父母的想法和孩子的想法往往不同,等我有孩子了我也可能会转变,啥事都是要有个过程的嘛。
  
  大概过了三天,百度的面试通知就到了,是在银科大厦的18层。
  
  第二天,我赶到银科,进门之后,发现除了我之外,还有一个人好像是要面试的样子。前台让我坐在一边稍稍等一下,两三分钟之后,过来两个人,把我叫到一间很小的会议室,大概只能容纳四个人的感觉,主面的那个人上来先问我:“听说你是M的学弟?”狂晕,然后回答说我是他同学,我已经工作过一年了。然后三个人坐下来,他俩一个人拿着我上次做过的笔试题,一个拿着我的简历,开始盘问。首先是关于笔试题,让我介绍一下对最后一道大题的思路,自己做过的东西,当然印象还在,我blablabla,他点点头,就说你这种做法主要是针对英文单词的,那对於中文你有什么想法?中文太复杂了,同音词又多,索引树不好建,但是我还是硬着头皮用拼音来做树,或者考虑哈希什么的,中文处理我可是一点都没有接触过,什么分词啊匹配啊啥的没研究过的话很容易被鄙视,因为这东西很专业,不是顺嘴胡诌就可以摆平的,果然他不是很满意的样子,这道题就放下了。然后问了下其他的题目,其中一个面试官还看错了我的程序,对我那个非递归的程序表示异议,还好他很快就注意到自己看错了。另外的题目基本还好,也不是很难,基本上也就没怎么问,但是他们对我socket题目的空白多少有点意见。扯完笔试题,就开始扯我的简历,介绍一下之前的项目罢,于是我又blablabla,虽然不是和通信很靠边的东西,但是毕竟是用在通信系统上,针对通信系统放弃了很多通用性,而且还是中兴自己专用的东西,多说无益,随便扯扯,中间提到了“优化”一词,然后他们就很感兴趣,没办法,优化是他们的重要工作嘛,但是我的这个“优化”和他们的“优化”不一样,于是又出现misunderstanding,其间他还让我优化一下memcpy,当时没想出来,逐字节拷贝还能再怎么优化呢(牛人别笑话我)?不知道,放弃。然后面试基本结束了,瞎扯两句,就送我出门了,我自我感觉还不错的样子。
  
  面试之后发现有未接来电,后来又来了一通,是瞬联MOTO外包组的电话,一接通就听对面的MM(JJ?)问为啥前两通没接捏?我说我在外面没听见,她就说MOTO这边还要给个面试,希望第二天能到大北窑的MOTO大厦去面试。接到后我想外包实在不想干,而且个人对百度的面试感觉还可以,因此在第二天早上给瞬联打电话说面试不过去了,因为我已经找到工作了(编这种谎话可能遭报应,超损人品值,千万小心使用),对方很不爽的样子,当然也没有办法,瞬联就不了了之了。
  
  两天后,德国队4比2战胜哥斯达黎加,拉姆打进本届世界杯第一粒入球,克罗泽又有斩获。
  
  报应说来就来,老天爷连点儿商量的余地都没有,6月11日清晨,我看完世界杯之后,老家的电话来了,我的祖母因为心脏病突发刚刚辞世。一切来得突然,两家人急忙买了火车票,当天赶回去奔丧。祖母年事已高,虽然全家人都早有准备,但偏偏在我父母到北京这短短的十天之内出事,出乎意料。祖母去的急,却也没有痛苦,后来见到遗体时,面色安祥,不像当年我祖父被脑血管疾病折磨一年有余,这也算是一种安慰吧。
  
  第二天我到网上让M帮我问问百度的情况,结论很糟糕,他们认为我之前的经验和百度目前的要求不符合,被鄙视了。
  
  经验总结2:不要以为自己有一两年工作经验就比应届生好找工作,关键还是看你的经验是否可以被其他公司所接受,如果你在原来公司做的东西是只有在原公司才能用到的话,对于其他公司来说,你的工作经验几乎等于0。
  
  所谓的福无双至,祸不单行,也就是如此了。更悲惨的是,此后的三个多星期,没有一个面试通知,那段时间心情郁闷至极,所有投出去的简历都没有回音,一时间,我觉得被世界抛弃了。

一个人北漂的日子:北京求职90天纪实 ——第三部分 负重前行

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区  
  
  你说什么和你怎么说同样重要。 ―――― Andrew Hunt & David Thomas 《程序员修炼之道》
  
  两个星期,我几乎天天跑去上网,到几个大的招聘网站上去寻找机会,可是,我的工作经验无法符合任何公司的要求,但是不投的话就不可能有机会,我只能硬着头皮发简历。在瞬联的面试经历之后,我开始不断修改我的简历,去掉了那些对工作的详细描述,对我之前的项目描述变得非常简单扼要,目的就是淡化我之前的工作,不要让我之前的毫无价值的工作经历影响HR的眼球,并使她很不经意地让我的简历从她手边溜走。
  
  在经过了两个星期的痛苦挣扎之后,我对现实有了妥协的念头。直到现在我也觉得那是一个很糟糕的想法,就是我开始考虑华为了。相当多的从中兴出来的人都走向了华为,刚开始不知道为什么,这段时间的求知经历让我理解,中兴出来的人在各种技能上都被限制住了,或者说整个人进入到“国产通信状态”,无论是思路还是作风都沾染上了国内通信企业的糟糕风气,还有部分人因为所做的工作专用性非常强,以至于虽然在自己的岗位上成绩斐然,但拿到外面去却毫无价值和地位。这些特点上中兴和华为非常相似,因此中兴的人出来,他的老对手华为就自然而然成了他们一个不错的归宿,而其他的企业因为各个方面都和“中华”有不少的差异,因此到其他企业就变得障碍多多,尤其是外企。以上的说法都仅限于技术岗位,至于销售等职位,差别也许就更大了,试想一家外企,怎么能容忍销售部门将自己的设备白送给运营商来使用呢,这种事情在中国也只有中兴华为才能干得出来,价格战的恶果已经渐渐在这两家企业中显现出来了,这两家别看打得不可开交,实际上却是臭味相投呢。
  
  于是当我在水木清华上看到华为的招聘信息的时候,怀着悲壮的心情发了份简历过去。另外我在中兴的原同事ZZ给了我一个据说算是华为部长级的人的电话,让我去跟他联系,可以说当时我的心情极度低落,这个电话拿在手里,迟迟没有使用。
  
  人生总是会有点转机,无论这个转机是大是小。我大娘在一次和她侄女通电话的过程中提到我正在找工作的事情,她的那个侄女以前是在大唐工作的,而且有同事在MOTO工作,听到我的事情之后就很热情地说可以帮我联系一下MOTO的同事,看看有没有机会,后来又给了我他那个同事的mail,让我把简历发过去给他看看。
  
  过了几天,我的中兴同事ZZ催我和华为的人联系,因为华为的人已经多次追问为什么我现在还没有联系他,我跟ZZ说MOTO那边可能会有机会,我想等一等,后来我也觉得不好意思,决定联系一下那个华为的人,岂料还没等我动手,华为的电话就过来了,邀我在第二天的6月29日下午去上地五街的奎科大厦参加面试,我想这个应该是我在水木上投简历的结果。这个时候,已经距离我的上一次面试二十多天了。我给ZZ回个短信说,华为已经和我联系面试了,那个华为部长我就不联系了,谢谢他的帮助。
  
  第二天上午天气还不错,我第一次到上地那边,于是早早赶过去,等到了上地五街,发现方圆数百米之内并见不到奎科大厦的字样,于是就在附近兜了几个圈子,问了几个其他大厦的保安,有的说没听说过奎科大厦,有的给我指了个错误的方向,最后,在一个路边推销中信银行信用卡的GG那里知道了奎科大厦的位置,怪不得我找不到,这片地方大厦多多,唯独这个大厦门口不写名字,鬼知道它就是奎科啊。
  
  进去大厦左手边是前台,我走过去说我是面试的,他让我在边上等一下,说一会儿就会有人过来领我进去。正在等着,旁边一个MM问“你也是来面试的?”我说是啊,然后便交流了两句,知道她本科是北邮的,后来在澳大利亚读了个硕士(又是国外这种骗人的一年制硕士!),回来以后打算留在家这边找工作(看来她是北京人了)。我说北邮不是正对通信的口么?她说专业上的东西都忘了差不多拉。正说着,一个高个子GG过来,把前台附近几个等着面试的人都叫过去,然后想找个会议室之类的地方笔试,发现会议室现在都没有,没办法,就把我们都带到负一层的食堂去了,我们各自寻了个座位便开始笔试。
  
  华为的食堂大厅很大,和中兴南研的若干小间不同,但是总体来说大小相差不多,椅子相对来说没有中兴南研摆得密集,不过象中兴南研那样拥挤的食堂也确实难得一见。我们笔试的时候不是饭口,因此食堂里只有些工作人员忙活,也不算吵。
  
  笔试之前是填一个表格,拿到手的时候感觉似曾相识,后来发现这个和我当年还在学校时参加华为的校园招聘中填过的表格非常类似。表格的首页除了填写最基本的个人信息之外,还有华为经典的四选一题目:1、愿意长期在海外艰苦地区工作;2、愿意长期在海外工作;3、愿意在国内任意城市工作;4、只愿意在特定的城市工作。记得校园招聘中很多人盛传如果不选1的话,华为是不会考虑你的,所以那个时候很多人都选了1,只有少数人咬牙选的2,某些“牛人”选3或4,说实话当时我选的什么记不清了,不是1就是2,但是现在,我不需要太客气,直接选4!
  
  华为的笔试题目很多,从现在回顾起来,是我参加过笔试的公司里题目最多最杂的一个,而且让人不解的是,同样的知识点会考查多次,真是浪费,其实题量至少可以减掉三分之一,象短路式逻辑运算(例如第一个条件为真,或运算就不再进行下去这种)类的题目就出现了大概三次,真是浪费心情。印象比较深的是一道enum的题目,enum这东西平时我用的不多,因此了解不够深,不知道它的赋值规则(其实无非就是某项的值是它前一项的值顺序加一,无论前一项的值是默认的还是显式给定的),错掉了。笔试题的题型也是丰富多彩,各种题型都有,计算程序结果啊,挑错啊,编程啊,解释拉等等,整套题目的最后一页是三道逻辑题目,每道题目还有若干小题,记得比较深刻的一道是有几块田地,某种作物不能连续两年种在同一块地里,某两种作物必须种在相邻的地里,某两种作物必须不能种在相邻的地里,然后给一些条件,分别判定什么地种什么作物。逻辑题都不算太难,认真考虑一下,不断地排除都可以很快得出答案。
  
  参加笔试的几个人我是第一个交卷的(小小自豪一下!),有个监考的JJ拿过我的试卷去看,这时候我拿出手机,发现有个未接来电,于是跑到食堂的门口拨回去,小心翼翼地问是哪里的电话,电话里怪怪的声音问“你是不是在我们公司投过简历啊?”听过之后一肚子气,原来是在HP干销售的高中同学Carrot,吓了我一跳!我问他干啥,我这里正面试呢,别捣乱,他问面的哪里啊?我很郁闷地说是华为。他说他这里可以帮我找人投个IBM,他之前还给我发过HP的招聘职位,问我喜欢哪个,他可以帮投,我想了想,就说IBM吧,你们HP那些职位和我实际经验差的实在是太远了,他说行,就挂了电话。
  
  回到食堂里面,发现又多了两个GG看我的卷子,好像还在评分,我走过去的时候基本上评完了,他们就叫我到食堂的另外一端,双方坐下开始面试。
  
  面试的内容非常琐碎,大体上来讲,主要还是介绍我之前做的项目,很细致,我甚至都要考虑到履行中兴的保密协议的程度了,不过说实话,中兴的东西就算告诉华为他们也不会用的,一是因为中兴专用的东西对他们来说没啥价值,他们自己也有自己的一套东西,而且他们招聘我的职位和我之前做的东西相去十万八千里,二是他们也根本看不上中兴的东西,保有着一种对于中兴的优越感在里面。后来他们问我有没有接触过网络方面的东西,告诉我这个职位是属于华为的IPOS项目的,是一个网络操作系统,我说我没有网络的实际工作经验,基本知识的话倒是没什么太大的问题。扯的时间挺长,他们可能也觉得口干舌燥了,就让我回到一楼的大厅里面去等一下。我临走时扫了一眼他们手里我刚才答的笔试题,正翻到最后那页的逻辑题,全部正确都是对号,呵呵。我出食堂的时候,看到刚才一起笔试的几个人也都开始面试了。
  
  在大厅等了一段时间,最开始和我聊天的MM也出来了,她也是面试技术职位的,可是她跟我说很多问题她都答不出来,比如线程和进程的区别(狂倒!!!),我大概给她解释了一通,她说原来是这个样子啊。她还很郁闷的是后来面她的人可能觉得她技术底子太过薄弱,都开始给她出智力题了,其中一个是两个空瓶子可以换一瓶汽水的题目,她说最后算来算去剩一个空瓶子,我跟她说其实这道题可以有一个trick式的答案,就是借一个瓶子,和原来的那个空瓶子换一瓶汽水,喝过之后把空瓶子还了,这样就可以多喝一瓶。她睁大眼睛说还可以这样的啊?我说这个答案稍稍有点儿超常规,面你的人是不是想让你答成这样还不知道呢。她告诉我还有一个题目就是一帮人提个灯笼过桥的问题,每人过桥时间不同,每次过去俩,我说这题超经典,不难,她说这题她做的差不多。
  
  这时一个胖GG过来,把我叫到办公区里面,说是二面。路过办公区的时候,我大概看了一下,工作区和中兴的差别不是很大,员工们也都跟隔断里的猪一样。进到一个办公室,里面一男一女好像HR的样子正在谈工作,男的说一个工作要尽快办,女的说没关系,今晚加个班就可以了,言语之间好像加班就是家常便饭似的,看来华为的加班文化很浓重啊,与外界的说法毫无二致(刚累死一个HXY同志,当然了!)。
  
  我和胖GG坐在一边的沙发上,然后他问我一些问题,都是诸如“为何离开中兴”之类的老调问题,每个公司面试都要问一下的东西,扯了不久,他就问我期望的薪酬是多少,我说我在南京的时候是XK,北京比南京消费高不少,自然希望能高一些,他装糊涂,说大概和南京差不多是吧,气得我想扁他,耐住性子解释说希望能考虑南京和北京的消费差别。他头都没抬,说象你这种刚毕业不久的硕士,华为北研所的工资级别是(X-0.5)K,不过我们按照XK来给你报,然后在面试表格上写上XK……我不断按捺住扁他的冲动,心想华为也就这样了,没再多说话,在南京和在北京同样的钱,基本上和降了工资没有差别。
  
  面完这个我又回到大厅,那个MM已经完成二面了,我说挺快啊,给你多少米啊?她说了一个数,比刚才他们给我的少了不少,我说太少了,她笑笑:“可能是因为我没有工作经验吧。”工作经验?我这一年的工作经验也都是扯淡的东西。
  
  没多久一个HRMM就把我叫过去了,还是general interview,瞎扯,扯啊扯啊的我就习惯了,大概十几分钟,最后她问我的原单位还有没有想过来的?希望我能够介绍几个过来。呵呵,挖墙角无处不在啊,华为对挖中兴的人永远充满了兴趣。我说试试看吧,她就说今天的面试就到这里了,临走的时候一个HR领导模样的人很热情地留了手机号给我,说是有原同事想过来的话一定要联系啊!天啊,是不是华为的HR成天想的都是挖中兴的墙角啊,面试我的时候一点热情都没有,这个时候满脸堆笑的。
  
  和那个MM道了别,看了看时间已经过了六点了,从上地赶回去恐怕会比较紧张了,我连忙赶到车站,扒了辆982上去,直奔六里桥。天公不作美,本来白天不错的天气,现在变得电闪雷鸣,过了中关村以后,外面就开始下起瓢泼大雨,我开始担心起来,一是时间晚了,怕赶不上最后一趟到大爷家的车,二是手上没伞,却有毕业证学位证这些怕水的东西。车子走的不快,没到丰台路口的时候我就知道赶不上了,连忙在岳各庄桥下车,准备走另一条路线。下车的时候正是暴雨倾盆,我抱着俺的宝贝们,和若干倒霉蛋一起躲在候车亭子里,公交车一辆一辆过去,却没有我想上了那趟,等了足足有二十分钟,忍受了数百个闪电和暴雷,才来了一趟车,爬上去的时候发现自己已经湿透了,好在宝贝们还比较干爽。后来在良乡倒车,赶上最后一趟公交,狼狈地回到住处。华为的面试折腾了好几个小时,是我经历过的面试中最长的一个,也是最消耗精力和体力的一个(我当时没有吃午饭,暴雨狂奔也不是很轻松的!),希望有参加华为北研所面试的朋友们之前一定要补充好能量,以免无法应付华为一轮又一轮的面试。
  
  经验总结3:面试既考验精神,又考验体力,尤其面对某些变态公司,充足的能量是正常发挥的重要保障
  
  再说说另一个机会,亲戚联系的MOTO经理回了邮件,说看过我的简历,感觉我的经历还算可以,但是不符合他们部门的要求,可以把我的简历推荐到另外一个比较合适我的部门去,另外我可以把我的简历录到MOTO的网站里去并填写他为推荐人。我当时就感觉到这是一个托辞,基本上MOTO的机会就算是没有了,但是本着一切机会都要尝试的原则,我还是在第二天把我的简历录入MOTO的人才库。
  
  没过两天,深圳华为那边来电话,说是发过来的材料中缺少身份证的复印件,不能审批,希望我能把自己的身份证传真过去。晕,面试那天咋不看清楚呢?无奈,我顶着烈日跑到外面的复印社,传真了我的身份证到她指定的号码,传真真够贵的,一次就要好几块钱。
  
  第二天她又打电话过来,问我传真了没有,我说昨天就传了啊,传完给你打电话没人接啊,我就没再打。她很郁闷的样子,说因为没通知她去取,那个传真已经不见了,希望我能再传一份过去。我n倍于昨日的郁闷,不得不再顶着烈日跑到附近的复印社,又传真了一次,然后连忙打电话告诉她,总算是完事。
  
  过了两天华为HR的电话又过来,说我填表的时候当时选的是“只考虑在国内特定城市工作”,这个在审批时会对我不利,问我愿不愿意改成“可以在国内任何城市工作”,还特别说明因为我应聘的是IPOS组,因此即便选了这个选项,到时候还是一定在北研所工作的。我想了想,确实也没啥区别,就同意了,挂了电话心里想,单单这么一个选项就可以对求职者拥有生杀大权,华为也太狠了点儿吧。
  
  此后华为进入了漫长的审批过程,据说因为港湾收购的问题,华为人事部门比较忙,人事审批流程暂时冻结了一段时间,在我面试完华为的六个星期里面,北研所的HR每个周四给我打个电话,通知我一下审批的进度,每次无非就是正在审批中,希望我不要着急。我当然也不会着急,因为这会给我足够的时间来寻找其他的机会。
  
  虽然对华为并没有什么热情,但是对于当时的我来说,总算是回归到有面试的正常轨道上来了,长达三个星期多的空白期结束了,我这时也开始有所转变,在网上投简历时一点一点往我不熟悉的领域上靠拢,平时也开始看一些我之前并不太了解的东西,比如python,ajax等等,我突然发现求职的过程也可以看作是学习的过程,我正在为自己不断地充电,面试的经验也开始逐渐积累起来,经过了痛苦的挣扎期之后,形势慢慢好了起来。

一个人北漂的日子:北京求职90天纪实 —— 第四部分 南征北战

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区
  
  
  
  如果我碰到上帝,只会对他说一句话:“你看厕所去吧。” ――――林锐 《大学十年》
  
  这个世界上永远充满着各种巧合和机会,甚至有些是莫名奇妙的,正在我为MOTO的机会失去而感到不爽的时候,一个电话打了过来,说是一个叫WWWX的公司(这里用公司名的首字母表示),希望我能在7月4日的下午到大北窑附近的光华路上的科伦大厦面试。放下电话我便疑虑,我好像没有投过这个公司,而且听名字这个公司应该是一家网络公司,我对网站的开发基本不了解,从经验上来讲并不符合。现在的招聘形势是:越小的公司越希望招进来的人具有某些特定的经验,这样他们可以不需要经过太多的培训就可以发挥新人的作用,况且小公司本来也就没有太多的培训资源。因此,我对这家公司充满着疑惑,不过既然是一个机会,为什么不去尝试一下呢?
  
  第二天中午,首先坐车赶到六里桥,正在等车准备往大北窑的方向赶过去的时候,接到了一个电话,居然是IBM,让我第二天上午十点钟赶到上地的得实大厦去面试。这可算是一个不错的消息,Carrot的帮助有作用了!以至于让我在车站兴奋地掏出纸笔记下时间地点,却错过了一班公车,只好再等下一辆。
  
  坐车到了大北窑,心想光华路也不远,就奔北走过去了。到了光华路路口,不知道该往哪边走,我的坏毛病又开始了,就是先自己找,自己实在找不到或者时间上不允许的情况下,再考虑问路。我发现东面相对于西面大楼少些,于是我向西走过去,走了好远,发现实在找不到了,便只好折回来,顺便问个路,发现真的走反了,科伦大厦就在光华路路口往东不远的地方,看来还是先问个路比较好。
  
  到了科伦大厦,发现还有一点时间,便在楼下街边的长椅上坐下,突然有电话进来,接了发现是高中同学GS,她本来是在港湾干的,不过前些日子港湾被华为收购了,相信大家也都知道这个消息。其实本来是西门子打算收购港湾的,但是华为半路杀出来,搅黄了这笔买卖,把港湾劫了去,李一男同志也没有顶住华为的攻势,算是被招安,只是可怜了港湾这群弟兄们,当初华为花大价钱挖他们,他们都坚守住了阵地,可是现在,他们的老大却把持不住,让他手下的弟兄们无故损失了大量银两,既然已经是收购了,华为自然不会象当初挖人那样开价了,一时间可以说哀鸿遍野,血流成河。我说过,“中华”这一对冤家永远是搅不清的关系,既然华为在北京进行砍杀港湾这么大的动作,中兴自然不能在旁边看西洋景,但以中兴的一贯作风,永远是跟在别人屁股后面拣好处的,这一次也不例外,因为港湾相当多的人对华为有排斥情绪,因此中兴便以此为契机,挖了港湾几乎整个数据通信部门,但传说中兴人事很不懂得招聘艺术,不但挖人时态度一般,而且不少港湾的人还降了薪,尤其是领导层。我想这个时候的港湾,真是墙倒众人推,本来是国内一家异军突起的通信新军,不料得却落得被贱卖的田地,慨叹啊。
  
  回过头来说GS的电话,她就是数据通信部门的,准备去中兴,虽然我在之前在她面前痛陈中兴的各种缺点,她思量来思量去,还是决定不去华为,改投中兴。所谓天作孽,不可违,人作孽,不可活,既然她已决意,我便不再多说。她在电话里问我一些关于中兴的事情,我于是详细道来,什么一二四六加班啊,没有住房公积金啊,最近新员工连住房补贴的排号资格都没有了啊,诸如此类,她听得也很痛苦,于是我就问为啥非得在中兴这棵树上吊死啊,其实可以去的企业有很多,她说中兴刚刚在北京建了个研究所,她和她老公觉得应该是一个好的发展机会,因此还是决定去中兴。唉,我实在是无语了,去就去吧,啥时候去呢?她说中兴的大楼还没有完全盖好呢,如果她去中兴的话,应该是先到南研所呆两个月。我哑然失笑,我刚从南京中兴挣扎出来没多久,和自己关系特铁的“弟兄”就要南下金陵踏这个火坑,不知道这是巧合还是造孽,一想起南京中兴二期工程拖沓的施工速度,不知道这北研所是不是真的能在两个月之内投入使用。
  
  挂了电话,发现时间差不多,就上了科伦大厦,在大厦的公司列表前站了一会儿,发现没有我要面试的那家公司的名字,正在疑惑中,看门的大妈看我形迹可疑,便过来问我要去哪个公司,我于是挠头,不知如何答复,突然间我发现昨天叫我面试的公司的房间号,这是在昨天电话里告诉我的,那里写着一个另一个网络公司的名字,我便将错就错,说我要到这家公司去面试,大妈也便放过我,告诉我在前面上电梯就好了。
  
  上了楼,发现那个房间在走廊的尽头,走进去,还算比较大的房间,里面有些人正在电脑前奋战着(或者说是扯淡着),还有不少位子空着。前台没有人,我不知如何是好,便出门来给昨天打电话给我的MM拨个手机,她接了电话说找一个叫LL的人就可以拉,她现在在外面,要等一会儿才能回去。我于是又返回那个房间,随便找了个人问LL在不在,他说刚才还在呢,你现在这里等一会儿吧,不一会儿,一个胖子过来问我是不是来面试的(后来知道他就是LL),然后把我请到旁边的一个会议室里面,随后,又进来一个瘦子,精瘦精瘦的,两个人反差奇大,我感觉那个胖子的身体可以装下两个瘦子。
  
  和胖子说了几句,才打消了我的疑惑,原来这家WWWX公司刚刚成立很短的时间,是一家创业公司,公司暂时没有自己的工作地点,只好寄在他们的一个合作伙伴的工作场所里,这也就是为什么我在下面的公司列表里找不到这个公司的原因。胖子是这家公司的市场总监,瘦子则是主管技术的。胖子一看就是一个能说会道的人,整个面试过程基本上都是在听他扯,他说这个公司起点是比较高的,比如有中华网的原执行副总裁什么的,还说融资非常顺利,马上就会有多少多少平米的写字间,公司在未来的几个月就可以见效益,这在众多创业公司中是比较难得的云云。我也饶有兴致的听,因为我对创业型的公司还是比较感兴趣的,毕竟这是一种相当大的挑战,趁着自己还算年轻的时候经历一些挑战不是什么坏事情,富有激情的创业也是很多像我这样的人的梦想。那胖子继续扯,说如果我进入公司,将来肯定就是公司的元老,而且希望我能够尽快掌握管理的知识和技巧,因为我很有可能在未来带领一个团队……几轮唾沫飞过之后,他们简单问了问我是否懂得mysql啊,或者asp啊这类东西,当然我对这些东西都不是很熟,我也对他们找我来面试多少表示了一些疑惑,毕竟我和网络这方面的东西挂不上钩,他们对此也没有表示什么,面试就这样结束了,胖子临别时跟我说他们的HR会在明天和我讨论一些薪资什么的事情,一切的一切好像是我已经被这家创业公司录用了一般。然后那个瘦子送我到电梯口,因为都是搞技术的,就又随便聊了几句,知道他是清华毕业的,在空中网干过。
  
  离开了科伦大厦,我顺着原路溜达回大北窑,突然发现有一个大楼上面写着HP,旁边一个写着MOTOROLA(这个就该是MOTOROLA大厦吧,想起我拒掉的瞬联了,有点可惜),便发短信给Carrot问他是不是在大北窑上班,他说是,就在那个HP大楼里面,我回短信说今天就不和你聚了,我还要赶回去。想来Carrot在望京买的房子,如果每天从望京赶到大北窑来上班,也确实是一件非常痛苦的事情。
  
  第二天是面试IBM的日子,我往上地赶也是一件非常痛苦的事情,继华为面试之后,我第二次赶往上地。因为是上午的面试,因此我很早就从大爷家出来了,可是,人算不如天算,此言不虚。坐的公交车在刚过丰台的地方就被堵住了,花了不少时间,后来到中关村的时候,又堵住了,就因为堵的这两次,等我在上地下车的时候,时间已经是十点了。当我还在中关村的时候,我给IBM打电话,想告诉他们我现在堵在半路上,可能会迟到,但是不管我拨几次,电话都没有人接听,看来迟到是在所难免了,更何况我还不知道得实大厦的位置呢。
  
  还是象上次那样,打探了多次,才有人知道得实大厦的位置,是在上地东侧比较偏的地方,和华为的奎科大厦一个毛病,在它的正面,没有任何字样说明这里是得实大厦,不过在它的楼顶有一块牌子,上面六个字母“DESCOM”,因此我可以猜的出来这里大概就是得实大厦,问了门口的保安,他说这里就是。
  
  等我摸到IBM门口的时候,已经是上午十点半,我犯了面试的第一大忌,就是迟到!进门去跟前台说我是面试的,不小心迟到了,但是刚才打电话没人接,前台问我打的什么电话号码,我报完了之后她说这个是会议室的电话啊,我faint!是我记错了,还是通知面试的人自己发昏?前台没多说别的,让我等一下,不一会儿,一个小个子从里面出来,把我带进去,领到一个小会议室,后面又进来一男一女,加在一起面试我的共有三个人,可以说这是我参加面试以来人数最多的阵容了。之前的那个小个子比较清秀,而后面进来的那个男的挺帅,留着长发,看那个样子不象是搞研发的,去参加一些选秀节目更合适一些,他们两个每人抱一个笔记本,都是IBM的,嗯,是不是该说是lenovo的呢?还有那个女的,容貌一般,岁数不小,猜不出是什么职位。
  
  那个JJ先让我用英语自我介绍一下,我当时在外面赶路的忙乱心情尚未收敛,一时间不知道该说什么好,随便的搞了几句就停住了,她过了几秒抬头问我:“说完了?”我点头,然后他们就开始用中文问了。我犯了面试第二大忌,自我介绍过分简略。
  
  他们还是主要围绕我的简历来问,这些东西在其他公司的面试中已经说过不少遍了,于是我继续扯,整个扯的过程感觉他们对我说的东西丝毫没有兴趣,也让我没有了说的兴致。除了我的项目经验之外,他们还问了我一些软件研发流程的东西,我只知道中兴的,其他企业如何我也不清楚,因此按照中兴的开发流程blablabla。这个时候悲惨的一幕发生了,我的手机响了,因为今天来得忙乱,居然忘记改为静音模式,一条短信进来了,会议室里气氛本来很安静的,一下子被我的短信声破坏掉了,我只好说对不起,忙把手机改为静音。我犯了面试第三大忌,手机没有关掉。
  
  有了这三大忌,基本上面试可以告吹了,我不得不接受这个事实。他们后来也没问我什么,只是问我的简历中求职意向只写了研发类职位,有没有考虑过测试类职位呢?我说我对测试职位不是太感兴趣。后来我知道,IBM招的相当多的人都是去做测试的,看来他们觉得我做研发还不够格,想把我安置到测试那边去。
  
  从得实大厦出来,看看手机,是中兴同事W发过来的短信,问我工作怎样了。我真是哭笑不得,虽然短信不是直接原因,但毕竟影响到面试了,看来进不了IBM是早有定数啊。
  
  经验总结4:面试中的一些小细节必须注意,比如不要迟到、手机关机等等,可能直接影响到面试的进程。
  
  这里有必要提到的一点就是,IBM的面试是我整个求职过程中感觉最不好的面试,当然我确实犯了一些很低级的错误,但是这还不至于把面试引到一个糟糕的气氛中,而面试我的三个人态度一直很冷淡,并给人一种高高在上的骄傲感,从态度上就给面试者施加了不少压力。尤其是那个JJ,在听我介绍我的项目的时候,居然打起盹来!!!在看各种面试攻略的时候,里面曾经教导我们说,如果面试官不断看表或者打起哈欠的时候,表示他对你的讲话不感兴趣,或者说你说得太多了,但是如果面试官打起盹来这种情况又该怎么办呢?难道我的介绍已经无聊到让人昏昏欲睡的地步了?这一直是让我耿耿于怀的事情,也使我对IBM的印象变得不好起来。
  
  IBM的面试我自己的感觉就是完蛋了,因此后来也就没有抱什么希望了。但是那个创业公司,后来一直没有给我消息,说是HR和我联系,也没有动静。三天后我发封邮件过去问了一下,那个市场总监回信说公司正在处理最紧要的事情,希望以后还能有合作的机会,言外之意我是去不了这个创业公司了。
  
  面试完IBM,我觉得有些疲倦,一周内三次面试,每次都是花几个小时的时间在路程上,还有华为的那次车轮大战,搞的我筋疲力尽,有一种想要休息的冲动,要么没有面试,要么就来得这么密集,如此征战还是真的需要过人的精力啊。

一个人北漂的日子:北京求职90天纪实 —— 第五部分 柳暗花明

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区

  
  上帝在这里关了门,却在那里开了窗。 ―――― 西班牙谚语
  
  7月10日的凌晨,齐达内一头撞向马特拉齐,一代巨星告别绿茵。
  
  世界杯结束不久后的一天下午,突然接到MOTO的电话,电话里的男声上来就说我的经验和他们的要求不是很符合,我于是很郁闷,既然不符合的话,那你还打这个电话干什么呢?然后他又说要测试一下我的编程技术,问我const是什么意思,我blablabla,然后他又问我有没有接触过BSS,我说没有,最后他又问了一个算法问题,关于位操作的,我blablabla,之后他就没说什么,挂掉电话了事。从这个电话开始,到这个电话结束,我始终没有搞清楚他的意图是什么,不过我还是搞清楚一点,就是MOTO对我来说也结束了,他能给我一次电话面试的机会也可以说是难能可贵了。
  
  时光慢慢流逝,不尽的等待确实可以磨平一个人的性格,我似乎也经过疲劳期,进入到求职的缓冲区当中,这段时间主要还是网上投简历,中国英才、前程无忧、智联、CSDN和newsmth是我经常去的几个地方,发现经历有那么点符合的就投,当然,我的原则是不能毫无概念地乱投,随便找个地方忍着,迟早会再回到原点,浪费时间和精力,必须要找到一个可以有一定发展余地的企业,哪怕只是一点点。
  
  7月17日,这个日子似乎永远和我有着千丝万缕的联系,五年前的这一天,对我来说也算是人生中的一点挫折,多少也有着一些纪念意义。下午一点半,我一如既往地发呆,电话来了,只要有电话能打过来就让我很高兴,忙接听,一个女声,先自报家门,NOKIA……NOKIA?!我用一秒钟的时间搜索了我的记忆,在我的简历投递过程中,NOKIA这个字眼出现在很早很早很早以前的六月初,那个时候我刚开始进行网投,在兴致勃勃地投过MOTO之后,觉得NOKIA也可以试一试,就到它的网站上看看,浏览了一通,发现根本没有适合我的职位,而且NOKIA的职位太少,软件职位就那么几个,不对口,于是就想放弃,但突然发现NOKIA也有简历库,这个和MOTO一样,管他呢,于是就把自己的简历放上去了,那个时候放上去的还是我简历的早期版本(就是在瞬联时被指出有误导嫌疑的那份的近似版)。
  
  思绪飞回,继续电话,电话那边的JJ说她们那边现在有一个手机软件开发的职位,她们从NOKIA的简历库里面搜到我的简历,看看还可以,问我是否对手机软件的开发感兴趣?这种问题问不问都一样,NOKIA什么开发我都感兴趣!于是我说挺感兴趣的,她便问能不能占用我一些时间做一个简单的了解?当然可以!不料这位JJ毫不客气地转为英语了,我马上按耐住即将暴走的情绪,找到屋子里信号比较好的地方,弓着身子准备回答(只有弓着身子的位置信号是最好的)。她先让我介绍一下自己,唉,又来了,扯吧,幸好是电话面试,电话面试的好处就是即便是英语自我介绍也可以不用过分拘泥于长度,简单几句差不多说清楚就可以了,然后她就又问了些open question,现在有些想不起来了,好像问到了为什么离开前公司这种经典问题。另外印象极其深刻的就是自己在没听清她的问题的时候,没有用sorry,没有用pardon,没有用repeat,没有用again,居然用的是“え?”上帝啊,为什么第一反应出来的是这个东西?日本动画片看多了真的会有后遗症!幸好很多语言中这个发音都可以表示为没听清的意思,但是放在英语里很不伦不类,好在JJ没有计较这些,按照我没听清的路线走下去了,否则后果难以设想。
  
  英文大概扯了十多分钟,我已经汗流浃背了,好在她转为中文了,不过没继续两句就说“好的,你的情况我基本了解了,如果有什么进一步的消息我会及时通知你。”然后留下她的手机号,就挂了电话。整个过程基本没涉及到技术,都是一些很普遍的问题,当时我也非常纳闷,因为我的从业经历中,无论如何也找不出和手机开发相关的东西来,使劲挖掘的话,也许同属于通信行业算是一个共同点,其他就没什么了。不知道老天爷是不是吃错了不对症的药了,还是我前一阵子积攒了一个多月的人品值终于给了我一个bonus?不得而知,但是有面试终究是好的,何况还是NOKIA。
  
  第二天,奇迹发生了!还是下午,昨天那个JJ又打电话过来,说根据昨天的考查和我的简历,认为我和这个position的要求比较meet(这种搀和着说英语的方式还真不大适应),希望我能在7月25日,也就是一周后,到长虹桥盈科中心来面试。她还介绍了一下面试的大致过程,首先是一个小的的paper test,就是简单地考考C语言拉,然后是一个技术面试,最后会有一个general interview。
  
  这绝对可以算作是利好消息了!我急忙开始了对NOKIA面试的准备,首先是到网上查看各种关于NOKIA面试的面经,还有面试相关的各种题目,后来发现都和我这个职位不符合。然后又再次来到NOKIA的网站上,查看一下这个职位的要求到底有些什么,发现还不是很符合的样子,问号一大堆,不管了,照这个要求准备一下吧。想来想去这次是正式面试了,上次糊里糊涂的英文恐怕是瞒不过去了,于是马上开始准备英文的自我介绍和项目介绍,抓起笔来稀里哗啦,写了大概长3分钟的自我介绍和大概10分钟的项目介绍,多了我也写不出来了,就这么点儿水平。
  
  这次的面试预约的时间比较长,以前都是约在第二天或者第三天,而这次却是一个星期,有时候时间长了就会变得比较闹心,准备工作到最后两天时也容易变得粗枝大叶,总之我在临近25日的时候已经有些焦躁了。
  
  25日总算到了,那是个周二,和面试华为时一样,也是一个雨天(后来的事实证明,两个雨天带来的结果是很类似的)。因为从没有到过长虹桥这边,因此还是早早动身。大北窑还是基本熟悉的,但是在大北窑找换乘113路车的时候稍稍有了点麻烦,为了找车站转了一段时间,好在时间充裕得很,慢慢找就好了。
  
  113路车在长虹桥转了弯,刚转过去,我就看到一幢大厦,上面大大的牌子“诺基亚”,就是这里了。下车之后看看时间,我觉得我还要做两件事情,一是找个地方吃点东西,不能象面试华为似的空着肚子奋战;二是把简历打印出来,因为诺基亚手中的简历还是我早期的版本,所以我手上的简历应该和那份保持基本一致。
  
  顺着诺基亚大厦前面的街道我向东走过去,过了路口不远看到一家麦当劳,心想就在这里凑合一下吧,正巧旁边有一家图片社,吃完东西还可以打印东西。进了麦当劳,随便点份套餐,找个座位坐下,一边吃一边想像面试可能进行的方向,如何应对的策略等等,说实话,面试这种东西我还是不大会对付的,因此所谓的准备事后都证明是比较失败的。在麦当劳里待了半个多小时,觉得时间差不多了,便出门到旁边的图片社,象图片社这种地方打印非常黑,一张A4的打印居然要收我1块5,这还是讲价的结果,要不是我急着要用,鬼才在这里打印呢,打印的效果也很不好,激光打印机还不如喷墨的效果,纸上灰蒙蒙的,还有几条竖线,效果还比不上三流的复印机,心里咒骂两句,甩给他六块钱。
  
  回到NOKIA Tower下面的时候时间刚刚好,从门口进去,到前台一位黑色制服的MM那里说我是面试的,她问是哪家公司,我说诺基亚,她就往里面指,说诺基亚的工作人员在前台的另一侧。我便过去,前台mm问过我要找的人的姓名,然后给我一个登记表,在我填表的过程中给上面打电话。我填完表,前台mm也打完了电话,给我一个visitor card,告诉我上15楼。
  
  诺基亚的门禁很有特点,就像地铁的刷卡入口一样,有三条员工通道,进去的时候需要用员工卡刷一下才能通过,不然警报就哇啦哇啦地响。还有一条通道是为visitor准备的,持visitor card的人从这条通道出入。通到过去往右一拐就是电梯,进电梯上15楼,发现这座大楼的楼层设计和百度的银科大厦很相似,都没有外国人讨厌的13层和中国人讨厌的14层。
  
  到了15层,大厅的mm打开门让我进去,问我找谁,我说了那天给我电话面试的JJ的名字,她告诉我坐在边上的沙发上等一下。我坐着等的时候发现大厅里左右有几个玻璃橱窗,里面陈列的都是诺基亚各种型号的手机,布置得很华丽的样子。正看着,一个JJ走过来问我是不是某某,看来这就是面试我的那位JJ了(以下称她为G),她把我领进一间小会议室,告诉我按照最初的计划要进行一个小的笔试,然后另一个GG进来给我一份题目和两张纸,说大概半个小时,半个小时之后他会回来继续后面的面试,说完就出去了。
  
  我看看题目,分三个部分,第一部分是名词解释,const,enum,virtual之类,我想既然是外企,整套题目也都是用英语出的,那我就用英语解释吧,虽说我用英语表达不算顺畅,但是解释这几个名词还算凑合。第二部分是一道程序阅读题,主要是考查局部静态变量,只要是用C语言开发的人都知道这种题目都出烂了,我随便算算便写下答案。第三道题目是超级经典的链表倒置,这道题目定义局部变量三行,循环一行,中间处理四行,除去大括号,如果程序体写超过八行就浪费了。当然为了表示俺是professional的,函数参数正确性判断还是要加上的。
  
  写完之后,半个小时基本上也就到了。之前的那个GG准时地回到会议室,后面还跟着另外一个GG。简单称他们为AGG和BGG吧。技术面试永远是那么老一套,上来就是谈谈我之前的项目,我照旧blabla,这一套我都已经很熟了,当初在中兴的时候如果让我介绍一下我的项目恐怕都没有现在那么熟练,两位GG在听过我哗啦哗啦的介绍之后,随便挑了几个细节问了一下,之前还特别声明“在不涉及保密的前提下”,呵呵,这个尺度我还是能够把握的。然后BGG问我对软件开发流程知道多少?最规范的流程我不知道,我只知道中兴的流程,当然,软件开发流程并没有所谓的“最规范”,因为这作为软件工程的一部分,就像各种学术流派一样,存在很多版本,中兴的版本虽说算不上优秀,至少该有的东西都有了,可是当初我在中兴的时候,流程有时候走不足,于是流程就变成了空架子。我当时所在的开发组算是流程最规范的一个,所以整个流程我都比较了解。我叽里呱啦介绍一番,两位GG在中间插着问些问题,不知不觉的半个小时就结束了。
  
  两个面试技术的GG出去,之前的GJJ带着一个年纪稍稍大一点点的GG回来(以下称NGG),他们要和我做最后的general interview。G坐定之后,就笑着对我说这些问题可能我已经都回答过了,不过在这里我还是要再回答一遍,首先是介绍一下自己吧。我试探性地问是用英文么?她笑着说不用,中文就好拉。其实我中文的自我简介和英文的没啥本质上的差别,本来就那些东西,用什么语言都无所谓,内容是一样的。介绍完自己的求学工作等经历,他们就开始问一些对工作的想法拉,对技术的看法拉,对某些特定工作的看法拉,对枯燥工作的看法拉,研究技术的时候喜欢深度还是喜欢广度,诸如此类的东东,我就本着我的想法扯了。面试快结束的时候,GJJ问我是不是可以接受subcontract这种方式,我愣了一下,根据字面分析我想应该是和瞬联的外包一样的性质,但为了保险,我还是假装表示不大了解这种形式,她就给我稍稍解释了一下,果然是这种,我就说也可以考虑,但是我还是想最好能够是诺基亚的正式员工。G又跟我解释说,subcontract这种形式是其他的组再用,她之所以问是因为即便她这里最终没有收我的话,我还是可能会有被其他组面试的机会,那里可能会有这种合同形式。面试结束的时候,NGG说,如果在两个星期之内没有接到消息的话,就说明这个职位已经确定人选了,就可以不用再等消息了。我听到这些话感到有点儿玄了,不过NGG最好还是补充解释一下他对每个面试者都是这么说的。
  
  然后他们送我到电梯,NGG在等电梯的时候问我“如果这次面试没有成功的话,你认为原因可能是什么呢?”好狠的问题,我一时语塞,支支吾吾地说大概是因为我的经验吧。他们两个笑笑,和我一起进电梯,然后在9楼离开,告诉我到一楼把visitor card还了就可以了。
  
  离开NOKIA Tower之后,心里想所有的英语介绍都白准备了,整个面试全程中文,除了最开始笔试的时候用了点英文之外,但是回想着他们最后说的话,心里想估计诺基亚也不行了。外面雨差不多停了,我夹着雨伞和没用上的简历悻悻地按照原路返回。坐车回去的途中,大概六点刚过的样子,一个电话打进来,居然是腾讯,约我在周六上午参加面试。
  
  然而事情还没有结束,第二天早上九点多钟,又接到一个电话,居然是朗讯,约我在周六上午参加笔试,我faint,第一次面对撞车事件!怎么办?朗讯的HR很坚定地告诉我说笔试时间不能更改,而且本次招聘只有这么一次笔试。看来只能在腾讯身上打点主意了。按照昨天腾讯的电话拨过去,说自己因为有事,希望能把面试后退两个小时,对方没有反对。挂上电话我长长出一口气,还算顺利。
  
  在失望过后,却又把希望点燃,上帝混的就是这口饭。

一个人北漂的日子:北京求职90天纪实 —— 第六部分 十面埋伏

2006-11-9 17:20:00 文/矮子鼻儿 出处:天涯社区

  第六部分 十面埋伏
  
  我非佛,佛亦如何?
  或许佛不如我
  愿携一魔
  魔舞,我歌
   ―――― posted at BBS of NEU by Haibara
  
  朗讯的笔试安排在朝阳门外中国人寿大厦的五层环亚会议中心,时间是上午的十点半,又是上午,我又只好早上早早出门,紧赶慢赶到了朝阳门,那个人寿大厦倒是挺好找的,旁边就是外交部。
  
  进了大门到保安处登个记,乘电梯上了五楼,发现在我之前已经来了好几个人,因为我来得稍稍有些早,根据已经到达的人数计算,我想今天参加笔试的人应该不会少,果然,人陆陆续续从电梯上来,大概估计一下,有二十多人。这些人当中,有些看起来是老江湖了,有的看起来明明就是应届毕业生。
  
  笔试通知的邮件里说的是十点钟到达,等到十点刚过的时候,HR从会议室里面出来请我们进去,进到会议室的时候首先要验明正身,HR会拿着身份证对照一下本人,这是我头一次参加笔试或面试被对照身份证的,朗讯也真够迂腐。对过身份证之后,拿个座位号便进了会议室,我的号码正好在会议室的最右边,靠墙坐下,看看时间,还有十多分钟。
  
  快到十点半的时候,我仔细看看会议室里的人数,应该是三十二三个人。HR在前面絮絮叨叨地讲些考试纪律,然后把题目发下来,有人要草稿纸,HR说在题目的背面就可以,又是一个奇怪之处。
  
  题目涉及的范围比较广,首先是有关操作系统的,第一道题是解释一下进程和程序,这个不是很难,一个是动态的概念,另一个是静态的。第二道题至今想起来都让我感到非常失败,那个问题是linux下文件权限里面的x只的是什么权限,如果是文件夹的话x权限又指的是什么,如何更改文件的权限呢?说实话真是一道简单题目,可是很可惜,我把x代表什么权限忘掉了,更加准确地说是我以前对linux的文件权限就没怎么太留意过,关于权限我也从来没有在项目中接触过,懂得一点linux知识的人都该知道x指的是execute,是文件的执行权限,对文件夹来说是加入到搜索路径的权限,可是我当时没往这个地方想,于是瞎想了一个就写上去了。后来回忆至此,很郁闷当时为什么没有想到x是指execute?
  
  后面的题目是两道程序阅读题,都是字符指针相关的东西,只要稍稍细心就可以了,我记得大概就是给两个字符串,然后用两个指针指向它们,或指向它们其中的一项,然后移动指针,移动后修改当前的字符,最后将修改过的字符串输出,要求把输出的结果写下来。两道题都是这个样子,考查的东西比较近似,不知道为什么要出两道。做题的时候需要细心一点,因为里面布下了数组下标是从0开始而不是1开始这种陷阱,还用指针和数组之间的转换加大一些难度,其实这都是C语言里的基础,只要细心一点都不是问题。
  
  后面还有一些关于通信网络的问题,比较让我郁闷的是“如果在实验室电话打不通,而控制信令流程却没有问题,问题出在哪里?”和“解释ATM和局域网”这种我超级不擅长的问题,毕竟网络的东西我已经好久没有接触了,而通信的东西在中兴这一年当中确实也没学习到多少,这种题目我无能为力,于是只好一通胡乱作答。
  
  题目大概就记住这么多。当我答完的时候,抬起头来,发现不少人也显得很痛苦,呵呵,看来大家也是经验不大符合啊。不管了,反正不会的东西瞎编也不会增加分数,于是提前了十分钟交卷,赶往中关村,下午还有一场腾讯的面试等着我呢。
  
  本来时间就比较紧张,我却坐错了车,当公交车开到清河南的时候,我终于发现旁边是八达岭高速公路,知道自己一定是坐错车了,那趟车本来是环线,我的想法是坐这趟车到二环路另一边的西直门去的,事后我才知道,那趟车的“环线”其实是一个环加上一条大尾巴,而我当时就拐到那个大尾巴里面去了。
  
  下了车,马上到马路对面换了一趟车,从清华大学那边绕过去,在中关村下车,赶到银科大厦的时候,刚好是约定的一点半。
  
  上了16层,门口站着一个保安,很客气地说“欢迎到腾讯,您是来面试的吧”,然后就帮我开门,让我多少有点受宠若惊的感觉。进去以后,前台问我的姓名,然后在一个登记簿上找我的名字,我看到那上面只有我的名字前面没有划勾,其他人都划过了,我想其他人都是上午面试的话,只有我被推迟到下午来了,面试官能一直在这里等我让我觉得蛮感动。前台在我名字前勾了一下之后,让我稍等一下,不一会儿,便把我领到一间办公室。
  
  办公室里一个技术经理样的人示意我坐到桌子的对面,不大的办公室里桌子占去了不少空间,让我觉得空间有些狭小。面前这个面试官就是打电话通知我面试的人,我就称他为R经理吧。R经理首先还是让我介绍关于我之前的项目,这个都已经让我感到腻了,但还是重复一遍吧。介绍完了之后,他给我出了一道题目,就是在一个循环有序的数组里查找特定值,循环有序就是指数组里的各项都是有序的,但是最小值却不是数组的第0项,而是其中任意一项,然后逐项递增,到数组尾的时候再继续从第0项开始向后排列。在这样的数组中查找就不能直接使用二分法了,我思考了一会儿,觉得可以使用一个二分法的变形,除了判断中心值之外,还要判断两端的值,以此确定循环开始点在中点的哪一边,并判断所查找的值是否在循环起始点的那边,并采用不同的处理方式。虽然仓促,但是这个解法基本上还是可以的,R似乎也觉得差不多。
  
  此后R就关于我的经历又问了些问题,其中的焦点就在于我之前是在通信行业,而腾讯是一个互联网行业,这两者之间的差异比较大,而我需要怎样来适应新的行业的问题。的确,我对互联网行业所知也是甚少,但我对这个行业却有着不少的兴趣,尤其这个职位可能和搜索有些关系,能够直接与各大经营网络搜索业务的公司如百度、雅虎、google等进行竞争,单单是听起来就足以让人兴奋了。
  
  面试最后,他又给我出了一道题目,这次就不是简单给出算法了,而是要把程序写下来。题目就是在一个已经排好序的数组里面把重复的值删除掉。出完了题目他就出去了,留我一个人在办公室里。这道题很简单,但是有时候容易想复杂,我的方法是用两个指针,前面的指针如果发现当前项和下一项值不同的话,就把下一项的值拷贝到后面指针的下一项中,两个指针同时后移;如果发现当前项和下一项值相同的话,前指针就向下移动,后指针不动。这样就可以把数组中重复的元素删除掉了,整个程序除掉大括号之外,我只用了六行就完成了。
  
  过了一段时间R回到办公室来,我把写好的程序给他看,他愣了一下:“这么短啊?”我一笑:“这么短就够了。”然后他坐下来,和我一起研究我的程序,我给他讲解。讲解的过程中还出了点小麻烦,我以为我的一个判断条件出了错,就改了一下,后来发现其实没有错误,于是又改回去了,耽误了点时间,但是结果是正确的。
  
  R让我到办公室外面去稍稍等一下,他似乎要在办公室里面填一个面试表格的东西。我便到外面去等,一边等一边观察周围的环境,发现腾讯的隔断比较低,坐的临近的两个人中间没有隔断,互相可以看到在做什么,不大爽。
  
  不一会儿,R拿着填好的表格跑到旁边的一个办公室里,两三分钟后便和另一个经理样子的人出来,跟我说这个经理会继续和我谈谈。我跟着那个经理进了办公室,他给我倒了杯水,便和我谈一些很普通的问题,这些问题都是在其他公司面试时遇到过的,没有什么特殊的地方,应该算作是一个general interview,很轻松。谈罢他送我出去,告诉我他们周一一般都会开会,所以他们会在周二或者周三给我消息。
  
  一天的忙碌下来,又是笔试又是面试,我已经筋疲力尽,也没跟同一座大楼上面百度的M打招呼,急忙忙地赶回去休息了。早上的笔试感觉不大好,不知道会不会有面试的机会,但是下午的面试基本上还是比较成功的,虽然跨行业,但是在技术上我的表现不差,如果他们不过分关注我的经验的话,应该有希望。
  
  建军节,上午朗讯的电话过来了,说笔试已经通过,希望在周六去参加他们的面试,地点是望京科技园。下午,腾讯的电话过来了,说希望在第二天去参加他们的HR面试。
  
  腾讯的最初的面试消息来得算是最晚的,但是现在它的进展却超过了NOKIA和朗讯,几乎已经逼近到最后的一步了。
  
  第二天,下午我再次赶到银科大厦,现在这座大楼对我来说已经不很陌生了,这次已经是我第四次来到这里。上到16楼,一个HRmm领着我到腾讯的研发区去,因为没有会议室,所以就让我在靠窗的一个圆桌处坐下,后来知道腾讯的人一般用那个桌子来吃午饭。HRmm安排我坐下后说一会儿就会有人来面试,这“一会儿”持续了大概二十多分钟,在这二十多分钟的时间里,正好还赶上腾讯播放办公室瑜伽,挺有意思的。研发区里人还不是很多,相当多的位置是空着的,看来他们还有不少人要招。
  
  “一会儿”过后,一个HR经理样子的人过来,下面就开始重复以前面试的内容了,无聊的问题重复一遍,所有的HR就是靠着这些问题吃饭的,我为了让他们能够养家糊口,很配合地回答这些问题。这次面试进行得比较彻底,因为他已经开始问我今年是否体检过,毕业证是否已经拿到这种问题了,后来他问了我一下期望的薪资,我报了一个数,后来被别人鄙视了一下,说腾讯应该能出到比这个数高的薪水(这个数就保密一下吧)。
  
  整个面试的过程还没有刚才那“一会儿”来得长,不知道是否可以称之为“一瞬”,总之一瞬间面试就结束了。HR经理闪展腾挪般在隔断围成的迷宫中离开,开始接待我的那个HRmm送我到门口,告诉我说下周五之前应该有结果,如果她忘记的话,可以打电话提醒她一下(狂faint)。
  
  离开银科,正巧清华的Q博士给我发短信,问有没有兴趣过去吃个饭,因为刚才的面试加在一起只有一会儿和一瞬,因此时间还早,我便挤了公交车跑到清华西门,Q博士提议去吃烤肉。吃烤肉的过程没有什么可提的,但是在这个过程中,大概五点钟的时候,又一通电话打过来了,我一看号码,知道是NOKIA!小心翼翼地接通,电话的那头,一个男声告诉我说,希望能在下周二到雍和宫的NOKIA参加一个人事测评。
  
  本来对NOKIA没有抱太大希望,这下子希望之火又熊熊燃烧起来(汉语很奇特,为什么是火焰是熊熊的而不是虎虎的呢?)。我急忙上网去做NOKIA人事测评的功课,用了很多种关键字,收获也颇丰,查找到很多有价值的信息。
  
  如果大家上网查一下NOKIA的面试的话,很容易查到它的人事测评,这是NOKIA非常有特点的一种测评形式,基本上来说,和具体的职位没有什么太大的关系,而是直接考查面试者的性格与态度。一般来说所有的参评者都会经历一次团队合作,以及多个性格测试已经书面问题,最后会有一个HR的面试。但是不同的时候,面试的内容还会稍有不同,比如技术面试,英文面试等等,因为我的技术面试已经结束了,因此我想这次人事测评不会问我技术方面的问题。
  
  这个时候,我突然有一种感觉,觉得我离终点已经非常近了,这种毫无理由的预感对我的精神产生了相当大的刺激,使我有一股无名的力量从身体内部爆发出来,NOKIA、朗讯和腾讯,这三个地方我必须拿下一个!

一个人北漂的日子:北京求职90天纪实 —— 第七部分 最终幻想

  第七部分 最终幻想
  
  你注视他
  他就会燃烧
  把你的目光烧成一堆灰烬
   ―――― 慕容雪村 《成都,今夜请将我遗忘》
  
  在NOKIA测评之前,我还有一场大仗,就是朗讯的面试。朗讯的面试从来都是非常有特点的,就是要求面试者用powerpoint做一个英文的项目presentation,长度为二十分钟。这个我就要好好准备一下了,做powerpoint虽然不是什么难事,但是全程要使用英文就有些困难了,powerpoint的页数还有限制,那么我在每一页上都需要自己设计好要花的时间,因为太长了会超过限时,而太短的话又会不足时长。还好准备的时间比较充裕,在这个powerpoint上,我算是花了不少的心血,包括介绍哪些东西,每种东西占用多少页,每一页介绍的时间长度,都需要我认真考虑并不断修改,以达到良好的效果。
  
  8月5日,这是朗讯面试的日子。我来到望京科技园,这里实在是太远了,我花了将近四个小时才来到这里。朗讯的大楼非常好认,因为大楼顶上一个大大的牌子上面画着朗讯的标志――圆圈。
  
  进到朗讯的大楼,被保安告知上到二楼,来到一个好像平时搞活动的大厅里,大厅里摆着一些桌椅,我进去之后HR便递给我一张表格要我填写,都是些个人的基本信息。填完表,HR告诉我一会儿面试的时候把表格交给面试官就可以了。
  
  面试的时候已经快11点了,我被安排到一个小会议室里,一共有三个面试官在等着我,左面坐着的是一个女的,右面两个是男的,这使我突然想起了IBM的面试,完全一样的排列方式,顿时觉得晦气。坐下来之后,把优盘插到面前的dell笔记本上,三个面试官通过一个旧的17寸显示器来看我的powerpoint。
  
  开始介绍了,我叽里呱啦的英语喷涌而出,说实话我的口语实在拿不到台面上来,勉强凑合而已,而且在我介绍到中间的时候,我发现我说的有些太快了,比正常的预定时间少了一些,便努力地往里面在添油加醋。然而左面的那个女面试官在我基本上快要介绍完的时候打断我,让我把后面的部分用中文介绍就可以了,因为面试开始的稍稍晚了些,时间不多了。
  
  Presentation做完之后,两个GG便开始对我进行轰炸了,这是我有史以来接受过的最猛烈的轰炸,因为很多问题都是我没有接触过的,比如移动通信的信令流程,UML等等,最让我感到郁闷的事情就是,C++里共有继承和私有继承的问题,这个地方我从来没有注意到过,以前都是使用共有继承的,没有考虑过私有继承。面试之后我翻书发现,私有继承实际上和组合比较想像,应该说是一个设计概念,而不是具体的实现概念,具体实现中私有继承使用比较少,因为大多数情况使用组合更加清晰。但是私有继承还是有它的应用之处的,比如防止对父类的错误应用而将它的构造函数设置为protected,然后在子类中私有继承父类,这样父类就只能使用在子类中,而不能产生对象。
  
  总之一句话,朗讯的面试很痛苦,而且就像我最开始说的,不但面试官的座位方式和IBM很类似,就连面试过程都非常相像,不同之处在于,我没有犯之前的低级错误,他们的态度也不是那么傲慢,但结果很不好,因为我的经验与知识确实无法应付他们的问题。
  
  从小会议室出来以后在刚才的大厅里面等,我是出来的比较早的,过了一会儿,其他人也便陆续出来了,几个人坐在一起讨论,说朗讯问的技术问题都太细了。然后我们相互打探了各自的身份,很多都是从各大通信公司逃出来的和即将逃出来的。不过说实话,经过朗讯的面试,我对朗讯的感觉也不是很好,有些古板的样子。
  
  过了一会儿,HR叫我过去,说今天的面试就到这里结束了,如果有进一步的消息的话,他们会通知我的,我可以离开了。和我一起走的一个华为的兄弟在出门之后对我说:“看来我们两个都不行了。”我笑笑,我也有这样的感觉。之后,我顶着炎炎的烈日,又花了四个小时回到住处。
  
  8月8日很快便到来了,我又要去和NOKIA亲密接触了。因为NOKIA的人事测评从来都是持续一整天的,因此这次我起得比之前的几次都要早,而且第一次在赶往面试地点的时候坐了地铁,因为要赶时间嘛。到了雍和宫,看到了HR形容的那个NOKIA的院子,好像是和另外一个国企在一起的,进门的时候门房里面三个典型的国企欧巴桑负责为外来者登记,在我之前的一个司机登记之后,三个大婶向我挥挥手:“你跟着他进去就行了。”
  
  进了楼门,感到这座楼的内部不是很大气,显然是重新装修过,装修之前我想一定是什么机关办公楼吧,从狭小的门厅就可以感觉到那种味道。前台知道我是来参加人事测评的之后,便告诉我在厅里的沙发上等一下。我看看时间,大概还有十五分钟的样子。过了几分钟,一位兄弟走进来,还打着领带,很郑重的样子,好像也是来参加人事测评的。这时之前为我面试的GJJ从里面出来,看到我坐在那里便叫我进到走廊左侧的第二间屋子里。
  
  进去以后发现我之前已经有一个穿黄色衣服的mm坐在那里填表了,我便也找个位子坐下,后面跟着那位领带兄弟。刚坐下,一份表格便摆放在我面前,并被告知用英语填写,嗯,这是网上提到的,每个人都会填写一份英文表格,其中只有住址是可以用中文的。
  
  正填着表,后面又进来了三个人,两女一男,男的年纪好像稍长,背个大包。三个人坐下之后,也都得到一份表格,但在他们开始填之前,发表格的HR便让我们暂时停住,说人事测评现在就开始了,然后自我介绍了一下(此后叫他A先生)。曾经给我general interview的GJJ和NGG都在列席,看来他们是来检阅我的表现的,另外还有销售部和人事部的人在场。
  
  人事测评的第一步,上网查过的朋友们应该都知道了,就是NOKIA著名的动物园游戏,这个游戏好像n年不变,自从有人事测评以来,就一直是这个游戏。游戏的规则基本上是这样的:我们六个人要组成一个策划小组,在一个别人捐赠的小岛之上建一座动物园,这座小岛用一张地图来表示,面积大概200公顷(两平方公里左右),岛上有可以利用的阔叶林,还有平坦的地区、沙漠、丘陵、一片可以利用的海滩,岛中偏西南处有一处高地,上面有瀑布流下,并形成一条小河,将岛从中间分成两个部分,小河中还有一个面积不大的小岛屿;动物园计划建三个主题馆:爬行动物馆、海豚馆和鸟类馆,另外还有十二种动物;岛上常年盛南风;岛上还可以建很多种建筑比如宾馆、酒店、赌场、海滨浴场、网球场、直升飞机场、加油站、停车场等等;我们的任务是策划整个动物园,并在五年之内收回投资并有盈利,以我们的计划向投资委员会(就是坐在后面的各个部门主管)汇报并说服他们投资。
  
  在开始游戏之前,我们先相互认识了一下,这里只有我一个人是搞开发的,之前的黄衣服mm是搞测试的,背大包的GG是搞销售的,另外领带和后来的两个mm都是会计。我想今天的游戏可能会出问题,因为三个会计凑在这里,难免会把游戏重心引入到财务上去。网上对这个游戏的评价是财务部分不好做,但是做财务的人多了,恐怕也不大好吧。
  
  事实证明了我的担忧,全长三十分钟的讨论,我们只在最开始的几分钟里讨论了一下动物馆和建筑的放置问题以及交通问题,此后的二十多分钟,便陷入到“经济危机”当中,三个会计和一个销售“不可救药”地把游戏内容彻底拉向利润研究方向,其他的东西一概归于“细节问题”,不予考虑,我在他们忙着计算收支的时候提醒到我们是否应该规划一下肉食动物和草食动物的饲养地区,被销售GG以“过于细节”的缘由推掉了。当然,我并没有批评几位热衷于finance的同志,他们的职业特点决定了整个游戏必然向财务倾斜(假如这里有三个开发人员的话,财务问题最终便会成为噩梦),这是不可避免的,他们在财务上的表现也确实不错,只是其他问题忽略的有些太多了,我一个人是不可能把讨论的重点转移的,我和测试mm只好跟着他们在财务的泥沼之中挣扎,直到时间用尽。
  
  我们推举了一个会计mm来做陈述,当然她的主要陈述内容还是关于财务的,在她的简短陈述之后,A先生便牵头向我们发难起来。都问过哪些问题,我并不能详细的记起,但是必须提到的就是我们之前没有很好的规划动物园的布局,因此这也成了我们的硬伤,在这个问题上我们变得非常被动,“投资委员会”对此也比较不满,因为我们在讨论过程中把动物园最主要的部分――动物扔到一边,而且各种建筑的位置也比较混乱。我们对这个问题只能努力搪塞。还有当委员会提出要建赌场的时候,我和那个销售GG很坚决地拒绝掉了,A先生便“指责”我们说你们怎么可以这样生硬地拒绝掉一个投资委员会成员的请求呢?所以,如果以后有人再次去经历这个游戏的话,希望你能够婉转地拒绝掉赌场的要求,因为这是不符合法律的,这也很可能是NOKIA这个游戏的一个考察点。
  
  折腾了许久,这个游戏算是结束了,“投资委员会”们移驾到隔壁的会议室去商讨,我们则留在原来的会议室中。这个时候大家便开始闲谈了,当然讨论的题目和刚才的游戏没有什么关系。闲聊中知道,销售、黄衣服mm和领带是本科毕业工作过几年的,另两个会计mm是同学,硕士应届毕业。这里只有我一个搞开发的,我发现现在的形式对我非常有利,因为到这个阶段我很有可能处在一个没有竞争对手的情况下。
  
  快到中午的时候,传说中的永和大王送来了,唉,连中午吃的东西都和网上说的一般不二。味道倒是不错,就是油大了点,mm们似乎不大爽,那位销售GG倒是风卷残云,第一个吃完。
  
  下午继续我们的笔试,一切的一切还是如同网上介绍一般,二百五十六道题的性格测试,其中可能出现重复的问题,当然不是完全的重复,只是换了一种说法而已,这个是陷阱,当然在那种情况下你很有可能意识不到,当前一个问题摇摆不定而随便选择一个之后,再遇到近似的问题时,很有可能作出和之前的问题完全不同的答案。
  
  正在我们做二百题的时候,A先生又进来,发给我们那传说中的24道图形题,这个是有时间限制的,每道题都包含一个图形,然后我们要根据这个图形的特点,在后面的六个图形中找出和第一个图形类似的两个。网上介绍说这个测试时间非常紧,很多人做不完,我倒是不这么认为,我十分钟之内就做完了,不觉得有什么难度,那个销售的GG做的也挺快。
  
  A先生把图形题收走之后便又出去了,我们继续我们的二百题,在A先生进来发图形题的时候,我的二百题基本上也就剩下几道了,所以很快就写完,坐在那里发呆,其他人则继续奋笔疾书。
  
  按照网上的介绍,我们应该还有最后的一个open question的测试。果然,不一会,A先生又进来,把我们的二百题收了上去,发了一份开放问题的测试。同时,他开始一个一个地把我们叫到旁边的会议室去面试。第一个去的是销售GG,因为他说他一会儿要去出差,时间比较紧,希望能第一个面试,A先生同意了,于是他第一个出去了。
  
  NOKIA的开放问题很有特点,大家应该在网上也有所闻。比如八个工作因素的重要性排列:随意的工作环境、正常的工作时间、快速的工作节奏、赋予个人的职责、赋予团队的职责等等;还有对个人将来发展的展望;还有问你的优点和缺点,有利于成为经理的特点,不利于成为经理的特点,有利于成为市场人员的特点,不利于成为市场人员你的特点等等;最后还有大概两页的类似于造句的题目,经典的如“男人通常……”,“女人……”,“官僚主义……”等等,这些问题每个人都会有不同的答案,随性去写就可以,和别人写的大同小异反而不好。
  
  屋子里的人一个一个地被交出去,第一个就是刚才说的那个销售GG,第二个是测试mm,第三个和第四个是两个会计mm,第五个是领带,我最悲惨,被放到了最后,每个人大概持续二十到三十分钟,每两个人之间还会有十分钟左右的间隔。当我被A先生叫出去的时候,已经是下午四点多钟了。
  
  旁边的会议室和之前的会议室布局基本一样,我坐下来之后,A先生便开始根据我的简历问我问题,首先问的是关于我的经历,在学校的经历和在南京中兴的经历,然后根据我在简历上对自己的评价提问,比如我在简历上写我是个team player,他便让我举例子,我说我具有responsibility,他也让我举个例子,诸如此类。整个过程持续了二十五分钟,他如释重负般告诉我今天的面试就到这里结束了,我知道,他折腾了这一整天也够累的。
  
  回去的路上顺便到一个网吧里去上了一小会儿网,发现朗讯的消息来了,不外乎就是sorry了一下,这个早就意料到了,现在我剩下的只有腾讯和NOKIA。
  
  NOKIA的人事测评之后,还有一个小插曲,一家中英合资的保险公司给我来电话居然让我去面试,我觉得非常奇怪,难道保险公司有什么系统要开发么?不然怎么会找到我这个软件开发出身的人呢?怀着各种疑虑,我到那家公司去了一趟,出乎我意料的是,他们真的是想让我去做保险的!上帝啊,开玩笑也得有个限度吧,我并不是鄙视保险这个行业,但是以我的性格特点以及经历,做保险完全不合适啊!
  
  腾讯的HRmm说周五之前会给我消息,我真的一直等到周五,可是消息也没有来。不知道是不是那个mm真的忘掉了。我耐不住性子拨个电话过去,拨了很多次居然没有人接听,直到下午五点多钟的时候,才有一个人接了电话,告诉我HR都出差去了,让我下个星期再打给他们。真是见鬼!
  
  熬过周六和周日,星期一的时候我又打电话给腾讯,上次面试我的HR经理接的电话,说他这边已经没有问题了,可能是流程出了点问题,让我再等等,会有人跟我联系的。放下电话的时候,我感到十分的烦躁,因为NOKIA是否会成功不知道,而腾讯这边又出了这样那样的问题,难道我真的又要回到原点了么?我之前的预感都是胡扯?
  
  8月15日,61年前,日本天皇宣布无条件投降;61年后,日本首相小泉纯一郎第一次在光复日参拜靖国神社。
  
  这是一个充满着家仇国恨的日子,早上起来听到鬼子参拜的消息,甚是愤恨,也许广大英烈对于我嫉日如仇的态度颇为赞赏,在这一天,我辛辛苦苦积累的人品值终于大爆发!下午,NOKIA的HR打电话过来,我收到了三个月来的第一个offer,而且还是NOKIA!
  
  5月16日到8月15日,整整三个月,三个月以来,我亲自经历了在北京痛苦的求职历程,终于有了一个终点,还好我之前的预感实现了,不然真不知道该怎么办。
  
  这个纪实基本上就可以结束了,不过再说一些后话,腾讯的消息一直都没有过来,不知道他们那边到底出了什么问题。华为的消息倒是在我接到NOKIA的offer之后也来了,待遇就是之前给出的那个,我没有给他们答复,他们可能也知道我不大可能去了,后来也就没再和我联系。突然想起来,只有华为和NOKIA面试的时候下雨了,我是不是应该认为是雨给我带来的好运气呢?
  
  整个求职过程中,我错过了不少机会,当然很多公司也错过了我,也许一切都是注定的,就让我用中学时看过的一首诗来结束吧。
  
  那天
  我试着去敲你的门
  你想
  等我敲到八下
  再开门
  可我
  只敲了七下

2008年6月20日星期五

SEO

freeWAIS-sf 日本語化情報
This page includes some information about Japanization of freeWAIS-sf. Unfortunately this page is written only in Japanese. This page has been updated infrequently. We appreciate your regular visits. Please enjoy the full-text retrieval of Japanese documents !

http://www.kusastro.kyoto-u.ac.jp/~baba/wais/

日本語全文検索エンジンソフトウェアのリスト

http://www.kusastro.kyoto-u.ac.jp/~baba/wais/other-system.html

Google の秘密 - PageRank 徹底解説
http://www.kusastro.kyoto-u.ac.jp/~baba/wais/pagerank.html

Google排名优化-面向搜索引擎的网站设计

作者:车东

发表于:2003-01-06 17:01

最后更新于:2007-04-12 11:04

版权声明:可以任意转载,转载时请务必以超链接形式标明文章和作者信息及本声明
内容摘要:

目前中文网站在整个互联网中的影响还比较小,这主要是由于中文网站总体的水平(技术上,内容上)都还相对落后造成的,最主要的表现有:
行业知识:不知道搜索引擎对吸引的新用户的重要性,在搜索引擎排名服务中追求“傻瓜相关”,购买一些其实没有太多实际意义的行业关键词。其实能够用户输入的关键词越多,其目标性越强,这样的客户价值越高。用户能够直接定位到产品具体内容页比到网站首页有价值的多;
发布技术:网站的网页进入Google的索引量非常小,主要是由于大量使用动态网页造成的。需要将动态页面链接改写成静态链接
页面设计:页面标题重复,关键词不突出,过渡使用JavaScript脚本/图片/Flash等不适合搜索引擎索引的非文本形式; 而以上这些问题的根本原因还是网站自身缺乏日志统计分析造成:因此无法看到SEO对网站自身产生的巨大影响。
SEO的目的是通过一些简单的策略,让网站自身的水平在互联网中有一个真实的体现。网站结构设计中面向搜索引擎的优化注意事项包括:
链接引用的重要性;
如何突出关键词:网页标题、主题的设计;
页面及站点结构设计注意事项;
以及站点访问统计的重要性等;
Google的站点设计指南 (注意:本网站设计本身就利用了其中一些方法)。

中间的内容省略,请参照原文。

更多建议请参考:如何提高网站在Google中的排名 面向搜索引擎的网站设计
如何提高网站在Google中的排名 面向搜索引擎的广告模式
如何提高网站在Google中的排名——面向搜索引擎的网站链接设
参考资料:
Measuring Link Popularityhttp://searchenginewatch.com/webmasters/popularity.html
Google の秘密 - PageRank 徹底解説
更多免费的搜索引擎优化工具

2008年6月19日星期四

XSLT简介:Google的XML接口的XSLT

XSLT简介:Google的XML接口的XSLT

设计作者:车东 发表于:2002-08-06 17:08

最后更新于:2007-04-12 11:04

版权声明:可以任意转载,转载时请务必以超链接形式标明文章和作者信息及本声明
google_xml_xslt.ppt
Google的XML数据格式定义:http://www.google.com/google.dtd
其它一些关于XSLT的演示文档:
XSL Tutorial 一个XSL教程,也是一个很好的XSLT在线手册:包括 XPATH XSLT函数参考和示例
其他在线文档和演示:
更多:http://www.google.com/search?q=filetype%3Appt+xslt
XSLT XPATH函数速查卡片XSLT 速查卡片
更多XSLT在线指南
XooMLe: Google的XML接口(base on PHP)
TODO:
利用Lucene做一个基于GET + XML方式的应用演示

实战 Lucene,第 1 部分: 初识 Lucene

实战 Lucene,第 1 部分: 初识 Lucene

Lucene:基于Java的全文检索引擎简介

Lucene:基于Java的全文检索引擎简介








Lucene是一个基于Java的全文索引工具包。



  1. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史
  2. 全文检索的实现:Luene全文索引和数据库索引的比较
  3. 中文切分词机制简介:基于词库和自动切分词算法的比较
  4. 具体的安装和使用简介:系统结构介绍和演示
  5. Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展
  6. 从Lucene我们还可以学到什么


基于Java的全文索引/检索引擎——Lucene


Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。


Lucene的作者:Lucene的贡献者Doug
Cutting
是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。


Lucene的发展历程:早先发布在作者自己的href="http://www.lucene.com">www.lucene.com,后来发布在href="http://sourceforge.net/projects/lucene/">SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:href="http://jakarta.apache.org/lucene/">http://jakarta.apache.org/lucene/


已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:



对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于Lucene的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。


全文检索的实现机制


Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索引的数据库系统


比较一下Lucene和数据库:


















Lucene数据库
索引数据源:doc(field1,field2...) doc(field1,field2...)
\ indexer /
_____________
| Lucene Index|
--------------
/ searcher \
结果输出:Hits(doc(field1,field2) doc(field1...))
 索引数据源:record(field1,field2...) record(field1..)
\ SQL: insert/
_____________
| DB Index |
-------------
/ SQL: select \
结果输出:results(record(field1,field2..) record(field1...))
Document:一个需要进行索引的“单元”
一个Document由多个字段组成
Record:记录,包含多个字段
Field:字段Field:字段
Hits:查询结果集,由匹配的Document组成RecordSet:查询结果集,由多个Record组成

全文检索 ≠ like "%keyword%"


通常比较厚的书籍后面常常附关键词索引表(比如:北京:12,
34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题


由于数据库索引不是为全文索引设计的,因此,使用like
"%keyword%"时,数据库索引是不起作用的
,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%"
and like "%keyword2%" ...其效率也就可想而知了。


所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。


由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。


可以通过一下表格对比一下数据库的模糊查询:































 Lucene全文索引引擎数据库
索引将数据源中的数据都通过全文索引一一建立反向索引height=48>对于LIKE查询来说,数据传统的索引是根本用不上的。数据需要逐个便利记录进行GREP式的模糊匹配,比有索引的搜索速度要有多个数量级的下降。
匹配效果通过词元(term)进行匹配,通过语言分析接口的实现,可以实现对中文等非英语的支持。使用:like "%net%"
会把netherlands也匹配出来,
多个关键词的模糊匹配:使用like
"%com%net%":就不能匹配词序颠倒的xxx.net..xxx.com
匹配度有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的。
结果输出通过特别的算法,将最匹配度最高的头100条结果输出,结果集是缓冲式的小批量读取的。返回所有的结果集,在匹配条目非常多的时候(比如上万条)需要大量的内存存放这些临时结果集。
可定制性通过不同的语言分析接口实现,可以方便的定制出符合应用需要的索引规则(包括对中文的支持)没有接口或接口复杂,无法定制
结论高负载的模糊查询应用,需要负责的模糊查询的规则,索引的资料量比较大使用率低,模糊匹配规则简单或者需要模糊查询的资料量少

全文检索和数据库应用最大的不同在于:让style="FONT-WEIGHT: bold">最相关的style="FONT-WEIGHT: bold">头100条结果满足98%以上用户的需求

Lucene的创新之处:


大部分的搜索(数据库)引擎都是用B树结构来维护索引,索引的更新会导致大量的IO操作,Lucene在实现中,对此稍微有所改进:不是维护一个索引文件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率的前提下,提高了索引的效率。


Lucene和其他一些全文检索系统/应用的比较:































 Lucene其他开源全文检索系统
增量索引和批量索引可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。很多系统只支持批量的索引,有时数据源有一点增加也需要重建索引。
数据源width="45%">Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成相应结构),很多系统只针对网页,缺乏其他格式文档的灵活性。
索引内容抓取width="45%">Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词和不需要分词的类型:
  
需要进行分词的索引,比如:标题,文章内容字段
   不需要进行分词的索引,比如:作者/日期字段
缺乏通用性,往往将文档整个索引了
语言分析通过语言分析器的不同扩展实现:
可以过滤掉不需要的词:an the of 等,
西文语法分析:将jumps
jumped jumper都归结成jump进行索引/检索
非英文支持:对亚洲语言,阿拉伯语言的索引支持
缺乏通用接口实现
查询分析通过查询分析接口的实现,可以定制自己的查询语法规则:
比如: 多个关键词之间的 + - and or关系等
 
并发访问能够支持多用户的使用 

 


关于亚洲语言的的切分词问题(Word Segment)


对于中文来说,全文索引首先还要解决一个语言分析的问题,对于英文来说,语句中单词之间是天然通过空格分开的,但亚洲语言的中日韩文语句中的字是一个字挨一个,所有,首先要把语句中按“词”进行索引的话,这个词如何切分出来就是一个很大的问题。


首先,肯定不能用单个字符作(si-gram)为索引单元,否则查“上海”时,不能让含有“海上”也匹配。


但一句话:“北京天安门”,计算机如何按照中文的语言习惯进行切分呢?
“北京 天安门” 还是“北 京
天安门”?让计算机能够按照语言习惯进行切分,往往需要机器有一个比较丰富的词库才能够比较准确的识别出语句中的单词。


另外一个解决的办法是采用自动切分算法:将单词按照2元语法(bigram)方式切分出来,比如:
"北京天安门" ==> "北京 京天 天安
安门"。


这样,在查询的时候,无论是查询"北京"
还是查询"天安门",将查询词组按同样的规则进行切分:"北京","天安安门",多个关键词之间按与"and"的关系组合,同样能够正确地映射到相应的索引中。这种方式对于其他亚洲语言:韩文,日文都是通用的。


基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。基于2元切分后的索引一般大小和源文件差不多,而对于英文,索引文件一般只有原文件的30%-40%不同,




























自动切分词表切分
实现实现非常简单实现复杂
查询增加了查询分析的复杂程度,适于实现比较复杂的查询语法规则
存储效率索引冗余大,索引几乎和原文一样大索引效率高,为原文大小的30%左右
维护成本无词表维护成本词表维护成本非常高:中日韩等语言需要分别维护。
还需要包括词频统计等内容
适用领域嵌入式系统:运行环境资源有限
分布式系统:无词表同步问题
多语言环境:无词表维护成本
对查询和存储效率要求高的专业搜索引擎

目前比较大的搜索引擎的语言分析算法一般是基于以上2个机制的结合。关于中文的语言分析算法,大家可以在Google查关键词"wordsegment
search"能找到更多相关的资料。


安装和使用


下载:href="http://jakarta.apache.org/lucene/">http://jakarta.apache.org/lucene/


注意:Lucene中的一些比较复杂的词法分析是用JavaCC生成的(JavaCC:JavaCompilerCompiler,纯Java的词法分析生成器),所以如果从源代码编译或需要修改其中的QueryParser、定制自己的词法分析器,还需要从href="https://javacc.dev.java.net/">https://javacc.dev.java.net/下载javacc。


lucene的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口
























org.apache.Lucene.search/搜索入口
org.apache.Lucene.index/索引入口
org.apache.Lucene.analysis/语言分析器
org.apache.Lucene.queryParser/查询分析器
org.apache.Lucene.document/存储结构
org.apache.Lucene.store/ 底层IO/存储结构
org.apache.Lucene.util/一些公用的数据结构

简单的例子演示一下Lucene的使用方法:

索引过程:从命令行读取文件名(多个),将文件分路径(path字段)和内容(body字段)2个字段进行存储,并对内容进行全文索引:索引的单位是Document对象,每个Document对象包含多个字段Field对象,针对不同的字段属性和数据输出的需求,对字段还可以选择不同的索引/存储字段规则,列表如下:






































方法切词索引存储用途
Field.Text(String name, String value)YesYesYes切分词索引并存储,比如:标题,内容字段
Field.Text(String name, Reader value)YesYesNo切分词索引不存储,比如:META信息,
不用于返回显示,但需要进行检索内容
Field.Keyword(String name, String value)NoYesYes不切分索引并存储,比如:日期字段
Field.UnIndexed(String name, String value)NoNoYes不索引,只存储,比如:文件路径
Field.UnStored(String name, String value)YesYesNo只全文索引,不存储
public class IndexFiles { 
//使用方法:: IndexFiles [索引输出目录] [索引的文件列表] ...
public static void main(String[] args) throws Exception {
String indexPath = args[0];
IndexWriter writer;
//用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引)
writer = new IndexWriter(indexPath, new SimpleAnalyzer(), false);

for (int i=1; i<args.length; i++) {
System.out.println("Indexing file " + args[i]);
InputStream is = new FileInputStream(args[i]);

//构造包含2个字段Field的Document对象
//一个是路径path字段,不索引,只存储
//一个是内容body字段,进行全文索引,并存储
Document doc = new Document();
doc.add(Field.UnIndexed("path", args[i]));
doc.add(Field.Text("body", (Reader) new InputStreamReader(is)));
//将文档写入索引
writer.addDocument(doc);
is.close();
};
//关闭写索引器
writer.close();
}
}
 

索引过程中可以看到:



  • 语言分析器提供了抽象的接口,因此语言分析(Analyser)是可以定制的,虽然lucene缺省提供了2个比较通用的分析器SimpleAnalyser和StandardAnalyser,这2个分析器缺省都不支持中文,所以要加入对中文语言的切分规则,需要修改这2个分析器。

  • Lucene并没有规定数据源的格式,而只提供了一个通用的结构(Document对象)来接受索引的输入,因此输入的数据源可以是:数据库,WORD文档,PDF文档,HTML文档……只要能够设计相应的解析转换器将数据源构造成成Docuement对象即可进行索引。

  • 对于大批量的数据索引,还可以通过调整IndexerWrite的文件合并频率属性(mergeFactor)来提高批量索引的效率。

检索过程和结果显示:


搜索结果返回的是Hits对象,可以通过它再访问Document==>Field中的内容。


假设根据body字段进行全文检索,可以将查询结果的path字段和相应查询的匹配度(score)打印出来,

public class Search { 
public static void main(String[] args) throws Exception {
String indexPath = args[0], queryString = args[1];
//指向索引目录的搜索器
Searcher searcher = new IndexSearcher(indexPath);
//查询解析器:使用和索引同样的语言分析器
Query query = QueryParser.parse(queryString, "body",
new SimpleAnalyzer());
//搜索结果使用Hits存储
Hits hits = searcher.search(query);
//通过hits可以访问到相应字段的数据和查询的匹配度
for (int i=0; i<hits.length(); i++) {
System.out.println(hits.doc(i).get("path") + "; Score: " +
hits.score(i));
};
}
}
在整个检索过程中,语言分析器,查询分析器,甚至搜索器(Searcher)都是提供了抽象的接口,可以根据需要进行定制。

Hacking Lucene


简化的查询分析器


个人感觉lucene成为JAKARTA项目后,画在了太多的时间用于调试日趋复杂QueryParser,而其中大部分是大多数用户并不很熟悉的,目前LUCENE支持的语法:


Query ::= ( Clause )*
Clause ::= ["+", "-"] [<TERM> ":"] (
<TERM> | "(" Query ")")


中间的逻辑包括:and or + -
&&||等符号,而且还有"短语查询"和针对西文的前缀/模糊查询等,个人感觉对于一般应用来说,这些功能有一些华而不实,其实能够实现目前类似于Google的查询语句分析功能其实对于大多数用户来说已经够了。所以,Lucene早期版本的QueryParser仍是比较好的选择。


添加修改删除指定记录(Document)


Lucene提供了索引的扩展机制,因此索引的动态扩展应该是没有问题的,而指定记录的修改也似乎只能通过记录的删除,然后重新加入实现。如何删除指定的记录呢?删除的方法也很简单,只是需要在索引时根据数据源中的记录ID专门另建索引,然后利用IndexReader.delete(Termterm)方法通过这个记录ID删除相应的Document。


根据某个字段值的排序功能


lucene缺省是按照自己的相关度算法(score)进行结果排序的,但能够根据其他字段进行结果排序是一个在LUCENE的开发邮件列表中经常提到的问题,很多原先基于数据库应用都需要除了基于匹配度(score)以外的排序功能。而从全文检索的原理我们可以了解到,任何不基于索引的搜索过程效率都会导致效率非常的低,如果基于其他字段的排序需要在搜索过程中访问存储字段,速度回大大降低,因此非常是不可取的。


但这里也有一个折中的解决方法:在搜索过程中能够影响排序结果的只有索引中已经存储的docID和score这2个参数,所以,基于score以外的排序,其实可以通过将数据源预先排好序,然后根据docID进行排序来实现。这样就避免了在LUCENE搜索结果外对结果再次进行排序和在搜索过程中访问不在索引中的某个字段值。


这里需要修改的是IndexSearcher中的HitCollector过程:

...
 scorer.score(new HitCollector() {
private float minScore = 0.0f;
public final void collect(int doc, float score) {
if (score > 0.0f && // ignore zeroed buckets
(bits==null || bits.get(doc))) { // skip docs not in bits
totalHits[0]++;
if (score >= minScore) {
/* 原先:Lucene将docID和相应的匹配度score例入结果命中列表中:
* hq.put(new ScoreDoc(doc, score)); // update hit queue
* 如果用doc 或 1/doc 代替 score,就实现了根据docID顺排或逆排
* 假设数据源索引时已经按照某个字段排好了序,而结果根据docID排序也就实现了
* 针对某个字段的排序,甚至可以实现更复杂的score和docID的拟合。
*/
hq.put(new ScoreDoc(doc, (float) 1/doc ));
if (hq.size() > nDocs) { // if hit queue overfull
hq.pop(); // remove lowest in hit queue
minScore = ((ScoreDoc)hq.top()).score; // reset minScore
}
}
}
}
}, reader.maxDoc());

更通用的输入输出接口


虽然lucene没有定义一个确定的输入文档格式,但越来越多的人想到使用一个标准的中间格式作为Lucene的数据导入接口,然后其他数据,比如PDF只需要通过解析器转换成标准的中间格式就可以进行数据索引了。这个中间格式主要以XML为主,类似实现已经不下4,5个:

数据源: WORD       PDF     HTML    DB       other
\ | | | /
XML中间格式
|
Lucene INDEX

目前还没有针对MSWord文档的解析器,因为Word文档和基于ASCII的RTF文档不同,需要使用COM对象机制解析。这个是我在Google上查的相关资料:href="http://www.intrinsyc.com/products/enterprise_applications.asp">http://www.intrinsyc.com/products/enterprise_applications.asp
另外一个办法就是把Word文档转换成text:href="http://www.winfield.demon.nl/index.html">http://www.winfield.demon.nl/index.html



索引过程优化


索引一般分2种情况,一种是小批量的索引扩展,一种是大批量的索引重建。在索引过程中,并不是每次新的DOC加入进去索引都重新进行一次索引文件的写入操作(文件I/O是一件非常消耗资源的事情)。


Lucene先在内存中进行索引操作,并根据一定的批量进行文件的写入。这个批次的间隔越大,文件的写入次数越少,但占用内存会很多。反之占用内存少,但文件IO操作频繁,索引速度会很慢。在IndexWriter中有一个MERGE_FACTOR参数可以帮助你在构造索引器后根据应用环境的情况充分利用内存减少文件的操作。根据我的使用经验:缺省Indexer是每20条记录索引后写入一次,每将MERGE_FACTOR增加50倍,索引速度可以提高1倍左右。


搜索过程优化


style="FONT-WEIGHT: bold">lucene支持内存索引:这样的搜索比基于文件的I/O有数量级的速度提升。
href="http://www.onjava.com/lpt/a/3273">http://www.onjava.com/lpt/a/3273
而尽可能减少IndexSearcher的创建和对搜索结果的前台的缓存也是必要的。
style="FONT-WEIGHT: bold">



Lucene面向全文检索的优化在于首次索引检索后,并不把所有的记录(Document)具体内容读取出来,而起只将所有结果中匹配度最高的头100条结果(TopDocs)的ID放到结果集缓存中并返回,这里可以比较一下数据库检索:如果是一个10,000条的数据库检索结果集,数据库是一定要把所有记录内容都取得以后再开始返回给应用结果集的。所以即使检索匹配总数很多,Lucene的结果集占用的内存空间也不会很多。对于一般的模糊检索应用是用不到这么多的结果的,头100条已经可以满足90%以上的检索需求。


如果首批缓存结果数用完后还要读取更后面的结果时Searcher会再次检索并生成一个上次的搜索缓存数大1倍的缓存,并再重新向后抓取。所以如果构造一个Searcher去查1-120条结果,Searcher其实是进行了2次搜索过程:头100条取完后,缓存结果用完,Searcher重新检索再构造一个200条的结果缓存,依此类推,400条缓存,800条缓存。由于每次Searcher对象消失后,这些缓存也访问那不到了,你有可能想将结果记录缓存下来,缓存数尽量保证在100以下以充分利用首次的结果缓存,不让Lucene浪费多次检索,而且可以分级进行结果缓存。


Lucene的另外一个特点是在收集结果的过程中将匹配度低的结果自动过滤掉了。这也是和数据库应用需要将搜索的结果全部返回不同之处。


我的一些尝试



  • 支持中文的Tokenizer:这里有2个版本,一个是通过JavaCC生成的,对CJK部分按一个字符一个TOKEN索引,另外一个是从SimpleTokenizer改写的,对英文支持数字和字母TOKEN,对中文按迭代索引。

  • 基于XML数据源的索引器:XMLIndexer,因此所有数据源只要能够按照DTD转换成指定的XML,就可以用XMLIndxer进行索引了。
  • 根据某个字段排序:按记录索引顺序排序结果的搜索器:IndexOrderSearcher,因此如果需要让搜索结果根据某个字段排序,可以让数据源先按某个字段排好序(比如:PriceField),这样索引后,然后在利用这个按记录的ID顺序检索的搜索器,结果就是相当于是那个字段排序的结果了。

从Lucene学到更多


Luene的确是一个面对对象设计的典范



  • 所有的问题都通过一个额外抽象层来方便以后的扩展和重用:你可以通过重新实现来达到自己的目的,而对其他模块而不需要;
  • 简单的应用入口Searcher, Indexer,并调用底层一系列组件协同的完成搜索任务;
  • 所有的对象的任务都非常专一:比如搜索过程:QueryParser分析将查询语句转换成一系列的精确查询的组合(Query),通过底层的索引读取结构IndexReader进行索引的读取,并用相应的打分器给搜索结果进行打分/排序等。所有的功能模块原子化程度非常高,因此可以通过重新实现而不需要修改其他模块。 

  • 除了灵活的应用接口设计,Lucene还提供了一些适合大多数应用的语言分析器实现(SimpleAnalyser,StandardAnalyser),这也是新用户能够很快上手的重要原因之一。

这些优点都是非常值得在以后的开发中学习借鉴的。作为一个通用工具包,Lunece的确给予了需要将全文检索功能嵌入到应用中的开发者很多的便利。


此外,通过对Lucene的学习和使用,我也更深刻地理解了为什么很多数据库优化设计中要求,比如:



  • 尽可能对字段进行索引来提高查询速度,但过多的索引会对数据库表的更新操作变慢,而对结果过多的排序条件,实际上往往也是性能的杀手之一。
  • 很多商业数据库对大批量的数据插入操作会提供一些优化参数,这个作用和索引器的merge_factor的作用是类似的,
  • 20%/80%原则:查的结果多并不等于质量好,尤其对于返回结果集很大,如何优化这头几十条结果的质量往往才是最重要的。
  • 尽可能让应用从数据库中获得比较小的结果集,因为即使对于大型数据库,对结果集的随机访问也是一个非常消耗资源的操作。

参考资料:


Apache: Lucene Project
href="http://jakarta.apache.org/lucene/">http://jakarta.apache.org/lucene/
Lucene开发/用户邮件列表归档
href="http://www.mail-archive.com/lucene-dev@jakarta.apache.org/">Lucene-dev@jakarta.apache.org
href="http://www.mail-archive.com/lucene-user@jakarta.apache.org/">Lucene-user@jakarta.apache.org


The Lucene search engine: Powerful, flexible, and free
href="http://www.javaworld.com/javaworld/jw-09-2000/jw-0915-lucene_p.html">http://www.javaworld.com/javaworld/jw-09-2000/jw-0915-Lucene_p.html


Lucene Tutorial
href="http://www.darksleep.com/puff/lucene/lucene.html">http://www.darksleep.com/puff/lucene/lucene.html


Notes on distributed searching with Lucene
href="http://home.clara.net/markharwood/lucene/">http://home.clara.net/markharwood/lucene/


中文语言的切分词
href="http://www.google.com/search?sourceid=navclient&hl=zh-CN&q=chinese+word+segment">http://www.google.com/search?sourceid=navclient&hl=zh-CN&q=chinese+word+segment


搜索引擎工具介绍
http://searchtools.com/


Lucene作者Cutting的几篇论文和专利
href="http://lucene.sourceforge.net/publications.html">http://lucene.sourceforge.net/publications.html 


Lucene的.NET实现:dotLucene
href="http://sourceforge.net/projects/dotlucene/">http://sourceforge.net/projects/dotlucene/


Lucene作者Cutting的另外一个项目:基于Java的搜索引擎Nutch
href="http://www.nutch.org/">http://www.nutch.org/   href="http://sourceforge.net/projects/nutch/">http://sourceforge.net/projects/nutch/


关于基于词表和N-Gram的切分词比较
href="http://china.nikkeibp.co.jp/cgi-bin/china/news/int/int200302100112.html">http://china.nikkeibp.co.jp/cgi-bin/china/news/int/int200302100112.html

2005-01-08
href="http://lucene.sourceforge.net/talks/pisa/">Cutting在Pisa大学做的关于Lucene的讲座:非常详细的Lucene架构解说


特别感谢:
href="http://www.google.com/search?q=%22Jack+Xu%22+Excite">前网易CTO许良杰(Jack
Xu)
给我的指导:是您将我带入了搜索引擎这个行业。

盖茨的年表

20世纪50年代
1955年10月28日

威廉-亨利-盖茨三世出生于西雅图。祖母奥黛丽给他起了一个外号——“特利”(Trey),Trey在英语中的意思是三点的牌、骰子或骨牌。盖茨后来也确实成了一名扑克牌高手。

20世纪60年代

1967年

盖茨上六年级,学习成绩不佳,他充满困惑地问妈妈,“您曾尝试思考吗?”

1967年秋

盖茨的父母把他送进了湖边学校(Lakeside School),这是西雅图一所男子学校。他是班里最矮的学生。

1968年

盖茨和湖边学校同班同学保罗-艾伦(Paul Allen)从手册中学会了Basic语言。几周后,这两个小家伙便将学校用于支付PDP-10电脑使用时间的3000美元年度预算花得一干二净。他们俩不久即与电脑中心公司签了一份合约,向其报告PDP-10电脑中存在的软件缺陷,而报酬是免费使用电脑。

20世纪70年代

1971年

盖茨为湖边学校编写程序,包括一个设计班级课程表的程序。

1973年9月

盖茨考入哈佛大学。他的学习成绩很不稳定。他有很多坏习惯,经常旷课去编程、玩牌,不爱洗澡,喜欢比萨饼和碳酸饮料。他与住在同一个宿舍的史蒂夫-鲍尔默(Steve Ballmer)结为好友。

1975年1月

艾伦无意中看到了《大众电子》的封面,上面是Altair 8800电脑的照片和“全球第一台对抗商业模式的微型电脑装置”的大字标题。艾伦买了一本,并冲进盖茨的房间。几天后,盖茨给Altair电脑制造商MITS打去电话,告诉该公司他和艾伦能为8800电脑开发出Basic语言。

1975年2月1日

盖茨和艾伦完成Basic开发,将其以3000美元外加最高达18万美元的版税卖给MITS公司。

1976年11月26日

盖茨和艾伦注册了微软(Microsoft)商标。他们一度考虑以艾伦与盖茨(Allen & Gates)作为公司名称,后提出Micro-Soft,但他们决定将中间的连字符去掉,于是微软就此诞生。当时艾伦23岁,盖茨21岁。

1977年1月

盖茨从哈佛大学休学,在新墨西哥州阿尔伯克基创建了微软,MITS总部也设在此地。

1977年

盖茨的秘书多次在微软办公大楼内发现他躺在地板上呼呼大睡。他仍喜欢吃比萨饼,同时对属下要求严格,经常与同事争辩。盖茨经常说的一句话是:“这是我有史以来听说的最愚蠢的事情。”

1977年底

盖茨多次因驾驶保时捷911超速而被警方逮捕,还有一次则是无照驾驶。这可害苦了艾伦,他保释盖茨的经历至少有一次。

1978年12月

微软年终销售额超过100万美元。

1978年微软“全家福”,一排最左为盖茨,最右为艾伦

1979年1月1日

微软将公司总部迁至华盛顿州贝尔维尤市。

20世纪80年代

1980年8月28日

盖茨与IBM签署合同,同意为这家PC制造商开发软件。后来,他以5万美元买了一套名为QDOS的操作系统,稍加改进并更名为DOS,便授权IBM使用。

1981年8月12日

IBM开始销售具有MS-DOS 1.0的PC.

1982年

在上市销售的第一年,MS-DOS被授权于50个硬件制造商使用。

艾伦因身患霍奇金氏病被迫辞去微软副总裁一职。他买了一个篮球队,创建了一个音乐博物馆,拥有世界上第三大游艇。

1983年11月10日

Windows揭开神秘面纱。Windows是MS-DOS的延伸,可提供图形用户界面。

1984年1月24日

盖茨出席了Macintosh的上市宣传活动——微软是第一批为苹果电脑开发软件的公司之一。

1985年

有报道称盖茨粗暴辱骂一位女高管,后者要求调离岗位。

1985年8月12日

经过10年的奋斗,微软产品的销售额达到1.4亿美元。

1986年3月13日

微软以每股21美元公开发售股票。当天微软股价报收于28美元,为公司筹集到6100万美元。

1987年

盖茨在曼哈顿召开的微软新闻发布会上邂逅梅琳达-弗朗奇(Melinda French)。

1989年8月1日

微软推出Office办公软件。

20世纪90年代

1990年5月13日

盖茨在母亲节这天提出微软公司高层退休时间表。

1990年6月

美国联邦贸易委员会对微软和IBM在PC软件市场可能存在的串谋行为展开调查。

1993年4月11日

在从佛罗里达州飞往西雅图的包机上,盖茨向梅琳达求婚。盖茨还安排飞机在奥马哈降落,带着梅琳达同好友沃伦-巴菲特(Warren Buffett)一同出去购物。

1993年8月20日

美国司法部从联邦贸易委员会接管对微软的调查。

1994年1月1日

盖茨和梅琳达在夏威夷拉奈小岛上举行了小型婚礼。为给新婚妻子一个惊喜,盖茨特意安排梅琳达最喜欢的歌手威利-尼尔森(Willie Nelson)在婚礼上表演。

1994年4月

好消息:盖茨首次登上了《连线》杂志封面。坏消息:美国政府对微软展开了反垄断调查。

1994年7月

微软同意接受美国政府签署的法令,承诺放弃极端的反竞争商业行为(例如,要求硬件制造商为所生产的配置特定微处理器的所有电脑支付MS-DOS授权费,即使该电脑没有安装这一操作系统)。

1994年11月11日

盖茨以3080万美元购得达-芬奇的《哈默手稿》(Codex Hammer)——达-芬奇亲笔写下的72页科学手稿。他同意将《哈默手稿》公开展示。

1995年

盖茨出现在可口可乐(据报道他喜欢喝健怡可乐)的商业广告中:这位亿万富翁搜遍全身口袋,寻找购买饮料的零钱。

1995年7月17日

39岁的盖茨以129亿美元的个人财富成为世界首富。微软在1995年的收入达到59亿美元,拥有17,801名员工。

1995年8月24日

微软推出网络浏览器Internet Explorer.

1996年6月

盖茨第二次登上《连线》杂志封面,这次是用Photoshop软件处理过的他裹着浴袍的照片。

1996年12月

微软股价创下新高——同比上涨88%.从理论上讲,那一年,盖茨每天的收入高达3000万美元。

1997年10月20日

因违反1994年签署的协议,美国法院对微软处以每天100万美元的罚款。美国司法部称,微软要求硬件制造商申请Windows 95授权时,必须在其硬件产品中绑定Internet Explorer,由此违反了这一协议。

1998年2月4日

盖茨在比利时布鲁塞尔会见比利时政府官员和企业家时,遭到奶油蛋糕的袭击。事后,盖茨开玩笑说,“这块蛋糕可不怎么好吃”。

1998年5月18日

美国司法部和20个州的总检察官认为微软将网络浏览器绑定到其操作系统,违反了相关规定,由此对微软提出起诉。

1998年11月9日

在一段作证录像中,当盖茨表示自己从未蓄意将竞争对手赶出软件市场时,他的身子微微颤抖。医生据此认为盖茨可能患有亚斯伯格症候群(Asperger's syndrome)。

1999年

盖茨和妻子将威廉-盖茨基金会更名为比尔与梅琳达-盖茨基金会,并提出了减少世界上不公平现象的目标。

21世纪初

2000年1月13日

盖茨辞去微软CEO一职,成为公司首席软件工程师,将大权交给鲍尔默。

2000年6月7日

美国联邦地区法院法官托马斯-潘菲尔德-杰克逊(Thomas Penfield Jackson)裁定微软应一分为二。

2000年11月

盖茨第三次登上《连线》杂志封面,这次是为了揭开微软反垄断案后鲜为人知的故事。

2001年6月28日

美国哥伦比亚地区上诉法院推翻杰克逊法官的裁决。

2002年

据针对中国内地和香港年轻人的调查显示,盖茨取代了毛泽东在他们心中的偶像地位。

2005年3月2日

盖茨在白金汉宫接受英国女王授予的骑士勋章,此前,前纽约市市长鲁迪-朱利安尼和好莱坞大导演斯蒂文-斯皮尔伯格都曾获得这一殊荣。盖茨此后有资格在名字后面加上字母“KBE”(英帝国爵级勋章)。

2005年12月

盖茨夫妇和爱尔兰U2乐队主唱波诺当选为美国《时代》周刊2005年度人物。

2006年6月15日

盖茨宣布,他将在两年内逐步退出公司的日常事务管理。

2006年6月26日

在得到巴菲特300多亿美元捐款后,比尔与梅琳达-盖茨基金会规模壮大一倍,成为世界最大的慈善基金会。

2008年3月

《福布斯》发布08年全球富豪排行榜,蝉联13年首富桂冠的盖茨以580亿美元的资产总值下滑至第三的位置。而盖茨的牌友、“股神”巴菲特则取代他问鼎冠军宝座。

What Is Scrum?

What Is Scrum?
http://www.scrumalliance.org/pages/what_is_scrum
A lean approach to software development
Scrum is an agile software development framework. Work is structured in cycles of work called sprints, iterations of work that are typically two to four weeks in duration. During each sprint, teams pull from a prioritized list of customer requirements, called user stories, so that the features that are developed first are of the highest value to the customer. At the end of each sprint, a potentially shippable product is delivered.

A simple framework

Scrum is made up of three roles, three ceremonies, and three artifacts.

Three roles: the Product Owner, who is responsible for the business value of the project; the ScrumMaster, who ensures that the team is functional and productive; and the self-organized team. Read more about Scrum roles.

Three ceremonies: the sprint planning meeting, daily scrum meetings, and sprint review meetings. Read more about Scrum ceremonies.

Three artifacts for prioritizing and tracking tasks: the product backlog, the sprint backlog, and a burndown chart. Read more about Scrum artifacts.

A time-tested process
When Jeff Sutherland created the scrum process in 1993, he borrowed the term "scrum" from an analogy put forth in a 1986 study by Takeuchi and Nonaka, published in the Harvard Business Review. In that study, Takeuchi and Nonaka compare high-performing, cross-functional teams to the scrum formation used by Rugby teams. Ken Schwaber formalized the process for the worldwide software industry in the first published paper on Scrum at OOPSLA 1995. (Download Ken's whitepaper on Scrum.)

Since then, Scrum has become one of the leading agile development methodologies, used by fortune 500 companies around the world, as you can see by glancing through the list of Scrum Alliance members and their companies.

2008年6月14日星期六

http://portal.cyberjapan.jp/sample/index.html

http://portal.cyberjapan.jp/sample/index.html
一个教你如何制作日本电子地图的网站。

電子国土って何?



あなたが集めた街の名所、釣りの穴場、富士山が素敵に見える場所。そんな情報を地図に載せて地域の人、あるいは全国の人と分かち合いたいと思いませんか。あなたの素敵な情報を待っている人がいます。沢山の個人や組織が、同じインターネット地図に載せて発信した情報で、地域のいろいろなことがわかる。そうやって出来たサイバー国土が「電子国土」です。そんな社会の実現を目指して、「電子国土Webシステム」を提供しています。「電子国土Webシステム」を使って、私たちと一緒に「電子国土」をつくりませんか。

まずは、「電子国土ポータル」へ


電子国土ポータルサイトは電子国土の総合案内所です。ここでは、全国の行政機関や教育機関、公益法人などが発信中の「電子国土」を見る事ができます。また、「電子国土」を自分で作って情報を発信したい方のために、ソフトウェア、ツール、技術情報を提供しています。

I 全国から発信している「電子国土サイト」を見ることができます。


説明図1

II 「電子国土」は日本全国の地図を自由に見ることができます。また、検索や簡単な作図機能を用意しています。


説明図2

III 電子国土サイトサンプル集では、ソフトウェア、ツール、技術情報をわかりやすく解説しています。必要なサンプルを組み合わせ利用していただけます。



サンプルを組み合わせて


サンプルを組み合わせて

だれでも使っていいの?



電子国土Webシステムはどなたでも、無償で利用できます。また、HTMLとJavaScriptの知識があれば、どなたでも「電子国土」サイトを作れます。Webページはもちろん、イントラネットでも利用できます。ただし、公開・非公開を問わず、電子国土サイトを作った場合には、こちらからお知らせください。

電子国土Webシステムのしくみ


Web上で地図を使って情報発信するためには、GISソフトウェアや背景となる地図の準備が必要です。しかし、それらの購入や地図データの維持管理にはそれなりの費用がかかります。「電子国土Webシステム」では、国土地理院が無償提供するプラグインを使って、見る人のパソコンで、あなたが発信する情報と国土地理院が発信する背景地図を重ねて表示してくれるので、GISソフトや背景地図の準備がいりません。背景地図は、国土地理院が日々更新していますので維持管理の必要もありません。

従来の地理情報発信サイト


従来の地理情報発信サイト


電子国土Webシステムのしくみ


電子国土Webシステムのしくみ


背景となる地図データの特徴


背景となる地図データの特徴

IV 誰でも利用できる重ね合わせ情報を登録・検索し、相互に利活用できます。



電子国土では、様々なサイトが地理情報を発信しています。そのため、電子国土では、地理情報を交換するための標準である地理情報標準のプロファイルの一つである「電子国土プロファイル」に従ってデータを発信していただくことにしています。「電子国土プロファイル」は、点型、線型、面型、円型、注記型のデータについて決めています。この地理標準に則った重ね合わせデータを用意することで、情報発信者相互にデータを利活用できます。それは地理的に分散して存在していても問題ありません。

情報発信者が分散していても一画面で集約して参照できます


情報発信者が分散していても一画面で集約して参照できます

※重ね合わせ情報の相互活用については、情報発信者の許諾が 必要な場合がありますのでご注意ください。

現在登録されている重ね合わせ情報は、電子国土ポータルのトップページからご覧いただけます。なお、直接重ね合わせ情報をご覧いただくにはこちらからどうぞ。これらの重ね合わせ情報は、電子国土Webシステムを通し、どなたでも利用可能です。

利用方法については電子国土ポータルの「電子国土サイトを作る」等をご参照ください。


また、重ね合わせ情報をご利用になる場合の注意事項については「電子国土ポータルサイトへの重ね合わせ情報の掲載に関する利用規約」をご覧ください。


もっとわかりやすく解説してくれませんか?


電子国土Webシステム導入ガイドではアニメーションを利用して、電子国土についての基本的な説明をしています。どうぞ、ご利用ください。

2008年6月7日星期六

免费的地域信息 – 免费的日本路线(轨道交通)信息

Ekidata.jp 駅データ 無料ダウンロード サービス 『駅データ.jp』
信息的层次:
1. 主要信息
エリアマスター
都道府県マスター
鉄道概要マスター
沿線マスター

2. 详细的站点信息
站点的相关信息。

多线交叉的站点的信息(换乘车站)