找工作回顾(2):笔试

我参加过不少的笔试,除了雅虎没有消息了外,其他的笔试都通过了,包括Google的那次2000人的笔试。我觉得为笔试做准备的大前提是你要确保自己能够收到笔试邀请,有些公司还是会筛简历的,所以在网申的时候一定要认真填,如果人家不给你笔试的机会,其他的也就都无从谈起了。我没有霸笔过,有些公司可以霸笔,有些则不行,这方面我没啥经验。

收到笔试通知,一般的公司都会先用电话通知一下,再发一封笔试邀请的邮件,以防万一,我建议把邮件打印一份笔试的时候随身带着,其他的要准备的东西可以以邮件为主,有些公司会要求带2B的铅笔来涂答题卡,身份证、学生证这种是必带的,最的也带一份简历。

笔试的题目无非以下几种,技术题、智力题、开放性问题。技术题我上一篇准备里已经说了,基本上不会跑出那个范围,好好复习的话,95%的笔试都能通过,另外5%是你运气不好,不要怪自己没答好题目。智力题,这个没法复习,只能平时看一些类似的题目,自己总结一些思路,也不用太在意,你能很容易做出来的,别人也能很容易做出来,你做不出来的,别的人也大部分都做不出来。开放性问题的话,就按自己的真实想法去写吧,我觉得如果认为这种题目有对错的话,那就是在错特错,把自己真实的想法表达出来就好。如果你的价值观不被这个公司认可,那么说明你们二者不合适。不过若是让你写自己的优点啥的,在一定范围以内,可以夸张一点,这个时候千万不要谦虚。

笔试题里一定会有算法题的,就算是Google这样的公司,他的算法题目也不难,我觉得比一般ACM比赛的题目要简单,所以大可不必担心(如果你按我说的复习过算法这方面的知识的话),你只要把你的思路清晰的表达出来即可。现在总结出来的最佳的作法是,在写代码之前,用一段简短的话把思路描述一遍,并且在代码里添加必要的注释,帮助批阅试卷的工程师理解你的思路,这样更容易得分。

另外还有一点,把字练练好吧,我要是批阅试卷的那个人,字迹潦草的那张我肯定没有耐心看的。

一般的笔试还是都比较简单的,不用太担心,写好一份简历,做好必要的准备,一定是可以通过的。

3,182 次浏览 | 没有评论
2010年11月21日 | 归档于 Job Hunting, 校园, 生活
标签: , , ,

找工作回顾(1):准备

找工作陆陆续续忙了三个月,这中间博客都少有更新,去笔试面试回来我也没有写过笔经面经,一是觉得确实参考意义不大,被泄露出来的笔试题基本上不会再考,所谓的面经,现在觉得面试的偶然性很大,别人的经验放在自己身上未必就有用。不过现在基本上尘埃落定了,倒是可以回头来看一看,这接近四个月的时间的经历。经过这段时间,拿到了创新工场、阿里巴巴、网易研究院、人人网、腾讯、百度这几个Offer,

这篇博客是第一部分,讲讲我是怎么准备找工作的。

我觉得找工作的准备分三种,第一种是心理准备,弄明白自己想要找一份怎么样的工作,这一点我在开始的时候就非常明确,我想进入一家互联网企业做技术,这类企业像国外在国内有公司的Google、Yahoo!,国内的百度、腾讯、阿里巴巴,以及新兴的网易有道、搜狗、人人,其他的一些IT公司也可以考虑,像微软、EMC、完美时空等等,但不是我心中的首选。还有就是我不打算做测试,这有感谢我以前在阿里巴巴的实习经历,我当时就觉得测试这活儿不适合我干,我非得天天跟开发吵架不可,我不喜欢挑别人的毛病,我喜欢自己把东西做得尽量完美,但我愿意接受别人的意见。有了这个准备,你就可以避免浪费很多时间,那些不在你考虑范围以内的公司,就不用去参加他们的招聘了,节省双方的时间。

第二种是基础的准备,我觉得首先要把计算机学科的一些基础知识再回顾一下,最重要的是操作系统、网络、C/C++语言、算法与数据结构、数据库。操作系统找本操作系统的书翻一翻就可以了,内存管理、进程调度啥的还是经常会被问到的,I/O方面、进程间通信、多线程啥的也经常被问到。再具体一些,如果有Linux的相关经历,可以把APUE再看一下,起码被问到的时候底气足一些。网络方面,看看UNP和TCP/IP详解,两本好书。算法与数据结构,一是搞好基础,这个可以看算法导论,二是多看一些题目,这个可以去网上搜索,同时要练习在纸上写程序的能力,以及表达的能力;C/C++自然不用说,很多公司都会问一些语言的细节以及底层是怎么实现的,我虽然也不喜欢被问到这些问题,但是多了解一些没有坏处。数据库,其实不是特别重要,会被问问索引、外键、范式啥的,你要是不太了解就说最近没怎么用过了,其实百度官也不会为难你。还有要准备的就是自己的项目,一定要理好思路,把项目从应用场景到架构到实现,到遇到的问题都想明白了怎么说,到了面试的时候才能表达清楚。另外有些外企比较注重英语口语,比如大摩跟微策略,可以提前练练自己的口语,以及对一些计算机基本概念用英语怎么表述。同时,一定要准备好一份像样的简历,这个没有太多经验,我的简历也是经过若干次修改才出来的,我觉得简历一定要诚实,即不夸张也不用谦虚。

第三种准备是笔试面试前的准备,虽然我觉得看面经没有啥帮助,但是可以从侧面了解一下,去面试之前,还是可以稍微看一些,但不要太迷信那些东西。同时也准备好着装,有一个好的精神和身体状态也很重要。我有次去面试闹肚子,回答问题的时候经常面露难色,一定给面试官留下了不好的印象。其实那是我肚子疼的自己在忍着而已。

我觉得把这些都准备得差不多了,就可以去战场上锻炼一下了,不用在乎每一次的成败,其实无论成败你都能学到东西,而且找工作本身就存在着偶然性,所以即要淡定,又要大度,一个萝卜一个坑,你最后肯定能找到那个属于你的你也喜欢的坑的。

3,887 次浏览 | 1 条评论
2010年11月20日 | 归档于 Job Hunting, 校园, 生日

在C++里写一个不能被继承的类(2)

上一篇博客中讲述了一种在C++中实现Final类的例子,但是后来想想那个办法有点绕,其实只要想办法让孙子类无法调用基类的构造函数就可以了,可以有很简单的办法能做到,不需要使用模板呀、友元呀那些比较复杂的机制。具体的代码如下:

只要理解我标红的地方就可以了,把AbstractFinal的构造函数设置成私有的,然后FinalClass以私有虚继承的方式继承AbstractFinal类,这个时候,再有FinalClass的子类就无法调用AbstractFinal的构造函数(对其是私有的),所以也就形成了一个无法被继承的类。

2,833 次浏览 | 没有评论
2010年10月1日 | 归档于 C++, 学习, 技术
标签: ,

在C++里写一个不能被继承的类

这是最近看到的一道面试题,最近是看了不少道面试题,C++里各种变态的问法。这道题算是比较正常的吧。在C++语言里,是没有类似Java里final class的概念的,但是学C++的人心里一定要相信,C++是万能的。于是有人给出了一种解法

代码我在下面再贴一下吧,不过著作权归原作者所有,向原作者表示敬意。

template <typename T> class MakeFinal

{

      friend T;

private :

      MakeFinal() {}

      ~MakeFinal() {}

};

class FinalClass: virtual public MakeFinal<FinalClass>

{

public :

      FinalClass() {}

      ~FinalClass() {}

};

这个方法行不行,行!请注意红色的部分,由于声明了T是友元类,所以可以访问自己的私有成员函数,当然也包括构造和析构函数;但是由于FinalClass是虚继承自MakeFinal,所以当有一个类ChildClass: public FinalClass时,会先调用虚基类MakeFinal的构造函数,由于调用者是ChildClass,所以无法调用。上述代码要是把virtual去调,则可以有ChildClass: public FinalClass,因为普通的继承是由子类调用父类的构造函数,向上调用,ChildClass的父类FinalClass是可以调用MakeFinal的构造函数的,所以这里虚继承是必须的。不然就无法实现一个不能被继承的类。

