血淋淋的两天……

这几天事情实在是很多,以至于三天前发生的事情我已无丝毫印象,说说这两天的笔试吧。

16 日上午去听课了,数字电子技术基础,大二时挂掉的一门课,讲触发器和时序电路的,发现自己依然是听不懂,庆幸自己终于没有去读生仪那个博士,否则各种硬件电路、FPGA 还不得把我搞死。

下午两点百度的笔试,人很多,大概有 20 多个教室,算起来应该有五六百人了。我投的是运维部运维开发工程师,可是 Linux、Shell Script 等却没有考,考的全部是算法和 C++ 方面的东西。大概的题目有:

  1. 根据不同场景选择合适的排序算法,场景有:
    • 很少的元素
    • 几乎有序的元素
    • 关注最坏的情况
    • 关注平均性能
    • 元素是从一个密集的集合中取出
    • 实现尽可能简单,代码尽可能少
  2. 给你一段哈希表的 C++ 代码:
    • 描述内存分布
    • 理解代码含义
    • 指出代码的逻辑错误和编程规范错误
  3. C 中的 malloc / free 和 C++ 中的 new / delete 有什么区别和联系(考虑到 new/delete 和构造函数、析构函数之间的联系,以及 new/delete 是c++关键字而非库函数,可以进行运算符重载等等)
  4. 单入口单出口的有向无环图,给出一个算法,在已有的节点中插入若干个节点,使得从入口节点到出口节点经过的任意路径的长度都一致(瞎蒙的,记得有个 NP 的求最长路径的算法,在此基础上胡吹了一通)
  5. 二重哥德巴赫猜想:每个不小于 6 的偶数都可以表示成两个奇素数之和,请用你熟悉的语言编写一个函数,输出 6–100000 内所有偶数可以表示成哪两个素数之和,如果有多种表示方式,输出任意一种即可。要求:给出完整代码,在达到目标的基础上尽量高效简洁(打表法, a[100000]a[i] = 1 表示 i 为素数,然后循环)
  6. 系统设计题(这道题目不同职位不一样,终于算考点运维了):关于系统日志的备份和分析,请你设计一个好的方案,综合考虑网络带宽,系统资源,负载均衡等等……(大概是这样,胡吹的,IO-bounded/CPU-bounded,FTP/SSH/rsync等,负载均衡,想到的都说上了)

百度笔完觉得如果幸运的话应该会给个一面吧,不过也没抱太大希望了,毕竟自己的斤两自己还是心知肚明的。然后去了吃了晚饭,去实验室,打算搞台电脑,装个 Linux,架个服务器玩玩,也好亲身实践下 DHTML,CMS 等;还有一直牵挂的 旅行者小网站;架设个 FTP,存放一些历史资料;有空还可以挂个论坛模块上去——我太邪恶了。在实验室翻箱倒柜,搬来了一个主机,一个显示器,偷了根网线加上许久未用积满灰尘的键盘,花了一个多小时的时间擦掉电脑上的灰尘,开机启动,123456 撞大运地破解了密码,进入系统,得到了系统原先主人的信息——一个已经毕业的女研究生学长,确认后就下载了 Ubuntu 10.04 AMD64 版本,刻盘安装。设置好软件源,架好 SSH,回到寝室远程登录架好了 VSFTPD,FTP至此初步完成。呵呵。接下来研究 VSFTPD 详细的参数配置,实现诸如带宽限制、权限限制等高级的功能。

17 日上午腾讯的笔试,场面更为火爆,笔试名单上大概有 1250+ 的人数。笔试题目很多,由于试卷上有保密协议,所以这里不方便透露,题目大概是 20 道选择 + 代码填空 8 个+ 附加题,考点很广,C++ 的除了语言还有网络和操作系统的一些知识(我觉得这些对通过考研打牢基础的人是很有利的……),考完了感觉还不错,结果晚上面试名单就出来了,悲剧了…… 版上也有很多人抱怨,说感觉不错为啥一个面试机会都没有。可能找工作有时也靠运气吧,比如我一个百度保底的学长,Google 笔试直接挂掉,连面试机会都没有;比如很多大牛投了网易号称说要 bs 网易一下的,结果网易连个笔试机会都不发;比如上个月我的有道机试, 260/270的秒杀,如果不是论坛上抱怨下恐怕也因 HR 的失误变成分母了……

下午回来看了会书,看了看 NTP 协议,淘宝上买的 《ANSI Common Lisp》到货了,简单看了看,再领略了 C++ 的宏伟,Java 的臃肿,Shell Script 的便捷,Python 的 Dynamic Typing 后,Lisp 的 Functional Programming,是我一直所渴望了解的。长期以来 Emacs 的配置都是在网上找然后 Copy & Paste,搞的自己都不好意思拿出手,趁着有时间好好学一学。海鸥的镜头和包也到了,至此自己花了六百大洋左右搞了一套古董机的单反, Seagull DF2000 + 35mm 标准头 + 28–80 变焦头 + UV 镜 + Seagull 相机包,性价比应该还算挺高的吧,用来练手练技术好了。

晚上去 Vobile 笔试打了桶酱油,笔试题目有七道吧,大概如下:

  • 写代码求 N! 中尾数中 '0' 的个数
  • 写代码求 1--N 中数字 '1' 总共出现了多少次
  • 估计一下全中国与你同名同姓的有多少人
  • 12 个蚂蚁站在木棍上,左边 6 个一队,右边 6 个一队,一声令下,左队蚂蚁向右运动,右队蚂蚁向左运动,如果两只蚂蚁相撞,则改变运动方向,蚂蚁会从木棍的两边掉落。问经过多少次碰撞后所有 12 只蚂蚁会掉落?(我的答案是 36)
  • 多关键字排序(多看看基数排序和字典排序)

还有一两道实在想不起来了……总之题目还是比较基础的吧,不算难。Vobile 笔试完又去听了 IBM 研发专场的宣讲会,据说每个人都有包包发——怪不得越到最后人越多,原来大家都是来拎包的啊……不过我不知道,听完招聘安排提前走了,亏了,呵呵。

晚上回到寝室看到 88 work 版,就知道百度和腾讯都悲剧了。百度在意料之中,腾讯有点郁闷,不过算了。现在总结下,Google、百度、创新工厂、腾讯笔试被刷;网易有道止步一面;网易部门杀进面试,尚不知面试时间和地点;华数淘宝由于实习拿到工作保底 offer,前景比较光明,正在犹豫当中,所以阿里系列的所有公司也不再投了——如果再受几个打击说不定就签了;微软不太喜欢,微策略虽然是米缸,看中绩点,为我所不耻,索性投也不投了;华为简历审核通过也不知道是啥意思;剩下的还有啥呢?自己的策略是不投游戏不搞硬件不投太小太没有名气的公司不投测试不投 Java 不投金融,好像也没有太多了。嗯。

其实想想人有时候真的是挺贪得无厌的,欲望是痛苦之源,我一直认为钱是一种手段,但绝不能成为一种目的。

差不多了,我也累了,忙完这阵,过了秋学期考试,争取定下工作,抽出一个月的时间出去兜一圈。加油吧。