找工作回顾(4):Java

写了几年的Java,到最后面试的时候,最让我伤心的就是Java,究其原因,平时用得多倒是挺多,文档看得也不少,但是没有深入到语言内部去,还有就是我的项目跟J2EE一毛钱关系都没有。我甚至之后的笔试面试宁愿选择C++来做,因为觉得自己复习C++复习了差不多一个月的时间,也算是比较有深度了。不过吃过亏,也就接着看了关于JVM、内存管理、并发控制、容器,但是越看到最后越觉得,其实面试官问的那些东西也不叫有深度,说来说去,都是一些知识性的东西,我知道与不知道又能怎么样?我不知道看看文档不就知道了,Spring Struts Hibernate啥的给我一段时间我也能弄明白。不过我还是有一堆建议,如果你不得不面这个方向,可以看看。当然,如果你不得不面这个方向,很有可能,你比我更精通Java。

  1. 永远不要说自己精通Java,一定有个面试官会把你面趴下。
  2. 既然说自己用过Java,那么起码对多线程、并发、容器、JVM、垃圾回收啥的,要很清楚很清楚。
  3. 既然说过自己用过容器类,那你起码把这些类的源代码要看一遍。
  4. 其他的一些基本知识你也一定要掌握,我就不一一列举了。
  5. 起码要用过大量的Java框架,似乎这在Java的世界里是个很重要的加分点。嗯,最好把Spring和Struts、Hibernate啥的核心代码都看一遍。
  6. 以及其他的你能想到的,尽量多去看书吧,各种关于Java的书。各种细节,各种知识点。

我倒也没有不喜欢Java,只是真的可能是因为J2EE的东西两年没做过,真的可能没怎么去看过JDK的源代码,所以有些时候显得没有达到面试官的期望吧。

语言其实只是一个工具,面试官问那些其实也是在检验你对这个语言掌握的程度到底有没有到达你说的精通、熟练、熟悉、了解,只要你如实的向面试官说明了你所掌握的与你简历上所写的是一致的就可以了。只是我觉得在各大IT工厂里,对Java的要求可能比我们想像的要高一些,去面试前做好准备好了。

所以到后来,我就美滋滋的做C++的笔试题,美滋滋的面C++的题目,以及美滋滋的想到工作之后可以天天写C/C++。不过为了拿好Java这把枪,我觉得有必要利用业余的时间搞点什么Java相关的项目,android上的或者是j2ee相关的,这还是门挺重要的语言,即使以后用不到,多去了解一门自己本来就熟悉的语言也是好的。

3,900 次浏览 | 1 条评论
2010年11月22日 | 归档于 Job Hunting

找工作回顾(3):面试

面试比较靠人品,有一定的随机性,但是好好准备的话,可以让随机性降低,朝着理想的方向发展。

首先是在接到面试通知的时候,你要确认面试的时间和地点,这个是最重要的。有些面试也可以问一下面试的形式,不过我面的全部都是1v1的,没有群面过,最好能跟通知你的人要一个可以联系到他的电话,以防止特殊情况发生的时候可以提前联系。因为很多公司都是有总机的,你按通知你的号码打过去,未必能打得通。

面试的着装,个人形象还是稍微注意一下。一般的IT公司穿得休闲一些就可以了。微策略、摩根IT这种类型的可以穿西装去,一般的公司穿西装去就显得有些格格不入了。出门之前一定要查好路线。在北京出门最不靠谱的就是打车跟坐公交,所以推荐近的地方骑车去,远些的地方坐地铁去。提前10~15分钟到达,我觉得提前到得太多也不是件好事。

面试的时候每个人都会紧张,但是一般进入状态之后就会好了。最重要的是跟面试官要有一个顺畅的交流,弄明白他要问你的是什么,想清楚自己想要表达的是什么,跟他确认他理解了你的意思。像对自己的个人介绍,自己的项目经历,自己的优点和缺点,这些最好是在面试之前就已经想好了。面试官有时候会问一些你不会的问题,有时候也会把一个问题逐渐问到你答不上来为止。遇到前一种情况,如果真的是一个你不熟悉的领域,比如你一直做C++开发,面试官却问你Spring的实现原理,那你大可以提醒他你不擅长这个领域,把他引导到你熟悉的方向上来。对于后一种情况,我觉得基本上你就说我不会就行了,面试官要么会引导你回答,要么他就是想把你问倒而已。我是个比较保守的人,一般遇到跟面试官有分歧的时候,除非我很肯定我的答案是对的,不然我一般会避免跟他有所争执,你很难保证他面试完你会去再查一下到底是你对还是他对,面对这种情况,我一般还是比较保守的处理了。问及一些软实力的时候,大可不必太谦虚,我觉得我这点就没有做好,面试官一般会认为大家都有“浮夸”的成分,所以即使你诚实的回答了,他也会把你说的内容打个折吧?这样很不划算。面试最理想的状态,就是把你的能力都展现给面试官,让他觉得你可以胜任将来的工作。

有些时候,会被问到一些你做过的题目,我觉得还是诚实的跟面试官说吧,这题目我做过,千万不要装出一副没有做过的样子,他会发觉的。被发觉了也不好。

一般面试快结束的时候,面试官会让你自己问几个问题,这个自由发挥吧,只要别是太雷人的就行。而且也最好别谈跟待遇有关的事情。是否录用你,除非面试官自己说了,最好也不要问。

面试完了之后,就等消息好了。稍微耐心一些,这个时候已经是我们所力所不能及的范围了。

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

找工作回顾(2):笔试

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

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

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

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

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

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

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

找工作回顾(1):准备

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

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

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

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

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

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

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

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

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

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

2,863 次浏览 | 没有评论
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,573 次浏览 | 2 条评论
2010年9月13日 | 归档于 C++, Linux

终于更新到3.0.1了

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

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

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

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

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

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

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

25岁

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

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

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

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

==eof==

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

健身

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

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

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

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

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

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

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

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

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