这个方法有没有局限,答案是有。上述代码第一个红色的部分,只要在支持c++0x标准的编译器里才能编译通过,GCC 4.4就算是加上-std=c++0x也不能通过,因为4.4只是部分支持了c++0x的标准。是不是就不能做出一个在GCC 4.4里可以用的FinalClass了?非也,C++是万能的。嗯,你在friend后面直接加个class后,GCC会报有编译错误,此路是不通的。客官就别试了。

我们定义另一个结构体:

template<typename T>

struct Clazz

{

      typedef T Type;

};

然后把原来的FinalClass略加修改:

template <typename T> class MakeFinal

{

      friend class Class<T>::Type;

private :

      MakeFinal() {}

      ~MakeFinal() {}

};

OK,在GCC里可以编译通过了,并且虚继承了MakeFinal的类是无法再被继承的了,会在编译的时候报错。

小结,其实我们的目的就只有一个,把基类或是基类的基类的构造函数变成私有的。这样子类再继承这个类是,因为无法调用构造函数,就会产生编译时错误,自然也就没有办法继承了。

上述在GCC里能用的办法也不是我想出来的,出处在这里

6,469 次浏览 | 2 条评论
2010年9月13日 | 归档于 C++, Linux

终于更新到3.0.1了

WordPress 3.0.0据我所知官方就没有发布简体中文版,3.0.1倒是发布了有一段时间了,我一直以为是因为国内的服务器访问WP的升级服务器速度有问题,所以下载不了更新包,无法更新,所以经常没事儿就跑到后台来试试看能不能更新的了。今天实在是受不了了,去Google了一把,才发现有人跟我有一样的问题,只要把一些插件禁用就可以更新了。想想我用的那些插件都是很大众的呀,遂把我认为的最小众的三个与flickr的插件禁了,反正在国内由于伟大的墙的存在,flickr的访问本来也不顺畅~真没想到呀真没有想到,然后就更新成功了。

最近在忙着复习、找工作还要看论文写设计,这一年好好忙过去吧!Fight!

2,925 次浏览 | 没有评论
2010年8月27日 | 归档于 博客
标签:

无法将此图像设置为墙纸,出现了一个内部错误。

今天是黑色星期五,也出现了一个小小的插曲。之前一直使用Win7里的壁纸播放功能,定时的更换壁纸,但是从昨天就发现壁纸不更新了,以为是个小问题,换个主题就OK了,所以也没有在意。今天去搞了一下,换主题,换壁纸,各种我能想到的方法都想到了,壁纸雷打不动的还是那一张。我并没有在组策略里禁用相关的选项,郁闷了。看到有人说重装系统后就好了,这不是扯淡么,为了张壁纸要重装系统,不甘心。于是在资源管理器里用图片查看器找到一张图片,然后右键点击设置为壁纸,弹出错误提示“无法将此图像设置为墙纸,出现了一个内部错误。”,这样就好办了,既然有错误提示,肯定有人遇到过这种问题,于是Google了一把,找到了解决办法。照着作,把C:UsersXXXAppDataRoamingMicrosoftWindowsThemes下的TranscodedWallpaper.jpg删除即能解决问题。

现在又看了一下,每次更换一张壁纸,上述的文件都会发生改变,难道是之前的文件产生了一个锁,无法更新这个文件,所以壁纸一直无法更新?可是我有重启、注销呀。希望记下这个能帮助遇到同样问题的人解决问题,节省宝贵的时间。

7,203 次浏览 | 5 条评论
2010年8月13日 | 归档于 Windows, 未分类

25岁

25周岁了,算虚岁的话已经26了。说得再恐怖一点,已经是奔三的人了。人的一生当中没有几个25年,这第一个25年应该是这所有人生当中比较快乐轻松的,虽然现在并不觉得自己有多快乐轻松。不过有些压力也是正常的,只是别给自己过多的压力就好。

看着我2岁的外甥自己就经常感慨,他现在过得真开心,有吃有喝有玩,不用操心什么也不用担心什么,可以耍脾气可以不乖,作为一个成年人,我没有办法像他那样,再也没有办法像他那样。也许只有等到自己足够老了,老到得了老年痴呆的时候才会像他那样子开心,可以乐呵呵的笑,可以把撕纸当成一种乐趣并乐此不疲。

跨过24岁,人生又过了一个轮回,再过本命年穿上大红内裤的时候就36岁了,那个时候我孩子应该也上小学了吧。今年开学也研三了,开始找工作,终于要走出象牙塔走进社会了。有人说,大学里都是高智商云集的人,这里的勾心斗角要远比社会上来得更复杂,能从大学里出来就能好好的在社会上生存。但我还是觉得大学里的人还是单纯了一些的,虽然上面说的也有道理,但是真正工作了,还是有许多跟之前不一样的东西,这些大概是我26岁的时候应该好好考虑的东西了吧,今年只有两个重要的目标,找工作和毕业。

在北京也呆了二年多的时间,有快乐、有不快乐,接下来的一年还要好好的走,不要给自己太多的压力。我现在自己也这样安慰自己,成功与失败,并不是一件事两件事或者一个人两个人的评判就能说明的,我的人生大戏才刚刚拉开序幕不久,剩下的路还很长很长,重要的不是过去,而是自己的未来,只要对自己充满希望,一切都不晚,一切都有可能。

==eof==

2,996 次浏览 | 1 条评论
2010年8月8日 | 归档于 感悟, 校园, 生日, 生活
标签:

健身

所里的健身房开业有一段时间了,三楼有健身器械、跑步机、乒乓球,四楼有羽毛球,五楼有桌球。来北京读研,也就研一的时候上过半年健身课,公寓里的健身房实在是太简陋,上完课也就没有再去过;而且那边的器械,一个人去练,没有人在一旁陪着,着实是不太安全的,因为能练的大部分只有围绕着杠铃为主的动作,所以最好还是有人能陪着会比较安全。所以的开了以后,很快就去试玩了一次,从大四开始,自己就有点发胖的迹象,再加上读研两年太忙,也没有太多的时间去运动,自己是觉得身体素质不如以前,起码没有以前结实,现在的肥肉还是多了一点。

现在基本上能坚持隔一天去一次,每次运动一个小时,一直这样坚持的话,希望能恢复以前的那种状态。我健身有两个主要的目的,塑形与健康的考虑。毕竟年纪也大了,不好好运动,慢慢的发福走形是不可避免的,可是连婚纱都还没有拍,现在就走形了,太遗憾了;而且整天坐实验室,这样一直不运动一定不会身体健康的。

说起我健身的经历,倒是挺有意思的。我小时候是个很瘦的男孩子,我堂弟比我小五天,上小学的时候,他一直都比我要重五斤。那个时候一直就觉得自己有肋骨每一根都能看得清清楚楚的。瘦,身上也没有什么肌肉。小的时候也不知道健身是怎么回事儿,反正就是一直很瘦。不过自己一直觉得自己的力量素质相对于自己的体重的时候,还算是可以的。像做引体向上,扔垒球,这种需要上肢力量的运动,我在班里同学都算是做得很出色的。现在想想,可能真是自己力量大,身体轻的原因吧。

让我有了练练肌肉的想法,或者说加强自己力量素质的想法,是初一暑假的时候,跟另一个同学一起参加一个夏令营的活动,在休息的时候,我们两个一起在双杠边上玩,看他做臂曲伸很轻松的样子,我也觉得这没有什么难的吧。可是自己上去做了一个,觉得胸部的骨头都有裂开了一样,那次特别受刺激。不过那同学是身体很壮的那种,一般的男生在那个年纪都不会比他的身体素质好。但是,我是从那个时候,开始有这种想法的。

可是怎么开始锻炼呢?我就知道一些最简单的可以在家里做的运动,比如仰卧起坐、俯卧撑、引体向上。说起引体向上,其实因为身子轻,在家里也很容易做,就直接把手放门框上,把自己拉上去。像在想不起来经过我初中两年这样断断续续的一些小锻炼到底起了怎么样的效果,但是读高一军训的时候,我们那一屋住的肌肉男里,没有人背部肌肉比我明显的,哈哈,那个时候应该就不像小时候那种瘦弱的体型了吧。

后来读高中,还是只做这些简单的运动,仰卧起坐、俯卧撑、引体向上。没有接受过什么正式的健身的训练。

后来读了大学了,大学里有健身房,也报过体育讲里的健身课,但是也是偶尔去去,没有去得很积极。但是还是有一些效果的。大三暑假去实习的时候,很多人对我的印象我想大概就是小伙子比较壮实。 那个时候是我第一次达到130斤,很多人看到我,都问我是不是特喜欢打篮球,因为胳膊看起来挺粗的。但是也就是平时偶尔练练。可能是我的肉比较容易长肌肉吧。

接着大四一年,到现在读研两年,比原来胖了。嗯,继续坚持下去。希望能达到自己的目标。

2,531 次浏览 | 没有评论
2010年7月9日 | 归档于 校园, 生活
标签:

在Godaddy的主机上配置CodeIgniter

之前在CodeIgniter上部署过一个小的CodeIgniter的应用,参考了这篇文章,当时顺利的完成了部署运行的任务。主要是因为在Godaddy的虚拟主机上使用rewrite模块产生的问题,原因不知道,只知道一种解决问题的办法。主要的步骤为:

在config.php里修改配置,使用QUERY_STRING的方式来解析URL

$config['uri_protocol'] = "QUERY_STRING";

然后,修改.htaccess文件,使其内容为如下所示:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

这样,某个请求,如http://www.example.com/blog/view/123 ,实际上会被解析成http://www.example.com/index.php?blog/view/123 ,但是,假如我使用的请求必须通过GET方法传参数呢?这种解决方案就不能解决问题了。如http://www.example.com/index.php?blog/view/123?from=1009&author=bbiao ,这个时候就无法通过parse_str($_SERVER['QUERY_STRING'], $_GET);的方法来获得GET的数据了。但是我们可以观察到$_SERVER['REQUEST_URI']里保存了blog/view/123?from=1009&author=bbiao的值,OK,解析一下这个数据就可以了。代码如下:

$arr = explode(‘?’, $_SERVER[‘REQUEST_URI’]);
parse_str($arr[1], $_GET);

另外说一句,由于CI里是把$_GET的数据清空的,所以才有了以上的这些说法,CI本身是不推荐使用GET来传递参数的,但有时候又不得不用,比如使用OAuth的时候,别人回调你的接口的时候都是这样传的,你能怎么办呢?事情总有解决办法的,现在我的程序在Godaddy上跑的一切正常。

5,277 次浏览 | 没有评论
2010年6月2日 | 归档于 CodeIgniter, Linux, opensource

Xen Cloud Platform 0.1.1

Xen Cloud Platform 是一个基本Xen虚拟化技术的云计算基础平台,这半年一直在使用另外一个商业版本XenServer,少对XCP有所关注,今天看了它的官方主页,XCP今年有一个新的版本发布,版本号是0.1.1,我去年使用XCP的时候,其版本还是0.1,这里对新版本做一个简单的介绍。

版本0.1.1发布于今年1月18号(汗,现在才知道),新增加的功能包括:

  • Openvswitch
  • XCP Console Documentation
  • VNC Console Proxy and Web Front-End
  • Standalone Front-End – *openxencenter*
  • VM Lifecycle Queuing Deadlock Fixed
  • Rare Post-Fork() Spinning XAPI Process Fixed
  • Active Directory Authentication Fixes
  • Memory Ballooning Fixes

其中描述的单独的前端就是XenCenter的一个开源Python实现,试用了一下,与XenCenter 5.5还是有一定差距的,但是总算是有一个前端可以选择了,之前用xe cli和Web管理太痛苦了,详细信息和下载,可以到XCP的主页查看。

14,184 次浏览 | 没有评论
2010年5月22日 | 归档于 Linux, opensource, 云计算, 虚拟化