第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,需要权衡哪些内容。我不是一名职业规划师,所以不能告诉他们如何做选择,我只能告诉他们,当初我在选择offer的时候,考虑了哪些内容,以供他们参考。但总的来说,我觉得应该参考以下5点内容:
1)兴趣点。兴趣是最好的老师,如果没有兴趣,你很难在工作岗位上有所作为。
2)公司未来发展空间和路线。很多时候不能只盯住眼前的利益,要从长远看,一个企业的发展空间和路线、对未来市场的认知与把握都会决定你未来的发展方向,所以,最好能够对企业的未来发展空间与路线有一个较清醒的认识。
3)薪酬福利。“钱不是万能的,没有钱是万万不能的”。一个企业再好,如果不给工资,同样没人会去,因为人要吃饭穿衣,所以必须仔细考虑薪酬福利。
4)个人成长点。每个企业对人才的定位都不一样,所以在选择offer时,尽量选择一些企业的核心研发部门,在这样的部门里面,个人成长、个人机会都会非常好。
5)城市。什么样的城市是自己希望的,是政治中心北京,还是东方明珠上海;是人间天堂杭州,还是千年古都西安;是天府之国成都,还是千湖之城武汉。各个城市有各个城市的优劣,所以没有谁能够告诉你哪个城市好哪个城市不好,关键需要你自己拿主意。
其实,选完了offer之后,就面临着一个从学生到职业人身份的转换了,如何转换角色,我个人觉得新人入职之初,最重要的就是练就基本功,这个阶段犹如蚕蜕,是痛苦但也美丽的变身。例如,我们做的是线上一级系统,承载着每秒数万笔交易的创建及支付,那么系统的架构、稳定性、容量、可扩展性以及各种底层技术实现,方方面面要学的太多,任务紧、压力大、面对着无数个不可能,这个过程看似痛苦但却会让我们成长得非常快。尤其是当项目真正上线运转起来时,那些你原先认为不可能做的事情都做到了,还做得非常漂亮,那种成就感真的是无以言表。而且做每件事情的时候,一定要把姿态放下来、心态静下来、自信提上去,与你的团队一起合作,把不可能当作历史,把可能写在今天。经历一段时间的锻炼之后,你应该仔细思考一下,问一问自己是否可以独当一面,是否在业界,至少在公司部门内,可以听到你的“声音”、可以看到你的建议,如果可以,那么恭喜你,你应该可以升职了。
1.3 脚踏实地,培养多种技能
廖兰新,男,硕士,某创新型企业高级研发工程师、开发经理
作为一名一线的技术研发人员,我结合自己这么多年在工作中的经历,分享一些经验给即将走入职场的毕业生,希望能帮助他们在求职的路上少走一些弯路。
(1)行业选择
我个人觉得应届毕业生择业时,选择适合自己的行业是非常重要的。对于计算机类专业的毕业生,可供选择的行业很多,例如商业银行类、国企、央企、传统的软件公司、新兴的互联网公司等。而这些行业又各有各的特点,对求职者能力的要求迥异。例如国企的工作相对轻松、薪资一般(体制内)、福利很好,对技术要求不是太高,对项目进度的要求一般不紧迫;互联网公司工作一般比较辛苦,对项目进度要求非常紧迫,技术研发能力也要求高,而企业文化一般较为自由,其薪资待遇也相对较高。所以,求职者应该根据自己的兴趣爱好以及能力特点选择合适的行业。
(2)技术领域选择
随着现代化管理技术的不断发展,IT企业中的技术分工也越来越明显。俗话说:“隔行如隔山”同样是计算机科学技术,不同技术领域的人在技术上也是非常迥异的,例如互联网企业与芯片企业关注的重心就不一样。毕业生一般也很难做到“通才”。所以,在求职时,求职者应尽量选择自己喜欢或擅长的专业领域,这些会决定你今后职业生涯的主要工作内容,而且一般也不会轻易更换。
(3)雇主选择
不同的雇主对求职者要求也不一样。以大型科技公司与创业型科技公司为例加以比较。创业型公司一般研发人员相对较少,每个研发人员都需要能够独当一面,对整个产品的核心代码都了如指掌,上至前端开发、Web界面,下至后台底层实现、操作系统,所以这对于个人成长是非常好的锻炼机会,但同样,创业公司也有其自身的局限性,由于工作的需要,员工一般身兼数职,经常加班,而且在专业技能上都不够规范,相比大型科技公司完善的团队、严格的规章制度等,相对欠缺。
但总的来说,创业型公司更能全方位地激发个人潜能,多角度地发展个人能力,而大型科技公司可以集中锻炼某项专业技能。当然,上述说法也不是绝对的,比如某些小型高科技公司也聚集了业内的人才,完全具备大企业的“高精尖”特点,而一些大公司的某些部门在初创阶段可能也会像创业公司一样艰苦。如果难于抉择,那你就尽量去一家已步入正轨的大公司吧。
(4)求职建议
因为企业需要,我曾经担任过一段时间的面试官,帮助企业招聘新人。我们确实非常希望招聘到优秀的人才,但在招聘过程遇到了很多令人遗憾的事情。例如有的人在面试时因为紧张或是其他原因,发挥不出真实水平;有的人水平一般,却夸夸其谈,不脚踏实地,真正让他设计算法时,一头雾水。在此,我想说明一点,企业在招聘新人时,需要这样的人才:对人对事有信心、掌握多项技能、基础扎实、有冲劲、愿拼搏。所以,我建议毕业生在平时的学习中,一定要脚踏实地地学好专业知识,适当地扩展专业技能。
(5)能力培养
进入工作岗位之后,很多毕业生颇感迷茫,很难快速从学生的角色向职业人的角色转变。我觉得IT行业的职业人应注重培养自身的3种能力:技术能力、管理能力和领导能力。职场新人往往要靠技术能力进入职场,最初的晋升也主要依靠技术能力,它可以让你成为一名优秀的单兵或一名称职的经理,但很难让你成为优秀的经理人,因为它的杠杆效应非常有限,这时就需要第二种能力:管理能力。管理其实是对资源的管理和利用,以有效、可靠地生产产品或提供服务。管理能力一般可以通过学习得到,教育、经验、培训都是提高管理能力的手段。当然,个人的悟性也很重要,能够从表面现象中分析出规律,对管理能力来说很重要。管理能力主要是释放物的能力,它可给你一定的杠杆力量,能让你在小范围内有所贡献,但不会让你“走”很远。这时就需要第三种能力:领导能力。领导能力是释放别人的能力,再通过别人来释放个人或物的能力。领导能力作用可谓巨大,因为它有二级杠杆的效用。就领导而言,技术能力的重要性非常有限,管理能力次之,领导能力最为重要。职业道路不是单行道,而是可以从技术职位向管理职位过渡,再由管理向领导职位过渡的。
1.4 保持空杯心态
王震,男,硕士,某知名互联网企业研发工程师。
好友何昊拜托我一件事情,就是给当前程序员写一些关于求职的意见与建议,这着实有些为难我,并非我不愿意去做这样一件事情,而是因为本人入行虽然比较早,但入职却不太久,与一些资深的IT精英们相比,只能算是初出茅庐,所以不敢妄自尊大。不过,我非常愿意分享一下个人这些年来的几点粗浅体会,以起到抛砖引玉的效果。
对于个人的发展,扎实的基本功将更有利于你在行业里站稳脚跟,走得更远。“术业有专攻”,所谓专业,在于求深而不在于求广。当然,话无绝对,更广的知识面可以帮助你对整个大行业背景有一个比较清晰的认识,知道自己在产业链中处于一个什么样的位置,能够做出多大的成就,有多大的发展空间。结合我自己的经历,以软件类研发为例,具体而言,后台开发方向,系统、网络的底层,比如操作系统事件机制(例如Windows消息机制、Linux epoll等),TCP/IP协议栈,C/C++STL等,这些是服务器开发的主战场,对这里每项技术需要了解的程度应如同战场上士兵对手中所握兵器需要熟悉的程度一样。也许对小规模服务器程序开发而言,谈论这些内容可能有些夸大其辞、危言耸听,但确实存在很多需要如此考虑的情况,例如当前很多网上订票系统很难满足实际应用的需要,引起了用户的极大反感。而在前端方面,由于技术更迭较快,快速学习能力就显得尤为重要,程序员应紧跟时代潮流就要看准当前的形式,了解站在时代前沿的人有哪些,他们做了什么以及他们的研究成果有哪些。
至于经典的数据结构、算法,无论是前端研发还是后台研发都会有所涉及,即便是更深入的掌握一般也只在较专业的算法密集型领域,比如搜索、GIS等。而对于你、对于面试官更注重什么,则看你们更侧重哪方面的内容了。
如果是已经入行的程序员应聘新的企业,经验及能力通常是面试官考查的重头戏。说得更直白一点,作为利益链条上的一环,你具备什么资本,能为公司创造什么价值,才是面试官关注的焦点所在,这也是你需要真正搞清楚并且为之准备的内容。做过什么项目,取得了什么样的成就,既说明了你的过往表现,也能将你的潜在价值表露一二。
进入工作岗位,我相信,不管是刚入职的毕业生还是已打拼多年的程序员,以“空杯心态”去融入当前企业文化,绝对不是件坏事。只有认可了企业的文化,工作时,你才能积极主动,才能上进、才能得到提升。就职业发展而言,一般公司都会有量化的绩效指标,完成这个指标即是一种自我提升,而在任务指标之外,结合自身情况制定出半年或全年个人发展规划,可以说是对自己短期能力提升的督促和目标实现的指引,有助于自己向着更明确的方向发展。
以上愚见称不上是成功的经验,只是我对程序员这个行业一点浅薄的理解而已。
1.5 职场是能者的舞台
林方超,学士,北京某上市公司软件工程师。
关于毕业生如何求职这个问题,老实说,我的“经验”并不是很多,若干年以前,因为应聘前准备得比较充分,所以命中率比较高,虽然也拿到了几个不错的offer,但最终还是选择了现在这家企业。这么多年过去了,回过头来想想,也是感悟颇深。
我认为一个非常有针对性的准备工作,包括心理准备与知识准备,这对计算机相关专业的毕业生求职非常有用。
首先,求职者应当找准自己的位置,即通常所说的职位。一个对职位有着准确预期、对自己有着准确定位的人,在个人简历、面试中都能够表达出更准确、更吸引人的信息,而不至于投递完简历之后就没了下文。而找准一个方向、找准一个行业或是锁定一个企业,不仅可以缩小求职的范围,而且还可以让你在有限的精力、有限的时间内将准备的内容进一步深入、细化。如果做到了这一点,不管是大企业的招聘还是小企业的招聘,也不管是在笔试还是面试,你很快就能发现,真正能够与你竞争的人、能够把你PK掉的人真的是屈指可数,此时你就成了求职大军中“笑到最后的人”(插入一个感悟:时下往往被人普遍提及的流行技术,反而是陈词滥调,只有真正理解其中思想者才能脱颖而出,如果没有十成的把握,我宁可绝口不提)。
通过一些有针对性的准备工作后,笔试一般就不会存在问题了。而紧接着需要面对的就是面试这一关,每一次求职机会都很宝贵,每一次面试机会也很难得,而成功随时会降临。作为求职者,不应当将机会随意浪费掉,将成功拒之门外。所以,不要总以为自己运气好,可以“裸装上阵”赌一把。因为作为求职者,在与企业的博弈中,我们是弱势的,因此,你需要对所应聘的企业以及岗位有一定的认识与了解,当然,你通常在此之前对其可能一无所知,如果此时稀里糊涂地去了,自然也是稀里糊涂地回来。其实,只要提前做好功课,这些都不是问题,因为如今的企业一般都会有自己的宣传网站,里面会详细地介绍企业的发展历程和现状,此外,不少网站在校园招聘时也会列出详细的招聘信息,这些内容都可以好好看看。至于对这些内容需要了解到什么程度,就要看这家企业在你心目中的地位了。想象一下,在面试时,当你谈及企业的一些信息时,面试官会想要给你介绍更多,甚至愿意带你去实地参观一下,那么接下来基本就可以直接谈待遇、谈签约了。
介绍再多的理论和方法,也只是“纸上谈兵”,是否可行还需要用行动来验证,只有行动了才能体会到其中的价值。如果成功拿到offer,那是最理想的;如果没成功,最好要让面试官给你些建议,遇到他说不出来或闪烁其词的情况,说明面试官是凭个人喜好作出的判断,大可不必理会;而一针见血的评价以及善意的建议都会对你未来的求职、成长有很大的帮助,所以,不能被“一根绳子绊倒两次”,无论是成功了还是失败了,都会有所启发,成功可以收获经验,失败同样可以得到教训。
挑选offer也是一件比较艰难的事情。个人建议求职者最好按照自己的职业规划进行比较,但如果确实没有很明确的职业规划,或是从来没有想过职业规划这个问题,你可以优先挑选有发展潜力的工作,这样的工作会给你带来许多意外的收获,最终帮助你确定自己的职业路线,构建你的职业规划。
最后,我想说的是,职场是能者的舞台,真正比拼的是各种能力。技术是一种能力、交际也是一种能力,发挥好任何一种能力都会使你的工作如鱼得水、锦上添花。因此,进入工作岗位后该如何发展,并非是一两句话能够回答的,关键还是要看求职者自己。
1.6 学会“纸上谈兵”
卢山,硕士,某知名搜索类公司软件工程师。
我于2009年硕士毕业于中科院计算技术研究所,到目前为止换过两次工作,最终选择了现在所在的这家企业。作为一个职场过来人,我也经历了很多事情,有初出茅庐时的意气风发,也有历经沧桑后的冷静思索,在这里我谈谈技术类职位面试应该怎样准备。其中有一些建议也是与产品类面试相通的。
在谈论面试笔试如何准备前,首先我想说说一些求职者在应聘过程中常见的误区:一是认为GPA(成绩)越高,则面试成绩越好;二是认为编程的技术越好,面试成绩越好;三是认为在纸上写代码与在计算机上编程是一样的,不用准备或是不用特殊准备。我个人觉得,这些理解都是片面的。事实上,虽然说面试是一种主观行为,但它也是一种考试,准备的因素占了50%以上。但它又不同于高校中的考试,因此与GPA关系不大。
既然准备如此重要,那么求职者就要做好读技术面试书的准备了。此类书籍非常多,每本又都很厚,怎样在有限的时间内,从众多考点中识别出面试官常问的那些问题呢?规律是有的,因为面试官们精力有限,很少去凭空想象一些题目,很多都是套用现成的知识点,所以不论你申请什么职位,考点总会以这样那样的规律出现,复习中遇到就要记住。一般情况下,求职者需要注意以下方面的内容:
1)列举处常考。在复习时看到一个知识点分成几个项目列出来的,就很可能是要考的,例如“在网页中使用CSS有3种方式,inline,internal和external”。
2)比较处常考。例如“C中的auto,static,register和extern有什么区别?”“const与define有什么区别?”“C++中struct与class有什么区别”等。
3)性能优化常考。例如“怎样提高网页加载速度”“如何提高数据库查询效率”“内存泄漏的原因、识别及防范”等,在C语言、Java语言和算法方面也会经常考到类似的问题。
4)算法设计与实现常考。经常会针对某些特定的算法对求职者进行考查,同时时间复杂度也很容易考,所以求职者要在掌握好算法原理、代码实现的同时,记住它们的复杂度。
除掌握常考的考点外,求职者还要练习在纸上编写程序。脱离了功能强大的IDE(Inte-grated Development Environment,集成开发环境),在纸上编写程序就与在计算机上非常不一样了。这里没有自动提示,没有语法高亮,没有拼写纠正,没有自动编译、链接与运行,全凭求职者平时的积累。但是在笔试和面试中,常常要当场“纸上谈兵”,如果不熟练就要吃亏,所以这一关必须要过。
1.7 小结
尽管每一个面试官的工作背景不一样,个人能力也不一样,而且面试套路也可能各不相同,但是,他们的目的只有一个,那就是发掘最适合企业的优秀人才。对于求职者而言,面试官的判定往往决定了求职者的去留,所以,求职者应该好好斟酌面试官的意见与建议,认真体会,进而不断地提升自己,努力让自己成为企业青睐的“千里马”。