行者无疆 始于足下 - 行走,思考,在路上

新鲜的刚出炉的热乎乎的淘宝和DeviceVM面经

折腾的一天,两场面试,感觉都还凑合。

第一场是华数淘宝的面试,关于华数淘宝和淘宝之间有什么区别和联系,我也没有细究,反正上午十点到了西湖国际大厦后只看到了taobao的字样。来到了前台,填写了一份履历表,一会一位男员工走了出来带着我来到了一个沙发处。有好几个桌子,都是面试官和学生们面对面地谈。

首先还是自我介绍。我就毫不客气巴拉巴拉地说了一通,连自己骑车玩户外的事情都吹了一通。面试官微笑,蛮厉害的嘛。接下来就开始考题目了。第一道题目是c语言指针的问题。问:

char *p = "abcd";
printf("%d", sizeof(p));
char p1[] = "abcd";
printf("%d", sizeof(p1));

我大概是脑子进水了,两个简单的问题都答错了,弄了一个非常尴尬的开端。然后又问我有没有用过内存拷贝函数?"memset?"我问。“不是,memcpy。算了,有没有用过strcpy”。“这个,用过”。“那你写一下这个函数的实现”。然个后我就很不争气的写了一个非常糙的实现,还是在面试官的提醒下才改对的,两个明显的bug。尴尬。

接下来问我对排序了解多少,知道哪些排序。我说我对那种[tex]O(\lg n)[/tex]的排序比较熟,他让我举例,我就把能想到的选择排序、冒泡排序、插入排序、快速排序、归并排序、希尔排序等等都说了。然后他让我描述一下快速排序的实现,我就balabala讲了一通——其实要让我写,短时间内我还真不一定能写出来。快排到此为止。又问我那些是稳定排序和不稳定排序,我说这个我真不清楚了,可能要看具体实现——很尴尬。“还有别的排序方法吗”,“有,当然有,比如桶排序——还是创新工厂的面试时学会的……”。我又balabala的吹了一通,把决策树都说上了,这些排序总算是问完了。

问我了解设计模式不?我说看过几页《大话设计模式》。然后他问了一个单例模式?我就傻眼了,嘟囔着说不出来。其实这东西一直想去研究,一直在拖。接下来问我程序的内存空间是如何管理的。我就说栈和堆的东西。蒙混过关。然后问我“给你两个栈,如何模拟一个全功能的队列?”我想了想,给了一两套方案,不过终究不完美。

中间问我java的vector是怎么回事?java有vector的?我愣了。然后他说那就说说c++ stl里面的vector和list是怎么实现的吧,又什么区别。这个问到点子上了。记得大二时扫《c++ primer 3rd edition》时恰好仔细研究过,我就balabala的说了一下vector<int> v的v.capacity()和v.size()的区别,看得懂的应该不用细讲,看不懂的看官,你的c++比我还差,赶紧回家补补。问完这个又问我进程和线程有啥关系。一个进程开辟出来的内存,其子线程是否能够访问等等,答得一般。

又问我在实验室做的项目(一个windows mobile界面开发的项目),问我GUI库中的button的onclicked()的动作是如何相映处理的。我就把Win32 API里面的消息循环机制又吹了一通。面试官表示很满意。

最后问我linux shell命令的东西,比如如何找出一个分区内占用空间最大的目录,我说用"du -h . | sort",如何看磁盘使用量——"df -h",如何查找文件等等,由于日常经常用linux小打小闹,所以这部分答的也还算可以。

大概就谈了这么多,最后他送我出去,还郑重地握了握手,感觉还凑合吧。

然后回到玉泉吃了个午饭,就赶往滨江区DeviceVM参加下午一点的面试。公交+打的跌跌撞撞到了盾安大厦DeviceVM公司,接待我的是一个ppmm。二话不说,先给了我一套题目,说时间一个小时,标记的必做,没有标记的选作——这个标记主要根据你应聘的职位来标的。我的娘,题目总共有十几页,大概是16种类型,不过我只需要做6、7种必做的。类型分布大概如下:

  1. c/c++(what's operator overloading, what's copy constructor)
  2. oo(class, instance, inheritance, polymorphism, how to modeling)
  3. gtk(layout, glib)
  4. qt(qmake)
  5. linux file system(/proc directory, how to mount multiple file systems)
  6. linux device driver(what's io port? how to install and remove driver?)
  7. php
  8. javascript
  9. regular expression
  10. windows API
  11. xml
  12. uml
  13. networking
  14. python(list, tuple, dict)
  15. shell script($PATH, find command)
  16. logic
  17. personal information

我不管是否必答,先把自己会的都答上了。其实题目都不是很难,只是考的比较广泛,这就看你平时的积累了。而且每种职位大概只有7个部分是必答的。我应聘的是linux c++开发工程师实习,Qt和Gtk必考,可是我只有了解,却基本不会,倒是把Shell和Filesystem基本都答上了……汗。

答完了给了我一份履历表,填完履历表过来一位男面试官。看着我简历问我一些问题。首先让我阐述下c++的多态性是怎么回事。我就balabala胡侃了一通,把RTTI和函数指针都侃出来了,面试官表示满意。然后让我介绍了下实验室项目,我又balabala说了一通,面试官表示还不错。问我有没有用过javascript,我说只用过document.write()……又问我如何写一个程序,探知另外一个c++可执行程序的堆内存使用情况。这个问题不太明了,他说就是让你写个调试器类似的东西,我说没什么思路,他说可以利用c++的运算符重载,重载一下new和delete,让new和delete输出一些信息。不过我头脑中没有任何重载new和delete的想法和回忆,晕了。

最后他问我实习时间可以保证多少。我说最多到十月中旬,问我什么时候考完试,我说7月6号。然后就这样结束了。我也不知道这么问究竟什么意思,淘宝的面试官也这么问我,不知是悲剧呢,还是心里觉得我这个人还有点潜质,打算发offer了。

Ok,到此为止。

申请上LinuxApp版主了

看到88(ZJU,飘渺水云间论坛)pluskid大神在征LinuxApp的版主,于是我就毛遂自荐, 冒冒失失地去分区GM1_Studio发了申请版主的帖子。那个时候对于term软件还不是很熟练,帖子发错了信息,竟然不知道如何修改,闹了大笑话。后来熟悉了term软件,windows下的Fterm,和linux下的Qterm,发现term的许多操作都是仿vim和emacs。

过了几日,分区主管发来“慰问信”,我赶快又把88的站规浏览了一遍,糊弄份答卷回复。昨日,收到88的任命:

找这么个差事,主要是想有个交流的平台。一直以来,自己都是一个人在闭门造车。这几日的实验室生活,让我懂得,搞软件,人与人之间的交流还是非常重要的。可能人家已经做好的事情,你自己再费力气搞好几天也弄不好。所以软件业一个重要的原则就是复用,避免"Reinvent the Wheel”。

其实有时间也想把自己的linux环境配置好好写写。一来做个总结,以后也可以当参考;二来总结的过程就是重新学习的过程。只是这些天实验室的项目逼的太紧了。搞得自己连课都没得去上,甚至因此有些焦躁,担心再次挂科。算算编译原理的作业也该补补了。

周四客户那边来人检查。今天下午赶工赶到现在,就出来一个很鹾的页面:

而且动态文本的更改还有些问题。尚不支持消息响应。真是太没成就感了。

不过这么写一遭,倒也学到了很多书本上学不到的知识。VS2008的一些小技巧、静态库的生成与发布、多Project的部署和依赖、WM模拟器的有关设置、还有重要的Windows消息机制的理解。想想现在再去看那本经典的《Windows程序设计》,应该是轻车熟路了。顺便买了一本魏永明先生的《嵌入式软件开发及C语言实现:MiniGUI剖析》,感兴趣的是其中的设计模式部分和跨平台实现部分。等做完了这个实验室项目好好研读研读。

ZOJ这两天没有做题。太忙了。忙完这阵再刷吧。晚上回去补编译原理的作业。再不做要来不及了。

紧凑的生活。加油。
 

夜半听歌

歌曲:单行道
歌手:王菲

一路上有人坐在地铁
张望擦身而过的广告
有人怕错过每段躲不过的
新闻报导
一路上有人能白头到老
有人失去青春年少
有人在回忆中微笑
也有人为了明天而烦恼
一路上有人付出虔诚
为不认识的陌生人祈祷
有人过了一辈子只为
一家几口每天都吃饱
一路上与一些拥抱
一边想与一些人绝交
有人背影不断膨涨
而有些情境不断缩小
春眠不觉晓庸人偏自扰
走破单行道 
花落知多少跑不掉
每个人都是单行道上的跳蚤 
每个人皈依自己的宗教
每个人都在单行道上寻找 
没有人相信其实不用找
一路上有人太早看透
生命的线条命运的玄妙
有人太晚觉悟冥冥中
该来则来无处可逃
一路上有人盼望缘份
却不相信缘份的必要
一路上那青春小鸟
掉下长不回的羽毛
春眠不觉晓庸人偏自扰
走破单行道 
花落知多少跑不掉
每个人都是单行道上的跳蚤 
每个人皈依自己的宗教
每个人都在单行道上寻找 
没有人相信其实不用找
每个人都是单行道上的跳蚤 
每个人皈依自己的宗教
每个人都在单行道上寻找 
没有人相信其实不用找

Gentoo+Fvwm-crystal

同样是大学四年,有人出国深造,有人延期毕业。
或许,大学的四年,多点思考,少点盲从,方能收获更多。

常听人说“某某又拿了哪哪的offer”,“某某又拿了啥啥的奖牌”,
渺小的我们只剩下一仰慕二叹息的份,
其实看看雷军的博客,
人因梦想而伟大,
我们会发现,
梦想并不遥远。

其实中国人活的是很累的,
文化传统,社会观念,多年的历练,
多数中国人练就了一身厚黑本领,
厚而无形,黑而无色,

放眼当下,
文华精英、经济精英、政治精英,
中国社会的三足鼎立。

有对比就会有差距,
有差距就会有动力,
有动力就会有进步,
有进步就会有思考,
有思考就会有沉淀。

当我还在这边纠结于学业,
上海交大某大一男生已经拿了acm/icpc世界总冠军;
当我借口说自己大学前基本不懂计算机时,
我昨天逛98却发现同样的条件水平,浙大Zodiac队伍世界第六,
当然这背后包含三年的汗水;
当我豪言“绩点是个屁”时,
有人仗着不算很高的绩点拿了哈佛的offer,
我还在这边浑浑噩噩,每天通宵达旦,日照三杆。

某日,日照三杆,肚中无物,遂出门觅食,
寻寻觅觅,
不知不觉,
至黄龙洞,
遂又寻阶而上,
日暮,
宝石山上,青灯古寺,
昂首望月,
心情大畅。
遂彩信莫莫一条,莫莫大窘:“晗宇你不许出家!想法都不能有!”

笑之。

没有什么能够阻挡,
你对自由的向往,
天马行空的生涯,
你的心了无牵挂,
穿过幽暗的岁月,
也曾感到彷徨,
当你低头的瞬间,
才发现脚下的路,
心中那自由的世界,
如此的清澈高远。

我是一个喜欢放纵,甚至放纵到堕落的人。
“人生得意需尽欢,莫使金樽空对月”,
偶尔的放纵,有时能够让人认清前进的方向。

哼着哼着,
泪水却控制不住,

女人常常抱怨,
说,女人的眼泪不值钱,
男人却被告知,
说,有泪不轻弹。
那是因为,
男人的眼泪,
最具有杀伤性。

寒假回家,
我大哭了一场。
哭后只想着逃离,
想着出去漂泊,
想着给家里留下一封信,
就什么也不管,
出走。
但我还是留下。
我想,
男人成长的痛苦
多半来自于男人的责任感。

人无法选择自己的出身。
更准确的说,人生有很多自己无法选择的东西。
但是可以选择自己的人生之路。

人生是一个时间的函数,
出身、家庭、五官长相是这个函数的参数。
你无法改变外界的输入,
但是你可以改变函数本身,
得到迥异的输出。

马云说,CEO是世界上最孤独的人,
所以时常夜半,马云在街上遛狗。

而孤独,是行者的骨头。

马云说最喜欢笑傲江湖的令狐冲,
我最喜欢令狐的一句话:“大丈夫行事,行云流水,任意所致,什么武林规矩,门派教条,都是他妈的臭狗屁”。

立于天地,
无愧于心。

高中时搞保送竞赛,我对班主任说“我的所作所为,对得起我的良心,对得起我的父母,对得起我的老师”,
我想,现在我的所作所为,对得起我曾经说过的话。

当会长的时候,俱乐部的前辈农民姐姐曾对我说:
“别看我们不逛论坛平时不怎么灌水,其实我们都在默默地看着你们呢”

行者无疆,始于足下。

爱行者,这是我的家,我的归宿。
 

kernel-mode-setting

archlinux的好处就是软件新,可以用上很多很强很酷的功能。譬如tex,在ubuntu 9.10中依旧是texlive2007,archlinux中却是与时俱进,texlive09了,而且自动集成了来自于CTex的xeCJK,最大的好处就是可以非常方便地处理中文,再也不用配置字体了。自此以后彻底告别了latex+cjk的传统解决方案。

最近的2.6.31的linux kernel有一个叫做kernel-mode-setting的功能,大概意思是把很多控制显卡的东西直接放到kernel-space里面,以求得更好地图形加速效果,也是非常酷的功能,启用这项功能可以告别复杂的xorg.conf。但是这项功能尚处于实验阶段,启用以后有可能造成更大的冲突和糟糕的显卡性能。因此前些日子装好archlinux时我就禁用了这项功能,具体可以参考这篇文章。但是今天更新了一下系统,于是系统就出现了各种各样诡异的问题。譬如某些窗口在最大化的时候系统会死机,某些时候切换窗口管理器的时候也会死机,kde下面点击右键菜单就自动注销等等,搞的我彻底崩溃。开始以为是桌面环境的原因,于是换了桌面环境,分别尝试了两个轻量级的桌面环境:xfce4lxde,但是问题依然没有解决。后来我忽然想起来那个kernel-mode-setting的问题,于是又照着archlinux wiki的文章启用了kernel-mode-setting。这下好了。不仅解决了问题,还意外地解决了某些opengl程序闪屏的问题。具体了解kernel-mode-setting请参考以下链接:

总体来说,kernel-mode-setting的功能还是很赞的。

令一个头疼的问题是emacs与ibus冲突的问题,google方案五花八门,各有千秋,最后找到一种方案,暂时解决的问题,虽然我也不知道是怎么回事。具体方法是,在主目录的.xprofile中加入: 

export LC_CTYPE=zh_CN.UTF-8

linux的输入法依旧是linux中文化的一大软肋。大体来说三种:scim, fcitx, ibus。scim基本算已经过时,而且经常会莫名其妙地和firefox,emacs等软件冲突,无法调用,异常麻烦。fcitx中国特色,受到很多人的追捧和喜爱。ibus是新一代输入法平台,算这里面最有前途的了。

linux用了也快小一年了。期间遇到过各种匪夷所思的问题,但依然坚持了下来,说来说去,作为一个计算机系的学生,不了解unix,不懂得bash,不懂得make,不会用emacs或者vim,没听说过latex,毕竟有些不像话的。有时候也烦,也怀念windows下面那种鼠标点点万事搞定的操作方式。但是我实在受不了windows的低效,受不了各种各样的破解注册杀毒激活,受不了不经意间弹出的广告,受不了动辄上G的应用程序,受不了乱七八糟的目录安排。总而言之,我患上linux偏执症了。

其实想想有时候这样折腾来折腾去也挺费时间的。倒不如省下时间去补补自己的功课更好。可是问题来了,你不去解决放任不管,心里面就痒痒的,总要想方设法将它搞定,才心安理得。对各种软件也非常感兴趣赶时髦,各种桌面环境都去尝试,虽然经常用的只有一个,经常用的软件也只有那么几种而已。archlinux,总能满足你这方面的要求。或许有一天,当我“看破红尘”,就不会再折腾了。emacs, firefox,gnutools,就这么几个万古长青的软件,弹指一挥。

好了,不聊了。睡吧。

Linux真的可以代替windows吗?

客观来说,我觉得这条路还很长,而且我觉得结果也不一定很乐观,虽然我现在喜欢GNU,生活在Linux下,也越发讨厌Windows的工作模式和设计思想,但是在很多领域,想要替代windows,很难,很艰难。 

今天遇见了两件不爽的事情

  1. 农行的网银,据说是用了Microsoft的ActiveX专有技术,什么是ActiveX专有技术我不清楚,但是我知道的是,Firefox不支持这种技术。这给我的日常学习生活带来了很多的麻烦。最麻烦的就是这个网银。在VBox虚拟系统和ies4linux两种解决方案均告失败后,我就彻底失去了继续折腾的信心。虽然我很爱折腾,但是这种折腾本身是无意义的。由于技术的垄断封闭和程序的bug,我觉得很多时候这种折腾如果不是必须,就不必要。linux目前还不成熟,很大一方面就是本土化问题,结合伟大祖国的实际,就是中文化问题。最明显的就是linux下的输入法照windows下的输入法还有很大差距。还有一些日常软件虽然有中文语言包,但是很多帮助文档是英文的,并不完善。
  2. pptx的问题。这使我深刻认识到了text格式才是硬道理。latex、xml、docbook、html,这些纯文本格式才是格式排版的必须。前日的M$搞出来的是doc,今日又弄出来个pptx,谁知道后天会不会出个pptxabcd呢。我想微软大概看到了OOo的竞争实力,故意更改一下格式,隐藏下Office2007的格式秘密,好让竞争对手来个下马威,从而把用户圈在Ms office的套件上。Knuth曾将说过:“I wish to die before I have to use microsoft office“。而事实上,他设计的TeX排版系统流行了三十多年,甚至70年代写的TeX文档,现在仍旧能编译产生漂亮的文档。多平台的文档解决方案,恐怕TeX和pdf的组合才是最佳方案。

在很多专业性很强的领域,Windows平台的软件还是占了统治地位的。比如Autocad,事实上的建筑制图标准,Linux下只有PyCAD,不过一看其界面,就知道此软件照Autocad还差很远。其余的,Cadence,还有很多制造业中的嵌入式系统,用的都是专有性很强的软件,离开了windows,整个行业都要发生翻天覆地的变革。要知道,除非Linux的替代软件兼容性做的足够好,否则以前依靠windows软件所建立起来的研究成果,将会成为linux推广很大的阻碍。

令我倍感庆幸的是,我赶上了一个变革的时代,我相信以ubuntu、debian、fedora、gentoo、arch等为代表的linux系统会发展壮大,最终和windows抗衡,并取代windows成为主流操作系统,建立一个自由的软件世界。RMS说的好,软件就像数学定理一样,那里会来盗版、拷贝、版权这些乱七八糟的东西呢?前两天逛书店竟然意外的发现了ubuntu的科普书。仔细想一想,用户习惯是个很大的问题。我相信每个人如果想熟练的使用windows,也要掌握这么一本书。而熟练掌握ubuntu日常应用,所需要的也只是和windows xp入门大全厚度价格差不多的这么一本书。计算机教育要从娃娃抓起,老一辈人们中毒太深,已经无可救药,新一代的我们,才是linux的希望和赌注。 我有时会想,我将来能够写出什么样的软件?会给人们带来多少便利呢?我觉得每个有志的IT人都应该仔细思考下这个问题。否则只是表面光鲜的高级技工罢了。




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee