《程序员求职之道》迷你书


当当、京东、亚马逊等均有售哦~只要 29 元哦~ 程序员求职之道:程序员求职必备圣经 国内首本详细介绍程序员求职的技巧方法类书籍,堪称程序员面试圣经。 封面 如果你离毕业还远,正在感叹艰难就业季,前途迷茫,不知何去何从; 如果你即将毕业,正在为如何求得一份好工作奔波、苦恼; 如果你工作不顺心,正在考虑是否跳槽,离开现在的伤心地。 那么请翻开这本书,花上几天时间耐心地读完她。本书作为程序员面试史上划时代的著 作,将通过不同的视角,全方位、多层次、三位一体地展现程序员面试中不为人知的一面。 无论你是二十多岁的学生,还是三十多岁的职场老将;无论你是自称程序员的男性,还是以 “程序猿”自居的女性;无论你是研究生,还是本科生;无论你是技术大牛,还是编程菜鸟, 通读本书,你都将受益匪浅,你都会有一种拨开雨雾见青天的感觉。 内容简介 本书通过分析 IT 行业的现状,为读者描绘了一个真实可信的程序员生活蓝图,并以此 为基础,指出了从事 IT 行业的各种酸甜苦辣,为准程序员们就业择业提供了完整的参考资 料。同时,本书针对当前各大 IT 企业面试笔试中常见的问题以及注意事项,进行了深层次 的分析。为了更具说服力,本书特邀多位 IT 名企面试官现身说法,对面试过程中求职者存 在的问题进行了深度剖析。不 仅 如此 ,本书引入了一批来自于名牌高校、就 职于明星企业的 职场达人的真实求职案例,通过他们的求职经验与教训,抛砖引玉,将 整个求职过程生动形 象地展示在读者面前,进而对求职者起到一定的指引作用。为 了 更具有代表性,本书对各种 类型的 IT 企业(互联网企业、研究所、外企等)的招聘环节进行了庖丁解牛式的分析,旨 在帮助求职者能够更加有针对性地进行求职准备。 本书是一本计算机相关专业毕业生面试笔试的求职用书,同时也适合期望在计算机软硬 件行业大显身手的计算机爱好者阅读。 前言 21 世纪是信息技术高速发展的时代,云计算、智能手机、移动互联网充斥着人们的生 活,技术的更新换代已如脱缰的野马,向着更快、更好的方向长驱直入,人们很难想象得到 未来的世界会是什么样子。不是人们不敢想,而是人们的想象力已经跟不上科技发展的步伐 了。那么,到底是什么在推动着 IT 技术不断前进呢?是 Microsoft 的比尔盖茨吗?是 Facebook 的马克·扎克伯格吗?是百度的李彦宏吗?是腾讯的马化腾吗?是阿里巴巴的马云吗?显然 都不是。无论他们多么才华横溢,但终究是一个人,能力有限,要想推动整个 IT 技术的发 展,还是需要无数默默奉献自己的青春与汗水,整日与计算机为伴,“干得比驴累,吃得比 猪差,起得比鸡早,看上去比谁都好,五年后比谁都老”的程序员。 程序员这个职业好还是不好是一个仁者见仁智者见智的问题,但有一点却没有人会有任 何异议,那就是程序员的薪水相比其他行业还是非常具备竞争力的,不 敢 说 是行 业前三,但 至少应该能够名列前茅。除此之外,程序员也是一个市场需求量很大的职业,因为生活中方 方面面都离不开计算机程序,从 航空航天、武器弹药等尖端产品,到电视、冰箱等生活用品, 从桌面应用到手机应用,它无处不在,无处不有。所以,程序员已经成为当前最炙手可热的 职业之一。 正因为如此,每年招聘季节,不 管 是 计算机专业的学生还是其他专业的学生,只要会一 点编程基础,都会尝试着去 IT 企业投投简历,但为什么总有很多人会被企业无情的拒绝? 是智商太低了吗?是能力不够吗?显然都不是,能够考入大学的学生,不 敢 说智 商 很 高 ,能 力 很 强 ,但 肯定 不 笨 、不 傻 ,那 到 底 是 什 么 原因让莘莘学子在求职路上折戟沉沙?方法不对。 具体而言,就是在求职的过程中,缺少面试笔试的技巧与手段,总犯一些不应该有的失误。 鉴于此,编者在《程序员面试笔试宝典》这一著作的基础上,结合读者的反馈以及长期 的工作经验,创作出了《程序员面试之道》,旨在提高求职者的面试成功率,努力为求职者 们照亮前进的路。该书不同于同类书籍,主要表现在以下几个方面的内容: 1、深度剖析准程序员内心深处最纠结的职业问题。很多求职者在就业前,往往会道听 途说,对程序员这个职业缺乏真正的了解。无论是行业发展还是个人性格,都会影响到一个 人未来的事业走向,本书通过分析程序员求职前最纠结的各类问题,旨在为程序员展现一个 最真实的程序员生活状况。 2、面试官箴言。本书特邀 IT 名企资深面试官现身说法,他们站在企业的角度,以面试 官的视角,深度剖析企业在招聘程序员时,如何慧眼识珠,在短时间内鉴别求职者是“千里 马”还是“滥竽充数者”,招收到企业需要的人才。 3、各类求职案例。本书将当前中国实力最强劲的计算机类大学或研究所的求职达人(他 们分别来自中国科学院计算技术研究所、西安电子科技大学、浙江大学、中山大学、电子科 技大学、西北工业大学等)的求职经历引入,他们的就业前景(他们的主要就业为:人民搜 索、微软、网易、支付宝、华为、研究所、读博、出国等)代表了优秀的就业目标,具有非 常高的代表性与就业参考价值。 4、面试技巧、企业攻略,一网打尽。本书将各大主流企业的招聘流程、面试笔试注意 事项、真题一一展现在读者面前,同时针对这些原始资料,进行深入理解,使得读者能够更 有针对性地准备不同性质的企业。同时本书还分析了哪种人适合哪种企业,给予读者一定的 参考性,防止求职者盲目地选择企业。 5、引入插图元素与影视元素。插图元素能够将一些看似很苦恼的问题简单化,影视元 素能够让看似枯燥无味的文字,变得轻松起来。 6、描述贴近生活。本书的内容并不追求华丽的词藻,也不追求文字上的“高端大气上 档次,低调奢华有内涵”,而是采用朴实的文字,结合当下最流行的网络段子、吐槽,将看 似复杂的问题生活化、口语化,更亲近读者。 在本书的编写过程中,得 到 了 机 械 工业出版社时静的大力支持与通力配合。创作的过程 是一个自我斗争、自我救赎的过程,充满了孤独,无数个节假日,无数个深夜,当其他人沉 静在幸福美满的快乐生活中的时候,我需要安静地坐在计算机前,尽管没有香烟的熏陶,也 没有美酒的陪伴,更没有佳人的问候,但与 word 称兄,与键盘道弟的生活仍然十分美妙, 尽管孤独,但我却非常享受这种拼搏的过程,我相信通过努力,凤凰终有涅槃、“屌丝”终 有逆袭的那一天。 由于作者水平有限,书 中不 足 之处在所难免,还望 读者见谅。读 者 如果发现问题或是有 此方面的困惑,都可以通过邮箱 xdhehao@foxmail.com 联系编者,将不甚感激。 编者 于古都西安 前言 第 1 章 面试官箴言 1.1 有道无术,术可求;有术无道,止于术 1.2 求精不求全 1.3 脚踏实地,培养多种技能 1.4 保持空杯心态 1.5 职场是能者的舞台 1.6 学会“纸上谈兵” 1.7 小结 第 2 章 面试心得交流 2.1 心态决定一切 2.2 假话全不说,真话不全说 2.3 走自己的路,让别人去说吧 2.4 夯实基础谋出路 2.5 书中自有编程法 2.6 笔试成绩好,不会被鄙视 2.7 不要一厢情愿做公司的备胎 2.8 出国读博,好事多磨 2.9 干一行,爱一行 2.10 天上不会掉馅饼 2.11 小结 第 3 章 企业面试笔试攻略 3.1 互联网企业 3.2 网络设备提供商 3.3 外企 3.4 国企 3.5 研究所 3.6 创业型企业 3.7 如何抉择? 第 4 章 程序员那些事儿 4.1 程序员的世界很奇妙 4.1.1 编程语言很重要吗? 4.1.2 做程序员是否有“钱”途? 4.1.3 程序员是吃青春饭的吗? 4.2 程序员门槛几多高 4.2.1 哪些人适合做程序员? 4.2.2 女生适合做程序员吗? 4.2.3 优秀程序员应该具备哪些素质? 4.3 成长的烦恼 4.3.1 程序员的成长阶段有哪几种? 4.3.2 你了解工作与读书的区别吗? 4.4 习惯决定成败 4.4.1 程序员,你们中枪了吗? 4.4.2 快乐编程的好习惯有哪些? 4.4.3 准程序员们,准备好了吗? 4.5 身体是革命的本钱 4.5.1 程序员的健康谁来保证? 4.5.2 程序员如何保持身心健康? 4.6 小结 第 5 章 就业没那么简单 5.1 这些道理你不懂 5.1.1 自己的强项或是研究方向与中意的工作岗位不一致怎么办? 5.1.2 非计算机专业的人如何通过面试关? 5.1.3 求职时,学习成绩是否真的那么重要? 5.1.4 非名校毕业或专业一般怎么办? 5.1.5 同一家企业给所有的求职者的待遇都一样吗? 5.1.6 看着别人手拿大把的 offer,不淡定了怎么办? 5.1.7 成绩一般、水平一般,求职没有自信怎么办? 5.1.8 外语水平一般能进外企吗? 5.1.9 IT 企业需要什么样的人才? 5.1.10 为什么会被企业拒绝? 5.2 工作不是你想的那样 5.2.1 什么工作岗位性价比最高? 5.2.2 有没有必要和别人对比工作的好坏? 5.2.3 求职的时候该不该只看钱? 5.2.4 民间的企业排名的可信度到底有多大? 5.2.5 第一份工作与个人成功的关系有多少关系? 5.2.6 如何看待一份工作的稳定性? 5.3 敢问路在何方 5.3.1 继续深造还是直接就业? 5.3.2 为了他/她,在择业上进行牺牲是否值得? 5.3.3 程序员创业的风险有多大? 5.3.4 学业与求职,孰轻孰重? 5.4 小结 第 6 章 不打无准备之仗 6.1 兵马未动,粮草先行 6.1.1 你了解自己吗? 6.1.2 何时开始准备复习为好? 6.1.3 花多长时间找工作合适? 6.1.4 面试的问题从哪里来? 6.1.5 面试官为什么喜欢提非技术性问题? 6.1.6 面试考察什么内容? 6.1.7 如何筛选面试? 6.2 一切从准备开始 6.2.1 如何获取求职信息? 6.2.2 面试官希望从简历中看到什么? 6.2.3 如何制作一份受用人单位青睐的简历? 6.2.4 如何高效地网申简历? 6.2.5 面试前需要准备什么内容? 6.2.6 如何准备项目相关的面试? 6.2.7 如何准备技术性的面试? 6.2.8 如何准备非技术性的面试? 6.2.9 如何准备集体面试? 6.2.10 如何准备电话面试? 6.3 有“礼”走遍天下 6.3.1 如何称呼面试官? 6.3.2 霸王面合适吗? 6.3.3 面试礼仪有哪些? 6.3.4 如何克服面试中的紧张情绪? 6.3.5 常见的面试失误有哪些? 6.3.6 面试中犯错误了怎么办? 6.4 小结 第 7 章 从容应对是王道 7.1 自我介绍有诀窍 7.1.1 如何进行自我介绍? 7.1.2 如何介绍自己的项目经验? 7.2 面试就是这么简单 7.2.1 如何巧妙地回答面试官的问题? 7.2.2 如何回答技术性的问题? 7.2.3 如何回答非技术性问题? 7.2.4 如何回答快速估算类问题? 7.2.5 如何回答算法设计问题? 7.2.6 如何回答系统设计题? 7.2.7 如何解决求职中的时间冲突问题? 7.2.8 如果面试问题曾经遇见过,是否要告知面试官? 7.2.9 在被企业拒绝后是否可以再申请? 7.2.10 如何应对自己不会回答的问题? 7.2.11 如何应对面试官的“激将法”语言? 7.2.12 如何处理与面试官持不同观点这个问题? 7.2.13 什么是职场暗语? 7.3 “道高一尺,魔高一丈” 7.3.1 你对我们公司有什么了解? 7.3.2 如果你在这次面试中没有被录用,你会怎么办? 7.3.3 如果你被我们录取了,接下来你将如何开展工作? 7.3.4 你怎么理解你应聘的职位? 7.3.5 你有哪些主要的缺点? 7.3.6 你有哪些主要的优点? 7.3.7 你没有工作经验,如何能够胜任这个岗位? 7.3.8 你的好朋友是如何评价你的? 7.3.9 你与上司意见不一致时,该怎么办? 7.3.10 你能说说你的家庭吗? 7.3.11 你认为自己最适合做什么? 7.3.12 你如何看待公司的加班现象? 7.3.13 你的业余爱好是什么? 7.3.14 你是否同时申请别的工作? 7.3.15 如果工作安排与专业不对口,你如何考虑? 7.3.16 你和别人发生过争执吗?你怎样解决? 7.3.17 你如何面对压力? 7.3.18 你为什么离开了原来的单位? 7.3.19 你为什么更倾向于我们公司? 7.3.20 我们为什么要录用你? 7.3.21 你的职业规划是什么? 7.3.22 你对薪资有什么要求? 7.3.23 女程序员如何成为职场花木兰? 7.3.24 你平时读的专业书籍有哪些? 7.4 掌控面试的主动权 7.4.1 你有什么问题需要问我的吗? 7.4.2 如何引导面试官提问自己擅长的内容? 7.5 面试之后大有可为 7.5.1 如何应对第 N 轮面试? 7.5.2 面试之后一直没消息,是否被拒绝呢? 7.5.3 面试之后还有什么工作可以做? 7.5.4 面试之后如何做好总结? 7.5.5 如何礼貌地拒绝企业的橄榄枝? 7.6 小结 第 8 章 签约违约这点事 8.1 签约没那么简单 8.1.1 风萧萧兮易水寒,offer 多了怎么办? 8.1.2 处理多个 offer 需要考虑别人的意见吗? 8.1.3 逃离“北上广”吗? 8.1.4 如何与企业进行待遇谈判? 8.2 不怕违约,就怕没约违 8.2.1 不想签约,但也不想轻易放弃机会,怎么办? 8.2.2 已经有了 offer 还需要继续找吗? 8.2.3 签约、违约需要注意哪些事项? 8.2.4 如何高效违约? 8.3 小结 附录 附录 A 某知名搜索引擎公司 2014 年校园招聘笔试题 附录 B 某知名门户网站 2014 年校园招聘笔试题 附录 C 某知名电子商务公司 2014 年校园招聘笔试题 附录 D 某知名外企 2014 年校园招聘笔试题 附录 E 求职有用网站及 QQ 群一览表 致谢 第1章 面试官箴言 什么样的求职者能够获得面试官的青睐?求职者需要准备哪些内容来面对形形色色的 面试官?什么样的企业适合自己发展?在新的工作岗位上,如何努力才能在人才济济的企业 里面脱颖而出?本章内容,几位资深软件工程师将现身说法,为您一一解答上述问题。 1.1 有道无术,术可求;有术无道,止于术 丁志浩,男,硕士,某知名芯片公司软件工程师。 以下这些内容是写给即将成为职业人的在校学生的,希望能够对他们的求职与以后的工 作有一定的参考作用。 在介绍求职之前,我想先说一些与具体技术无关但却比技术更加重要的东西,主要有以 下两个方面的内容:第一点,认清自我;第二点,保持强烈的求知欲。之所以提及这两点, 并且认为它们是最重要的东西,是 因 为 结 合 我 的 亲 身经历,我认为一个人最重要的是认清自 我,只有认清了自我,你才会知道自己想要做什么、适合做什么、能做什么。在某种程度上 来说,这比所学的知识、技术更加重要。只有方向正确了,才会有前进的动力;有了前进的 动力,才会为目标不断努力;只有朝着正确的方向不断努力了才可能会有收获。其次,要有 强烈的求知欲,随着年龄的增大、个人阅历的增长,生活、家庭、工作会慢慢消磨掉你的雄 心壮志,而能保持强烈的求知欲实在是难能可贵,世界上很少有学不会的东西,就 看 你是否 用心去做了,是否愿意花时间、动脑筋、投入精力去做,万事就怕认真,只要你认真做了, 通常是可以学会的。 切入正题,作为一名以程序员为职业目标的求职者,关注的领域主要还是以技术为主, IT 企业在面试的时候主要关注求职者什么方面的内容呢?以我这些年的工作经历来看,大 企业看道,小企业看术。有道无术,术可求;有术无道,止于术。具体来说,大企业更加看 重的是你的基础知识以及你解决问题的能力。一 般 而 言 ,大企业都会有比较完备的培训机制, 它可以在较短的时间内把一个什么都不会的员工塑造成一个它想要的人;而小企业则不然, 他们更加注重求职者的实用性,求职者当前会什么,能给企业带来什么。这 种思维方式的不 同其实也是由企业的性质决定的,没有对错之分。当然这也无可厚非,所以个人建议求职者 最好夯实计算机基础知识,操作系统、编译原理、算法等这些基础知识就是重中之重了,需 要重点掌握。万变不离其宗,当你达到了一定程度,对你而言只是形式上的差异而已。 求职者需要如何准备才能更好地获得面试官的青睐,我觉得 IT 企业一般需要的大多数 都是技术性人才,所以具有以下 3 个优点的人,一般更能受到面试官的青睐:① 基本功扎 实的人,基础扎实了,以后后劲就足,发展前景就更好;② 具有强烈的求知欲、对未知领 域比较感兴趣、能够接受新事物的人;③ 在某个领域有比较深入的研究的人。例如,当前 好多企业都在搞云计算,如果求职者对 Hadoop 这种架构有比较深入的理解,当然就比不懂 Hadoop 的求职者成功率更高。 有了录用通知书(offer)以后,在挑选 offer 的时候,求职者往往也很纠结,其实我在 这里也不是告诉你是该选择互联网还是芯片公司,或者是其他类型企业,因为对这个问题, 仁者见仁智者见智,每个人考虑的侧重点都不一样,所以在此我不给求职者说到底该选什么 企业,以免误导大家,但我可以给求职者一个建议:往大的方面讲,首先是选择行业,然后 选择企业,最后是选择职业。最好能够结合自己的兴趣爱好,因为兴趣是最好的老师。 入职之后,应届毕业生如何才能适应新的工作岗位,完成从学生到职业人的华丽转变 呢?一般而言,刚毕业时,新人都是雄心壮志、意气风发,想在新的工作岗位上大展拳脚、 有所作为,虽然这是一件非常好的事情,但是由于现代社会企业分工很明确,尤其是对于企 业的新员工,刚工作时,很有可能接触的东西都是些没有技术含量或是相对边缘的东西,只 是 充 当企业的一颗小螺丝钉而已。所以在此,我建议求职者在刚入职时,最好能够放低姿态, 当将军的人,都是从小兵一步步做起的。刚毕业时的态度最重要,切记不要整天怨天尤人, 否则会给人一种浮躁的感觉,对你将来的发展肯定不利。 1.2 求精不求全 褚艳利,女,硕士,某知名电子商务公司软件工程师。 时光荏苒,我已经成为 IT 业一名所谓的“老鸟”了,但我曾经也只是一名普通的求职 者,在求职的路上历经风雨,但我希望我的一些经历和感悟,能为朋友们提供些许帮助。 对于应届生求职,我觉得每一场面试都是从“闻味儿”开始的。看似是一场简单的聊天, 但其实求职者的各方面已经在被面试官考查了。例如,在沟通过程中,从求职者的谈吐、穿 着、眼神,或多或少就能闻出很多层味道了(求职者的性格、处事态度、表达能力、沟通能 力、团队合作能力)。经常会听到求职者说:“面试官今天一道技术题都没问我。”这多是面 试官对求职者综合素质的一种肯定(前提是成绩单上的成绩不能太差)。如果是求取技术类 职位,那么求职者的技术水平还是要积累的。 对于技术的积累,我觉得是“求精不求全”,现在的大学通常都会开设“C 语言”、“C++”、 “Java”、“网络”、“数据库”、“编译原理”、“软件工程”等课程,但由于精力有限,毕竟不 是每个人都可以做到门门精、样样通,所以我建议从兴趣出发,深入学习几门课程(当然, 其他的课程也要学,毕竟是在技术领域,一些概念和基本原理不知晓是不行的)。例如,我 个人比较钟爱数据结构、算法、C 语言、操作系统等专业知识,对这些下足工夫做足功课, 曾经它们也陪着我打赢了很多场艰难战役。当然,在面试别人的过程中,我也会问到一些可 能他们不太擅长的知识,如设计模式,其实我并不是希望为难他,挑他的刺,只要他能讲出 自己的理解,并坦白自己这方面知识的欠缺,我也不觉得丢人,这 种坦白比不懂装懂来的更 真实、更有力量。所以,作为一名过来人,我觉得大部分面试官在面试时,会更加侧重于考 查求职者擅长的方面,试试水究竟有多深,从这点能看到求职者未来的发展和潜力。 作为一名职场新手,在求职的准备过程中,应该根据职位要求,略作筹备。虽然说万变 不离其宗,但根据职位要求,有针对性地准备一下,效果会更好。例如,面试数据库开发的 求职者,DB(数据库)知识就需要好好补一下,这样不至于气氛太尴尬,也可以获得后续 面试机会。对于普通的软件开发类职位,我认为求职者必备以下知识:数据结构、某类编程 语言、操作系统、基本 DB 知识。 曾经我也对新人进行过面试,我认为要想获得面试官们的青睐,求 职者需要注意以下几 个方面的内容: (1)衣着装扮。对于技术类职位,衣着装扮虽然不做要求,但毕竟不能过于邋遢。女 孩子画一点淡妆更好,清新怡人。 (2)眼神交流。记着,你对面坐着的是面试官,不是墙壁,你需要跟他有眼神交流。 不要怕,试 着 抬 起 头 来 ,面试官的笑容可以缓解我们的紧张情绪,以及答不上题的尴尬气氛。 害怕,其实是自己吓倒了自己。 (3)气氛把握。语速不要太快,太快容易将自己置于紧张的状态之中。回答问题无论 会与不会,都要放慢节奏,你的状态直接影响面试官的身心感受以及判断。 (4)背景了解。如果你参加一家公司的面试,最好是你真心喜欢的,并且对公司多少 应该有所了解。例如,公司理念、制度、规划,谈谈你喜欢的、你认为可以改善的(这一点 上要注意“度”),如果你是真的用了心,面试官往往会给予更多机会的。 (5)轻松话题。如果谈得比较愉快,可以自己制造些轻松话题,如小吃、旅游、业界 话题等。 很多时候,都有师弟、师妹们问我,挑选 offer 的时候该怎么办,需要权衡哪些内容。 我不是一名职业规划师,所以不能告诉他们如何做选择,我只能告诉他们,当初我在进行选 择的时候,考虑了哪些内容,以供他们参考。但总的来说,我觉得应该参考以下 5 点内容: (1)兴趣点。兴趣是最好的老师,如果没有兴趣,很难在工作岗位上有所作为。 (2)公司未来的发展空间和路线。很多时候不能只盯住眼前的利益,要从长远看,一 个企业的发展空间和路线、对未来市场的认知与把握都会决定你未来的发展方向,所以最好 能够对企业的未来发展空间与路线有一个较清醒的认识。 (3)薪酬福利。“钱不是万能的,没有钱是万万不能的”。一个企业再好,如果不给工 资,同样没人会去,因为人要吃饭、要穿衣,所以必须仔细考虑薪酬福利。 (4)个人成长点。每个企业对人才的定位都不一样,所以在选择职位的时候,尽量选 择一些企业的核心研发部门,在这样的部门里面个人成长、个人机会都会非常好。 (5)城市。什么样的城市是自己希望去的,是政治中心北京,还是东方之珠上海;是 人间天堂杭州,还是千年古都西安;是天府之国成都,还是千湖之城武汉。各个城市有各个 城市的优劣,所以没有人能够告诉你哪个城市好哪个城市不好,关键需要你自己拿主意。 其实,选完了 offer 之后,就面临着一个从学生到职业人身份的转换了。如何转换角色, 我个人觉得新人初入职,最重要的就是练就基本功,这 个 阶 段 犹 如 蚕蜕,痛苦但却是美丽的 变身。例如,我们做的是线上一级系统,承载着每秒数万笔交易的创建及支付,那么系统的 架构、稳定性、容量、可扩展性、各种底层技术实现,方方面面要学的有好多,任务紧、压 力大、面 对 着 无数 个 不 可能 ,这 个 过程看似痛苦但却让我们成长得非常之快。尤其是在项目 真正上线运转起来的时候,那 些 你 原 先认为不可能做的事情现在都做到了,还 做 得 非 常 漂 亮 , 那 种 成 就感真的是无以言表。而且做每件事情的时候,一定要把姿态降下来、心态静下来、 自信提上去,与你的团队一起合作,把不可能当做为历史,把可能写在今天。经历一段时间 的洗礼之后,仔细思考一下,问一问自己是否可以独当一面,是否在业界,至少在公司部门 内,可以听到你的声音,可以看到你的建议。如果可以,那么恭喜你,你应该可以升职了。 1.3 脚踏实地,培养多种技能 廖兰新,男,硕士,某创新型企业高级研发工程师、开发经理 作为一名一线的技术研发人员,结合自己多年在技术上的经历,在 此分享一些经验给即 将走入职场的应届毕业生,帮助他们在人生的路上少走一些弯路。 (1)行业选择。在应届毕业生进行择业的时候,我个人觉得选择适合自己的行业是非 常重要的。对于计算机类专业的毕业生,可供选择的行业很多,如 商 业 银 行 类 、国 企 、央 企 、 传 统 的 软件公司、新兴的互联网公司等。而这些行业又各有各的特点,对能力的要求迥异。 例如,国企普遍工作轻松、薪资一般(体制内)、福利很好,对技术要求不是太高,对项目 进度的要求一般不紧迫;互联网公司工作一般比较辛苦,对项目进度要求非常紧,技术研发 能力也要求高,而企业文化一般较为自由,其薪资待遇一般比较高。所以,求职者应该根据 自己的兴趣爱好以及能力特点选择合适的行业。 (2)技术领域选择。随着现代化管理技术的不断发展,IT 企业中的技术分工也越来越 明显。俗话说:“隔行如隔山”。同样是计算机科学技术,不同技术领域的人在技术上也是非 常迥异的,如 互联网企业与芯片企业关注的重点就不一样。对于应届毕业生,一 般也 很 难 做 到“ 通 才 ”。所以 ,在求职的时候,尽量选择自己喜欢的专业领域或者自己擅长的专业领域, 这些会决定你后面的职业生涯的主要工作内容,而且一般也不会轻易更换。 (3)雇主选择。不同的雇主对求职者的要求也不一样,以科技巨头公司与创业型科技 公司为例加以比较。创业公司一般研发人员相对较少,每个研发人员都需要能够独当一面, 对整个产品的核心代码都了如指掌,上至前端开发、Web 界面,下至后台底层实现、操作 系统,所以这对于个人成长是非常好的锻炼机会,但同样,创业公司也有其自身的局限性, 由于工作的需要,员工一般身兼数职,经常加班,而且在专业技能上都不够规范,相比大型 科技公司完善的团队、严格的规章制度等,相对欠缺。 但总的来说,在创业公司,更能够全方位地激发个人潜能,多角度地发展个人能力,大 公司可以小而精地锻炼某项专业技能。当然以上的说法也不是绝对的,比如某些小型高科技 公司也聚集了业内的人才,完全具备大企业的“高精尖”特点,而一些大公司的某些部门在 初创阶段可能也会像创业公司一样艰苦。如果你决定不了,那你就尽量去一家步入正轨的大 公司。 (4)求职建议。因为企业需要,我曾经担任过一段时间的面试官,帮助招聘企业新人。 我们确实非常希望招到优秀的人才,但在招聘的过程中也遇到了很多很遗憾的事情。例如, 有的人在面试的时候因为紧张或是其他原因,真实才能发挥不出来;有的人水平一般,却夸 夸其谈,不脚踏实地,真的让设计算法时,一头雾水。在此,我想说明一点,企业在招聘的 时候,需要这样的人才:对人对事有信心、掌握多项技能、基础扎实、有冲劲、愿拼搏。所 以,我建议应届毕业生在平时的学习中,一 定 要脚踏实地地学好专业知识,适当地扩展专业 技能。 (5)能力培养。进入工作岗位之后,很多应届毕业生迷茫了,很难从学生的角色向职 业人的角色转变,我觉得计算机职业人应该注重培养自身的 3 种能力:技术能力、管理能力、 领导力。职业新人往往依赖技术能力进入职场,最初的晋升也主要来自技术能力,它可以让 你成为一个优秀的单兵和一个称职的经理,但很难成为优秀的经理人,因为它的杠杆效应非 常有限,这就需要第二种能力:管理能力。管理其实是对资源的管理和利用,以有效、可靠 地生产产品或提供服务。人的大多管理能力都可以学习到,教育、经验、培训都可以提高管 理能力。当然人的悟性也很重要,能够从表面现象中分析出规律,对管理能力来说很重要。 管理能力主要是释放物的能力。它可以给你一定的杠杆力量,能让你在小范围内有所贡献, 但不会让你走很远。这时候就需要第三种能力:领导力。领导力是释放别人的能力,再通过 别人来释放个人或物的能力。领导力巨大,是因为它有二级杠杆的效用。对于领导,技术能 力的重要性非常有限,管理能力次之,领导能力最重要。不要认为职业道路是单行道,即从 技术职位向管理职位过渡,再由管理职位向领导职位过渡。 第2章 面试心得交流 “前车之鉴,后事之师”。本章以各大名牌高校、研究所的应届毕业生的亲身求职经历与体 会为蓝本,对当前程序员面试笔试相关的准备工作、时间计划、书籍阅读、面试技巧、offer(中 文指录取通知)选择等多个方面的内容进行了独到地分析,对于未出校门的应届毕业生有着极 大的指引作用。 2.1 心态决定一切 董哥,男,中国科学院计算技术研究所 2012 届硕士研究生,现就职于北京人民搜索。 1.抛砖引玉 找工作的过程是综合实力较量的过程,一个好的 offer 背后凝聚着无数辛勤的汗水,需 要勤奋、坚持、积累、付出。这 里 介绍一下自己找工作的经验,希望对师弟师妹们有所启发。 需要注意的是,完全做到了这里提到的几点并不意味着你一定可以拿到一流的 offer,我仅 是抛砖引玉而已,如果想在找工作时得心应手,需要平时不断积累和总结,领悟其中的真谛。 2.心态决定一切 对于找工作,心态很重要。找工作之前,一定把心态端正。20 年寒窗苦读,最重要的 一个目的是找一份理想的工作,从而 实 现 自身 的 价值,因而我觉得,我们至少应该像准备高 考那样,全 身 心地投入到找工作的准备中,将 之前 所学 的知识重新温习整理,以便将所有能 力能够最大限度地发挥出来,进而向面试官充分展示自己、推销自己。 3.冰冻三尺非一日之寒 关于找工作前的准备,有两 个 因 素直 接 决 定着 你是否能最终被录用,一 个 是 项目 ,另 一 个 是 基础知识,这两者中任何一个被面试官相中,均可能拿到 offer。 对于项目,不在多而在精,一般的项目,如普通的管理系统、网站等,面试官几乎不用 耗费脑力,一 眼就 能 看 到底 ,没 有 什 么好讲的,最切合也最能引起面试官兴趣的项目往往是 与他现在的领域相同或相近,解决的问题的确具有一定的难度且提出的解决方案具有一定的 创新点。但遗憾的是,对于大部分毕业生,项目的深度往往不够,毕竟想在研究生短短的两 三年时间里成为这方面的专家,还是比较有难度的,所以这个时候就全靠你的基本功了。 基本功大致可分为以下几个部分:编程语言,数据结构与算法,操作系统和其他小知识 点。对于编程语言,个人认为 C 语言是必须掌握的,很多公司把 C 语言作为必考项。另外, 要在 C++和 Java 两种面向编程语言中选一个,主要知识点是面向对象编程中的一些基本概 念,如 虚函数、构造函数、析构函数、拷贝构造函数等。有一些题目已经成为经典,是必 须 、 一 定 要 掌握的。例如,(C++语言)虚函数是怎么实现的?构造函数可以是虚函数吗?为什 么鼓励将析构函数设计成虚函数?对于数据结构和算法,这是面试的重点,很多公司基本上 只考算法与数据结构,这就需要大家平时多积累、多练习。尤其对一些基本数据结构和算法, 要非常清楚,如 单 链 表 反 转 、Trie 树、两个数组交并差集等。对于操作系统,主要掌握 Linux 里的一些基本概念,如线程、进程、内存管理、文件管理等,这些也会在面试中出现,一定 要好好复习。最后是一些其他知识点,如设计模式(单例、工厂模式等)、编译原理(程序 从编译到运行要经历的几个过程)等。 4.修炼程序员之“葵花宝典” 找工作的过程中,一 些 经 典 的 题 目 ,一 定 要 反 复 推 敲 ,很 多 题 目 来 自 固 定 的几本参考书, 大家应该好好琢磨一下这几本书中的题目。 (1)《编程之美》。这是一本实战书,任何找过工作的人都知道,很多笔试面试题直接 来自该书,值得各位找工作的应届生认真地阅读和讨论。此外,该书中有些题目难度过大, 从找工作的角度考虑,可暂时不看。 (2)《编程珠玑》。该书主要介绍软件设计思想,书中的例子已经成为百考不厌的经典 题目,如数组循环移位、随机采样算法等。 (3)《算法导论》。该书对各种常见算法有很深入的讲解和详尽的证明,并对每个算法 的起源、动机和求解过程有较多的涉及。 (4)《深入理解计算机系统》。该书从程序员的视角介绍了计算机系统。几乎囊括了计 算机的各类技术,包括数据表示、C 程序的机器级表示、处理器结构、程序优化、存储器层 次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级 I/O、网络编程和并发编程 等。该书中提到的一些知识点,常作为面试题目出现,如 Linux 信号量、虚拟内存管理等。 5.八面玲珑 关于找工作的技巧,主要介绍两点,一是回答问题的技巧。对于项目,主要回答点应该 是遇到的挑战和解决问题的思路,对于算法问题,要从复杂度高的算法逐步向复杂度低的算 法过渡,第一眼见到题目,可先将自己想到的思路说出来(如 O(n2)复杂度),然后不断 优化(如 O(nlogn)复杂度),最后尽量得到一个最优的算法(比如 O(n)复杂度),这时 候可能要在纸上写出来,一 旦 没 有了 思 路 ,应该主动要求面试官加以提示。另一个是交流技 巧,这里指的是面试者之间的交流,这一点非常重要,每当前一个面试者面试完后,应该主 动跟他交流,主要询问一些个人收获和心得,尤其是别人的失误,应该尽量避免,因为面试 官一天要面试众多的求职者,很可能会对不同的求职者提出相同的问题。 6.多多益善 最后是 offer 的选择。offer 尽量多拿一些,以便给自己留一些选择的余地,至于怎么选 择 offer,这是个人的问题,每个人的侧重点不一样,因人而异,但我觉得适合自己的就是 最好的,没必要和别人进行比较。 2.2 假话全不说,真话不全说 萧叶,中山大学 2012 届硕士研究生,现就职于睿初科技(深圳)有限公司。 1.万事趁早 我大概是研究生三年级新学期开学后开始准备找工作的,从 后 来 的 情 况 来 看 ,我 已 经 准 备 晚 了 ,因 为 校招时间提前了半个多月。这也给了我一个教训:万事趁早,因为我们不能预 知公司什么时候来招聘,只 能 自 己 提 前 做 准 备 。准 备 太 晚 的 结 果就是 9 月中下旬的阿里巴巴、 淘宝等公司的招聘全没赶上。 2.不经一事,不长一智 虽然我找工作的两条原则很早就确定了:去外企、搞技术,但是当校招开始时,我几乎 还是逢公司必投简历(当然是软件研发类的),一 来 是 因 为 自 己 手 头 无 offer,总是有些没底, 不知道自己是否能够找到满意的工作,特别是看到周围暑假实习回来就拿到 offer 的同学, 心里不免更加担心,紧迫感更加强烈;二来是因为本科毕业就直接读研了,没有真正找过工 作,对找工作还是很陌生,虽然有师兄师姐留下的一些找工作的心得和建议,但毕竟“绝知 此事要躬行”。 所以我认为,“海投”也没有什么错误,虽然“海投”的这些公司并不都是自己非常想 去的,但是如果不趁早积累和总结一些属于自己的找工作心得,等 到 心 仪 的 公司来时胜算的 把握有多大就很难说了。 3.读书破万卷,面试如有神 因为找工作准备得比较晚(我觉得从暑假开始准备算是比较适合的),所以我基本上是 一边找工作一边准备面试笔试,而准备主要就是看书。对于大多数没有项目经验或项目经验 少的研究生和本科生而言,看书是投入产出比最高的找工作准备方式。因为笔试面试最常见 的内容就那些:语言、数据结构与算法、操作系统、软件工程等内容。语言类靠编程指南之 类的书籍即可,其他专业知识点我认为比较有帮助的书籍有《(more)Effective C++》、《(more) Exceptional C++》、《C++ Common Knowledge》、《算法导论》等。语言类书籍给出的都是语 言规范等确定性的知识,告诉你是什么,非常适合应付笔试;而后一类书则好比内功心法, 给出一个场景,分析各种方案的优缺点,告诉你为什么是这样,看这类书的收获,与编写的 C++代码量正相关,面试时有水平的面试官比较喜欢问这类问题。这系列的书,无论读者水 平的高低(当然基本语言知识得懂),总能从中领悟到一些东西,而且每次再读,又有新的 体会,不 仅仅适合找工作时读。至于算法方面,我认为这不是看看书突击一下就可以显著提 高的,就 算 把 那些 常 被 问到 的 排 序算法死记下来,面试时也不太管用,这 个 还是要靠平时的 积累和悟性。 4.人性化的简历 简历的制作上,排版可以讲究些,目标是让筛选者快速、准确地找到他所关注的内容(如 技能、项目经验、成绩等),以两页为宜(有人说最好一页,但是我感觉一页根本写不下, 也容易让筛选者觉得材料有点单薄)。至于打印,我觉得最好选稍厚一些的纸,至少不能很 清晰地看到背面。总之,要让简历的筛选者拿着、看着觉得舒服。彩色打印就不必了(明确 要求的除外),除了相片是彩色的,和黑白打印并无大异。 5.假话全不说,真话不全说 面试到了尾声时,面试官(通常是技术主管、人力资源或经理)有时会问有关求职者职 业规划、家庭背景、已经拿到了哪些 offer 等情况。尽管在此之前,有很多师兄师姐给我传 授了相关技巧,但是我还是按照自己的真实想法来回答,也许正是因为自己太“老实”的原 因,最终与几个公司擦肩而过:华为、爱立信都问了我拿了哪些公司的 offer,我如实回答 了,还有一家公司问我如果给我 offer 我是否签约,我说要考虑一下。我觉得实话实说并没 有什么不当,人的本性都是差不多的,一 个对自己负责的毕业生找工作时货比三家,最终选 择自己最满意的工作是无可厚非的,自信的企业应该能够理解这一点。但实话实说也并非一 定要回答面试官的所有问题,有一位面试官问我家里的情况问得过于详细,还有两个问到了 其他公司给的待遇问题,我都没有正面回答。拒绝回答问题就要靠技巧了,要尽 量 委婉地拒 绝,不要太过直接,伤害彼此的感情。 6.豆腐白菜,各有所爱 对于 offer 的选择,这是一个见仁见智的问题,自己最满意的就是对自己来说最好的。 我找工作时主要有两条原则:第一,以外企为重点,希望将来有机会到国外工作,但也并不 是非外企不去。第二,非技术类的工作不做,因为我知道自己不适合也不太喜欢做售后、策 划等工作。结果,拿到的几个 offer 中,爱立信和睿初都算是符合这两条要求的。在满足条 件的这两家公司中,爱立信给予的是带附加条件的 offer,要求现在能够过去实习至少两个 月,人力资源和项目经理先后打电话问了两次,看得出来是确实急缺人手而不是为了赚廉价 劳动力,但是导师不同意实习,所以只好放手。而深圳睿初科技是我找工作以来所有公司中 流程最严格(1 轮笔试,1 轮电话面试,4 轮现场面试,两轮总部的电话面试)、最人性化的 一家公司,我对它的期望和好感就是在一轮又一轮的面试和沟通中不断提升的,以至于当它 最终给我 offer 时,我毫不犹豫就签了。 其实我觉得首先得确定自己找工作的原则,明白什么是自己最为看重的,然后重点准备 符合自己原则的那些公司的笔试面试。 2.3 走自己的路,让别人去说吧 小郭,女,西安电子科技大学 2012 届硕士研究生,现在计算机网络与信息安全教育部 重点实验室攻读博士学位。 这是我第一次找工作,现在把自己找工作的一些情况以及心得整理出来,一 来 对自己的 经历作一个总结,二来可以为师弟师妹们提供一些信息。本人本科专业计算机科学与技术, 毕业后直接保送了本校的计算机软件与理论专业读研,研究生阶段从事的基本都是软件类研 发工作。 1.无悔的选择 在研二时,我就开始纠结于找工作还是继续念博士之间,但紧迫感不够。到了研三,不 能再犹豫了,我做的决定就是先找工作,看看找的情况,毕竟找工作是一份很宝贵的经历。 对于工作,我真正拿到了 4 个 offer:华为的软件研发、阿里云的无线平台开发、百度的客 户端研发和腾讯的后台研发。但最后我还是选择了攻读博士学位。 2.出师未捷身先死 我是从研二放暑假回学校后开始着手找工作的,应该算比较晚的,复习的内容其实就是 面试指南、《编程之美》和各种专业课书(如数据结构、操作系统、计算机网络等)。现在校 招的时间越来越早,当第一批公司来的时候我还有很多内容没有复习。 来的最早的公司是联发科,毕 竟 是第 一 次 找工作,当时我心里还是很紧张的,笔试题不 算难,我顺利过关了。接着就是一面了,一面大概半个小时的样子,主要问的就是实验室做 的项目,一面结束后等待二面消息,可是当身边很多同学都收到二面通知时,我却依然没有 收到二面通知,第一次找工作就碰壁,当时对我打击还是挺大的。后来我静下心来总结了一 下这次面试失败的原因,其实联发科问我的问题并不是特别高深,都是一些基础知识,失败 的主要原因我觉得在于两点:第一点是面试太紧张;第二点是准备不充分,尤其是项目部分, 与面试官的沟通不是很好,面试官对我做的项目应该没有什么了解,而我又没有提起面试官 的兴趣,因此我说的话面试官不懂,面试官问的问题我也没有清楚明了地回答。 3.过五关斩六将 接着 9 月下旬华为、中兴等公司陆续开始了校招。华为面试的场面非常壮观,每天参加 面试的学生数以千计,4 轮面试不停,我是从下午一点开始面试的,第一天直到晚上九点才 面了三轮,而第四轮面试需要等到第二天,于是我拖着疲惫的身体返回学校。华为的面试一 共分为 4 轮,分别是:技术面试、机试(上机编程)、性格测试和 HR(人力资源)面试。 技术面试就问了一下实验室项目然后让写了个简单的程序就通过了,接着是上机测试与性格 测试,机试并不是要求编写的程序完全正确了才让通过,而是根据写的程序进行打分,然后 参照同一批人的水平来决定是否通过,其实通过率还是挺高的。而最关键的就是性格测试了, 很多人都在性格测试这一关止步了,实在可惜,我一个同学就因为性格测试的时候仔细斟酌, 害怕回答得不好,最后没有通过性格测试。对于性格测试,我的心得就是不要太紧张,放轻 松点,做题前后要保持一致,尽量不要前后矛盾,按自己的真实想法耐心回答即可。第二天 进行的第四轮面试其实也只是随便聊聊天,面试官就问了一下我的家庭背景以及一些与技术 无关的问题,接着就直接发给我口头 offer 了。 之后是百度、腾讯和阿里云三家互联网公司,我感觉百度最注重算法,面试时间也最长。 其实能拿到这 3 个 offer 我个人觉得很重要的一点就是心态,我去面试这三家公司的时候心 里很放松,没有一点紧张,我就权当是去锻炼锻炼,这样效果反而会更好。当然也不是只要 不紧张就可以了,面试成功的因素是多方面的,与你碰到的面试官,当年的就业形势都有很 大的关系。但是在自身方面,除了心态好,还有就是要有充分的准备,尽量把自己会的面试 官也感兴趣的东西告诉面试官。在 项 目 方 面 因 为有了之前面试的经验,我在与面试官讨论项 目的时候越来越熟练,对项目的理解与总结也越来越好,因此讨论项目这一部分我的问题越 来越少,而且我个人认为不仅要对自己做过的每一个项目做充分准备而且一定要实话实说, 因为每家公司注重的与感兴趣的内容不同,或许他们会对你没有准备的项目很有兴趣,如果 这时候你显得很生硬,那么就对你不是很有利了。在我 面试期间,阿里云对于我曾经参与过 的与编译器有关的项目很感兴趣,而百度则对网络安全中的身份认证感兴趣。当然,实话实 说的意思是不能说假话,但是并不意味着要把所有实话都说出来。如果说假话被面试官拆穿 了,那么就彻底没戏了,有时候可能有人会抱着侥幸心理,不过我碰到的这三个公司的面试 官对我简历上写的项目总有一个会很熟悉,有的甚至不止熟悉一个,因此还是踏踏实实、实 话实说比较保险。这 三 家公司的面试题与华为、中兴的区别甚大,他们更注重的是你的能力 和反应,一 个问题面试官可能会与你讨论很长时间,如果很顺利地回答好了,那么面试官会 将这个问题延伸,如果不能回答出来,面试官会给你提示并且与你讨论。总之你和面试官交 流的过程就是把自己的能力展示给面试官看的,就 算 回答不出来或者答得不完美其实也没有 很大的关系。 4.成绩第一 除了心态好、对项目熟悉之外,就是技术了。我在面试过程中,虽然没有把面试官问的 问题全部回答出来,但是也差不多,因为有很多面试题涉及的知识都是我以前在实践中或者 在技术书籍中看到过的,在 研究生阶段我利用课余时间看了不少专业书籍,如《 编程 之 美 》、 《 编 程 珠 玑 》、《 计算机程序设计艺术》、《Windows 程序设计》、《C 陷阱与缺陷》、《C 专家编 程》和《深度探索 C++对象模型》等。这些书籍对我找工作的帮助非常大,不仅仅是面试题 中可能会出现,考虑问题的思路或者是方法都可以从书中得到启发。 在面试过程中,笔试成绩高还是很有优势的,我在阿里云面试的时候就是得益于笔试成 绩很高(后来面试的时候看到的,接近满分),面试过程中面试官貌似对我很有信心,没有 特别为难我,尤其是第三轮面试的时候,部门领导直接说已经可以确定我通过了,整个过程 中都说我的笔试成绩很好,因此没有问什么技术问题,都是给我介绍他们的工作情况。 拒绝我的 Marvell(美满)上海研发中心是一家全球领先的半导体厂商,因为是外企, 因此他们对英语有比较高的要求。我很早就投了这家公司的简历,过 了 很 久 之 后才接到了他 们给我的电话,让我去面试,一面结束后我才了解到之所以让我去面试是因为我有参加 ACM 竞赛的经历,所以在这里插一句,有 机会 的 话 一定 要尽 量 多参加一些竞赛,一来 可以锻炼自 己的能力,二来可以结识一些不错的同学,而且有可能会让你拥有比别人更多的机会。 Marvell 的面试一共有三轮,三个面试官全都问技术,三面下来花了四五个小时,面试官不 同于上面提到的那三家互联网公司那种随和的感觉,每个人都很严肃、很犀利。第一面主要 问我算法,让我设计一个两部电梯的调度算法,主要从人性化的角度去考虑,我设计了几个 方案之后面试官都不太满意,算法题结束之后又用英语交谈了一下,第二面的面试官主要问 的是与项目有关的内容,还有一个与专业无关的测试,问项目的时候问得非常细致,幸亏来 之前有所准备,这 些结束之后他让我说说如果让我测试一款手机我会怎么测试,越完整越好, 由于在此之前我曾去中兴西安研究所参观过手机测试部门,所以就说了一些自己见到的,面 试 官 对 我 的 回答结果应该还算满意。第三面的问题包罗万象,软硬件都有所涉及,软件我还 能应付,硬件就有些力不从心了,因为研究生阶段我都没有接触过硬件。当天面试完毕之后 我感觉应该没戏,不料过了一段时间我收到了 Marvell 美国那边的邮件,叫我把 GPA 和英 文简历发给他们,当时我已经决定上博士了,还在准备英语考试,所以就没在意,随随便便 发了一下,之后就没回音了,我感觉是因为英文简历不过关。那份英文简历是我在暑假的时 候草草做的,没有修改,很多地方都不完善(甚至有语句不通的可能)。虽然没有收到 Marvell 的 offer,不过我的收获还是很大的,这次面试完我知道了自己的知识和水平还有很大的提 升空间,只有以后再努力了。 5.走自己的路,让别人去说吧 最后我拒绝了所有的 offer,选择了继续攻读博士学位,这里有一些主观原因,也有客 观原因。总之,选择了就要走下去,其实每个人都会在生活中遇到很多选择,我觉得不管你 选择了什么,只要是你自己的选择就不要后悔,踏踏实实地走下去,坚持是最重要的。 第3章 企业面试笔试攻略 当无数 IT 企业来临的时候,到底是应该广撒网还是应该集中优势兵力重点突击某一个 或某几个,一 直是 困 扰 应届 毕业生的问题。其实不仅是应届毕业生,对于有工作经验的人而 言,也会为此问题烦恼。对于这个问题,“仁者见仁,智者见智”,但无论选择哪一种方法, 在进行求职时,都需要了解自己应聘企业的招聘相关信息,找准“攻击点”,最终必将事半 功倍,取得意想不到的效果。 本章以当前主流 IT 企业为对象,如互联网企业、网络设备提供商、外企、研究所、国 企(包括电信运营商以及银行等)、创业型企业等,对其面试笔试进行一对一的强力分析, 包括招聘流程、面试笔试内容、笔试面试真题、面试需要注意的事项以及推荐知识点学习等, 拨开这些企业面试笔试的神秘面纱,将 其最直观的一面展现给求职者,以帮助读者顺利求职。 3.1 互联网企业 互联网的发展以人类无法想象的速度进行着,正如十年前没有谁能够想到互联网会对今 天人们的生活产生如此深远和巨大的影响一样,我们也很难想象未来十年互联网会是什么样 子,但毋庸置疑,未来互联网的高速发展仍然不会停止,一系列新的技术,如云计算、物联 网、移动互联网等,将会继续蓬勃发展,对人们的生活与生产产生巨大的变革,从而促进人 类社会的飞速发展与进步。 伴随着互联网的发展,也产生了一大批优秀的互联网企业,有 做门户网站的、有 做搜索 的、有做网络安全的、有做网络游戏的、有做电子商务的、有做即时通信的,林林总总。互 联网的发展,铸就了这些行业巨头,而反过来,它们的存在也极大地推动了整个互联网产业 的发展。 整个互联网产业的高速发展,需要不断地注入新鲜血液,而校园招聘就是一个非常高效 的渠道。据《新快报 》报道,阿里巴巴在 2014 年秋季的校园招聘中,岗位数由 2013 年的 170 个增加到 1000 多个,针对应届生的技术类岗位都是 20 万年薪起。腾讯 2014 年的校园 招聘规模维持在 1000 人以上,公司花在员工身上的薪酬、福利、培训等资源,3 年超过 10 亿元人民币。360 上市招股说明书中明确表示,360 员工持股比例达 22%,同时 360 还设立 了“常青树”计划,用以奖励对公司有突出贡献的员工。从以上的报道可以看到,无论是福 利待遇,还是发展前景,互联网企业对于应届毕业生的诱惑是致命的,这 也 就不难解释为啥 无数青年才俊、IT 英才会投入到互联网的浪潮中了。以下是某互联网企业提供给 2014 届应 届毕业生的福利待遇: ①签署三年的劳动合同三个月的试用期,试 用期 100%工资,试 用期开始缴纳五险一金, 基数为工资全额; ②额外商业补充医疗险(报销比例 100%); ③10 天带薪年假(每满一年涨一天),10 天带薪病假; ④全年平均 4 个月的奖金; ⑤完善的培训机制(应届生入职都有相关培训及 mentor); ⑥每月生日会及生日礼物 ; ⑦员工俱乐部组织的丰富娱乐活动(足球、篮球、羽毛球、台球、骑行、摄影、瑜珈等 俱乐部); ⑧互联网公司灵活弹性的工作时间; ⑨每人 1200 元/年的旅游基金,平均 1700 元/年的团队建设费用及封顶 50 万元的住房 无息贷款等。 互联网企业提供的待遇是丰厚的,但竞争自然也是非常激烈,毕 竟 ,企 业不是慈善机构, 不会无缘无故地开出高薪来,前 提 肯 定 是员工能够更多地为他们创造剩余价值。作为求职者, 要想敲开这些名企的大门,并非一件非常容易的事情,需要做好很多准备事项,否则 最 终 的 结 果只能是“落花有意随流水,流水无心恋落花”。 1.招聘流程 随着全球经济的回暖,互联网企业的招聘规模也日趋扩大,很多互联网企业也由以前的 零零散散招聘,变为现在的大肆招兵买马、扩军备战,动辄招聘上千人。所以,作为求职者, 挑战虽然存在,但机会依然很多。 互联网的招聘一般从每年的 9 月份开始,一直持续到 11 月份,他们会选择国内一些计 算机专业比较强的大学作为招聘点,如清华大学、中国科学技术大学、上海交通大学、东南 大学、浙江大学、华南理工大学、西安电子科技大学、武汉大学、西安交通大学、哈尔滨工 业大学、北京邮电大学等名牌高校。 互联网的招聘流程一般也比较严格,主要包括以下几个步骤:网上注册简历→宣讲会→ 筛选简历→笔试→专业面试一→专业面试二→HR(人力资源)面试→综合面试→最终录用。 需要注意的是,由于企业每年的招聘信息都可能会有变动,所以求职者应该更多地关注一下 企业的招聘流程,做到实时更新。 2.面试笔试注意事项 互联网是一个更新迅速的行业,所以在求职互联网企业的过程中,保持一颗平常心,相 信自己,同时自己平时要多积累,多看与自己专业、职业相关的东西,比如上一些比较专业 的技术网站,拓展自己的知识面,从而开阔自己的视野。 对于互联网企业的面试而言,首先,好好准备面试。因为互联网企业一般都比较年轻, 他们比较注意对求职者归属感的培养,所以在求职之前,求 职者需要了解该企业的企业文化, 了解自己应聘的职位,只有知己知彼才能百战百胜。同时,分析各大企业历年的笔试面试题, 往往能够发现很多一模一样的题,而且很多问题都是反复地被问及,所以一定要对一些经常 被问到的问题事先做好相关的准备。例如,个人优缺点、个人兴趣爱好、如何自我介绍等, 做到有备无患。对于简历的内容一定要做到严谨、仔细、认真,面试官通常会针对简历或材 料提出问题,所以简历里最好可以突出重点,吸引面试官的注意力,进而争取到比较大的发 挥空间。同时,自己需要事先准备好几个最后提问的问题,一 般 面试官在最后会问求职者对 公司有没有其他问题需要进一步了解的,最好可以问上一两个,一 方 面 可以对公司了解深入 一些,另一方面也可以表现求职者的积极态度。 其次,不要不懂装懂,尤其是互联网企业的招聘。技术型面试中,面试官个个都是身经 百战的老手,他们也是从求职者过来的,对求职者的心态了如指掌,所以在他们面前,不会 就是不会,不要抱着侥幸的心理以为可以糊弄过关,其实企业对应届毕业生在技术上的要求 不会太高,掌握好基础知识就行了,弄虚作假的人是得不到企业青睐的。不 该说 的 话 绝对 不 要 多 说 , 尤其 是 人 力资 源 类 的面试,多说一句不合适的话往往就搞砸了整个面试。 最后,就是调整好心态,充满信心,保持淡定。看着那么多人匆忙的脚步以及面试前的 那种压抑的气氛,人很容易紧张,其实大可不必,互联网企业的面试官一般都是很有修养的, 应聘的目的不是为了让求职者出丑,而是为了最大限度地发掘人才。面试每个人被问到的问 题差异都很大,技术类面试一般针对你简历或者其他面试材料来问,除了技术问题,也涉及 一些工作能力的考查,如效率观念等。人力资源类的会问到学习成绩、性格、沟通能力等问 题,具体也有很大的不同,但是问题数量不算太多。 除了需要注意常见的面试笔试技巧与细节外,还要针对互联网企业招聘的特点进行一些 必要的准备,避免一些不应该的错误,主要有以下一些方面的内容需要注意: (1)互联网企业一般对求职者的在校成绩没有硬性要求,但是会把成绩当做一个重要 的衡量标准,所以成绩好是一个很大的优势。对于专业技术一流,但成绩不够理想的人来说, 一样可以进入互联网企业,而不应该还未出战就认输了。 (2)由于企业实际业务需求以及岗位本身的发展机遇,企业可能需要对求职者的工作 地点做出相应的安排,所以求职者需要在面试中与面试官进行及时的沟通与协调,因为有些 业务的实际工作地点可能与招聘宣讲的不一样,所以一定要注意工作地点的问题。 (3)一段知名企业的实习经历,不仅可以让自己的简历锦上添花,还可以为自己找工 作增加非常重的砝码,尤其是当你要进入某一个互联网企业时,通过在企业实习实现留在企 业工作的愿望一点都不难。例如,某些互联网企业会在每年四五月份进行实习生招聘,提前 在应届毕业生中发掘并笼络人才,所以对于希望进入该企业的应届毕业生而言,此不失为一 种捷径。而且即使未能通过它的实习生甄选,仍然可以继续申请应届生校园招聘,一 般也 不 会受到任何影响。 (4)在校期间有机会多参与该企业组织的各种活动,很多互联网企业都会提供一些科 技竞赛平台,发掘科技人才,如一些互联网企业组织的创新设计大赛、程序设计大赛等。除 此之外,很多互联网企业会在一些高校设置俱乐部。一 般 而 言 ,创 新 设 计 大 赛 获 奖 者以及企 业俱乐部的主要负责人都有进入该互联网企业的“绿色通道”,相比其他求职者机会更多。 (5)从事研发的程序员一般都比较随意,除非是销售或是其他特殊场合(如银行、外 企等),在面试的过程中,一般都不用穿正装,否则成不了鹤立鸡群,就成了鸡立鹤群,引 起笑话,影响面试结果。 (6)在对参与过的项目进行介绍时,不能一味地按照事前准备好的模板照本宣科,而 应该根据所申请的工作的性质,多说一些与自己申请的工作内容相近的东西。例如,如果是 搜索类企业,就可以多提及一些与搜索有关的项目;如果是安全类企业,就 可以多提及一些 有关网络安全的项目。 (7)有些在北京设置有岗位的互联网企业,很难解决当地户口。由于每个公司得到的 指标数量都是由北京市政府调控的,而且户口指标越来越严格,很多互联网企业在解决户口 上不能给予绝对承诺,但是会尽力争取,除非是企业极力挽留的人,其他人获得户口的难度 还是挺大的。 (8)很多互联网企业为求职者提供的 offer 并非都完全一样,所以一定要区分顶级 offer 与普通 offer。顶级 offer 是企业给予面试笔试非常优秀者的绿色通道。一般而言,拿到顶级 offer 的求职者在各个方面都较普通 offer 好,如待遇、户口、发展前景等。所以求职者一定 要擦亮自己的眼睛,能够拿到企业的顶级 offer 或是有资格与企业谈条件的时候,一定不要 放过机会。 (9)很多互联网企业,实行内推制。据说在硅谷,最容易获得招人的机会是熟人推荐, Facebook 大概 60-70%的员工是通过熟人推荐的方式被雇佣的。内推不仅能够用最少的时间、 最低的成本,找到最合适的人才,还 能够通过对公司内部推荐候选人的员工进行激励,让公 司中所有人都参与到公司的招聘工作中。对于员工而言,可以推荐校友、师弟师妹、朋友等 来此工作,如果被推荐的人最终被该企业录取了,推荐者也会获得该企业提供的“伯乐奖”, 这对推荐者与被推荐者来说都是一个莫大的荣耀。所以如果有机会,一 定 要通过各种渠道“求 内推”。 (10)互联网企业的面试看起来有点随意,其实对每个人而言机会都是均等的,它会给 予求职者足够的机会来证明自己的能力。无论是名牌高校的毕业生还是普通高校的毕业生, 无论是本科生还是研究生,只要足够优秀,互联网企业都会给予机会。 (11)不要被同一根绳子绊倒两次。因为面试有时候可能有跨度,每一轮面试的面试官 都不一样,但同一个问题可能会被不同的面试官提问。所以有些问题在面试的时候没回答好, 面试完后一定要仔细思考,以防在下一次或是下一个公司面试中也遇到同样的情况。最好能 够将自己的面试内容做好记录,面试完回去后好好想想。 (12)学会纸上写程序。求职者学习计算机时,一般都是在计算机上敲代码,不习惯在 纸上写程序,但是在进行技术面试的时候,一 般都 需要在纸上写代码,在 纸 上写 代 码 一般 都 容 易 出 错 ,思 路 也 比较 紊乱,所以最好事先多练习。 (13)建议准备一个日程本,记录每一次宣讲会、笔试和面试的时间,这样一旦企业打 电话来预约面试,可以马上查找日程本上的空闲时间,不 至 于 发 生 时间上的冲突。每投一份 简历,记录下企业的职位和要求,如果一段时间以后(1 个月或更长)有面试机会,可以翻 出来看看,有所准备。以免因为投递简历太多,最后造成面试笔试张冠李戴的后果。 (14)互联网企业的行业特性导致在互联网企业工作,工作强度、工作压力都比较大, 工作也比较辛苦,高薪意味着高付出,但高付出同时也会为自己带来高回报。高薪不是叫出 来的,是踏踏实实干出来的。 (15)大型互联网企业的用户群广泛,他们对海量数据处理很感兴趣,尤其是在面试笔 试的过程中的压轴大题都是海量数据处理,所以在应聘前一定要研究海量数据的处理问题, 做到有备无患。 3.真题分析 以下摘选一些著名互联网企业的部分面试笔试真题以及考查知识点供读者参考。 (1)extern 的作用。 (2)strstr( )函数的作用。 (3)Windows 下线程优先级问题。 (4)多方法交换 x 与 y 的值。 (5)指针的自加与引用。 (6)前置++与后置++。 (7)inline 的作用。 (8)二维数组的表示。 (9)ifndef 的作用。 (10)KMP 算法。 (11)函数调用方式。 (12)重载函数。 (13)构造函数与析构函数。 (14)合并两个有序链表。 (15)逻辑推理—智力题。 (16)100 亿条记录的文本文件,取出重复数最多的前 10 条。 (17)设计一个双向链表,并提供一个可根据值删除元素的函数。 (18)二叉树的多种遍历算法实现。 (19)有读和写两个线程和一个队列,读 线 程从队列中读数据,写线程往队列中写数据。 (20)stack,heap,memory-pool。 (21)TCP 的流量控制和拥塞控制机制。 (22)写一个函数,返回一个字符串中只出现一次的第一个字符。 (23)求一个数组中第 k 大的数的位置。 (24)面向对象继承、多态问题,如多态的实现机制。 (25)内联函数什么时候不展开? (26)成员初始化列表有什么作用?什么必须在成员初始化列表中进行初始化? (27)指针与引用的区别。 (28)创建空类时,哪些成员函数是系统默认的? (29)有 10w 个 IP 段,这些 IP 段之间都不重合,随便给定一个 IP,求出属于哪个 IP 段。 (30)网络编程(网络编程范式,非阻塞 connect)。 (31)TCP/IP。 (32)Linux 的命令、原理以及底层实现。 (33)Linux 编程,包括所有互斥的方法、多线程编程、进程间通信。 (34)一个一维数轴上有不同的线段,求重复最长的两个线段。例如,a:1~3,b:2~7, c:2~8,最长重复是 b 和 c。 (35)有向带权图最短路径。 (36)内存溢出与内存泄露有什么区别? (37)利用互斥量和条件变量设计一个消息队列,具有以下功能:1)创建消息队列(消 息中所含的元素);2)消息队列中插入消息;3)取出一个消息(阻塞方式);4)取出第一 消息(非阻塞方式)。注意,互斥量、条件变量和队列由系统给定。 (38)用非递归方法完成二叉树的遍历。 (39)cnwap 和 cnnet 的区别。 (40)设计一个内存管理策略,要求可以保证多线程时的安全,防止内存越界等,效率 不低于 malloc( )/free( )函数。 (41)排列组合问题。 (42)若有序表的关键字序列为(b, c, d, e, f, g, q, r, s, t),则在二分查找关键字 b 的过 程中,先后进行比较的关键字依次是什么? (43)有一个虚拟存储系统,若进程在内存中占 3 页(开始时内存为空),若采用先进 出(FIFO)页面淘汰算法,当执行如下访问序列后,1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺 页? (44)有一个顺序栈 S,元素 s1,s2,s3,s4,s5,s6 依次进栈,如果 6 个元素的出栈 顺序为 s2,s3,s4,s6,s5,s1,则顺序栈的容量至少应该有多少? (45)[0,2,1,4,3,9,5,8,6,7]是以数组形式存储的最小堆,删除堆顶元素 0 后的结果是多 少? (46)某页式存储管理系统中,地址寄存器长度为 24 位,其中号占 14 位,则主存的分 块大小是多少字节? (47)运算符重载。 (48)各种排序算法的使用与比较。 (49)一维数组默认初始化问题。 (50)const char* p1 = "hello"; char* const p2 = "world";有什么区别? (51)struct 与 class 有什么区别与联系? (52)函数指针与指针函数的区别。 (53)指针数组与数组指针的区别。 (54)大端小端。 (55)虚函数问题。 (56)如何判断单链表是否有环? 在互联网企业的面试中,除了一些常见的技术面试问题外,还有以下与项目、性格有 关的问题: (1)自我介绍。 (2)项目相关问题。 (3)了解我们企业吗? (4)家乡是哪里的?为什么要来我们这个城市工作? (5)为什么会选择我们企业? (6)为什么选择这个职位? (7)竞赛获奖以及论文。 (8)自己的职业规划是什么? (9)谈谈自己的优势与劣势。 (10)你是怎么在团队合作中发挥作用的? (11)结合简历中的实习经历问一些细节。 (12)对我们企业的理解,喜欢我们吗? (13)个人优缺点。 (14)个人对薪资问题。 (15)可以实习吗? (16)你的同学为什么不选择我们企业? (17)如果你没有被录用,你觉得可能是什么问题? (18)你有什么问题要问吗? 4.推荐知识点学习 通过真题发现,知 名 的 互联网企业一般考查的知识面比较广,从 基 本的语言知识,到面 向对象技术,从 排 序 到 二 叉 树 ,从 逻辑推理到海量数据处理,从 英 语 题到智力题,都有涉及, 所以最好的准备是从平时积累开始,拓宽自己的知识面。 同时由于互联网企业的侧重点往往不同,针对这一特性,需要重点突出某一点。例如, 如果是以搜索为核心的互联网企业,就 需 要更加侧重于算法、操作系统、数据库等相关知识 的研究;如果是电子商务企业,则除了基础知识以外,还需要学习一些 Java 相关知识;如 果是网络安全企业,则还需要学习有关软件安全、网络安全的专业知识。 但总的来说,重点还是应该放在学习 C/C++、数据结构与算法以及海量数据信息处理上。 3.2 网络设备提供商 互联网的巨大发展,网络设备功不可没,网络设备已经成为互联网发展的基石。伴随着 IT 行业的发展,现在很多网络设备提供商已经不再将目光只是锁定在这一块“蛋糕”上, 纷纷将触角伸展开来,业务范围也变得越来越广泛:云计算、智能手机、物联网,正因为如 此,他们对人才的渴望仍旧极度迫切,招聘规模也比较大,待遇自然也比较给力。据报道, 某知名网络设备提供商从 2014 年开始对于基层员工涨薪幅度高达 30%,调薪后本科生薪水 将在 8000-9000 元,而研究生将达到 10000 元左右,这个待遇不仅与互联网企业相差无几, 而且,由于还有股票、期权的诱惑,对求职者而言,自然是非常有吸引力的。所以很多优秀 的毕业生都选择投身到了这样的企业。 1.招聘流程 由于该类企业招聘规模一般比较大,所以他们的校园招聘也比较早,从 每 年 的 七八月份 就开始了,有的甚至在四五月份就开始校园宣讲,他们的招聘流程一般为:注册简历→笔试 →技术面试→上机测试或性格测试或群面→主管面试。一 般 会 在 北 京 航空航天大学、西安电 子科技大学、南开大学、武汉大学、湖南大学、北京邮电大学等高校举行校园宣讲会。 2.面试笔试注意事项 在整个应聘过程中,面试是最具有决定性意义的一个环节,事关成败。同时,面试也是 求职者全面展示自身素质、能力、品质的最佳时机,面试发挥出色,可以弥补先前笔试或是 其他条件,如学历、专业上的一些不足。除了常见的面试注意事项外,在该类企业的面试笔 试过程中,还应该注意以下几个方面的问题: (1)该类企业的招聘主要以综合素质考查和技术能力考查为主,综合素质主要考查以 下方面内容:责任心、沟通能力、团队精神、主动性、学习新知识的能力、意愿等。通过招 聘主要考查人员以下三个方面:第一,言谈举止、仪容、仪表;第二,心态(心理状态); 第三,专业知识。以下是某知名企业对软件开发工程师的职位要求。 1、计算机、通信、软件工程、自动化、数学、物理、力学、或相关专业,本科及以上 学历; 2、熟悉 C/C++语言/JAVA/底层驱动软件编程,熟悉 TCP/IP 协议、Intenet 网络、ARM 的基本知识; 3、对通信知识有一定基础; 4、能够熟练阅读和理解英文资料; 5、具有本企业系列认证证书者优先。 (2)面试要低调。偷偷地打枪,出声的不要。不管自己有多牛,也不管自己内心有多 么斗志昂扬,无论是做人还是求职,保持谦卑之心,没有坏处。所以,待人要诚恳,题可以 答不上,但是一定要让面试官觉得你这个人踏实可靠。 (3)第一轮面试一般是技术面,只要态度够谦虚,又参与过实际的项目研发,一般都 会给二面机会,特别是需求量比较大的岗位,诸如软件研发、云计算等。遇到会回答的问题 时应该保持淡定,遇到不会回答的问题时,也要保持淡定,该类企业通过技术面刷人并不多。 该类企业的面试问题都是从提交的简历出发,一 点 一点 地 问 ,问 题 会一 个 比 一个 深入,直到 你回答不上或者面试官满意为止。 (4)由于该类企业的规模比较庞大,在全国好多大城市都设置有研发基地,可能会根 据岗位需要,对求职者进行岗位调整,有时会进行异地研发,所以求职者一定要做好心理准 备。如果无法接受,一定要将自己的意愿表达清楚。 (5)该类企业一般都有性格测试这个环节,性格测试反映求职者是否能够适应岗位需 求,性格测试是刷人的一个重要环节。一般而言,在进行性格测试时,最好要能够保持前后 题的一致性。同时,如果该类企业取消性格测试,很有可能会组织群面,群面也是该类企业 刷人的一个重要环节,所以提前准备有关群面的技巧是非常有必要的。 (6)该类企业在近几年开始增加了对研发类岗位的上机测试,用以考查求职者实际的 编程能力。机试题目一般都非常简单(当然也不排除会有一些非常难的题目),都是最常见 的编程题,不涉及高深的算法,求职者可以选择 C/C++或 Java 语言进行编写源代码,所以 在机试前认真仔细地在自己的计算机上多敲敲代码会有很好的帮助,否则在紧张的气氛里, 很难发挥出自己的真实水平。 (7)该类企业一般每年都会在五六月份组织一些在校学生参加的程序设计竞赛,获奖 的学生除了获得奖品与证书外,一般还能享受到招聘“绿色通道”的优待。所以,如果有机 会,在求职前,参加一下这些科技竞赛,对于个人水平的提高大有用处。 (8)该类企业的面试一般很集中:技术面、群面、机试、性格测试、主管面试,几乎 都被安排在一两天时间内完成,对人的体力与精力是一个极大的考验。 (9)该类企业的待遇一般比较好,虽然相比互联网企业,可能相对低一些,但是该类 企业对工作年限较长、业绩 比 较 突出 的 优秀员工可能会提供股票、过渡 房 ,所 以 总体 福 利 也 还不错,而且,他们的很多研发中心都集中在西安、成都、武汉等二线城市,性价比自然也 是比较高的。 (10)在该类企业面试中,有时会有英语口语测试,对于求职者而言,能说尽量开口说。 一定要明白一个道理,那就是说得不好是能力问题,不说就是态度问题了。 (11)很多企业在与求职者签订协议的时候,都明确要求,求职者不允许未来跳槽到同 类型的竞争企业中去。 3.真题分析 某知名网络设备提供商技术类笔试题。 (1)判断题(对的写 T,错的写 F 并说明原因,每小题 4 分,共 20 分)。 1)有数组定义 inta[2][2]={{1},{2,3}};则 a[0][1]的值为 0。( ) 2)int(*ptr)( ),则 ptr 是一维数组的名字。( ) 3)指针在任何情况下都可进行>,<,>=,<=,==运算。( ) 4)switch(c)语句中 c 可以是 int,long,char,float,unsignedint 类型。( ) 5)#define print(x) printf("theno,"#x",is")。( ) (2)填空题(共 30 分)。 1)在 Windows 下,写出运行结果,每空 2 分,共 10 分。 charstr[ ]="Hello"; char*p=str; intn=10; sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) voidfunc(char str[100]) { } sizeof(str)=( ) 2)voidsetmemory(char**p,intnum) {*p=(char*)malloc(num);} voidtest(void) {char*str=NULL; getmemory(&str,100); strcpy(str,"hello"); printf(str); } 运行 test( )函数有什么结果?( )10 分 3)设 intarr[]={6,7,8,9,10}; int*ptr=arr; (ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 程序输出为( )10 分 (3)编程题(第一小题 20 分,第二小题 30 分)。 1)不使用库函数,编写函数 intstrcmp(char*source,char*dest),相等返回 0,不等返回1。 2)写一函数 intfun(char*p),判断一字符串是否为回文,是返回 1,不是返回 0,出错返 回1。 面试中部分非技术问题。 (1)自我介绍。 (2)家乡是哪里的?为什么选择留在这个城市? (3)是否喜爱运动?喜爱什么运动项目? (4)性格如何?内向、外向或中性? (5)用英语进行简短的自我介绍。 (6)对于工作地点有什么要求?是否能够服从公司的分配? (7)项目有关。 (8)自己的优缺点。 (9)为什么要离职? (10)说说你的个人发展计划。 (11)对软件外包的认识。 (12)对经常加班的态度。 (13)对长期出差的认识。 (14)对工作责任心、沟通能力、团队精神、主动性的认识。 (15)群面。 (16)性格测试。 面试中部分技术问题。 (1)struct 与 class 的区别。 (2)error 与 exception 的区别。 (3)常见的软件测试方法有哪些。 (4)int *const p,int const *p,int const *const p 的区别。 (5)在字符串 STR 中找字符串 substr 的个数。 (6)将字符串右移 N 位。 (7)大端和小端的区别。 (8)strlen 和 sizeof 的区别。 (9)指针与数组的区别。 (10)C/C++如何读写文件。 (11)堆与栈的区别。 (12)虚函数与纯虚函数。 (13)程序在内存中如何分布。 (14)内存泄露。 (15)宏定义。 (16)静态全局变量与一般全局变量的区别,静态全局函数与一般全局函数的区别。 (17)heap 与 stack 的区别。 (18)链表的后续遍历实现。 (19)有序单项链表的插入函数。 (20)根据简历上的项目提问。 (21)实时操作系统与非实时操作系统的区别。 某企业部分机试题。 (1)求一个数组里面能被 3 整除的个数。给了题目框架,但框架不允许修改。 (2)计算一个数组中的奇数值和偶数之和。 (3)手机号码合法性判断,我国大陆运营商的手机号码标准格式为国家码+手机号码, 如 8613888888888,其特点:长度为 13 位,以 86 的国家码打头,手机号码的每一位都是数 字。请实现手机号码合法性判断的函数要求:如果手机号码合法,则返回 0;如果手机号码 长度不合法,则返回 1;如果手机号码中包含非数字的字符,则返回 2;如果手机号码不是 以 86 打头的,返回 3。 (4)计算两个字符串中匹配项的字符串,并将匹配的字符串存储在 c[]中。要求:字符 串*可以匹配任意一个字符串,直到下一个匹配字母为止,其中字符串 2 中允许有*;输出相 匹配的字符串;只要一个字符不匹配,匹配过程就结束。例如,字符串 1 为 abcdefg,字符 串 2 为 a*f,输出为 abcdef。 (5)从两个数组的最后一个元素比较两个数组中不同元素的个数,如有 array1[5]= {77,21, 1,3,5}, array2[3]={1,3,5},从 array1[4]与 array2[2]比较开始,到 array1[2]与 array[0] 比较结束。这样得出它们不同的元素个数为 0,若 array1[6]={77,21,1,3,5,7},那么他们不同 的元素为 3。函数原型为 int compare_array(int len1, int array1[], int len2, int array2[] );其中, len1 与 len2 分别为数组 array1[]和 array2[]的长度,函数返回值为两个数组不同元素的个数。 (6)实现约瑟夫环。 (7)有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。四则运 算即:加减乘除“+*/”,另外该表达式中的数字只能是 1 位(数值范围 0~9)。若有不能整 除的情况,按向下取整处理,如 8/3 得出值为 2。若有字符串“8+7*29/3”,计算出其值为 19。主要考点:1)字的字符形式变换为数字形式的方法;2)数字的数字形式变换为数字的 字符串形式的方法。 (8)描述:10 个学生考完期末考试评卷完成后,A 老师需要划出及格线,要求如下: (a) 及格线是 10 的倍数; (b) 保证至少有 60%的学生及格; (c) 如果所有的学生都高于 60 分,则及格线为 60 分 输入:输入 10 个整数,取值 0~100 输出:输出及格线,10 的倍数 输入样例:61 51 49 3020 10 70 80 90 99 输出样例:50 (9) 描述:一条长廊里依次装有 n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号 1、2、3、…n-1、 n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。 有 n 个学生从长廊穿过。第一个学生把号码凡是 1 的倍数的电灯的开关拉一下;接着第 二个学生把号码凡是 2 的倍数的电灯的开关拉一下;接着第三个学生把号码凡是 3 的倍数的 电灯的开关拉一下;如 此 继续下去,最后第 n 个学生把号码凡是 n 的倍数的电灯的开关拉一 下。n 个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。 输入:电灯的数量 输出:亮着的电灯数量 样例输入:3 样例输出:1 (10) 地铁换乘 描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过 的站点名分别如下,两条线交叉的换乘点用 T1、T2 表示。编写程序,任意输入两个站点名 称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。 地铁线 A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线 B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15 输入:输入两个不同的站名 输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次 输入样例:A1 A3 输出样例:3 (11)通过键盘输入 100 以内正整数的加、减运算式,请编写一个程序输出运算结果字符 串。输入字符串的格式为:“操作数 1 运算符 操作数 2”,“操作数”与“运算符”之间以一 个空格隔开。 补充说明: 1、操作数为正整数,不需要考虑计算结果溢出的情况。 2、若输入算式格式错误,输出结果为“0”。 要求实现函数: void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr); 4.推荐知识点学习 该类企业笔试涉及的知识面比较广、比较细,计算机系统、数据结构、面向对象编程、 C/C++、软件工程、操作系统、数据库系统、计算机网络、无线通信无一不涉及,重点是 C/C++、数据结构与算法,而且对简历上的内容问的比较细。该类企业的招聘有时会包括群 面与性格测试,而且一般都是通过这两个步骤刷人,所以应该在招聘前加强这两个方面知识 的训练。同时会有少量的英文口语交流,对于英语基础薄弱的求职者,最好能够做一些必要 的准备工作。 3.3 外企 百步穿杨,中西合壁,你要是搞设计那帮人可就没饭吃了。 ——《疯狂的石头》 随着改革开放的不断进行,当中国向世界敞开胸怀,加入 WTO 的时候,无数外资企业 抓住机会来到中国落地生根、开 枝散 叶 ,他 们 在带 来精 湛 技术的同时,也带来了完善的管理 模式,自然也受到了国人的青睐。相比其他类型的企业,外企薪酬待遇优厚,出国旅游、社 会保险、年假、失业保险和住房公积金都比较齐全,而且外企在管理上,一般都有一套完善 的规范,不 存 在本土企业自身的局限性。在这种模式下,员工的工作能力往往能够得到快速 提高,所以进入外企工作,成了很多人的梦想。 1.招聘流程 外企的招聘流程通常为:网申→笔试→技术面试一→技术面试二→直属部门经理面试→ 更高级别经理面试→HR 面试。 外企对人才的考核非常认真仔细,因为他们不愿意随意招聘到一个不适合的人,然后还 得花大气力来培养,而愿意在人才的发掘上花大力气,大投入也在所不惜,所以外企的招聘 流程看似复杂繁琐。在笔试题目上,他们费尽心思,出的题目都很有技术含量,能相对客观 地反映出求职者的专业技能、英语水平、智力、表达能力等;在面试这个问题上,他们做的 也同样很优秀,外企的面试少则两三轮,多则五六轮、七八轮,不 仅 考 查 求 职者的专业技能, 还会通过各种面试官的面试,来考查求职者的综合素养,所以整个求职过程需要的时间短则 半个月到一个月,长则三个月,有时甚至半年。例如,某知名会计师事务所 2014 年的校园 招聘流程就包括校园宣讲会、网申、笔试、经理面试、合伙人面试等多个环节。 不同的外企校招时间各不相同,主要是根据企业自身的情况来设定,所以在招聘季来临 时,提前做好各方面准备非常重要。 2.面试笔试注意事项 外企的招聘过程不同于其他类型的企业,所以在进行面试笔试的时候需要给予“特别照 顾”。一般需要注意以下事项: (1)注意仪表。在外企面试时一定要穿比较正式的职业装,男生应穿西装,女生应穿 套装,但不一定是名牌,外企不会看重这些,真正看重的是内在素养。同时,女生最好不要 携带一些晶光闪闪、叮叮当当的饰物,也不要化浓妆或穿太时髦、太暴露的服饰,最好化淡 妆,发型简单整洁,给人精明强干的感觉。 (2)注意礼仪。不要嚼口香糖或抽烟,平常有这种习惯的到时要忍着点。喝水最忌讳 的有两点:一是喝水出声,二是把水杯弄洒。一定要小心,把水杯放远一点,喝不喝都没关 系;记住打喷嚏之前或之后一定要对面试官说 Excuse me;当面试结束时,不要忘记向面试 官表达希望能够被录用的强烈愿望,在 握 手 告 辞 之 前,也可以问一句招聘的下一步内容是什 么。 (3)切忌谈论政治。在外企招聘中,一般不要涉及与政治有关的内容,即使谈到也要 注意主观感情色彩不要太浓。 (4)在外企的初次面试中,除非能确认面试官对你很感兴趣,否则不应该询问有关薪 水、假期、奖金、退休等问题。当然,如果面试官询问你希望的薪水时,应表示你对工作机 会的兴趣要大于对具体的薪水,此时可以说明你的期望薪水。 (5)谈吐要清晰,尽量少用语气词。在外企的面试中,使用太多如“呢、啦、吧”等 语气词或口头禅会把面试官弄得心烦意乱。语气词或口头禅太多会让面试管误以为求职者自 信心和准备不足,从而影响求职结果。 (6)不要过多解释或道歉。如果面试迟到了,一句抱歉就行了,或者加上真实的原因。 不要编故事,以为可以蒙混过关,其实面试官都很精明,如果说谎,很快会被他们识破,而 且事情往往是越抹越黑。 (7)不要当面询问面试结果。一般在面试结束后,客气地对面试官说声谢谢就行了。 有些求职者可能为了体现上进心,在面试结束时,会向面试官套近乎,询问面试官对自己感 觉怎样,有什么需要改进的地方,这完全没有必要,因为当天不可能知道结果,问了还有可 能适得其反,如果真的很想知道结果,可以在面试后 3~5 天,电话询问或是邮件询问。 (8)不要谈论工资。一般而言,外企是不会在招聘会上说出具体薪水的,因为在这一 面试阶段还没有到谈论薪水细节的地步。而且,外企也不太喜欢完全冲着工资去的人。对于 求职者而言,最好不要主动提问薪水问题,如果想知道薪水,可以通过已毕业的师兄师姐了 解他们所在行业的大致工资幅度。 (9)在面试的过程中,不要请求面试官帮忙。即使面试官是自己的校友或者朋友,不 要套近乎说“多谢您帮忙了”,这是很不专业的做法,说这句话不仅起不到正面的效果,还 可能帮倒忙。 (10)在回答问题时,一定要给出明确态度,不要模棱两可。例如,当面试官询问求职 者性格是外向还是内向时,有些求职者可能会回答,“和朋友在一起时我比较外向,而在家 时我比较内向”。这种回答,表面上看,两种性格都沾边,其实就等于没有回答。所以,在 回答面试官问题的时候,一定要选择一个明确的方向,并给出理由作为支持。 (11)外企的笔试面试题一般会有一些开放性问题,如“为什么你要选择计算机专业” 之类的,大部分题目都没有固定答案,主要是考查生活经历和工作态度等方面是否和企业文 化相契合,只要用英文表达流畅就可以了。 (12)外企需要的人才应该胆大、心细、脸皮厚。胆大,不用怕;心细,认真,不拖沓; “脸皮厚”,技术功底不是最主要的,而“执着精神”是最关键的。以下信息是某外企的宣 传口号。 如果你, 是院系里小有名气滴计算机小“牛”! 如果你,有完美主义+ 理想主义的“代码洁癖”! 如果你,嗜书如命,一向暗自神交书中的各路技术大“牛”! 如果你,没事就写几行代码,开发几个小软件,乐在其中! 如果你,想做自己的主,希望从起跑线上就不做“螺丝钉”! 如果,你根本没关注过自己的以上这些…… 只是自我赶脚:对于编程和代码,有着接近疯狂的热诚~ 我要你的技术热情,一起玩技术吧! 你好,我是 XXX,我给自己的自画像: 我有原则,有激情,崇尚编程艺术,追求软件卓越; 我注重持续、透明的沟通与反馈; 热爱学习新技术,新方法; 我组织,推动各种技术社区,积极分享,出版书籍,发布博客,发表演讲,拥护开源; 最重要滴,我快乐,幽默,热衷公益,想邀请你一起玩技术。 (13)英文很重要。外企笔试题都是英文,而且会涉及企业内其他国家的工程师的面试 环节,所以英语的准备非常重要。如果英语不是太强的话,尽量在考前一个月,多做英文题, 如 GRE 的推理题,英文数据结构题等。以下是某知名外企 2014 年招聘软件工程师的具体要 求: XXX is looking for creative, talented engineers who are passionate about solving challenging problems and building world-class software. Our platform software empowers users to turn data into insight, and insight into action. As a XXX Software Engineer, you will use your engineering and problem-solving skills to take this platform to the next level. Whether you love optimizing server-side algorithms, mastering the latest web technologies, or building powerful mobile apps, we have a team, a project and a challenge for you. For example, as a XXX Software Engineer, you might • Put your C++ and algorithmic skills to work on XXX’s high-performance server, as we push the boundaries of data diversity, complexity and scalability. • Use HTML5 and object-oriented JavaScript frameworks to build sharp, responsive, client-centric web interfaces for data exploration and analysis. • Rise to the challenge of building rich data visualizations and application workflows for iOS or Android, while optimizing for the limited resources of a mobile device. Job Duties (include but not limited to): • Build robust, efficient, maintainable, high-performance software. • Develop product features through their entire lifecycle: requirements analysis, design, implementation, unit testing, optimization, maintenance and enhancement. • Rapidly create prototypes, synthesize feedback and develop production quality features. • Evaluate and assimilate new technologies and processes in a fast-paced environment. • Provide accurate time estimates for project milestones. • Work closely with program managers to evaluate, refine and implement feature specifications. • Coordinate with quality engineers to share design information and provide testing suggestions. • Share knowledge and support fellow team members in an open, collaborative atmosphere. Job Qualifications: • Bachelor's Degree, Master's Degree, or Ph.D. in Computer Science, Software Engineering, or related field. GPA: 3.5+. • Strong analytical and problem-solving skills. • Solid foundation in computer science fundamentals, including data structures, algorithms and time/space analysis. • Strong object-oriented design and development skills. Fluency in an object-oriented programming language, such as C++, Java or Objective-C, is highly desirable. • Good communication skills in English and the ability to work as part of a team. One or more of the following is a plus: • Multithreaded/concurrent programming experience. • Experience in building and optimizing web or mobile applications for high performance. • Familiarity with any of the following: • Android SDK, iOS SDK, Cocoa • JavaScript, HTML(5), CSS(3), AJAX, SVG, Canvas • JavaScript development frameworks (jQuery, Dojo, etc.) • J2EE technology stack, MVC frameworks, Java development tools • Windows, UNIX/Linux, OS X platforms • RDBMS, Hadoop, HBase, HDFS, MapReduce, MPP technologies XXX is an Equal Opportunity Employer. (14)信面经,但不全信。外企的门槛一般比较高,网上的一些有关非常著名的外企的 面经一般都是由一些强人写的,他们站在他们的角度看问题,一 些 小的 细 节 障碍、重难点对 他们而言,可能太“小儿科”了,所以他们可能都不提,轻松地就跨过去了,而对于水平差 距比较大的人而言,可能就是这些小细节就决定了成败。所以,对于网上有关非常著名的外 企的面经,要抱着消化吸收的心态来学习,而不能完全按照这些面经的思路走。 (15)与 国 内 企业 更加注重求职的的技能不同,外企更加注重求职者的潜力,所以他们 出的笔试题目一般题量比较大,但内容却很基础,并且具有一定的深度,以确保求职者对计 算机技术能够有比较深刻的了解,以后在职业发展道路上能够走的更远。所以,在笔试时, 求职者答题速度一定要快。如果不是强人,那么还是做好足够的心理准备,尽快做会做的, 把会做的做全、做好就完美了,不太会的也适当写点。 (16)在笔试前,尽量总结历年的考题,客观题必考,数据结构与算法设计能力需要培 养。主观题不同,一般都是发挥题。还会考测试用例的题目,所以一定要多找些资料,归纳 总结。编程类题目一般都有与树相关的数据结构,而且算法多样,所以一定要认真准备。 (17)笔试面试前,一定要调整心态。战略上藐视它,战术上重视它,发挥出自己的真 实水平,不要因为太在意、太认真而发挥失误,保持一颗平淡的心。 (18)平时多练习数据结构与算法的题,发散思维,也可尝试脱离计算机,在纸上手写 程序,积累纸上写程序的经验。 (19)外企的待遇丰厚的同时,也有自身的一些劣势,主要包括:首先,工作压力会比 较大;其次,职业发展会存在“天花板”问题,而且失业率比较高,尤其是老员工,一旦上 了年纪,如果还未能上到一定级别,很有可能会被炒鱿鱼,当遇上经济不景气的时候,失业 的可能性更大;最后,在外企容易变成“螺丝钉”,外企职责分明,工作分得很细,所以最 终可能自己的能力只专属于本职工作,而不能发展其他职位的工作能力,对于未来跳槽,会 有一定的影响。 3.真题分析 2008 年某知名咨询公司笔试真题。 (1)123456789 的火车经过如下轨道从左边入口处移到右边出口处(每车只能进临时 轨道 M 一次)按照从左向右的顺序,下面的结果不可能是__________。 A.123876549 B.321987654 C.321456798 D.789651234 (2)如果 M 只能容纳 4 列车。上面选项应该选哪个__________。 (3)3 3 8 8 用四则运算符如何得出 24。 (4)C#编程实现:可变长有序数组的插入(无重复数据结点)。 (5)数 a 和 b,如何空间消耗最小交换 a b 中的数。 (6)For the following description about OOP, which is right? 1.An object can inherit the feature of another object; 2.A sub class can contain additional attribute or behaviors. 3.Encapsulation is used to hide as much as possible about the inner working of the interface. 4.Encapsulation prevents the program from becoming independent. 5.Polymorphism allows the methods to have different signature but with the same name. A.1, 2 B.1, 4 C.2, 3 D.3, 5 E.4, 5 (7)Function club is used to simulate guests in a club. With 0 guest initially and 50 as max occupancy, when guests beyond limitation, they need to wait outside; when some guests leave the waiting list will decrease. The function will print out the number of guests in the club and waiting outside. The function declaration as follows: void club(int x); positive x stands for guests arrived, nagative x stands for guests left from within the club. For example, club (40) prints 40,0; and then club (20) prints 50,10; and then club (5) prints 50,5; and then club (30) prints 25,0; and then club (30) prints N/A; since it is impossible input. To make sure this function works as defined, we have the following set of data to pass into the function and check the results. a.60 b.20 50 10 c.40 30 d.60 5 10 10 10 e.10 20 f.30 10 10 10 60 g.10 10 10 h.10 10 10 A.a, d, e, g B.c, d, f, g C.a, c, d, h D.b, d, g, h E.c, d, e, f 4.推荐知识点学习 在非技术问题上,外企比较强调英文水平、学习能力、表达能力、团队合作能力、沟通 能力,技术上主要侧重数据结构与算法、C/C++基础知识等。需要特别强调的是,数据结构 与算法需要平时积累,很难靠突击取得成效,所以平时自己要多练习算法题。 第4章 程序员那些事儿 由于缺乏社会阅历,很多准程序员们在求职前,对 IT 行业存在着诸多的困惑或是诸多 的误解,不知道自己的性格是否适合编程;不知道自己的专业背景会不会限制未来的发展; 不知道程序员这个职业是否真的是“拿命换钱”;不知道自己现在的编程水平能够获取一份 什么待遇的岗位;不知道自己的前途在哪里…… 太多太多的不知道,太多太多的迷茫困扰着这些风华正茂的年轻人。本 章 内容将就这些 问题一一解答,消除准程序员们心中的小疙瘩,使得他们在求职前,能够对 IT 行业有一个 比较准确的了解,在未来的人生道路上能够越走越好。 4.1 程序员的世界很奇妙 每一个优秀的人,都有一段沉默的时光。那一段时光,是付出了很多努力,忍受了很多 的孤独和寂寞,不 抱 怨 不 诉 苦,只有自己知道。而当日后说起时,连自己都能被感动的日子。 ——《给自己的信》 古语有言:“男怕入错行,女怕嫁错郎”,可见行业的选择对一个人的成长与发展是多么 的重要。所以,对于求职者而言,在求职之前,一定要清楚自己即将进入的行业是一个什么 样的情况,包括:过去、现状与未来。 只有自身对行业有了充分的了解,才能结合自身的实际情况,去 思 考 自 己 是否适合这个 行业,自己未来是否能够在这个行业中大展身手,否 则 ,进入了一个不喜欢、不 擅 长 的 行 业, 最后可能像爱上了不该爱的人一样,草草开始,匆匆结束,后悔不已,遗憾终生。 4.1.1 编程语言很重要吗? 两个顶级设计师分别制作国际象棋,其中一个设计师使用最传统、最原始的制作方式, 选用石头作为原材料,工具 包括各种规格的凿子、锉刀与锤子,而另一种设计师则使用现代 化的技术去熔化金属、使用模具制作。最终,这两个设计师的作品都做到了极致:精致、细 腻、美丽。这两个设计师产生了同等价值的产品,孰优孰劣很难分辨,只能由用户来评判。 但对于用户而言,其实他们并不关心象棋的材质是石质棋盘还是金属制品,也不关心设计师 们所使用的方法,他们只关心最终产品是否精美、是否好用。 对于程序开发而言,也有相似的地方。对用户来说,他们并不关心软件是由什么语言编 写而成,而只关心软件功能是否齐全,用户体验是否完善,使用是否收费、运行是否搞笑、 工作是否高效快捷、学习是否简单易懂等等。而对于程序员而言,编程语言却是很重要的, 它可以帮助程序员思考问题,甚至决定了程序员思考问题的方式。当很多编程语言都可以完 成编程任务时,只要架构正确、团队分工合理、人员能力优秀,完全可以用 C 语言去写 CGI, 用汇编语言去写消息中间件,但是为什么通常情况下,很少发现有团队这么做呢?原因很简 单,就是选择适当的编程语言可以事半功倍,取得更高的开发效率。所以,尽管编程语言只 是一个工具,它本身并没有高低贵贱之分,但在编程语言的选择上,因为各种语言都有各种 语言的特点,Java 觉得 C 不懂设计模式,C 觉得 Lisp 只会打括号,Lisp 觉得 C++在山寨 lamda, C++觉得 Java 不注重效率,因而一般遵循“用正确的工具干活儿”的规则,没有最好的, 只有最合适、最顺手的,不同的场合使用不同的语言。 网上曾经有过一个关于编程语言的段子,道出了当前程序员与编程语言的诸多纠葛:程 序员就像男人,语言就像女人,每个男人都想要很多女人,却很少有男人真正了解女人,因 为男人总是朝三暮四,而女人每天都在变,甚至有些是经过变性和整容的。这个 段 子 的中 心 思 想 就是编程语言一直在变,而程序员也在赶时髦,却始终无法精通某一种语言,而事实也 正是如此。 世界上任何一个职业,都会有一个劳动工具,和一个服务对象,对程序员而言,劳动工 具就是编程语言,服务对象就是用户。虽然说我们可能因为语言而获得就业,我们也可能因 为语言失去工作,但同时也需要注意,编程语言无论有多么重要,它都称不上是计算机软件 里面最最核心的技术,数据结构与算法的使用、架构的设计、过程的控制才是软件开发中最 重要的环节,但前提是你已经至少熟悉了一门编程语言,例如 C 语言,否则,一个连一种 编程语言都没有掌握的人,根本谈不上更高层次的计算机知识了。任何一种编程语言,都是 计算机科学理论的载体或表现形式,就如两种截然不同的语言一样,Java 与 C++从理论的 层面上讲,它们没有区别,都是“面向对象”理论的一个具体形式而已。理论是主要矛盾, 语言是次要矛盾,学会了“面向对象”理论,触类旁通,再具体到学一种语言时,会轻而易 举。很多人感叹编程语言层出不穷,学无止境,“程序员是青春饭,过了三十别想干”,为了 工作,不断地跟着新语言后面跑,其实,只要明白了编程语言的精髓,学会了此类语言的理 论,具体到某一种语言时,只不过是砍瓜切菜般容易了。 IT 江湖门派林立,编程语言众多,所谓“存在即合理”,每种开发语言都有自己的特点、 利弊、适用领域,但却没有哪门语言是“包治百病”的“灵丹妙药”,即使是可能改变未来 IT 世界的 Dart、Ceylon、Go、F#、Opa 等编程语言,也是如此。所以,在选择编程语言学 习时,可以从以下两个方面考虑。第一,语言的应用范围,在 2013 年 4 月 TIOBE 编程语言 指数排行榜(如表 4.1 所示)上,C 语言名列第一,Java 语言紧随其后,位列第二,C++语 言第三,Objective-C 语言第四,C#语言第五,这些主流的语言最好能够至少掌握一种,因 为语言的掌握是没有止境的,人们不可能为掌握而掌握花费太多的时间和精力,所以选择最 热门的语言进行深入学习,肯定是大有裨益的。第二,以市场为导向, 想做后台的研发,一 般偏重 C 语言,想编写网站,一般偏重 C#、JAVA、PHP,想做底层与硬件有关的,一般会 学习汇编和专业的单片机语言。 表 4.1 2013 年 4 月编程语言排行榜前 20 榜单 名次 语言 1、 C 2、 Java 3、 C++ 4、 Objective-C 5、 C# 6、 PHP 7、 (Visual) Basic 8、 Python 9、 Perl 10、 Ruby 11、 JavaScript 12、 Visual Basic .NET 13、 Lisp 14、 Pascal 15、 Delphi/Object Pascal 16、 Bash 17、 Transact-SQL 18、 PL/SQL 19、 Assembly 20、 Lua 4.1.2 做程序员是否有“钱”途? 梦想是数钱数到手抽筋,现实是数钱数到自然醒。 ——《屌丝男士》 前段时间,有一个关于中美程序员的段子非常火:程序员 Bob 被认为精通 C、C++、Perl、 Java、Ruby、PHP 和 Python 等各种编程语言,并且多个季度都是企业的明星程序员。但 Bob 每天在公司的“工作”就是在网上闲逛,9 点上班后看看新闻网站和视频,11 点半去吃午饭, 下午 1 点开始“工作”去逛 eBay 淘东西,然后再花两三个小时登录社交网站,5 点准时下 班。很多人对此很好奇,觉得 Bob 的行为不可思议,如此吊儿郎当地工作,为什么工作效 率还如此高效呢?难道有神明帮助不成?后来通过调查,终于发现了一个惊天大秘密:Bob 雇佣了中国沈阳的一家软件公司帮助他完成日常工作,而 Bob 只花费了他高达 6 位数的工 资的五分之一用于支付外包公司佣金。 从这个段子中,可以反映出一个问题:美国程序员的薪资待遇远远高于国内程序员的待 遇。而事实也确实如此,据国外媒体 Glassdoor 报道,全球企业中软件工程师薪金最高的 5 家企业分别是:Juniper Network、Google、Twitter、Facebook、Apple,平均年薪分别为 128378 美元、124520 美元、120768 美元、118857 美元、118192 美元。如果按照 2013 年 8 月 10 日 人民币与美元的汇率来计算,1 美元折合人民币 6.1215 元,其年薪分别为 785865.927 元、 762249.18 元、739281.312 元、727583.1255 元、723512.328 元。而且,根据求职网站 Indeed.com 的数据显示,硅谷程序员的基本薪资也都差不多在 5 万美元到 7.7 万美元之间。不仅如此, 为了吸引并留住人才,各大知名 IT 名企也是使劲各种招数,据传 Google 公司为了与 Apple 公司争夺一位博士,不惜开出 15 万美元的年薪,外加 25 万美元的期权。 相比较国外程序员的高薪以及“土豪”们 的 挥 金如 土,国 内 程序员的那点薪酬可能都是 毛毛雨了,但相比国内其他行业而言,在中国做程序员还是比较有“钱”途的。国内知名人 力资源机构浙江省对外服务公司旗下的蓝拓人力发布的 2013 年人力资源服务白皮书显示, 从平均月工资的排行上来看,IT 行业仍然是赚钱最多的行业,超过了传统意义上的金融业。 时代在呼唤,人才的价值在回归,知识的价值在回归,而这也正好印证了知识玩转财富,知 识就是财富的道理。表 4.2 为国内一些知名企业薪酬待遇表(备注:以 2013 年,应届毕业 生应聘研发型岗位数据为参考对象,数据来源于网络,编者不负任何责任)。 表 4.2 国内一些知名企业薪酬待遇表 企业名 待遇(年薪,税前,单位 RMB,W 表示万) 网 X 11W,游戏业务 25W 百 X 19W 腾 X 8K*14 新 X 9K*13 小 X 12K*13 淘 X 16W 阿 X 巴巴 15K*15K 京 X 12W 支 XX 15W 美 X 16W 盛 X 创新研究院 26W 人 X 网 20W 搜 X 18W 人民 XX 18W+帝都户口 迅 X 8K*13 完美 XX 18W 华 X 8K*12 中 X 7K*12 英 X 11K*13 不可否认,IT 行业是一个非常辛苦的职业,耗费脑力,压力很大,成天面对计算机, 满身的职业病,但如果找工作一切向钱看的话,她还是一个不错的选择:不算坏,也不算好。 说出去不丢人,但是也还没到可以到处显摆的地步。据统计,近几年,IT 产业在全国工业 的比重中已达到 12.3%,占 GDP 的 9.1%,成为第一大朝阳产业。而且,由前程无忧网站发 布的消息称,2012 年最好的职业排行中,“软件工程师”高居榜首。 其实,程序员的“钱”途是程序员自己造就的,如果你觉得你现在没有“钱”途,那只 能说明你还做的不够好。2013 福布斯中国富豪榜上,国内互联网三巨头“BAT”(百度,阿 里巴巴,腾讯)的 Boss 们全都进入前十名,能说程序员没有“钱”途吗?只要做得足够好, 在程序员这个行业里,“屌丝”逆袭的事情天天在上演。 水再浑浊,只要经历长久沉淀,依然会分外清澄;人再愚钝,只要施予足够的努力,一 样能改写命运的走向。什么是命运?命是弱者借口,运乃强者谦词。不要抱怨出身不好,因 为我们无法选择父母;不要悲愤起点太低,因为那只是我们站立的原点。人生是一场漫长的 对抗,有些人笑在开始,有些人却赢在最终。命运掌握在自己手中,不会偏爱谁,就看你能 够追逐多久,坚持多久,坐在家里等房子、车子、票子、女子、孩子送上门来,还不如睡一 觉做个好梦来的痛快。请记住:人生的意义不在于拿得一手好牌,而在于打好一手坏牌。 4.1.3 程序员是吃青春饭的吗? 正如故乡是用来怀念的,青春就是用来追忆的,当你怀揣着它时,它一文不值,只有将 它耗尽后,再回过头看,一 切才 有 了 意义 ——爱过我们的人和伤害过我们的人,都是我们青 春存在的意义。 ——《致我们终将逝去的青春》 很多计算机相关专业的年轻人在进行择业的时候,不知道是受到什么因素的影响,对于 程序员这个行业,都存在一个思想误区,就是觉得程序员的“职业生涯”很短暂,吃青春饭, 等到年龄大了,如果不转行,就没用了,没有企业要了,生存都存在问题了,而且也举出了 很多例证。例如,年长程序员需要的薪酬一般要比年轻程序员昂贵,相比之下年轻的程序员 更能得到企业的青睐;年长程序员缺少灵活性,缺乏学习新知识的能力与动力,做事比较古 板;年长程序员不愿意去干那些很辛苦的实际开发工作,编程水平一般,而只会指手画脚, 往往给人眼高手低的感觉;年长程序员没有年轻程序员脑瓜灵活、思维敏捷等。一致认为程 序员这个行业眼前虽然高薪,但却是以牺牲身体、时间换来的,还落下一身职业病,如颈椎 病、腰椎间盘突出、高度近视等,所以这个行业没有什么前途,其实这是对程序员这个行业 的一种误解。在美国,很多高薪的程序员,年纪都比较大,微软很多高手,都是四五十岁的 人,而且都做的底层开发,但他们都成为了行业顶尖人物,之所以在中国很少见到比较年长 的程序员,其主要原因不是因为年长的程序员都转行了,而是因为中国的信息技术起步较晚。 在中国,信息技术大面积普及的时间大约是 1990 年以后,那个时候的年轻人,现在也只不 过是四十岁。要说程序员辛苦,确实很辛苦,但毕竟“天上不会掉下馅饼”。说到职业病, 也有点太过于片面,绝大多数行业都有职业病,而非仅仅是 IT 行业。 其实,相比较年轻程序员,年长程序员更有竞争力。首先,年长程序员一般都有项目经 验,之所以薪酬高昂,是有它的合理性与必要性的。年轻的程序员薪水一般比较少,他们一 般没有经受过失败的教训,对于项目的认知与把握一般也不如年长的程序员,很多项目需要 有激情的年轻人,同时也需要经验丰富的年长者进行架构、技术指导。其次,技术不是年轻 人的天下,年长者的阅历较年轻的程序员更深、更广。什么都是需要时间的磨练,编程也不 例外,精通与了解、熟悉是两码事。很多深刻的见解并不是新人可以拥有的。由这些思想储 备来提升的生产效率并不是可以用什么方法直接测量到的。最后,由于生理特性,年长者在 智力方面确实不如年轻人了,年长的程序员比年轻的程序员的反应速度也相对慢一些,但正 确的判断来自于经验,经验来自于常年的积累。 其实,年长程序员的出路在哪里?出路就是提高自己的不可替代性。做一辈子程序员并 非天方夜谭,只要你的工作不可替代,能够解决别的程序员解决不了的问题,你就不可能被 淘汰,反之,如果你的工作没有什么技术门槛或是技术瓶颈,别人谁都可以干,此时就会很 容易被年轻人取代了,自然而然就会成为吃“青春饭”的主了。很多人年纪大了,之所以转 行不做程序员了,有一个重要原因就是年纪大了,变的懒惰了,因为 IT 行业技术发展很快, 要想跟上时代的步伐,就需要拼命的学习。 每个人都年轻过,也有年老的时候。但年轻不都是坏事,年长也不都是好事。一个人如 果编程能力不行,那么无论年纪大小都不会被录用。相反,一个编程能力一流的程序员,无 论是年轻还是年老,无论是男性还是女性,在哪里都会受到欢迎。所以,编者觉得,程序员 这个职业不仅不是吃“青春饭”的,而且这个职业还会让人永葆青春、充满活力。 4.2 程序员门槛几多高 4.2.1 哪些人适合做程序员? 不想动,不想说话,就这么一动不动,就算中国移动我也不动。 ——《屌丝男士》 有人的地方,就有江湖;有代码的地方,就有程序员。程序员又称程序猿、挨踢民工、 攻城狮、码农、码畜,在 IT 行业的发展中,他们扮演着举足轻重的角色,他们的双手是魔 术师的双手,把枯燥无味的代码变成了丰富多彩的软件。从 底 层 硬件信息协议的建立,到数 据传输层的处理,到操作系统的建设,到数据库平台的建设,再到应用层上各种数据平台的 搭建,程序员都做出了巨大的贡献。据 2012 年 6 月 27 日的新闻报道,在 印 度海 德 拉 巴的一 名程序员在执行升级备份的常规任务时,操作失误,导致国民西敏寺等银行出现不能正常使 用银行服务的现象。据专家估计,因为此次系统事故,包括工作人员额外的费用以及客户赔 偿金,应该在 5000 万到 1 亿英镑之间。一个小小的程序员,一次意外操作,竟然能够导致 如此严重的后果,可见,程序员的地位之重要。 学习计算机的人很多,喜欢编程的人也很多,但并非所有的人都适合做程序员,因为每 个人的天赋不一样,每个人的兴趣也不一样,虽然笨鸟可以先飞,勤也能补拙,但编程是一 个艺术化的工作,它不仅仅是数据的增、删、改、查操作,它需要开发人员具有理解能力、 创新能力、沟通能力、被压迫被奴役的能力、反抗的能力、山寨的能力、学习的能力等等。 IT 行业是一个需要时间、空间、智力和脑力的行业,而兴趣正是最好的老师,它可以 消除工作的疲劳,加深对琐事的关注,就如同你是一匹马,当前方是一望无际的草原时,即 使此时背负了千斤重担,也一样会一往直前。一 个人如果对未来从事的工作没有兴趣的话有 可能成为优秀的人才吗?没有。Facebook 创始人马克·扎克伯格曾经说过:如果你喜欢自 己做的事,事情会容易很多。如果对某项工作确实不感兴趣,那么千万不要去做,因为从事 自己不感兴趣的东西,获得成功的机率很小,失去兴趣的编程工作是枯燥的,所以对于那些 对计算机感兴趣的人而言,学习编程是一种享受,而对那些对编程压根就没兴趣的人而言, 编程无异于是地狱。什么是兴趣?举个例子,苏州工业园区都市花园的潘家鸿老人,七十岁 了,不仅是个游戏高手,还是个编程大人,因为他要玩的游戏(相八付,是骨牌的一种)在 网上找不到,于是他自己在计算机上写了一个。这就是一种兴趣,不受年龄限制。 所以,编者认为,兴趣是衡量一个人是否适合做程序员的最重要因素之一。在择 业过程 中,人的兴趣和爱好往往具有一种强大的推动作用。其实,编者个人觉得,人们其实不缺乏 对事物的兴趣与爱好,只是常常缺乏兴趣与爱好的主体或是兴趣与爱好的主体与实际需求背 离而已。每个人的兴趣与爱好没有高低贵贱之分、风雅俗气之别,只是有的人爱好编程,有 的人爱好打麻将,在本质上没有任何区别。 但是,个人的兴趣和爱好只能作为职业选择的重要依据,而不是全部依据。因为,只有 把它们建立在一定能力的基础上,并与社会需要相结合,兴趣、爱好才会获得现实的基础, 也才有实现的可能。因此,求 职者应该培养自己多方面的兴趣和爱好,努力发展自己的专长, 从而使自己的兴趣爱好有明确的针对性,确保在求职时拥有一个更为广泛的选择余地。 各人有各人的天赋与特色,各人有个人的兴趣与爱好,各行有各行的特色与要求,对于 程序员这个职业,并非每个人都适合做,一个人的事业最完美的情况就是“兴趣”、“天赋” 与“工作”的高度吻合:“我从事的工作是我最擅长也最爱好的”。而不是坐在计算机前极端 无聊,被进度压得喘不过气来,天天为找 Bug、改 Bug 生气。所谓热爱,不仅仅是为了混 饭,不仅仅是为了有份工作。只有疯狂的热爱,才能创造奇迹,程序员,就是为创造奇迹而 活的。如果一个人只是觉得编程好玩,头脑发热,或者为了有个工作混口饭吃,其最终在事 业上的建树肯定不会有多高,因为没有热情,是不可能写出什么好程序来的。编者的一位好 友董哥,年纪轻轻,就已经成为所学领域的权威了,而这也得益于他将学业、兴趣、工作的 完美结合:大四那一年,他以非常优异的成绩保送研究生,恰逢此时 Hadoop 在国内刚刚兴 起,出于对 Hadoop 的兴趣与爱好,他选择了国内最顶尖机构的学术权威作为导师,从事 Hadoop 方面的学习与研究,毕业后,顺 利 进入了一家国内最知名的互联网企业,从 事 Hadoop 的实践工作,不仅工作顺风顺水,他还利用业余时间,将自己对 Hadoop 技术方面的研究整 理成书,成为国内该领域最畅销的技术原创书籍,而他自然也成为该领域最知名的学者之一。 通过钻研技术,并不断地技术分享,他的技术水平不仅得到了最大程度的提升,而且,这也 为他的职业生涯与人生书写了浓墨重彩的一笔。 任何一个优秀的软件背后都有若干辛辛苦苦操劳的程序员们。那么,什么样的人最适合 做程序员呢?下表是适合做程序员的人的特点表。 表 4.3 适合做程序员的人的特点 特点 描述 喜爱计算机 喜爱计算机,认为 Code is Beautiful,每天都与计算机为伴,愿与计算机长相厮守。 喜欢写程序,做程序员就是上天堂;不喜欢写程序,做程序员就是下地狱。只有 喜欢,只有热爱,才能把程序写好。如果把编程当作一件苦差事,不喜欢面对计 算机进行编程的人不合适做程序员。当然,这里所谓的喜欢计算机,并不是说喜 欢上网打游戏,而是喜欢计算机软件开发这项工作。 身体好 编程是一项耗费脑力与体力的活动,有时候项目节点很紧张,还需要经常加班、 经常出差,这就对程序员的身体素质提出了比较高的要求。 数学好 计算机的核心是数学,因为编程语言是程序设计的工具,而程序设计的核心是算 法,算法的核心是数学。会写代码不难,难的是将生活抽象成数学模型,使用算 法解决生活中的实际问题。 耐得住寂寞, 编程是一项艰苦的脑力劳动,也是一项枯燥的活动,它比任何人的想象都要缓慢, 特别是在调试和学习阶段,需要花费巨大的精力去精雕细琢出需要的代码,需要 坐得住冷板凳 程序员静下来专研。而且,当做销售、做行政的朋友发财了,在外面花天酒地潇 洒的时候,程序员就更需要有坐冷板凳的毅力了。 逻辑思维能力 强 编程不是谈恋爱,可以感性的自由发挥,它需要严谨的逻辑思维能力,1 就是 1, 2 就是 2,任何一个看似不起眼的问题,都有可能导致整个软件系统发生故障。 举个例子,你是一位将军,会十八般武艺,刀枪棍棒样样精通,但就是力气不够, 所以永远都上不了战场,这个力气对程序员而言就是逻辑思维能力。 英文好 计算机编程起源于国外,已经形成了一整套完整的学习体系,很多编程书籍或是 手册都是英文的,而程序员由于工作需要,查阅资料学习更是家常便饭,所以这 就对其英文水平提出了较高的要求。而且,编程的时候,很多变量或函数的命名, 一般都是遵循英文命名法则,如果程序员不熟悉英语,那将是一件极其痛苦的事 情。 好强 编程是一项聪明者的游戏,是一场征服之旅,它需要程序员具备争强好胜的冲劲, 能够不断地去克服各种挑战,却解决各种看似很奇怪、看似不可能解决的问题。 如果程序员性格比较懦弱,遇到问题就选择逃避或是拐弯走,那么,他永远也不 可能得到提高。做一百件容易的事,不如做一件难的事所学到的东西多,而且, 难的事多做一件,信心也会更强一点,无形中也会提高个人的能力。 强烈的好奇心 与求知欲 在这样一个信息大爆炸的时代,与其他行业相比, IT 行业的经验比书本知识价值 更小,如果长期满足于已有知识,闭门造车、墨守成规,不去学习新的技术,那 么,必然会造成个人思维局限、创意“生锈”,跟不上时代的步伐。由于程序员 需要学习的知识非常多,所以,时刻思考、时刻学习以及强烈的好奇心正是能促 使程序员把想法变成现实的动力。 细心 编程过程处处是细节。程序设计语言不是人的自然语言,本身就是严格的计算机 语言,来不得半点马虎。即使是少了一个句号,忘了对变量进行初始化这样的小 错误,也会让原本很完美的程序产生随机错误,而这些错误足以导致计算机死机 甚至系统崩溃,让程序员抓耳挠腮地花费很久的时间去解决。 谦虚,善于聆 听 谦虚使人进步,谦虚使人聪明。优秀的程序员往往是那些认为自己的头脑是多么 有限的人,而那些最为糟糕的程序员往往是那些拒绝承认自己的能力不适应工作 任务的程序员。而且,很多时候别人的批评或是意见都会成为重要的技术启发点。 多倾听别人的观点,多向他们学习,不要稍微懂一点皮毛,就在别人面前高谈阔 论,侃侃而谈。明白话不在多在于精的道理,100 句废话,不如一句一针见血的 箴言。要学会慢慢站在别人立场上看问题。 诚实 编程生涯成熟的部分标志是不折不挠地坚持诚实。不假装自己是高手,勇于承认 错误都是诚实的表现。程序员对于编译器的警告要有充分的尊重与认识,对自己 的代码要有足够的责任感,对整个程序要有清晰的了解,而不是编译看其是否有 错。 坚持不懈 IT 行业与其他行业不一样,程序员遇到困难就可能让程序无法进行下去,他们必 须要把问题解决了程序才能完成。所以程序员在追求最优的解决方案时,无论遇 到千难万难,他们都不能轻言放弃,哪怕是屡战屡败,他们仍然会屡败屡战,迎 难而上,一日又一日,一月又一月,甚至一年又一年,即使海枯石烂,也要去实 现自己的目标,只有这样,才能最终收获到成功的喜悦。 (备注:有很多人觉得内向的人不适合做程序员,也给出了很多理由:内 向 的 人 不 合 群 , 不 喜欢与人交流等等。编者认为,这种理解有以偏概全之嫌,很多内向的人不是不合群,是 很多东西他们不感兴趣,不 愿 意 交流 而 已 ,如果是他们感兴趣的事情,他们也会很乐意与人 讨论、交流,而且与其他行业相比,程序员相对来说思维更严谨、更有个性,耐得住寂寞的 个性,有时候也是非常适合专研技术问题的。) 所以,对于很多正在考虑是否选择编程作为自己职业生涯起点的人而言,最好能够考虑 一下自己的实际情况,是否满足以上几点。如果能够在程序员的江湖里,笑傲江湖,逍遥自 在、快乐的奏着美妙的音乐,将是一件非常美妙的事情。否则,尽早另谋他就,不然等到入 行了,你会非常痛苦,为时晚矣。 4.2.2 女生适合做程序员吗? 一山可不容二虎,除非一公一母。 ——《命运呼叫转移》 在讨论女生是否适合做程序员这个问题之前,首先讲一个编者看到的关于女性程序员的 笑话:对于程序员行业的性别歧视问题,为 数 不多 的女 程序员们不服气,要在研发领域做战 场花木兰,成为巾帼英雄,但事与愿违,程序总是调不通,bug 不绝,实在忍不住只能哭鼻 子,于是身边的男程序员就来帮忙排故,一 来 二去,女程序员就拜倒在了男程序员的西裤下 面,成了男程序员的媳妇了,于是放弃程序员这份工作,回家相夫教子去了。 这个故事只是一个笑话,但程序员这个职业由于行业的特殊性,普遍认为冰冷的数理逻 辑不适合多愁善感的女性,于是诞生了一个不成文的规定,就是“重男轻女”,企业在招聘 员工时,更加亲睐男性。其实也不只是在 IT 业,其它行业也存在这种性别歧视,但尤其以 IT 行业为甚。 虽然劳动法有专项条例保护女性,但在求职过程中的性别歧视却是个长期存在的遗留问 题,面试中经常会有女性求职者被问及一些尴尬问题,企业这样的做法当然不太妥当,面试 官当然也不够专业,但既然问题无法回避,那不如坦然面对。 作为程序员,可能经常需要出差,可能有时候需要半夜就起来去用户现场修改代码、调 试程序,可能需要和一群大老爷们一起熬夜加班,诸如此类的活动都是女程序员很难接受的。 而且,女性由于产假、病假等相比男性要多一些,更多的精力可能都放在家庭上,对工作的 努力程度、用心程度也可能会不如男性,编者就曾经听过一个“不良”女程序员的故事:某 女程序员工作业绩一般,能力一般,入职没有三个月就怀孕生子,生完孩子之后,全然不顾 企业的栽培,立刻就辞职闪人了。不仅如此,相比较女性,男性对交叉学科的涉猎,对行业 业务的持续关注以及个人知识体系的纵向搭建等都会更好一些。所以女生在进行面试的时 候,总是会被面试官“刁难”,很难得到平等的机会和条件以及相应的尊重。如何能够在男 人的天地里面分得一杯羹,是每一个女程序员需要深思的问题。 对于女程序员,社会上也存在着很大的偏见。但谁说搞 IT 的女生写不了程序只能装傻 卖萌却不被看好?谁说搞 IT 的女生就要长得丑或者呆板无趣而被男生所抛弃?“电脑有辐 射,使用要当心”,确实,对于女生而言,也是如此,做 IT 的女孩子,老得快。其实这种说 法不完全正确,不做 IT 就没有电脑辐射了吗?男性就没有电脑辐射了吗?而且各行各业都 有长得很漂亮的女性,女程序员也不例外,有些女程序员长得很漂亮,打扮得也很好,生活 各方面都维持得很不错,她们并不是只会编程,他们也会吃芦荟,抹着各种护肤品,也会做 瑜伽,周末也不宅着,也会去锻炼身体,虽然可能没那么多时间去逛街,但是也可以抽个空 给自己买些好看的衣服来让自己开心点。女程序员也是女生,不是除了男人,女人以外的第 三种人。而且,自古以来,“男女搭配,干活不累”,如果一起企业全是男人或全是女人,肯 定也是不利于企业的长远发展的。 世界上第一个计算机程序员是谁?Ada Lovelace。Ada Lovelace 就是一个女人,英国数 学家、计算机先驱 Charles Babbage 就曾称赞其为“数字女巫”(Enchantress of Numbers)。 所以,对于女程序员而言,最重要的是摆正心态。很多时候她们都不是很自信,她们会怀疑 自己是否适合做技术,总觉得自己不如男性,也总在问自己的路在哪,其实大可不必这样杞 人忧天。相比较男性,女性对自身的定位、职业的理解、现实生活的理解、工作上手程度、 细心程度等方面都要强于男性。而且,技术能力和性别无关,和个人有关,态度和努力是最 重要的,任何以偏概全都是片面的。程序员的能力是多方面的,技术、合作、交流、态度等, 任何一个都缺少不了,如果只是技术差点,那么提高的空间是很大的,多看看书,多实践, 一点也不难。 不愿意被社会歧视的女性程序员,请记住:正因为被看轻,所以才更应该有勇气,更应 该有斗志。 4.2.3 优秀程序员应该具备哪些素质? 你可以不聪明,但是你绝对不能不用心。 ——《女人公敌》 程序员求职是本是一件只要“郎有情女有意”,一拍即合的事情,可是企业与求职者却 总是看不对眼、聊不到一块去,进而导致 IT 市场上总是会出现结构性失衡的现象。一方面, 社会每年培养大量的计算机相关专业毕业生,他们却找不到好的工作,但另一方面,企业却 招不到好的程序员。据不完全统计,大学生里面大约有 23%的人是学习计算机、通信、电 子相关专业的,都可以从事程序员相关工作,也就是说全国每年大约有 160 万准程序员们毕 业,可同样,据传国内某知名搜索引擎企业在 2012 年应届生名额没用完。问题出在哪?问 题恰恰就出在程序员越来越多,但优秀的程序员却不是这样。因为这个世界上从来都不缺少 好的企业,缺少的是好的员工。 凭什么你就比别的程序员优秀?是因为别的程序员具备的能力你都具备,而别的程序员 不具备能力你也具备,而这正是你的优秀之处。著名书籍《人月神话》里面对优秀程序员的 特性进行了一个深入分析,认为优秀程序员必须具备以下几个方面的素质: (1)对编程有浓厚的兴趣,而不是因为“篮球之父”乔丹(备注:乔丹曾经给 NIKE 代言,广告词为“Just do IT”)的缘故才入行,由兴趣能驱动自己的探索和钻研精神,优秀 程序员一般喜欢用业余时间探索和自己琢磨点东西,研究点开源框架和源代码。 (2)优秀程序员一般善于重构,懒于做重复的事情,对于重复事情有独有的程序员思 维,即通过程序或其它自动化方式解决重复问题,而留更多时间去思考。达到一种多约束下 的良好平衡。 (3)优秀程序员更多的会从简单功能实现,花哨的界面转移到对安全,性能,可扩展 等底层架构的关注。 (4)优秀程序员一般有较明显的自恋和偏执特征。 (5)优秀程序员一般对计算机底层知识非常了解,有较为扎实的算法,数据结构等理 论知识的基础。 对于优秀程序员而言,编程不是一份工作,而是一项充满激情的事业,编者比较认同这 个观点,同时,编者也觉得,一名优秀程序员除了具备这些素质外,如果还能具有以下一些 能力,必将锦上添花。 (1) 身体壮如牛 人生很漫长,不是一场百米冲刺,加速发力短暂的十几秒就完了,而是一场长达两万多 天的马拉松比赛,二十几岁大学毕业,只是人生马拉松的开始,最重要的不是起跑的初速度 有多快,而是是否能够坚持跑完全程。所以,起跑时就需要有足够的贮备能够让自己坚持下 来,这贮备就是健全的身体和人格。所以,想成为一名优秀的程序员,身体不好肯定不行。 本章第 4.5 节对程序员的身体健康有比较详细的论述,此处不再赘述。 (2) 心理素质好 编程是一项劳心劳力的活,程序员也因此需要承受巨大的精神压力,也许压力能够激发 人的潜能,但压力同样可以摧残一个人的意志,关键就看如何对待了。生活似乎并没有给程 序员缓解压力的空间,反而高房价、高物价一点点地消磨掉了他们所剩不多的斗志。此时, 就对程序员的心理素质提出了更高的要求。有的程序员经不住风吹雨打,尽管实力不俗,但 面对压力,面对困难,却畏首畏尾,瞬间崩溃,立马变成软蛋,而有的程序员大器沉着,面 对困境,不慌不乱,能够冷静思考,越战越勇,尽管泰山压顶,却仍然岿然不动,丝毫没有 怯意。而优秀程序员属于后者。 (3) 团队精神和协作能力 “不怕神一样的对手,就怕猪一样的队友”,一句经典的网络用语道出了团队合作的重 要性。 众所周知,失败的团队没有成功者,成功的团队成就每一个人。真正优秀的程序员应学 会怎样和别人工作与合作,因为团队精神和协作能力是程序员应该具备的最基本的能力,也 是最重要的安身立命之本。很多人误认为优秀程序员是独行侠,不 食人 间 烟 火 ,喜欢把自己 关在一个小黑屋子里面,一 待 就是几个月,然后突然出关,向世界宣布自己已经如何武艺高 强了,其实不然。如果没有团队精神,任何一个程序员也不可能有真正的成功,即使成功也 是渺小的、暂时的。 随着软件系统的规模越来越大,计算机软件的发展已经度过了早期的依靠个人能力的单 兵作战时代,“孤胆英雄”也早已成为传说,即便如 Linus Torvalds(Linux 之父)这样的天 才,也需要通过组成强大的团队来才能创造奇迹。现在的软件已经朝着大型化、商业化、定 制化方向发展,因此要获得事业上的成功,必须要依靠团队的力量才能达到,就 更加需要程 序员的团队精神与合作能力了。 关于如何培养团队精神与写作能力,编者认为,除了加强自身的技术水平、沟通技巧、 语言表达能力等能力以外,还 需 要 增 强 自 己 的 责 任 心,因为责任心是赢得团队成员尊重的最 好利器。 (4) 书写注释与文档的能力 程序员最烦两件事:第一件事情是别人要他给自己的代码写注释与文档,第二件事情是 别人的程序没有留下注释与文档。鉴于此,为了别人,也为了自己,还是应该好好书写注释 与文档。“本是同根生,相煎何太急”,程序员何苦为难程序员?就如同你刚接触项目渴望得 到前辈留下注释与说明文档一样,为你后面的兄弟留点注释和文档吧。 很多人以为编程就是写代码,其实,这是对编程的一种误解。程序员的世界不应该只有 代码。没有好的建设图纸,搬砖的力气再大,房子也是会塌的,而文档对于软件的重要性丝 毫不亚于建设图纸于建筑的重要性。软件由代码与文档组成,写代码需要技术,写好文档也 需要技术,优秀的程序员绝不仅仅只是会写代码,而是应该具有很强的注释与文档书写能力。 虽然说代码本身可以说明问题的确是很棒的,但并不是说注释不重要,良好的注释与文档是 正规研发流程中非常重要的环节,如果软件缺少注释与文档,那么这个软件就会缺乏生命力, 在未来的升级、排故以及模块的复用时就都会遇到极大的麻烦,有可能是毁灭性的灾难。 作为一名普通程序员,花费 30%的工作时间写技术文档是很正常的事情,而作为优秀 程序员,这个比例会更高。 (5) 严格遵循编码规范与标准的编码能力 什么是代码?可以理解的才是代码,无法理解的是垃圾。什么样的代码是最烂的?别人 写的代码。真正阅读程序的是人,而不是计算机,所以所写代码具有良好的可读性,是优秀 程序员必备的素质之一。据调查显示有分别由 80.77%和 68.59%的程序员认为编码规范和文 档规范是程序员的必备职业素养之一。在大型的系统开发中,往往需要很多人的通力配合, 例如,开源软件 Linux 之所以能够为全球顶尖程序员共享、协作开发,也得益于规范化和标 准化的编码规范。所以,编码时,最好设想自己就是将来要来维护这些代码的人。 虽然注释是编程中很重要的一部分,但是能够不言自明的代码却更胜一凑,它能让其他 人在阅读代码的时候,不 用阅读注释或是手册就可以明白它的意思,而编码规范正是能够提 高代码可读性的有效方式之一。所以,请记住:对自己放松就是对他人苛刻,随意编码的恶 果就是方便了你,却害苦了团队的其他人。代 码规 范一 般 包括代码的变量命名,代 码 内注 释 格 式 ,甚 至 嵌套 中行缩进的长度和函数间的空行数字都有明确规定等内容,良好的编码规范, 不仅有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 (6) 经常自测试的能力 在一个正规化的软件研发团队中,尽管配备有专职的测试工程师,但并不能以此为借口, 程序员就不进行自测试。对于软件研发而言,只要是 bug,都有可能会发生,只是时间的迟 早而已,而问题发现地越早,解决的代价就会越低,整体系统建设的效率和可靠性就有了最 大的保证。 只有注重质量的程序员,才能写出鲁棒稳定的软件。所以优秀的程序员不仅知道自己的 代码能做什么,还 会 经 常对程序进行自测试,以保证程序的可靠性。而自测试主要包括正常 测试与异常测试两种。正 常 测 试 主 要是测试程序是否能在正常调用下完成基本功能,异常测 试主要包括压力负载测试,异常输入测试,边界值测试、特殊值测试等内容。 (7) 善于学习与总结的能力 一天,一个年轻的程序员向一个老程序员询问成功的秘诀。 年轻程序员问:“师傅,您为什么这么厉害? 就好像没有你不会的东西。” 老程序员:“积累的。” 年轻程序员很好奇,接着问:“怎么才能积累到您的程度呢?我感觉我每天无时无刻都 在积累,但是似乎一点都没有感觉在进步。” 老程序员感叹道:“我从 20 岁开始做到了一件事情,直到今天,而且尽可能地保证不间 断。” 年轻程序员更加好奇了,于是,接着问道:“到底是什么?” 老程序员哈哈大笑,说道:“我每天保证自己有 2 个小时的时间是在学习新的知识。” 金钱会贬值,房子也可能贬值,但知识是不会贬值的,相反,还会不断升值。所以,优 秀的程序员绝不会安于现状,因循守旧,固步自封,靠吃老本度日。在这个世界上,无论是 谁,能力都不能混出来的,都是学习出来的。善于学习,对于任何职业而言,都是前进所必 需的动力,对于 IT 行业而言,这 种 要求就更加高了。因为在 IT 行业,技术和业务是同步的, 新技术代表着新业务和新机会。 有人说:以一万年为单位来思考,那是神人;以一千年为单位来思考,那是圣人;以一 百年为单位来思考,那是大师;以十年为单位来思考,那是名人。按此逻辑,程序员可以称 得上是世间最不幸的人了。因为程序员主要从事的是高新技术产业相关工作,需要了解丰富 的业务知识,而这些知识又在不断地更新,一 种技术可能仅仅在三两年内具有领先性,很快 会被其他更新、更好的技术所取代,所以优秀的程序员总是会不断地主动跟进新的技术,学 习新的技能,在最快的时间内,掌握最新的技术,应用在最适合的场合,最大程度地提高软 件研发的效率。 除了跟进新技术以外,优秀程序员还懂得“近朱者赤,近墨者黑”的道理。多与传递正 能量的人在一起,生活会充满生机与色彩。所以,优秀程序员还善于学习其他优秀程序员, 学习他们思考问题的方式,学习他们的编码风格(编码风格很重要,如果能够像写七言绝句 一样来编码的话,那就最好不过了)。例如,美国程序员对技术的推崇与狂热,印度程序员 对文档与流程的重视,日本程序员编码的认真仔细都是我们学习的重点。而这种学习别人的 能力也是优秀程序员的葵花宝典。在 优秀程序员看来:牛人不是天生的,当自己与牛人相处 久了,也就成了牛人。 思考提高的是人的境界,而不是人的熟练度的提高。善于总结,正是思考的过程,是优 秀程序员必备的一种能力,它能是人对技术、对人生的认识更加深刻,更有价值。谁都知道 “苦干不如巧干”的道理,但是如何巧干,不是人人都知道的。否 则 就不会出现这样的事情: 完成同一个任务,常人一天到晚,加班加点,忙得死去活来,始终完不成任务,而优秀程序 员却不慌不忙地轻松干完,还能按时下班,吃个烧烤,喝个冰啤,活得潇潇洒洒。每次完成 一个研发任务,完 成 一 段代 码 ,都 应 当有 目 的的跟踪该程序的应用状况和用户反馈,随时总 结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。总结不是知识的简单罗 列,而是个人思考、思路、思想的融合。如果只是在按部就班地写代码、凑代码,Ctrl+C 与 Ctrl+V 的生活,最终也只能成为一名 Coder,江湖叫“码农”、“码畜”。为了使自己不至 于沦为 Coder,一定要对代码、设计不停地反思和总结,并精益求精。请记住:don't repeat yourself。 其实,即使没日没夜的加班,工作也是永远都做不完的,完成了一项任务,领导还会给 你安排新的任务,整日也许看似忙忙碌碌,真等到年终总结或是职称评比的时候,才发现自 己干的活没有什么技术含量,全是一些重复性地劳动,总结不出个什么要点来。难道 是 真 的 什 么 都 没干吗?显然不是,只是你一直在前行,却从来没有思考过怎么样才能让自己走得更 快,走得更好。张锦喜老师写的《挖一口属于自己的井》一书中讲述了两个和尚打水的故事: 住在隔壁山头的两个和尚每天都会在同一时间下山打水,五年如一日,突然从一天开始,一 个 和 尚 就不下山打水了,原来这个和尚在这 5 年时间里,除了每天下山打水以外,还 利 用 业 余 时间挖井,终于花了 5 年时的时间,在山上挖了一口井,从此以后再也不用下山打水了, 能够利用打水的时间做自己喜欢的事情。其实,与其每天陷入忙碌的工作当中,还不如在工 作之余思考片刻,如何才能让工作效率更高,如何才能让自己干活更加轻松,如何才能让自 己即使年纪大了,体力拼不过年轻人了,还能有水喝,也许此时你会得到不一样的收获。所 以,不要成为为了工作而工作,成为一个名副其实的工作狂,而应该利用时间思考更为重要 的东西。 阅读别人是为了更快的进步,阅读自己是为了牢记犯过的错误。所以,总结并不应该只 局限于自己,还 应该去总结别人,因为把别人的知识另存为自己的一份副本也是一种总结的 方式,而且,总结别人往往会有意想不到的收获,就像金庸先生的武侠小说《笑傲江湖》中 的任我行一样,用吸心大法把别人的功力吸过来,效率奇高,但不同的是,别人的功力不会 有损伤。 (8) 逆向思维能力与换位思考能力 当工作中遇到的新问题,一时又找不到解决方法时,优秀程序员擅长用逆向思维办法去 探索解决问题的途径。他们清楚具体业务执行者比上司更容易找出问题的节点,是人为的, 还是客观的;是技术问题,还是管理漏洞。采用逆向思维找寻问题的解决方法,会更容易从 问题中解脱出来。 同时,他们也会自觉地站在企业或老板的立场去考虑解决问题的方案。作为公司或老板, 解决问题的出发点首先考虑的是如何避免类似问题的重复出现,而不是头疼医头,脚疼医脚 的就事论事方案。能始终站在公司或老板的立场上去酝酿解决问题的方案,逐渐地他们便成 为可以信赖的人。 (9) 知识迁移能力 知识迁移能力是一种特殊的学习能力,它可以避免对知识的死记硬背,实现知识点之间 的贯通理解和转换,有 利于 认 识 事件 的本质和规律,构建知识结构网络,提高解决问题的灵 活性和有效性。优秀程序员能够把已经掌握的知识迁移到其他领域,学习新技术或者解决新 问题对于他们而言,并不是那么困难。例如,如果他们理解了面向对象的思想,并且能够熟 练使用 C++语言,即使他们从来没有学习过 Java、C#语言,他们也会在非常短的时间内对 Java、C#非常熟悉。 优秀程序员在编程的时候,总是会不断地思考这样一些问题:程序的算法合理吗?异常 情况都考虑了吗?程序写的够简单吗?执行速度够快吗?占用空间足够少吗?代码写的规 范吗?语句写的标准吗?程序之间的结构合理吗?类定义的合适吗?方法和属性合理吗? 接口合理吗?等等,而不是仅仅实现功能。所以,要想称为金字塔尖的那一部分精英,对于 大多数程序员而言,还有很长一段时间的路要走。 “要想人前显贵,必定人后受罪”,当你站在聚光灯下享受着别人掌声的时候,又有多 少人看到你无数个夜晚寒窗苦读、与寂寞为伴的身影呢?世界上六十亿人口,其中超过百分 之九十九的人都是普通人,只有不到百分之一的人才是最优秀的人,而要想成为那百分之一 的人,就要付出其余百分之九十九的人都不愿意付出的代价。所以,优秀程序员不是嘴说出 来的,而是靠努力干出来的,他需要辛勤地耕耘,没有付出,也就没有收获。正如莫泊桑所 说,天才不过是不断的思索,凡是有脑子的人,都有天才。国际知名纳米材料专家王中林院 士曾经说过:“天才应该是灵感乘以汗水,年轻人总希望一夜成名,只看见了成功的光环, 但没看见辛劳的背景。”其实,成功不是一蹴而就的,一夜成名的背后也必然是数年的心血 和默默的付出。编程就像创作,人人都会写,但并非人人都写得好。但编程也不像创作对人 的天分要求比较高,只要你想把它写好,并且肯花时间,也一定能够写好。 著名作家丹尼尔・科伊尔的著作《一万小时天才理论》里面的一句话写得非常好:经过 一万个小时的精深练习,一 般 的 人都可以成为某一方面的专家。正如以上这句话所说,每个 人的人生都是从没经验的小白,一 步步走到行业的资深,所以不用担心你的努力或是付出没 有收获,只要你努力了,并且能够做到持之以恒,总会有收获,关键问题在于你的努力程度 以及方法了。通过你的努力,如果最终有幸能成为一名优秀程序员,自然也能收获颇丰。抛 开金钱上的收益不讲,感情上也会得心应手。编者曾经听过一个笑话,讲的是两个程序员, 一个技术精湛,思维严谨,认真负责,Bug 极少,至今单身;一个技术一般,吊儿郎当, Bug 一堆,经常被测试 MM 叫到她旁边,接受批评,后来成了她男朋友。难道优秀程序员 的命运真的如此不幸吗?拼死拼活,难 道 连 个女朋友都找不到吗?当然不是。优秀程序员在 事业上获得的成功往往是普通程序员无法比拟的,无论每年有多少毕业生就业,无论就业多 么困难,那一批最优秀的毕业生永远不用担心找不到一份满意的工作。而且,优秀程序员专 一的性格,超强的吸金能力,更是女生心中无法抗拒的完美结合对象,所以在感情上,优秀 程序员一点都不用担心,以编者为例,认识的很多优秀程序员,媳妇(或是女朋友)个个都 是温柔贤惠、知书达理、面容姣好的女生,在优秀程序员的面前,这些女生就完全丧失了免 疫能力了。 第5章 就业没那么简单 很多应届毕业生对于学生这个角色可以扮演的游刃有余,在 学 校 里 面 混 的如鱼得水,可 是对于求职者这个角色却一愁莫展。他们不知道该继续深造还是直接就业,他们不知道自己 的专业背景是否能够胜任岗位需求,他们不知道学业与求职孰轻孰重…… 关于程序员就业与择业,他们的困惑林林总总,本 节 内容旨在通过将求职者最关注的择 业相关问题一一解答,解开准程序员们心中的各种择业困惑。 5.1 这些道理你不懂 5.1.1 自己的强项或是研究方向与中意的工作岗位不一致怎么办? 戏如人生,人生如戏,只要找对了角色,何妨一直畅演下去? ——《新龙门客栈》 无论是本科生还是研究生,很多人在毕业求职的时候,都会发现一个奇怪的现象:自己 对 C/C++语言很熟悉,很擅长,可是中意的企业却偏向于 Java 语言开发;跟着导师做的是 嵌入式的项目,可是中意的企业却是做互联网应用的;自己的强项是手机游戏开发,可是中 意的企业却是做 ERP、CRM 系统的等等。 各种各样的不匹配,各种各样的不爽与纠结,求职节变成了“求职劫”,于是乎很多求 职者开始后悔,为何当初没有选择好自己的研究方向,否 则 也 不 会 现在这么被动了。可惜世 上没有后悔药,如果有,即使是倾家荡产,估计求职者们也会在所不惜了。于是,求职者们 只得开始纠结了,不知道是放弃自己的强项,去适 应企 业的开发还是坚持自己的强项,发挥 自己的优势,选择一个适合自己强项的企业;不知道是否应该放弃自己喜欢的 C 语言,而 去从头开始学习 Java 语言。 其实,求 职者的这种纠结是一种正常情况,大可不必为此大动肝火。如果你的强项或是 研究方向与中意的企业专业对口,皆大欢喜;如果二者不能很好的匹配,也不是什么大问题, 工作只是人生又一个阶段的开始,学习仍然会是生活的主旋律,而且,IT 行业本身就是一 个发展迅速、需要不断学习的行业,大企业由于制度完善,人才培养机制灵活,所以他们能 够也愿意花精力与时间去培养新人,塑造新人,给予新人学习的时间,所以他们更多地是强 调员工对基础知识的掌握能力以及员工个人的学习能力,而非已有的专业技能(备注:小企 业可能不一样,他们更希望求职者一毕业就能迅速为他们创造效益),只要求职者基础知识 扎实(数据结构与算法、编译原理、计算机系统结构等等),他们也会很喜欢的,当然,如 果具备了已有的专业技能,那就更好不过了,毕竟能够更快地为企业做出贡献。 人生就像道路,有坎坷的,也有平坦的;在成长的过程中,不会是一帆风顺的,有时会 跌倒,有时不会跌倒,但总要继续前进。所以,求职者也不用担心自己没有专业基础,会满 足不了企业的要求或是影响未来自己职业生涯的发展。到了一个新的环境,好 多 东 西 都 是从 头学习,从 零 开始 ,你 已 有的专业技能也许会让你更容易融入到新的工作中,但并非唯一途 径,只要用心去学习、去做,没有做不好的。编者的很多同学上研期间的研究方向就与后来 工作的方向风牛马不相及,现在也工作地挺好的,并没有什么影响。 所以,很多大企业在进行校园招聘的时候,并不一定会涉足很深的行业知识,而是重点 考察一些求职者的基础知识,求 职者大可不必把有限的时间花费在各种各样的过于狭窄的专 业知识上,而应该更多地用在基础知识的掌握上。当然,如果确实非常希望进入某一个企业, 对该企业的研究方向提前做好功课也是一件锦上添花的事情,但没有也不会因此而扣分。 5.1.2 非计算机专业的人如何通过面试关? 凡事就怕用心学。 ——《甄嬛传》 众所周知,持续不断地学习是个人成长的唯一途径,是否科班出生往往不是决定性因素。 成为一名程序员或是优秀程序员并不与所学专业有关,因为程序员这个职业并不是为计算机 专业学生专设的,而是与人有关,在 IT 行业站住脚跟的关键在于一个人是否想成为一名程 序员,是否愿意为了成为一名优秀程序员而花费比别人更多的努力与艰辛。 在求职时,很多非科班出身的求职者往往心里没底,他们在校期间可能未能学习一些计 算机专业基础知识,对数据结构、算法、计算机组成原理、编译原理等知识感觉很陌生,担 心自己无法胜任这一职位,可是内心又希望成为一名程序员,于是心理很矛盾、很纠结,编 者就曾收到过这样的读者的来信。编者觉得,真的没有必要如此纠结,相信很多大学生都有 这样一种体会:一学期要学习那么多门课程的内容,如果放在高中,估计得学习好几年时间, 还不一定学得会、学得好,可是放在大学里,只要考前突击几天,轻轻松松考过,一点问题 都没有。为 什 么 呢?因为大学里老师教会你的不仅仅只是专业知识,还 包括一种快速学习的 技能。诚然,科班出生的人,学习的计算机知识可能更多,参与编程的机会可能更多,经验 可能更丰富,在进行求职程序员岗位的时候可能更占优势,但是,非科班的人,尽管起步阶 段的积累不如科班的多,但他可能持续数年依然在学习实践、不 停 开拓 进 取 ,依 然可以超越 科班人员的水平。所以,如果求职者能够在求职前,提前复习(或温习+学习)一些计算机 求职方面的专业技能,一样 可以胜任程序员这个岗位。参加工作以后,能够有一个光明的前 途,还在于未来的努力与拼搏,而非大学里所学的知识。 其实,凌志军老师在他的个人著作《成长比成功更重要》一书中,就详细记载了 30 个 有着不同专业背景(心理学、美术、生物、化学等)的微软青年才俊的成长故事,凭着对计 算机科学的热爱,他们通过努力,取得了一项又一项令人瞩目的成就。不仅如此,编者的很 多程序员朋友,他们上学所学专业就是非计算机专业,例如:数学专业、信号与系统专业、 通信工程、系统工程等,按理说,他们就应该是编程门外汉,但他们在编程上的建树并不比 所谓的计算机科班出生的人弱。何 以 如 此 呢?其实,事物之间本来就存在着千丝万缕的联系, 抽丝剥茧之后,你 会 发 现,不同的研究领域背后往往蕴藏着相同的研究方法,而不同的研究 背景往往能让人在新的领域里获得更有创意的灵感。所以,在 很 多方面,他们甚至有着计算 机科班出生的人不具备的优势:数学专业的学生逻辑思维能力强,对算法的理解更深入;通 信 工程专业的学生在卫星通信软件编程方面更有心得;系统工程的学生可能对航空航天专业 背景知识更有发言权等等。 大海不经历波澜,将是一潭死水,人生经历变化,未必就是一件坏的事情,变化也许会 让人有短暂的不适应,但反过来,她 能够鞭笞人们去练就适应新环境的本领,而这种本领也 正是现代社会所需要的技能。所以,决定你职业成败的只有你自己的意愿,而非大学所学专 业。当然,程序员的修行是一个长期过程,当今社会,知识呈现爆发式增长,新技术层出不 穷,无论是所谓的科班出身,还是非科班出身,既然做了程序员,就得活到老学到老,注定 一辈子苦兮兮的,但是只要有热情、毅力,一样可以成为一名优秀的程序员,因为逆风的方 向,更适合飞翔,人不怕万人阻挡,只怕自己投降。 5.1.3 求职时,学习成绩是否真的那么重要? 世上没有后悔的药。现在想痛改前非也来不及了。 ——《命运呼叫转移》 在学校,众所周知,无论是评奖,还是评优,学习成绩都占据了非常重要的地位,在求 职时,也是如此,学习成绩好的人也是占尽各种优势,不 然很多学习成绩不好的应届毕业生 也不至于在找工作的时候四处碰壁了,也不至于后悔当初没有好好学习把成绩考好了,也不 至于为自己大学几年的放纵、堕落买单了。早知如此,又何必当初?谴责之余,静下来再仔 细想想,似乎问题也没有那么严重,学习成绩尽管重要,但是也没有想象的那么重要,因为 它不是绝对的,还与应聘的行业与职位有关系。 很多岗位,例如国企、外企、银行、基金、咨询等企业的技术岗位,待遇好,竞争激烈, 面对络绎不绝的求职者,他们自然会择优录取,选取最聪明、能力最强、最适合自身要求的 求职者。所以在接受求职者简历的时候,他们往往首先看的是求职者的学习成绩,如果达不 到他们要求的话,例如:GPA 大于 3.5,简历一般是通不过的。但学习成绩好,并不代表就 一定能够成为求职场上的香饽饽了,因为学习成绩好既不是求职成功的充分条件,也不是必 备条件。很多岗位,例如行政、管理、销售等基础性岗位,对求职者的个人成绩不太在意, 而更关注求职者的综合素质、组织领导能力等内容。以下是某知名外企 2014 年的招聘要求, 突出强调了学习成绩的重要性。 Qualifications: • Education: Bachelor, Master, or PhD degree in Computer Science. GPA 3.5+/ 4.0 or 80+/100 • Strong knowledge on data structures, algorithms, Operating System and other Computer Science fundamentals • Fluent in Object Oriented programming languages, such as C++, Java. Strong Object-Oriented design and programming skills • Strong analytical skills and problem solving skills • Strong oral and written communication skills in English • Positive attitude to work as part of a team • Familiarity with RDBMS is highly desirable 很多求职者会认为,大学的学习成绩不能说明问题,自己虽然是千里马,可惜在现今的 大学考核制度下,没有伯乐赏识,因为考试全是划重点,搞背诵、默写,学习好的人往往是 那些会突击,认真复习的人,考试根本体现不出个人真实水平以及综合实力,不是自己考不 出高分,只是自己不屑于考高分而已。这种说法有一定的道理,但不完全对,因为优秀是一 种习惯,无论考试题如何简单或是“漏题”如何严重,只要不是作弊得来的高分,都直接反 应了一个人在过去几年里认真的学习态度以及良好的学习能力,而一个人的习惯,很难改变, 这一点正是很多企业对员工的期许。再者,如果这种考高分没有任何技术含量的话,为什 么 自 己没有考出一个满意的分数呢? 所以,求职时,最好的个人情况是学习成绩好,综合能力也非常强,因为同等条件下, 分数好的,求职成功率会更高。但当学习成绩不尽如人意的时候,也不要妄自菲薄,因为对 于大多数企业而言,学习成绩并不是衡量一个人综合能力的唯一标准,求 职者的很多其他方 面的能力也是他们关注的焦点,而这些能力同样能够帮助求职者脱颖而出,例如:编者有一 个同学,虽然学习成绩并不突出,在校期间甚至挂科很多,英语四级也是勉强通过,但因为 口才好、酒量惊人而被招入国内一家知名企业,从事销售工作,现在工作干得风生水起,比 起当初很多只会考试得同学而言,混得好多了。所以,对于求职者而言,如果学习成绩一般, 就一定要突出自己的强项以及较强的综合能力,例如,实习经历、善于与人合作、注重团队 合作、运动水平等,并且这个强项一定要符合企业的要求。 在此,编者讲一点题外话,就是学习成绩与个人成功的关系。不可否认,读书时学习成 绩好的人,最后事业有成的人确实很多,清华、北大、中科大等高校作为国内最顶尖的大学, 培养出的杰出人才傲视神州大地正好能够说明这一问题。但现实似乎还有另一面,并非学习 成绩不好的人,就出不了杰出人物,现今好多事业非常成功的人,当年在学校时,学习成绩 并非非常突出,而好多当年在学校叱咤风云的“学霸”们,很多最终也默默无闻了,而这又 恰恰说明了学习成绩与个人成功的关联关系似乎不是那么紧密。 在这个世界上,不管学习成绩怎么样,都不要太在意。如果没有人认可你,那就自己认 可自己;如果没有人欣赏你,那就自己欣赏自己;如果没有人祝福你,那就自己祝福自己。 学习成绩只能代表你的过去,并不能代表你的将来,工作才是你人生新的起点,无论你读书 的时候学习成绩是否优秀,请将它们放在你的脑海深处,因为在你人生的道路上,能够取得 多大的成就,不是由你的学习成绩决定的,它完全取决你日后的努力程度与机遇。不要担心 努力会化为泡影,因为什么时候努力都不晚,关键是你自己明白要努力了,大器晚成总比一 事无成要好的多。所以,与其用泪水悔恨昨天,不如用汗水拼搏明天。把握今天,努力书写 精彩的明天。 5.1.4 非名校毕业或专业一般怎么办? Sticking feathers up your butt does make you a chicken.(插上羽毛,不等于你就是老鹰) ——《搏击俱乐部》 自从有了大学,就有了大学排名,自从有了大学排名,就有了就业歧视。就业歧视如同 幽灵一般,无处不在,无处不有,从国内某些企业招聘中“双 211”、“双 985”硕士以上学 历要求,到某些外企的 GPA 3.5 以上、只招男生的要求,到处都是赤裸裸的歧视。 某知名高校校长曾经说:“母校就是那个你一天骂它八遍却不许别人骂的地方”,这 句 话 套 用 在 名校毕业生身上,似乎更加贴切一些。毕竟在名校读书,会有很多好处,至少应了那 句老话:待在一个牛校,你会发现自己不知不觉就牛了。而且,名校的招牌虽然说不能帮助 他们敲开企业的大门,但至少可以帮助他们获得面试或是笔试的机会,而这种机会对于很多 非名校毕业或专业一般的求职者而言,只能有“羡慕嫉妒恨”的份了,他们因为就读于一般 高校,只能身不由己地成为某些名校学生的“垫脚石”,根本连面试的机会都没有。 不怕年纪大,就怕不优秀。对于很多企业而言,其实他们本来并非排斥非名校毕业生, 因为他们知道,“高学历”、“名校毕业”这些都只是表面现象,而不是本质,并不能与“工 作能力强”、“技术水平高”直接划上等号,只要是企业需要的优秀人才,他们也愿意敞开怀 抱,海纳百川,只是他们也有自己的“苦衷”:求职者众多,但大多数优秀人才一般聚集于 名校或是名牌专业,为了降低招聘成本,提高招聘效率,横竖是赌一把,他们往往会选择缩 小招聘范围。而这种做法,无疑对于出身非名校或专业一般的求职者是一种致命的打击,因 为无论他们多么优秀,他们最终也很难逃脱“出师未捷身先死”的噩运了。 编者认为,无论企业有多少理由,无论这些理由有多么冠冕堂皇,就业歧视就是就业歧 视,终究是一种非常不道德的行为,应该予以强烈谴责。人生来平等,每个人都应该具有同 等就业的机会,不能因为曾经高考的失误或是考研的失误,而否定一个人。而且,名校并非 都是优等生,非名校也并非都低人一等,环境也许会影响到人的成长,但决定人能力的最终 因素还是自己,而不是学校的品牌。所以,企业不应该以“出身论英雄”,只要是符合企业 需要的人才,企业都应该照单全收。 “理想很饱满,现实却很骨感”。当前,尽管社会一直在倡导就业平等,但就业歧视还 无法完全根除,所以,毕业学校或专业一般的求职者要想进入心仪的企业,除了提高自身的 综合实力以外,只能另辟蹊径了:第一,脸皮厚,不管企业如何排斥自己的出身,也要愚公 移山的精神,用真诚感动企业,获取面试笔试的机会,迫不得已的时候甚至也可以采取“霸 王笔霸王面”的做法;第二,找老师、学长或是行业内知名人物帮忙推荐,他们的推荐有时 候往往能够化解掉出身非名校的劣势。 有三个方法可以解决这个世界上所有的问题:接受、改变或者离开。不 能 接 受 那就改变, 不能改变,那就离开。正如你无法选择父母、性别、家庭一样,在你求职的时候,你无法选 择你的母校,无法选择你的专业,如果你不选择离开,那么你能做的,就是“改变可以改变 的,接受不可以改变的”。如果确实出生非名校或是非名牌专业,也不要气馁,一定要严格 要求自己,努力提高自身实力,因为最好的反驳企业的做法就是用自己的实力告诉他们:我 行!编者突然想起一个读过的历史故事,讲的是西汉时期的韩信,早年在项羽军营不得志, 受不到重用,于是他出走投靠到刘邦麾下,最终成为历史上一代名将。其实,没有谁可以让 你仰视,除非你跪着,只要你足够优秀,你一样可以活得很好,让所有曾经看不上你、瞧不 起你的人仰视你。 所谓“命苦不能怪政府,命背不能怪社会”,从外部找原因,从来都不从自己身上找原 因只会让我们整日生活在满腹牢骚之中,感叹生不逢时,苦闷不堪。其实,一个人起点低并 不可怕,怕的是境界低、觉悟低。社会上确实有好多人,出生的时候含着金钥匙,天生就是 王,天生就是贵族,但这毕竟是少数,大多数人都没什么家庭背景,有的只是背影,没遇到 什么贵人,遇到的都是一些普通老百姓,也没读什么好学校,多数是非“211”、非“985” 高校,只能靠自己从零开始努力,这些都没有关系。因为无论干什么,除非你有背景,否则 只能靠你努力的“背影”。而且,很多取得一定成就的人,在职业生涯初期都是从零开始。 关键是你要清楚自己要走哪条路,想成为什么样的人,准备怎样改变自己的惰性。向前走, 相信梦想并坚持,海阔天空;向后看,怨天尤人而倒下,万丈深渊。只有勇往直前,你才有 机会自我证明,找到你想要的尊严和荣誉。 也许你出生不如别人好,也许你现在的人生是从零开始,也许努力也不一定就能追赶上 别人,但通过努力,往往可以改变 70%的命运,破罐子破摔的结果是永远只能与懦弱为伴、 与失败为友。那么如何才能让自己变得强大了?勤奋。勤奋是一块可以吸引到一切美好事物 的天然磁石,它比黄金珍贵,比天才难得,无论天赋好或是天赋一般,只要经过勤学苦练可 以取得一定的成绩。曾经有记者问科比:“科比,你为什么如此成功?”科比反问记者:“你 知道洛杉矶凌晨 4 点的样子吗?”记者摇摇头。科比接着说:“我知道每一天凌晨 4 点洛杉 矶的样子。”相信读者从这个故事里面,就能知道勤奋的重要性了。 第6章 不打无准备之仗 虽然事先准备好的面试问题不一定真的会在面试中出现,虽然为面试做准备会花费掉娱 乐、游戏的时间,但机会总是属于有准备的人,多做一些准备工作还是可以减少面试的失误, 避免紧张情绪的产生,同时增强个人自信,提高求职的成功率。面试中有些基本问题看似简 单,其实要想圆润自如、有条不紊地回答好并不是想象中的那么容易,所以,面试前进行适 当的准备还是很有必要的,而且也会很有效果。 6.1 兵马未动,粮草先行 6.1.1 你了解自己吗? A:“你相信人能改变命运么?” B:“人应竭尽所能,然后再听天由命。” ——《最后的武士》 《易经》有云:明相位,立德业。它想表达的意思就是只有明白自己所处的位置,采取 适度的策略,才能建立自己的事业。生活也是如此,我们可以不认识路边的风景,但一定要 知道自己现在在哪,如果一个人连自己在哪儿都不知道,那么就无法到达目的地。如果一个 人不知道他要驶向哪个码头,那么任何风都不会是顺风。如果一个求职者不知道求职的流程, 那么任何招聘会都不会是机会。只有顺风方能远行,只有抓住机会方能一举成功。所以, 对 于求职者而言,在求职之前,首先要弄懂的就是求职的流程,否则连游戏规则都不知道,盲 目上场,只会摔得头破血流。 什么是求职场上的游戏规则?求职的流程。图 6.1 为常见的求职流程图。 图 6.1 常见的面试流程图 求职前,很多求职者都会花很大的精力去做各种准备:搜集各类企业的招聘信息、寻找 各种可能帮助自己面试成功的“贵人”、加班加点地待在自习室把《程序员面试笔试宝典》 翻来覆去地看到滚瓜烂熟、和同学讨论当前行业的发展与未来,等等,这样 做 难 道不 对 吗? 这样做非常正确,提前做好充分准备乃求职明智之举,但好像忽略了一个最最重要的问 题,那就是这样拼命到底是为了什么?一个什么样的工作才能适合自己呢?自己的工作目标 是什么呢?最了解自己的人不是父母,不是兄弟姐妹,也不是“闺蜜”或“基友”,更不是 男女朋友,而是你自己,一 个连 自 己 都不 了 解 的人 ,怎 么 可 能 找到适合自己的工作呢?摆地 摊卖东西的时候,尚且要对产品的特点、功能、价位、材质、行情、优点、缺点等内容非常 了解,更何况是“销售”一个人呢? 人们常说垃圾是放错位置的人才,人们也常说天生我材必有用,但是怕就怕你一辈子都 没发现自己有啥用。所以,在求职前,求职者要对自己有一个基本的了解,只有这样,才能 把自己放到那个让自己成为人才而不是垃圾的职位上,而且越早考虑这些问题越好,否 则 等 到 求 职 季 来 临 时,身不由己地一头栽进求职大流,就没 有那么多时间去思考了,有的更多的 是迷茫。求职算是一个系统工程,要有计划有目的,在不确定自己未来职业走向的时候,抱 着对自己的人生负责的态度,一定要认真地想清楚这些问题。所以,在开始求职前,最好花 费一点时间,自己好好思考一下自己到底想要找一个什么样的工作,给自己多提几个问题, 看看到底自己想要一个什么样的生活: (1) 我是一个什么样的人?有何个性特征? (2) 我想去哪里工作? (3) 我怎样努力才能达到自己的目标呢? (4) 我为什么对这份工作情有独钟呢? (5) 我凭什么觉得自己可以胜任这份工作呢? (6) 相比其他的求职者,我有哪些独一无二的“卖点”能够让企业雇佣自己? (7) 个人专业技能、项目经验、获奖与荣誉是否能够满足企业的需要? (8) 这家企业是否有助于自己实现人生的目标?如何实现? (9) 我的学习经历与项目经历与这份工作相关吗? (10) 我的兴趣爱好是什么?有何特长? (11) 我喜欢做什么事情? (12) 我的专业技能偏重于技术还是产品,亦或是其他? (13) 我的职业目标是什么?未来几年有什么职业规划? (14) 我的优点有哪些?我的缺点有哪些? (15) 我最擅长做的事情是什么? (16) 我适合做哪方面的工作?是研发还是销售? (17) 我最精通的知识领域是哪一方面的? (18) 未来我想朝着哪一方面进行发展? (19) 工作地点选择哪里?待遇底线是多少? (20) 我喜欢什么样的工作环境? (21) 我喜欢与什么类型的人打交道? (22) 我能给企业带去哪些东西? (23) 我的决定父母会支持吗?男/女朋友支持吗?他们如果反对怎么办? 其实,求 职 时,与其花费大量的时间去思考得到某个职位,还不如去思考自己真正想要 的生活是什么。毕竟工作会占据我们每天 24 小时中的 8 小时甚至更多的时间,如果勉强去 做自己不想干、不感兴趣的工作,那将是人生中很痛苦的一件事情。 一个人只有弄清楚了自己想要的东西,才有可能得到他想要的东西。一 个人只有对自己 有了清醒的认识,才能够更好去寻找适合自己的雇主。无头的苍蝇到处乱撞,最终很有可能 “脚踩西瓜皮”滑到哪里就是哪里。即使运气好,最终能够得到些许收获,也很有可能并非 自己所爱。 其实,了解自己并不是求职的最终目的,找到一份适合自己的工作才是最终的目的。找 工作就像谈恋爱一样,没有最好的,只有最合适,而了解自己是寻找合适工作的前提。 6.1.2 何时开始准备复习为好? 急事急不来,凡事慢慢来。 ——《非诚勿扰》 虽然说先飞的鸟儿不一定第一个抵达终点,但早起的鸟儿有虫吃。对于程序员求职何时 开始准备复习这个问题,无论是本科生还是研究生(包括两年制、两年半制、三年制),编 者的建议是四个字:越早越好。诚然,找一份理想的工作,需要机遇,不过在机遇来临的时 候,也是优先考虑有准备的人。所以找工作,主要靠的是平时的积累。编者认为,求职的成 功取决于多方面因素的作用,各个因素的影响因子会有所不同,大体满足以下公式:求职的 成功= 50%的平时积累 + 30%的考前准备 + 20%的其他因素(临场表现、随机事件、面试官 喜好等)。 如何提高自己的面试成功率呢?通过以上公式可以看出,平时的点滴积累对于求职成功 起到了非常重要的作用,同时,考前准备也是必不可少的部分,而做题自然是复习准备的最 好方式之一了。如何做题效果最明显呢?反复地做各种各样的面试笔试题,主要以各大 IT 企业历年面试笔试题目为主,发扬当年高考复习的那种坚忍不拔的做题精神,这 样 往往能够 取得很好的效果。在中国乃至世界,但凡是考试,一般都有一定的模式或套路,通过一定的 强化训练完全可以提高求职的成功率,效果也是立竿见影,特别是技术类的职位,更是屡试 不爽。 “临时抱佛脚”固然是一种解决问题的方法,也有很多成功的例子,但是并非上上策。 首先,快餐吃多了总会不营养的,需要慢条斯理的按食谱吃点营养大餐才能真正的强身健体, 突击学习到的东西往往来得快,去得也快,很容易忘记,对求职者的个人实力影响不大。其 次,“狡猾”的面试官,很容易就区分真正谁是千里马,谁是“突击手”,因为“突击手”花 的时间少,对问题只知其然,而不知其所以然,对于固定题目,也许能够应对,一旦涉及应 用性、设计性面试笔试题,“突击手”们往往无从招架。再次,自信从何而来?来源于精心 准备。突击学习的结果往往是心虚,在求职过程中的表现就是不自信,而这会极大影响求职 者的精神风貌。最后,计算机相关知识,很多都是需要在应用中才能加深理解,而这个过程, 可能会比较漫长,不是三两天就能掌握的了的。正如哈佛大学校训所说:今天不走,明天即 使跑也不一定跟得上,日常积累的重要性远胜于“临时抱佛脚”。 “台上一分钟,台下十年功”,知识的储备还是要在平时的学习中不断积累,在不知不 觉中沉淀,然后在你需要用的时候自然就跳出来了,否 则 ,就 会 像 散沙 一 样 存在 与 人 的脑 海 中 。 积 累 不是一句空话,也不是一句套话,见过或是看着答案好像会了是远远不够的,在 学习的过程中,要善于总结:发现问题,思考问题,并解决问题。关上书本自己能够独立解 答,遇到相似的问题,自己也能够得心应手,这样的积累才是有效的。 在这个世界上,出来混,迟早要还的,曾经你不会的知识,你偷懒耍下的小聪明,你不 屑完成的功课,你不愿意想通的东西,总是会在一个必要的时候提醒你、惩罚你,让你知道 它的重要性。举个简单的例子:很多人平时对技术准备不充分,对企业的技术笔试不重视, 以为通过霸王笔、霸王面一样可以取得成功,确实,霸王笔、霸王面成功的几率也有,但极 低,尤其是笔试成绩很差时,几乎没可能取得成功。天道酬勤,也许付出了不一定能够得到 回报,但不付出一定得不到回报,同样,机会只属于那些已经作好准备的人,在此,编者建 议,求 职者可以在求职季节来临的前半年到前一年就开始专心准备。那么,什么时候是求职 季节的高峰期呢?一般而言,每年的九月、十月是传统的最佳求职季节,此时企业的招聘岗 位特别多,供求两旺,被称为“金九银十”。所以,此时求职者最好能够“多读书多看报, 少打 dota 多睡觉”,毕竟浪费的金钱尚可弥补,荒废的青春却无可追寻了。戏如人生,人生 如戏,所以,千万不要迷恋网络游戏,要 玩 就 玩 好 人生这场大游戏。千万不要沉迷网络小说, 除非你自己就是网络写手,千万不要借酒消愁,因为酒入愁肠愁更愁。当你优哉游哉地虚度 着你的年华时,殊不知那些比你牛叉无数倍的“大牛”们依然比你更加努力,即使你一路小 跑都不一定追得上他们,更何况你还在原地踏步呢?时间不会因为你的停留而停留,如果你 不紧跟它,最后只有掉队的份。当然,也不要担心自己只会玩游戏,不会学习,因为有句话 说得挺有道理的:“游戏能玩多深,技术就能做多深”。 羽翼丰满才能振翅高飞,身形矫健方可急驰千里,只要自己实力了得了,就不是你在找 工作了,就是工作在找你了。大多数人的智商都不像张亚勤博士一样,从小就卓尔不凡,所 以,多花时间复习是非常有必要的,不要总是觉得忙没有时间复习,不要总是拿忙当做借口, 时间就像海绵里面的水,挤一挤,总是会有时间来支撑你的事业心的。准备的过程固然很辛 苦,但反过来,也许有一天,你发觉日子特别的艰难,那可能是这次的收获将特别的巨大。 人每天需要上班 8 小时,需要睡觉 8 小时,真正拉开人与人差距的是剩下的 8 小时。每 天利用这剩下的 8 小时努力一点,也许这种进步短时间内都不会被人察觉,但是积少成多, N 天之后,再回首,肯定会有质的改变。如果你十分努力,一切都会显得好不费力,永远不 用担心你的努力会白费,只是还没有到使用的时间罢了。所以,在完成学业,不影响导师安 排的任务的前提下,多学习一些计算相关专业知识,尤其是数据结构与算法、C 语言、编译 原理、计算机组成结构、微机原理等计算机基础核心课程,是非常有必要的,而在求职季节 前一个月到三个月,突击学习一些程序员面试笔试相关书籍,例如《编程之美》、《编程珠玑》、 《程序员面试笔试宝典》,在面试前十天到半个月,快速浏览历年真题分析,则更是锦上添 花的事情。 6.1.3 花多长时间找工作合适? 不要等明天交不上差再找借口,今天就要找好。 ——《加菲猫》 程序员虽然是人,但在市场经济下,也算是一种特殊的商品。而找工作不是请客吃饭, 而是一场无形的交易,一 场 让 买 卖 双 方都比较痛苦的交易。对于买方而言,花 了 不 菲 的 价 钱 , 却 买 不 到 自 己 完全满意的商品,对于卖方而言,起早贪黑、摸爬滚打不说,还得遭受形形色 色的面试官的刁难、鄙视,最后还卖不出一个好价钱。 问题到底出在哪里?在商品市场,买卖双方似乎永远是一对不可调解的矛盾体,其实不 然,如果谈判得当,买卖双方并非一定要站在完全的对立面,非此即彼,完全可以获得双赢。 那么,求 职者如何才能让企业心甘情愿地为自己买单呢?如何才能让自己卖出一个好的价钱 呢?编者认为,找工作要讲究效率,时间太长,尽管可能练就一身求职的好功夫,成为职场 老油条,但身心疲惫的精神状态,也可能成为个人的短板,限制自己的发挥,所以,一般找 工作没有几个人愿意把战线拉得太长的。但同样,时间太短,不 仅 有可 能 没 有将个人状态调 整到最好,还有可能碰不到满意的工作。 一般而言,对于应届毕业生而言,编者个人认为,花费 一 个 月 到两 个 月 时间找工作比较 合适。如果在一周到两周之内就斩获了多个 offer,除非是特别顶级的企业的 offer,否则, 最好还是能够继续参加一些企业的招聘活动,更有针对性地向自己向往的企业投递简历,以 求向着自己的职业发展方向。 6.1.4 面试的问题从哪里来? 面试中,很多求职者都有这样一个想法:面试官是大爷,自己却是孙子,大爷总是挑孙 子的毛病,孙子总要看大爷的脸色,大爷掌管着孙子的前途,孙子总是受制于人。其实,这 种观念不太准确,一场好的面试并不是随机发生的,而是经过精心策划、周密组织的。面试 官与求职者一样,没有大爷与孙子之分,都是各司其职,只是他们的工作看起来光鲜,有地 位罢了,所以,求职者没有必要自认为低人一等,曲意逢迎面试官。 不是什么人都可以成为面试官,一般只有企业中的骨干或是领导才有机会成为面试官, 而且,想要成为一名合格的面试官,也需要提前做好各种功课:做好面试安排,准备好面试 的题目,学习各种面试人的技巧与方法。否 则 ,就 很有 可 能 在面试中无法获取到企业对求职 者所需要的各类信息,进而无法做出正确的雇佣判断。 虽然说各个企业的面试问题千差万别,但也并非无章可循。具体而言,技术性问题一般 来源于以下几方面内容: 6.1.5 面试官为什么喜欢提非技术性问题? 面试的时候,面试官不会将所有精力都放在技术性相关问题上,很多时候,也会问一些 非技术性的问题。非技术问题看似与工作关联关系不大,而且具备一定的个人主观性,为 什 么面试官还“浪费”时间对它们情有独钟呢? 很显然,面试官不是傻子,不 会 傻 到 浪 费 自 己 的时间与精力去找个陌生人陪自己侃大山。 面试官这么做的目的显而易见,具体而言,主要出于以下多方面的考虑:首先,面试官希望 通过这些问题,判断求职者的简历是否属实。简历内容一般来源于实际生活,但略高于实际 生活,这些都是可以理解的。但很多求职者的简历中“水分”比较重,夸大自己的成绩与能 力,通过分析求职者对这些非技术性问题的回答,面试官往往能够摘下求职者的伪装,因为 人们在说谎的时候,往往会自乱阵脚,不知所措,行为举止异于常人。 其次,面试官希望通过这些问题,了解到求职者的性格特点以及行为习惯。对非技术性 问题的回答,往往没有完全的对错之分,能够反映出求职者内心最真实的想法:性格是否开 朗、做事情是否认真仔细、是否能够吃苦耐劳、是否争强好胜、对工作是否有激情与热情等。 再次,面试官希望通过这些问题,判断求职者是否具有良好的团队合作精神以及沟通能 力。团队合作精神与良好的沟通能力是 IT 行业不可或缺的素养,通过一些非技术问题的回 答,面试官能够很有效地判断求职者是否具备这一素质。 最后,面试官希望通过这些问题,判断求职者是否能够胜任应聘的岗位。未来不可预知 就像地震不可预测一样,但人们却可以通过对以往事情的分析与判断,预估未来的发展。如 果一个人在以前的学习工作中能够有一个良好的表现,那么,相比较其他人,他就更有可能 在未来的工作中做出更好的成绩,成为企业需要的人才。 对于很多求职者而言,技术面试反倒不是问题,非技术面试才是最大的问题。如何准备 非技术性问题将在后续的章节中重点介绍。 6.1.6 面试考察什么内容? 面试是面试官与求职者就某一特定工作岗位以相互交流信息为目的、以判断求职者是否 符合该职位的会谈过程。虽然用人单位无法通过一次面试准确、客观、清晰地把握其对工作 的适合程度,但是却可以通过某些素质的测评进行综合有效地判断,从 而 得 出 能够基本符合 事实的结论,所以面试仍然是一种重要的人才甄选方法。对于每个求职者,为 了 能够在众多 的求职者中脱颖而出,首先需要弄清楚一个问题,就是面试官到底希望通过面试获取求职者 的哪些信息。 面试不仅仅是面试,而是做人以及人生态度的考核,它是供需双方心理上的较量。对求 职者而言,了解面试官的心理特征,做到“明明白白他的心”,就能变被动为主动。那么面 试官到底希望通过面试得到哪些有用的信息呢? 一般而言,具备以下特性以及能力,往往能够吸引面试官的注意。 (1)仪表端庄。仪表端庄主要是针对求职者的外貌、气色、衣着、精神状态等方面的 内容,任何行业对仪表风度都会有一定的要求,IT 业也不例外。在人们的思维定式中,相 比较行为邋遢、随意的人,仪表端庄、衣着整洁、举止文明的人做事更有责任心,自我约束 力更强。 (2)充满好奇心。好奇是成功的钥匙,尝试是成功的阶梯。IT 业高速发展,技术日新 月异,而程序员必须对技术有着执着的追求,勇于解开内心深处的迷惑和渴望,时 刻 充满 好 奇 心 对 于 一名 优秀的程序员而言,是必备的素质之一。 (3)逻辑缜密。计算机编程是一件需要严密逻辑和清晰思维的工作,有强大的数学或 者科学背景的程序员通常更加容易取得成功。 (4)快速阅读能力。程序员相当多的时间都用在阅读上,内容包括文档、其他人写的 代码、API、注释等,有些程序员读得快,能很快理解,并且开始行动,另外一些程序员也 许要多花三四倍、甚至更多的时间才能阅读完毕,这些程序员的工作效率肯定不如前者。 (5)心细。没有程序不存在漏洞,虽然无法避免漏洞的发生,还是应该尽可能地减少 漏洞的数量,所以对于程序员而言,关注细节,做事严谨,意味着他能够写出更高质量、更 高效的代码,减少因为漏洞引起的损失。 (6)工作态度认真。“态度决定细节,细节决定成败”,IT 企业需要认真负责的人,所 以优秀的程序员往往工作态度极其认真负责,遇事能够勇于担当,而不是逃避或者推诿。 (7)快速学习能力。应用程序一般都与日常生活和企业运作相关联,如编写一个财务 管理系统,就 需要 学 习 一些 相关的财务知识,所以作为一名优秀的程序员,还应该具有快速 学习新知识的能力。 (8)自我学习能力。软件行业技术更新太快,新技术层出不穷,为了掌握更好的编程 技能,好的程序员必须善于自我学习,不断给自己充电。 (9)自我控制能力。IT 企业往往会存在巨大的工作压力,当工作压力大或个人利益受 到冲击时,优秀的程序员往往具备一定的韧性与耐力,能够克制、容忍、理智地对待,不致 因情绪波动而影响工作。 (10)激情与热情。任何工作都需要激情与热情,编程也不例外。IT 界流传“611”或 “711”代号来形容程序员工作辛苦。其实所谓“611”是指一周工作 6 天,每天工作 11 个 小时,在如此高强度的工作节奏下,如果是以例行公事的态度工作,缺少对工作的激情与热 情,那么这个人是很难做好这份工作的。 (11)适应性强。程序员可能经常遇到短期的项目,需要变换不同的工作环境,与不同 类型的人员打交道,所以优秀的程序员即使在客户公司工作,也能保持良好的工作状态,能 够根据不同的情况,及时准确地应对,对于突发问题能够快速反应,对于意外事情能够处理 得当。 (12)沟通能力强。沟通能力强并不是指能够说一口流利的英语或普通话,而是指愿意 沟通,善于沟通的一种能力。软件开发一般都需要团队协作完成,所以优秀的程序员要愿意 并善于了解团队中其他人的想法,并且善于表达自己、倾听他人,既能较顺畅、准确地表达 自己的思想、观点、意见、建议,同时也善于倾听他人的意见与建议。 (13)服从管理。程序员是一个独立性很强的群体,有时可能会比较偏执,可能更加专 注技术而忽视了市场和商业,但是从商业和其他角度来看,管理层不得不选择一个利益最大 化的做法,此时程序员应该尊重领导的决定,而不是一意孤行。要知道,在一个团队中,100  1 = 0,而不是 99。 虽然用人单位、用人者不同,具体的测评内容也有很大差别,但是总体而言,面试官就 是希望通过面试这个环节,寻找出具备优秀程序员潜质的求职者,所以整个面试内容以及面 试过程也都是围绕着这些方面展开的。鉴于此,在 短暂 的面试过程中,求 职者要尽可能多地 将自己以上这些方面的优点表现出来,不一定要全部做到,只要能够比其他求职者表现得更 优秀、更有吸引力,就一定能够得到面试官的认可,从而在众多求职者中脱颖而出。 6.1.7 如何筛选面试? 进入招聘季,各种招聘信息铺天盖地,让人眼花缭乱,如何在如此琳琅满目的职位中挑 选最适合自己的的工作呢?“海投”简历。求职者但凡发现了企业的招聘信息和招聘邮箱, 便会立马就投简历,投递几十份甚至几百份简历一点都不稀奇,而且,简历基本不做任何修 改,真正的做到了“一历多用”。 编者不反对求职者“海投”简历,因为简历投少了,可能一个面试机会都没有,“鸟枪 法”式的简历投递方式,表面上看,确实是可以增加求职成功的可能性,就如同买彩票一样, 买的彩票多了,说不定就能中个五百万了,但同样也可能导致其它问题的发生:需要面试的 企业太多了。对能力一般的人来说,“海投”简历不仅不会产生任何正面的效果,反而会打 击他的信心;对于能力强的人而言,“海投”简历之后会有大量的笔试和面试,笔试与面试 都很耗费体力,不 但需要打车或坐地铁在各个公司间穿梭,而且需要在面试时保持精神的高 度集中,而一个人的时间和精力毕竟有限,面试入场词高密度的面试笔试,很有可能不够用, 或者疲于奔命,最终也无法发挥出个人的真实实力来。那么到底该如何权衡呢?面对这么多 机会,怎么也能把握住几个吧?机会是很多,适合自己的有多少?能把握住的又有多少呢? 找对象的时候,人们普遍会用的伎俩就是“广撒网,重点培养”,其实此方法如果用在 求职上,再好不过了。所以,求职时,要有所选,有所不选,有所为,有所不为。因为毫无 筛选的去参加面试,不 仅会 浪 费 宝贵 的时间,而且让人对面试有一种焦头烂额的感觉,疲于 应付,甚至是怀疑自己,对求职很不利。 筛选面试一般遵循以下两个基本原则: 第7章 从容应对是王道 “周五下午 2:30,有多少人正在访问西安电子科技大学的主页?” “给你五分钟时间,说点有意思的事来听听,我不会打断你。” …… 碰到这些棘手的问题真的是令求职者抓狂,这是什么问题?这不是侮辱人的智商吗?好 在是面试中此类“变态”问题并不常见,有限的时间,面试官们也很难提出既有新意,又有 技术含量的问题,因为他们关注的问题往往就是那些常见的问题,确切地说,尽管面试官千 千万万,面试题却是万变不离其宗:绕来绕去就是那么几道题,除了技术以外,无外乎就是 关注求职者的性格、人品是否能胜任岗位,所以进行有针对性的面试前充电完全能够应对绝 大多数面试的需要,“打败”绝大多数的面试官。 7.1 自我介绍有诀窍 7.1.1 如何进行自我介绍? 我是如来佛祖玉皇大帝观音菩萨指定取西经特派使者花果山水帘洞美猴王齐天大圣孙 悟空呐,帅的掉渣! ——《齐天大圣》 俗话说“良好的开始是成功的一半”,很多面试官对求职者提出的第一个问题往往就是 “请你先自我介绍一下”,自我介绍是面试中至关重要的一个步骤,求职者如何把握好这个 重要机会便非常重要。有时候求职者会对此很困惑,个人情况在简历里面已经写得很清楚了, 为什么几乎所有的面试官都要让求职者来做一个自我介绍,这不是多此一举吗?自我介绍看 似简单,其实不然,面试官希望通过面试中的自我介绍环节来考查求职者以下几个方面内容: (1)考查求职者是否诚实。一般而言,如果简历的内容是真实可信的,口述自我介绍 时就不会有明显的出入,但如果简历有假或者“水分”比较多,那么自我介绍阶段一般就会 有破绽。此时,如果求职者反问面试官:“简历里面都写清楚了”,此时,面试官对求职者的 印象分会很低。 (2)考查求职者是否具有敏锐的逻辑思维能力、良好的语言表达能力、精练的总结概 括能力。 (3)考查求职者是否具有现场的感知能力与把控能力。 (4)考查求职者的自我认知能力和价值取向。自我介绍本身就是求职者对自己各方面 的一个归纳总结,同时会表达一定的个人价值取向。 (5)考查求职者的理解能力以及时间掌控能力。有时面试官给出的问题是“请您用 3~ 5 分钟做一个自我介绍”,而求职者有时一介绍就滔滔不绝,刹不住了,往往超过 10 分钟, 甚至 20 分钟,逼得面试官不得不多次提醒引导,最终当然会降低面试官的好感。 看起来,自我介绍是一个求职者被面试官考查的过程,完全处于被动状态,其实也不见 得,求职者也可以化被动为主动。因为自我介绍也是一个求职者向面试官自我展示的平台, 求职者可以通过自我介绍向面试官展示自己的能力与才华,向面试官推销自己,提升自己在 面试官心目中的第一印象。 与一个人初次会面,45 秒钟内就能产生第一印象。第一印象能够在对方的头脑中形成 并占据着主导地位。面试中首因效应的作用不可小瞧,虽然考官的“印象”标准不一样,但 总体来说有些标准是一致的,这就是踏实、开朗、精神饱满、信心十足、坦诚、机敏、干练 的人,会给人留下良好的第一印象。 具体而言,面试官能够接受的自我介绍时间一般不会很长,太短不利于求职者介绍自己, 太长会给人拖沓冗余的感觉,所以一般在 3 分钟左右。在这 3 分钟时间里面,求 职者自我介 绍的内容一般应该包括以下几个方面: (1)基本信息。通过个人基本信息的介绍,让面试官明白坐在他对面的人到底是谁。 个人基本信息一般包括姓名、籍贯、年龄、教育背景以及与应聘职位密切相关的一些个人特 长等。一般为了使得面试的氛围变得轻松,求职者可以采用一些生动、幽默、个性化的介绍 方式。例如,我叫程浩,很好记的一个名字:加号、减号、除号、“程浩”,并且作了一个双 手交叉在胸前的手势。诸如此类的方式不仅能够准确地介绍自己的基本信息,还 能 缓 解 面试 初期的紧张气氛。 (2)实践经验。实践经验记录了求职者的经验和经历。在此部分,求职者主要介绍与 应聘职位密切相关的实践经历,包括校内外活动经历、相关的兼职和项目经验、社会实践等 情况。明确这些实践发生的时间、地点、担任的职务、采用的技术、工作内容、工作量等信 息,这样让面试官觉得真实、可信,没有弄虚作假的嫌疑。同时需要指出的是,当求职者的 经历比较多时,很难做到面面俱到,那些 与 应 聘职位无关的内容,即使 你 引 以为 荣 也 要忍 痛 舍 弃 。例 如,应聘软件研发岗位,可以将支教、扶贫等与此无关的内容删除,尽量选择一些 与软件开发相关的实践写进来。 (3)成果展示。成果展示代表了求职者的能力和水平,在此部分,主要进行与求职者 能力相关的个人业绩、获奖情况、校内外活动成果等展示,需要把各个阶段有代表性的事情 描述清楚(除非高中阶段有过人的成绩,一般从大学开始记录)。 在进行成果展示的时候,需要注意以下几个方面的内容: 1)除了个人成绩以外,一般还应该包括团队成绩,如数学建模大赛、程序设计大赛等。 计算机成果已经远非一个人能完成的,一般都是依靠一个团队完成的。 2)内容有所侧重,要着重介绍那些能体现自己能力的重点,如华为杯软件设计大赛、 腾讯创新设计大赛、中兴捧月程序设计大赛等与专业相关的竞赛应该仔细介绍。 3)巧设伏笔,引导面试官向自己擅长的方面提问。例如,在介绍成果时,可以这样描 述:“在开发过程中遇到了很多的问题,不过我还是成功地克服并达成了业务目标。”引导面 试官提问“遇到了哪些问题”,然后你就可以进一步阐述细节内容,体现出自己处理问题的 能力。 (4)职业规划。要想预测未来,其中最好的办法是提前将它创造出来。职业规划代表 着求职者的职业理想。在 此 部 分 求 职者应该介绍自己对应聘职位、行业的个人看法和个人规 划,包括求职者的职业生涯规划、未来的工作蓝图、对工作的兴趣与热情、对行业发展趋势 的看法等内容。同时,求 职者还要针对应聘职位合理编排每部分的内容。与应聘职位关系越 密切的内容,介绍的次序越靠前,介绍得越详细。 在自我介绍时,还可以适当地介绍个人爱好等方面内容,如业余喜欢打篮球、爬山等。 需要特别强调的是,自我介绍时,对那些需要列举数据的地方要特别注意,不要与自己 的个人简历表格上的内容有冲突。同时也不能在自我介绍的时候记流水账,要有亮点,给面 试官留下鲜明的印象,更不能主动提及个人的缺点、弱点,缺点、弱点虽然可能会让面试官 觉得自己很坦诚,但是一旦让面试官觉得这些缺点会使你无法胜任应聘职位的话,就得不偿 失了。 以下是一个自我介绍的模板。 各位老师,大家上午好,我叫××,是×××大学×××学院的硕士研究生,本科是× ××大学×××专业,今年××岁,我来自湖北仙桃,不是吃的仙桃,是地名。 今天我来应聘的岗位类型是软件类研发,之所以选择软件研发作为职业生涯的起点,是 因 为 我 对编程有着浓厚的兴趣。大学期间,除了学习书本上的专业基础知识以外,我也积极 提高自己的专业技能与综合能力。利用业余时间,我参加过各类学科竞赛,曾经获得过数学 建模二等奖、软件创新设计大赛二等奖、程序设计大赛三等奖的成绩,通过学科竞赛不仅扩 展了我的专业知识面,更加使我意识到了理论知识只有应用在实践中才有意义。所以,在 学 校期间,我一方面认真上课,学习更加高深的计算机专业理论知识;另一方面参与到实验室 的重要项目中,配合老师和同级其他同学一起编写代码、测试程序、编写相关文档。 软件开发是一个团体性行为,而且软件技术日新月异,每当在实际的开发过程中遇到困 难时,我首先想到的是通过自己的独立思考来解决,我觉得很多时候只要自己多查阅一些相 关文献资料或者网络资源,问题都能迎刃而解。自己无法解决时,我也会求助于老师与学长, 学习他们的思维方式与解决问题的办法。通过多个项目的参与,我的编程能力、独立思考问 题能力、团队合作能力都有了很大的提高。 学习需要劳逸结合,课余时间,我喜欢参加一些体育活动。在 2010 年 11 月我组织了学 院的运动会,并取得了圆满成功。对于未来,我充满了信心,也感受到了一定的压力,万丈 高楼平地起,我希望自己能够在自己喜爱的软件研发中找到一片属于自己的天空,在 技术上 有所提高,能够独当一面,成为一名对企业有用的人。 7.1.2 如何介绍自己的项目经验? 向面试官介绍项目经验是一门面试必修课,而每个面试官从事的专业方向可能不同,项 目背景、技术背景、个人能力与求职者也会大不一样,所以,作为求职者,如何才能让本是 “对牛弹琴”的项目经验介绍变成吸引面试官的“个人演讲”呢?如何才能在项目经验介绍 上面为自己加分呢? 编者认为,虽然说面试官不是神人,但至少在技术水平方面,他们应该能够在求职者之 上,所以,面试的时候,他们心里和明镜儿似的。尽管他们中的很多人只是工作才几年的年 轻人,比求职者大不了几岁,但他们也都是老江湖了,能够被选为面试官,本身实力肯定不 俗,所以,不要指望光凭一张嘴就能骗到他们,还是得靠实力说话。 没有实力是不行的,只有实力是不够的。当实力具备的时候,就要学会合理的表达。在 表达一个项目时,既不可以把项目大吹特吹,明明不是自己干的活全划归到自己名下,也不 可以把项目写的一文不值,完全就是一个课程设计的水平。而是应该实事求是地把项目的内 容以及自己参与的工作细致的描绘出来。具体而言,最好考虑以下几点内容: (1) 重点介绍一到两个项目 项目在于精,不在多,也许求职者的简历上写了十个八个项目,很显然,求职者不可能 将所有的项目都一一介绍给面试官。所以,在 介绍项目经验的时候,要有所突出,编者建议, 重点介绍一到两个有代表性的项目即可。 (2) 简述项目背景 用尽可能短的语言,例如一到两句话简述项目背景。不要有太多的技术词汇。 (3) 详述项目功能与整体设计 要想在短时间内让面试官对项目有一个基本的了解,就 需 要求职者详细地介绍项目实现 的功能,项目的实现技术和整体架构,最好能够表达出该项目的创新点与难点。 (4) 介绍自己的角色以及工作内容 对于面试官而言,在项目中,求职者的角色与工作内容比整个项目更有吸引力。所以, 此条内容才应该是求职者向面试官重点介绍的内容。最好能够突出自己工作中的难点、重点 以及解决问题的方法。 (5) 项目总结与感想 向面试官介绍自己做完项目的感受,包括:项目中哪些地方做的不错,哪些地方还有提 高的空间,下一步自己工作的重点,自己在做这个项目中有何收获等。如果面试过程比较压 抑,求 职者可以适当地说一点项目中的奇闻轶事活跃一下气氛,说不定能够起到意想不到的 效果。 如果面试官对项目感兴趣的话,一般 也 会 深挖 其 中 的内容,此时,正好是求职者展现才 能的大好机会了。 项目经验的介绍是一个细心活,需要求职前好好准备,提炼总结。同时一定记住以下两 点内容:第一,切忌浮夸;第二,最好能够做一个英文的介绍,以备不时之需。 7.2 面试就是这么简单 7.2.1 如何巧妙地回答面试官的问题? 有信心不一定会成功,没信心一定不会成功。 ——《英雄本色》 所谓“来者不善,善者不来”,程序员面试中,求职者不可避免地需要回答面试官各种 刁钻、犀利的问题,回答面试官的问题千万不能简单地回答“是”或者“不是”,而应该具 体分析“是”或者“不是”的理由。 回答面试官的问题是一门很深入的学问。那么,面 对面试官提出的各类问题,如何才能 条理清晰地回答呢?如何才能让自己的回答不至于装上枪口呢?如何才能让自己的回答结 果令面试官满意呢? 谈话是一种艺术,回答问题也是一种艺术,同样的话,不同的回答方式,往往也会产生 出不同的效果,甚至是截然不同的效果。在此,编者提出以下几点建议,供读者参考。首先 回答问题务必谦虚谨慎。既不能让面试官觉得自己很自卑,唯唯诺诺,也不能让面试官觉得 自己清高自负,而应该通过问题的回答表现出自己自信从容、不卑不亢的一面。例如,当面 试官提出“你在项目中起到了什么作用”的问题时,如果求职者回答:我完成了团队中最难 的工作,此时就会给面试官一种居功自傲的感觉,而如果回答:我完成了文件系统的构建工 作,这 个 工作被认为是整个项目中最具有挑战性的一部分内容,因为它几乎无法重用以前的 框架,需要重新设计。这种回答不仅不傲慢,反而有理有据,更能打动面试官。 其次,回答面试官的问题时,不要什么都说,要适当地留有悬念。人一般都有猎奇的心 理,面试官自然也不例外,而且,人们往往对好奇的事情更有兴趣、更加偏爱,也更加记忆 深刻。所以,在回答面试官问题时,切记说关键点而非细节,说重点而非和盘托出,通过关 键点,吸引面试官的注意力,等待他们继续“刨根问底”。例如,当面试官对你的简历中一 个算法问题有兴趣,希望了解时,可以如下回答:我设计的这种查找算法,对于 80%以上 的情况,都可以将时间复杂度从 O(n)降低到 O(logn),如果您有兴趣,我可以详细给您分析 具体的细节。 最后,回答问题要条理清晰、简单明了,最好使用“三段式”方式。所谓“三段式”, 有点类似于中学作文中的写作风格,包括“场景/任务”、“行动”、“结果”三部分内容。以 面试官提的问题“你在团队建设中,遇到的最大挑战是什么”为例,第一步,分析场景/任 务:在我参与的一个 ERP 项目中,我们团队一共四个人,除了我以外的其他三个人中,两 个人能力很给力,人也比较好相处,但有一个人却不太好相处,每次我们小组讨论问题的时 候,他都不太爱说话,也很少发言,分配给他的任务也很难完成。第二步,分析行动:为了 提高团队的综合实力,我决定找个时间和他好好单独谈一谈。于是我利用周末时间,约他一 起吃了个饭,吃饭的时候,顺 便 讨 论了一下我们的项目,我询问了一些项目中他遇到的问题, 通过他的回答,我发现他并不懒,也不糊涂,只是对项目不太了解,缺乏经验,缺乏自信而 已,所以越来越孤立,越来越不愿意讨论问题。为了解决这个问题,我尝试着把问题细化到 他可以完成的程度,从 而 建 立 起他的自信心。第三步,分析结果:他是小组中水平最弱的人, 但是,慢慢地,他的技术变得越来越厉害了,也能够按时完成安排给他的工作了,人也越来 越自信了,也越来越喜欢参与我们的讨论,并发表自己的看法,我们也都愿意与他一起合作 了。“三段式”回答的一个最明显的好处就是条理清晰,既有描述,也有结果,有根有据, 让面试官一目了然。 回答问题的技巧,是一门大的学问。求职者完全可以在平时的生活中加以练习,提高自 己与人沟通的技能,等到面试时,自然也得心应手了。 7.2.2 如何回答技术性的问题? 程序员面试中,面试官会经常询问一些技术性的问题,有的问题可能比较简单,都是历 年的笔试面试真题,求 职者在平时的复习中会经常遇到,应对自然不在话下,但有的题目可 能比较难,来源于 Google、Microsoft 等大企业的题库或是企业自己为了招聘需要设计的题 库,求 职者可能从来没见过或是从来都不能完整地、独立地想到解决方案,而这些题目往往 又是企业比较关注的。 如何能够回答好这些技术性的问题呢?编者建议:会做的一定要拿满分,不 会 做 的一定 要拿部分分。即对于简单的题目,求职者要努力做到完全正确,毕竟这些题目,只要复习得 当,完全回答正确一点问题都没有(编者认识的一个朋友据说把《编程之美》、《编程珠玑》、 《程序员面试笔试宝典》上面的技术性题目与答案全都背得滚瓜烂熟了,后来找工作简直成 了“offer 杀器”,完全就是一个 Bug,无解了),对于难度比较大的题目,不要惊慌,也不 要害怕,即使无法完全做出来,也要努力思考问题,哪怕是半成品也要写出来,至少要把自 己的思路表达给面试官,让面试官知道你的想法,而不是完全回答不会或是放弃,因为面试 官很多时候除了关注你的独立思考问题的能力以外,还 会 关注你技术能力的可塑性,观察求 职者是否能够在别人的引导下去正确地解决问题,所以,对于你不会的问题,他们很有可能 会循序渐进地启发你去思考,通过这个过程,让他们更加了解你。 一般而言,在回答技术性问题时,求职者大可不必胆战心惊,除非是没学过的新知识, 否则,一般都可以采用以下六个步骤来分析解决。 7.2.3 如何回答非技术性问题? 这世上只有两种人,骗人的和被骗的。 ——《不夜城》 评价一个人的能力,除了专业能力,还有一些非专业能力,如智力、沟通能力、反应能 力等,所以在 IT 企业招聘过程的笔试面试环节中,并非所有的笔试内容都是 C/C++、数据 结构与算法、操作系统等专业知识,也包括其他一些非技术类的知识,如智力题、推理题、 作文题等。技术水平测试可以考查一个求职者的专业素养,而非技术类测试则更加强调求职 者的综合素质,包括数学分析能力、反应能力、临场应变能力、思维灵活性、文字表达能力、 性格特征等内容。考查的形式多种多样,但与公务员考查相似,主要包括行测(占大多数)、 性格测试(大部分都有)、应用文、开放问题等内容。 每个人都有自己的答题技巧,答题方式也各不相同,以下是一些相对比较好的答题技巧 (以行测为例): (1)合理有效的时间管理。由于题目的难易不同,所以不要对所有题目都“绝对的公 平”、都“一刀切”,要有轻重缓急,最好的做法是不按顺序回答。行测中有各种题型,如数 量关系、图形推理、应用题、资料分析、文字逻辑等,而不同的人擅长的题型是不一样的, 因此应该首先回答自己最擅长的问题。例如,如果对数字比较敏感,那么就先答数量关系。 (2)注意时间的把握。由于题量一般都比较大,可以先按照总时间/题数来计算每道题 的平均答题时间,如 10 秒,如果看到某一道题 5 秒后还没思路,则马上放弃。在做行测题 目的时候,以在最短的时间内拿到最多分为目标。 (3)平时多关注图表类题目,培养迅速抓住图表中的各个数字要素间相互的逻辑关系 的能力。 (4)做题要集中精力,只有集中精力、全神贯注,才能将自己的水平最大限度地发挥 出来。 (5)学会关键字查找,通过关键字查找,能够提高做题效率。 (6)提高估算能力,有很多时候,估算能够极大地提高做题速度,同时保证正确率。 除了行测以外,一 些 企 业 非 常 相 信个人性格对入职匹配的影响,所以都会引入相关的性 格测试题用于测试求职者的性格特性,看其是否适合所投递的职位。大多数情况下,只要按 照自己的真实想法选择就行了,不要弄巧成拙,因为测试是为了得出正确的结果,因此大多 测试题前后都有相互验证的题目。如果求职者自作聪明,选择该职位可能要求的性格选项, 则很可能导致测试前后不符,这 样很容易让企业发现你是个不诚实的人,从 而 首 先 予 以 筛 除 。 7.2.4 如何回答快速估算类问题? 有些大企业的面试官,总喜欢使一些“阴招”、“损招”,出一些快速估算类问题,对他 们而言,这些问题只是手段,不是目的,能够得到一个满意的结果固然是他们所需要的,但 更重要的是通过这些题目他们可以考察求职者的快速反应能力以及逻辑思维能力。由于求职 者平时准备的时候可能对此类问题有所遗漏,一时很难想起解决的方案。而且,这些 题 目 乍 一 看 确 实 是毫 无 头 绪 ,无从 下 手 ,完全就是坑求职者的,其实求职者只要从惊慌失措中冷静 下来,稍加分析,也就那么回事。因为此类题目比较灵活,属于开放性试题,一般没有标准 答案,只要弄清楚了回答要点,分析合理到位,具有说服力,能够自圆其说,就是正确答案, 一点都不困难。 例如,面试官可能会问这样一个问题:“请你估算一下一家商场在促销时一天的营业 额?”,求职者又不是统计局官员,如何能够得出一个准确的数据呢?求职者家又不是开商 场的,如何能够得出一个准确的数据呢?即使求职者是商场的大当家,也不可能弄得清清楚 楚明明白白吧? 难道此题就无解了吗?其实不然,本 题 只要能够分析出一个概数就行了,不一定要精确 数据,而分析概数的前提就是做出各种假设。以该问题为例,可以尝试从以下思路入手:从 商场规模、商铺规模入手,通过每平方米的租金,估算出商场的日租金,再根据商铺的成本 构成,得 到 全 商 场 日 均 交 易 额 ,再 考虑促销时的销售额与平时销售额的倍数关系,乘以倍数, 即可得到促销时一天的营业额。具体而言,包括以下估计数值: (1) 以一家较大规模商场为例,商场一般按 6 层计算,每层大约长 100 米,宽 100 米,合计 60000 平方米的面积。 (2) 商铺规模约占商场规模的一半左右,合计 30000 平方米。 (3) 商铺租金约为 40 元/平方米,估算出年租金为 40*30000*365=4.38 亿。 (4) 对商户而言,租金一般占销售额 20%左右,则年销售额为 4.38 亿*5=21.9 亿。 计算平均日销售额为 21.9 亿/365=600 万。 (5) 促销时的日销售额一般是平时的 10 倍,所以大约为 600 万*10=6000 万。 此类题目涉及面比较广,例如:估算一下北京小吃店的数量?估算一下中国在过去一年 方便面的市场销售额是多少?估算一下长江的水的质量?估算一下一个行进在小雨中的人 5 分钟内身上淋到的雨的质量?估算一下东方明珠电视塔的质量?估算一下中国去年一年 一共用掉了多少块尿布?估算一下杭州的轮胎数量?但一般都是即兴发挥,不是哪道题记住 答案就可以应付得了的。遇到此类问题,一步步抽丝剥茧,才是解决之道。 7.2.5 如何回答算法设计问题? 程序员面试中,很多算法设计问题,都是历年来各家企业的“炒现饭”,不管求职者以 前对算法知识学习得是否扎实,理解得是否深入,只要面试前买本《程序员面试笔试宝典》 (备注:编者早前编写的一本书,机械工业出版社出版),学习上一段时间,牢记于心,应 付此类题目完全没有问题,但遗憾的是,很多世界级知名企业也深知这一点,如果纯粹是出 一些毫无技术含量的题目的话,对于考前“突击手”而言,可能会占尽便宜,但对于那些技 术好的人而言是非常不公平的。所以,为 了 把 优秀的求职者与一般的求职者能够更好地区分 开来,他们会年年推陈出新,越来越倾向于出一些有技术含量的“新”题,这些题目以及答 案,不再是以前的陈谷子烂芝麻了,而是经过精心设计的好题。 在程序员面试中,算法的地位就如同是 GRE 或托福考试在出国中的地位一样,必须但 不是最重要的,它只是众多考核方面中的一个而已,不一定就能决定求职者的生死。虽然如 此,但并非说明就不用去准备算法知识了,因为算法知识回答得好,必然会成为面试的加分 项,对于求职成功,百利而无一害。那么如何应对此类题目呢?很显然,编者不可能将此类 题目都在《程序员面试笔试宝典》中一一解答,一来由于内容众多,篇幅有限,二来也没必 要,今年考过了,以后一般就不会再考了,不然还是没有区分度。编者以为,靠死记硬背肯 定是行不通的,解答此类算法设计问题,需要求职者具有扎实的基本功以及良好的运用能力, 编者无法左右求职者的个人基本功以及运用能力,因为这些能力需要求职者“十年磨一剑” 地苦学,但编者可以提供一些比较好的答题方法和解题思路,以供求职者在面试时应对此类 算法设计问题。“授之以鱼不如授之以渔”,岂不是更好? 第8章 签约违约这点事 offer 1:索马里海盗集团,年薪过亿,不过有生命风险,随时有可能见耶稣。 offer 2:和尚,公务员待遇,事业编制,解决户口,“五险一金”,年薪 8 万起。 一般而言,挣钱多的有风险,稳定的挣钱少。其实,找工作就像找媳妇一样,不存在好 坏之分,只有适合与不适合,别人觉得好的,你未必觉得好,你觉得好的,别人也未必觉得 好,“豆腐白菜,各有所爱”,找一份自己喜欢、适合自己的工作才是最最重要的。 8.1 签约没那么简单 8.1.1 风萧萧兮易水寒,offer 多了怎么办? 我的人生是一栋只能建造一次的楼房,我必须让它精确无比,不 能 有一厘米差池。所以, 我太紧张,害怕行差步错。 ——《致我们终将逝去的青春》 工作的目的是什么?往大的方向讲,就是报效祖国、强军富民,实现自身价值,往小的 方向讲,就是老婆孩子热炕头,管好自己的一亩三分地,好好生活,衣食无忧。在找工作初 期,最大的愿望仅仅只是希望能够找到一份养活自己的工作而已,还 没 有 精 力来考虑是大房 子还是小房子的问题,而当有了一个 offer“保底”的时候,就会考虑大房子、发展空间、 福利、节假日等问题了。 亚马逊集团董事会主席兼 CEO 杰夫·贝索斯曾经说:“天赋得来很容易,而选择却颇为 艰难”,编者深以为然,人生最难的是选择,每个人都希望找一份最适合自己的工作,其实 找工作最大的痛苦不是一个 offer 都没有,而是 offer 太多了不知道选择哪一个,因为我们每 个人都害怕“一失足成千古恨”(虽然这句话在找工作期间有点夸张,但第一份工作对一个 人的影响还是非常重要的),但当真的需要作出选择的时候,还是需要从长计议,外企、国 企还是民企,大企业还是小企业都是求职者困惑的根源。 表 8.1 外企、国企与民企的比较是外企、国企与民企的比较表。表 8.2 大企业与小企业 的比较是大企业与小企业的比较。 表 8.1 外企、国企与民企的比较 外企 国企 民企 个人待遇 福利待遇好 收入不高,涨幅缓慢,有 福 利 待遇(廉租房/退休金完善) 较高,福利不够完善 个人发展 机会多,提升快 论资排辈 工作强度 一般较累,压力大 一般压力较小,但核心部门 很累 一般较累 员工关系 最简单 最复杂 一般 培训体系 最完善 比较少 几乎没有 管理 最严格 比较僵硬 一般 稳定状态 一般,跳槽容易 最稳定 一般 晋升空间 职业“天花板”,很 难晋升高层 按部就班,论资历 晋升空间与能力成正 比 表 8.2 大企业与小企业的比较 大企业 小企业 办公环境 一般很好 一般较差 工作制度 完善 一般不太完善 福利待遇 较好 较差 培训体系 一般很好 一般没有 发展空间 机会相对少 机会很大 风险 很小 较大 精气神 比较平淡 激情十足 培养目标 专才 全才 稳定性 较稳定 较不稳定 在比较国企、外企、民企的 offer 的时候,并非钱越多越好,企业越大越好,其实因人 而异,还需要考虑到就业的城市的生活成本、待遇(工资、奖金、福利、股票、期权、公积 金、保险、过节费等)、房价、户口、未来子女入学、就医、休假情况、离家距离、发展前 景、加班情况、工作压力等因素,工资是税前工资还是税后工资;股票如何分配等都需要考 虑清楚,鉴于北上广等一线城市的高房价、高物价,在这些一线城市的月薪 1 万元可能只能 相当于西安等二线城市的 5000 块钱的购买力。在企业上班,很难实现工资高、轻松、不加 班、福利好的愿望,除非是“官二代”、“富二代”、公务员等,现在的工作要么就是待遇很 好可是很辛苦的,要么就是比较清闲可是待遇不行的,鱼与熊掌一般很难兼得,所以最终如 何选择一份适合自己的 offer,还需要求职者结合自身的实际情况进行谨慎选择。 而对于大企业还是小企业的选择问题,也是因人而异,因为这个世界上,未来掌握在自 己的手中,人们往往不在乎你的身高、长相、门第,也不在乎你的学历、口才,更在乎的是 你是否具有头脑与能力。虽然说在大企业里面,员工只是充当了一个螺钉的角色,不自由, 没成就,消磨斗志,而且,尽管自己是发光的金子,可是当大企业里面满地都是金子时,很 有可能自己都不知道自己是哪颗了。但一般而言,如果是刚刚毕业的大学生,选择大企业作 为职场的开始还是更好一些,毕 竟 大企业有着成熟的经营管理模式以及良好的福利待遇,给 员工带来的光环就连相亲对象也会高看一眼,而且去大企业学习锻炼,不 仅 可以增长自己的 业务能力,最重要的是还可以借助大企业的大平台快速建立人脉关系并积累资源,这 些 东 西 的 重 要 性会随着年龄的增长越来越重要,远远超过自身的能力增长,所以唐骏老师也比较赞 成第一份工作选择大企业,他就曾经说过:“第一家公司将决定未来的职业素养,因此首选 有严格要求的大公司。”不仅如此,大企业的工作经历,对于创业而言,也是大有裨益的, 工作几年,有了可供启动的资金和资源后,再创业也不为迟,成功率会更高。而小企业则不 然,管理混乱不说,待遇也不高,即使可能会给股权,但也风险太大,同时,“宁为鸡头不 为凤尾”的想法在小企业也不一定行得通,因为即使在小企业,刚去的应届毕业生也不会很 快就得到重用,成为可以影响比赛结果的栋梁之才。同时,有些企业,编者不太建议去,例 如:纯粹做外包的企业、人员不稳定的企业、管理层是外行的企业,在这样的企业做事,一 般会比较痛苦。 花开花谢春不管,拂意事休对人言;水暖水寒鱼自知,会心处还期独赏。由于人类的智 商、情商都是正态分布的,奇才和蠢材都少得可怜,绝大多数人都是普通人,所以求职者还 是应该在激情燃烧之前把自己想的更普通一些来得比较合适。 8.1.2 处理多个 offer 需要考虑别人的意见吗? 决定我们成为什么样人的,不是我们的能力,而是我们的选择。 ——《哈利波特与密室》 在这个世界上,能看清自己、给自己一个合理定位的人是明智的人,但遗憾的是,很少 有人在择业的时候去思考自己是一个什么样的人,自己的性格属于什么类型,自己的优势有 哪些,劣势有哪些,喜欢什么样的工作,适合什么样的岗位。 人生三大遗憾:不会选择;不坚持选择;不断地选择。没有选择是痛苦的,选择多了也 痛苦。在求职的过程中,只要能坚持下去,一般都会有权利反转的机会,编者建议,在进行 个人选择的时候,不妨拿起笔和纸,对各个工作的优缺点进行分析,并逐一打分,具体对比 项可以参考本书第 5.2.3“求职的时候该不该只看钱”节中内容。表 8.3 为一个简单的打分表。 表 8.3 工作对比打分表 比较项目 重要性 工作 1 工作 2 工作 3 …… 工作 n 实际薪水 3 3 2 2 2 购买力 2 3 3 2 3 工作性价比 3 1 1 1 2 …… 上表中,“重要性”一列的分数表示该项目在求职者挑选 offer 时的权重,3 分表示最重 要,2 分表中一般重要,1 分表示可有可无,0 分表示一点也不重要。“项目 n”列的分数表 示该工作与求职者在该栏目上的心理预期匹配度,3 分表示超过求职者期望值,2 分表示基 本满足求职者期望值,1 分表示少于求职者期望值,0 分表示无法满足需要。 鱼和熊掌不可兼得,只要最适合自己的就行。如果还是实在无法拿定主意,可以参考以 下人的意见: (1) 名人 名人哪有机会来给一个无名小卒个人意见呢?呵呵,其实,不一定非要给与名人面谈或 是给名人发邮件、打电话寻求帮助,一 些 名 人 的 成 长 轨 迹 以 及他们的择业建议也是大有参考 价值的。毕竟他们的经验成就了他们今日的辉煌,并将指引着后来的我们走向辉煌。 (2) 父母 父母是最了解自己的第二个体,他们过的桥比我们走的路还多,吃过的盐比我们吃过的 米饭还多,他们的眼光更具有前瞻性。 (3) 老师、学长 老师是求职路上的指路人,学长是求职路上帮忙“淌水”的“炮灰”,他们能够给予求 职者的是“骨感”的生活以及残酷的现实。 (4) 爱人、朋友 爱人、朋友们与自己年龄相仿,生存环境相同,他们能够更多地站在自己的角度去考虑 问题,从他们那里可以得到更多的理解与支持。 生活是一面镜子,参考完别人的意见之后,求 职者可以闭上眼睛回味一下不曾触及的生 活细节。因为最了解自己的人还应该是自己,而且,别人的经验、成功是复制不来的,只能 学习与超越。不要轻易地让人帮自己决定,毕竟,别人的意见终究只是意见,最终做决定的 人也还是自己,鱼与熊掌一般很难兼得,在 择 业时,学会平衡与平和,是 获 得 成功的第一步。 8.1.3 逃离“北上广”吗? 地方虽小,可在那里我睡得安心,而且那里还有我的朋友。 ——《四大名捕》 人可以选择放弃,但不能放弃选择。选择不一样的城市工作、生活,不在于城市本身能 够提供给你什么东西,而在于你是否适合这个城市。 作为一名程序员,可选择项很多,但各个地方的游戏规则却大不相同。去北京、上海、 杭州、深圳等大城市工作,不仅格局大、待遇好、就业机会多,而且视野也会变得开阔,同 时一线城市无论在体制、经济、医疗、教育、制度等方面有着巨大的城市优势,虽然房价比 较高,但物价并不是太高,对于人才有着非常大的吸引力,据调查显示,程序员收入较高的 城市依次是:上海、北京、深圳、杭州、广州。而像西安、成都、武汉等二线城市,由于身 处内地,无论在待遇还是发展机会、城市建设等方面都可能不如那些一线城市,但在二线城 市生活,生存压力会小很多:二线城市的房价没有那么高、买车买牌照不用摇号、子女上学 相对容易、消费成本相对较低,不 用 每 天上下班被挤得像沙丁鱼,不 用 一 到节假日就遭遇“路 见不平一声吼,高速路上来遛狗”的尴尬,PM 值也可能没有一线城市那么高。三四线城市 就更不用说了,尽管格局小、收入不高,但是消费低,生活质量也不低。 人各有志,有的人喜欢浪里淘沙,有的人喜欢安静闲适,是否去大城市工作生活取决于 个人的实际情况,没有谁可以给出一个答案,包括你的父母。编者自然也不例外,在此,编 者只是罗列出一些意见,供求职者参考,一般而言,选择城市时,可以考虑以下几个方面的 内容: (1) 家庭情况 为什么将家庭情况放在第一位呢?都是房子惹的祸。“北上广”等一线城市,动辄几百 万的房款,多少工薪一族能够承受得住?当然,如果家庭经济情况不错,父母能够支持在一 线城市付个首付买房,自己如果还能有一份比较稳定的工作,一 线 城 市 还是非常不错的选择。 (2) 男/女朋友 如果两个人工资都比较高,收入比较好,完全能够适应大城市的生活节奏,也有意愿在 大城市里面进行闯荡,开展自己的事业,留在一线城市是一个非常不错的选择。 (3) 事业发展 互联网企业主要集中在北京、上海、杭州、深圳、广州等一线城市,研究所主要集中在 西安、武汉、成都、绵阳等内陆城市,所以如果自己钟爱的事业只有在一线城市才能有更大 的发展,那么还是去一线城市为妙,毕竟,在二三线城市,机会会少很多,个人发展前景也 会黯淡很多。 (4) 生活追求 如果自己是一个非常有追求、有理想,誓要做出一些惊天地、泣鬼神壮举的有志青年, 选择一线城市是一个不错的选择。但如果自认为是一个安于现状的人,选择生活压力小的二 线城市也不错。人活一世,草木一秋,或许活得舒服点也很好。 (5) 挣钱 如果工作纯粹是以挣钱为目的,选择一线城市,待遇一般会好很多,哪怕是同一家企业, 在一线城市一般给出的薪酬也比二三线城市的要高。而且,挣钱与消费是两码事,完全可以 挣一线城市的薪水,到二线城市去消费。 (6) 离家远近 很多人觉得“男要远走,女不远嫁”,就是男孩要离家远一点,少点父母的牵挂,女孩 要离家近点,方便照顾父母。对此,编者持中立态度。现在的“80 后”、“90 后”很多都是 独生子女,随着父母地逐渐老去,看着他们头上渐多的白发,想到他们含辛茹苦地把自己拉 扯大,在同等条件下,求 职者还是应该考虑选择离家稍微近一点的企业(前提当然是不能影 响个人事业的发展,否则,得不偿失)。 尽管人们普遍有这样一种想法:小城市有坐井观天的嫌疑,而且大城市激烈的竞争环境, 更能够激发个人潜能,更容易让人达到更高的职业高度,所以,人活着就应该往高处走,往 大城市走,不应该留在小城市,享受安逸的生活。其实,大城市有大城市的繁华,小城市也 有小城市的宁静,没有好坏之分,毕竟人各有志,有人喜欢热闹,有人喜欢安静,有人喜欢 挑战与新鲜,有人喜欢规律与重复,有人耐不住寂寞,有人偏好独处,自己喜欢就好,与他 人无关。当然,除了这种非黑即白的选择以外,还有一种择中的考虑,可以先考虑在“北上 广”等一线城市工作上几年,领取几年的高工资,然后转战二线城市。 选择,对一个人的生活来说的确是非常重要。毕竟 员工是企业最宝贵的财富,合适的企 业更是员工成长的摇篮。你 选 择了一个怎样的城市,怎样的工作,就等于给自己安排了一个 怎样的生活和人生。条条大路通罗马,在这个世界上,通向成功的道路何止千万条,所以无 论选择哪条路,都不要后悔,不必回望,只需目光向前,认真行路,只有这样,步子才会走 得更稳、更快、更轻松。今天的现状是你几年前选择的结果,今天的选择也将决定你几年后 的职业状况,在此关于工作地点的选择,编者建议,明确态度很重要。如果求职者对工作地 点有明确要求,一定要给面试官讲出来,因为面试官也很有可能是在试探求职者的态度。 在此,编者说一个题外话,关于你对别人的选择的态度问题。很多人属于长舌妇,总喜 欢对别人的选择评头品足,编者觉得这是要不得的,也是非常过分的做法,每个人都有自己 的选择权利,任何人都没有权力也没有资格去对别人的选择指手画脚,甚至包括你的父母、 兄弟姐妹。所以,不要歧视他人的选择,去研究所,是你的选择,去国企,也是你的选择, 去互联网企业,也是你的选择,留校读博,也是你的选择。不同的选择,是不同的人生观和 价值观的体现,我们每个人都不是神仙,所以我们无法预测未来,更无法预测哪一种选择会 是最好的,谁也不敢保证以后就一定会混得很好或是混得很烂。所以,对于别人的选择,最 好的做法就是送上自己最真挚的祝福。即 使是 最 好的朋友,也不要指指点点,顶多就是帮他 /她分析利弊而已。 8.1.4 如何与企业进行待遇谈判? 有多少羊,便取多少草。 ——《精忠岳飞》 企业给所有求职者的待遇是一模一样的吗?对此问题,本书第 5.1.5“同一家企业给所 有的求职者的待遇都一样吗”节中有过比较深入的分析,本节不再赘述。 对于待遇(备注:此处的待遇,不仅包括工资,还包括奖金、股票分红等其他收入), 求职者如果不主动争取,就只能拿到一个全国统一价了。 《天下无贼》中的黎叔有一句话说得很好:“21 世纪最重要的是什么?人才。”据说, 比尔盖茨就曾经表示:只要允许我带走 100 个人我可以再造一个微软。而这也从一个侧面反 映了 IT 公司中人才的重要性。所以,该出手时就得出手,该争取自己权益的时候,一定不 能认怂,就得主动去争取。但并非任何时候都是谈判待遇的好时机,一般而言,在企业决定 发放 offer 的时候,才是与企业谈判待遇的最佳时机,否则,还没到那个份上,就强调待遇, 对求职者而言,非常不利。在于企业的谈判中,如何才能不卑不亢、有理有据地争取自己的 合法权益呢?在此,编者引用一些商务谈判中的原则与方法,以期起到抛砖引玉的效果。 (1) 知己知彼 “你想要什么工作环境和待遇?”他说:“我想一个月薪水 10 万,一 年有一个月让公司 用公费让我出国,公司还要用公费让我租房子!”老板说:“我一个月薪水给你 20 万,一年 有两个月公费让你出国,还有公司还送你一栋房子吧!”“ 不 会 吧 ,这么好?该不会是跟我开 玩笑吧!”老板说:“是你先跟我开玩笑的!” “知己知彼,才能抄底”,以上这则笑话正好说明了与企业谈判时知己知彼的重要性。 所谓“知己”,就是要对自己的优势与劣势有一个非常清楚的认识,知道自己需要准备的资 料、数据和要达到的目的以及自己的退路在哪里,简单点说,就是知道自己“值”多少钱, 市场“价位”是多少,自己期望达到的最高目标是多少,固守的最低目标是多少。“知彼”, 就是不要违犯企业的禁忌,知 道 企 业 能够开出的薪酬范围在什么区间,不要让自己的心理价 位严重超出他们能够支付的范围,否则你的这种狮子大开口,很有可能会把企业吓走。 如何才能“知彼”呢?最有效的方法就是通过网络调查整个产业的整理薪酬水平或是通 过业内部员工获悉企业的薪酬体系。 (2) 实现双赢 开门见山地将自己的想法提出来,对于原则性的问题,要 先 争 取 通过协商和必要的互相 让步,达成初步协议,实现双赢,而非两败俱伤。 在表达自己想法的时候,有一个小诀窍:尽量不要首先说出自己心理的预期值,也不要 给出自己的期望范围值,最好让企业先说出他们期望付出的薪酬,再在此基础上进行谈判。 如果面试官非要让求职者说出心理预期值,求 职者最好能够给出一个比较精确的数值(这个 数值应该是建立在“知己知彼”的基础之上的价位),例如:“税前 15000RMB/月”,而非使 用一些概数:“多一点”、“涨一点”,不然的话,企业很有可能借坡下驴,就真的只涨一点点 了,求职者就更加被动了,如果再要涨薪,于情于理也不占优势了。 (3) 平等协商 谈判是求职者与企业智慧的较量,只有用事实说话、用数据说话,以严密的逻辑和艺术, 才能令人心悦诚服,才能将谈判引向自己所期望的胜利。平等协商就是以理服人、不 盛 气 凌 人 、不卑躬屈膝。 在谈判的过程中,要有敬业精神。企业不是慈善机构,并不关心求职者的债务或是支出, 并不关心求职者是否“上有八十老母,下有三岁小儿”,所以在谈判的过程中最好不要将自 己的个人经济情况以及个人情感参杂进来。同时,需要注意的是,为了提高谈判的成功率, 一方面,求职者要对该岗位表现出极大的热情,另一方面,市场经济下,拿多少钱,干多少 活,企业衡量一个人的待遇标准是他能给一起带来多大的效益,所以要想提高待遇,求 职者 就应该展示出自己的各种优点,包括项目经验、技术能力、获奖以及证书等内容,突出表现 自己高于常人的工作能力以及可能创造的巨大价值,完全有资格多拿钱。 由于应届毕业生缺乏工作经验,除非万不得已,企业是不会轻易“屈服”的。所以对于 谈判结果,并非总是能够尽如人意,也有可能会以失败告终。如果谈判成功,求职者与企业 达成了约定,求职者也就应该“见好就收”了,不要再要求这要求那了,否则会给企业留下 非常不好的印象,此时,求 职者最需要做的就是尽快与企业签订纸质的就业合同。如果谈判 失败,又不愿意放弃,那就什么也别说了,什么也别想了,等着签订就业协议,回去洗洗睡 吧。 附录 附录 A 某知名搜索引擎公司 2014 年校园招聘笔试题 一、简答题(本题共 30 分) 1、动态链接库与静态链接库分别有什么优缺点?(10 分) 2、轮询任务调剂和抢占式任务调剂有什么差别?(10 分) 3、请列出数据库中常用的锁,分别给出其应用处景?(10 分) 二、算法与程序设计题(本题共 45 分) 1、给定一个正整数 n,求比 n 大的第一个“不重复数”。“不重复数”的定义:如果一 个数,任何相邻两个数位上的数字都不相同,则称为不重复数。例如 1234 是不重复数,而 1101 不是。(15 分) 2、长度为N(N很大)的字符串,求这个字符串里的最长回文子串?(15 分) 3、数轴上从左到右有 n 个点 a[0],a[1],…,a[n-1],给定一根长度为 L 的绳索,求绳 索最多能覆盖此中的几个点?(15 分) 三、系统设计题(本题共 25 分) 1. 在现代系统的设计过程中,为了减轻请求的压力,通常采用缓存技术,为了进一步 提升缓存的命中率,通 常采 用 分 布式 缓 存 方案 。即前端的调度模块,将 针对不同内容的用户 请求分配给不同的缓存服务器向用户提供服务。请 给 出 一 个分布式缓存方案,满足如下要求: 1)单台缓存服务器故障,整个分布式缓存集群,可以继续提供服务。 2)通过一定的分配策略,可以保证充分利用每个缓存服务的存储空间,及负载均衡。 当部分服务器故障或系统扩容时,该分配策略可以保证较小的缓存文件重分配开销。 3)当不同缓存服务器的存储空间存在差异时,分配策略可以满足比例分配。 附录 E 求职有用网站及 QQ 群一览表 www.csdn.com www.iteye.com www.51cto.com http://www.cnblogs.com/ http://leetcode.com/ https://github.com/soulmachine/leetcode(leetcode 题解供参考) http://wikioi.com/ http://codility.com/ http://coolshell.cn/(酷壳) 技术学习网站 https://www.hackerrank.com/ http://www.itmian4.com/(IT 面试) http://www.51projob.com(程序员求职网) www.jobcoding.com(程序员面试笔试宝典) http://s.sousb.com/(程序员面试之家) 求职网站 http://hawstein.com/posts/ctci-solutions-contents.html(Cracking the coding interview--问题与解答) http://www.careercup.com/ (careercup) http://www.newsmth.net/(水木社区) www.xdnice.com(西电好网) http://bbs.pku.edu.cn/(北大未名) http://bbs.nwpu.edu.cn/portal.php(西工大三航四方 bbs) http://bbs.xjtu.edu.cn/(兵马俑 bbs) http://bbs.byr.cn/index(北邮人) https://bbs.sjtu.edu.cn(饮水思源) http://bbs.whnet.edu.cn/(白云黄鹤 bbs) 求职论坛 http://www.job592.com/zyq.html(592 职业圈) http://job.xidian.edu.cn/ (西安电子科技大学就业信息网) http://job.ucas.ac.cn/(中国科学院大学研究生就业信息服务网) http://www.xsjy.whu.edu.cn/(武汉大学学生就业信息网) http://jy.seu.edu.cn/(东南大学就业信息网) http://job.bupt.edu.cn/(北京邮电大学就业信息网) 就业信息网 http://career.tsinghua.edu.cn(清华大学就业信息网) career.dlut.edu.cn(大连理工大学就业信息网) job.nwpu.edu.cn(西北工业大学就业信息网) job.xjt.edu.cn(西安交通大学就业信息网) http://www.zhaopin.com/(智联招聘) http://www.yingjiesheng.com/应届生求职网) http://job.dajie.com/(大街网) www.51job.com(前程无忧) http://www.hiall.com.cn/(hiall) 招聘服务网 http://www.job9151.com/(中国高校就业联盟网) http://xjh.haitou.cc/ http://www.yjbys.com/xuanjianghui/ 宣讲会查询系统 http://campus.dajie.com/talk/index http://zhedahht.blog.163.com/ (何海涛) http://blog.csdn.net/xdhehao(何昊) 知名博主 http://blog.csdn.net/v_JULY_v(July) QQ 讨论群 群 1:279492438,群 2:262740805,群 3:61846711,群 4:262740919, 群 5:262741149,群 6:237808825,群 7:275363584,群 8:170863804, 群 9:193489317,群 10:275808460,群 11:279495828。
还剩73页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

a414978028

贡献于2016-03-06

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf