程序员面试攻略(原书第3版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-17 22:29:40

点击下载

作者:(美) John Mongan Eric Giguère Noah Kindler

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

程序员面试攻略(原书第3版)

程序员面试攻略(原书第3版)试读:

前言

我们首先要告诉你的最重要的事情与第1版相同:你对本书钻研得越深,收获就越大。如果你只是泛泛地阅读本书,你会学到一些东西,但是如果在看答案前先自己尝试解决问题,那么你会收获更多。

本书第1版出版已经超过十年了,这就是说,许多我们必须告诉你的事情已经改变,因此需要有个机会来改编本书。

第3版进行了最大程度的更新。除了对前一版进行改编、扩展以及更新,还增加了关于排序和设计模式这些重要的主题。本书对非编程部分的内容也进行了改编,以反映如今就业市场的现实。所有这些我们都像前一版一样,保持容易理解的风格和循序渐进的思考过程。

样例代码大部分采用C、C++或Java,但在大多数情况下数据结构和算法才是重点,使用什么语言实现是次要的。所有的样例对于一个有经验的程序员来说应该都是很容易理解的。

我们中的一员(Eric)最近通过了他梦想中的Google公司职位的面试,这增加了他对于程序设计面试的认识,并将其收获反映在了这一版中。

我们希望你喜欢第3版,并且希望对你获得自己喜欢的职位有所帮助。我们非常希望听到你关于本书的想法以及你的面试经验。你可以通过authors@piexposed.com与我们联系。访问本书的官方网站:http://www.piexposed.com可以获得最新的更新以及更多信息。第1版前言

如果你像我们一样,通常就不会读前言。但这本书的前言很有用,因此希望你能破例一次好好读一下。如果你对前言确实不感兴趣,我们希望你能看完下面这句话:你对本书钻研得越深,收获就越大。如果你只是泛泛地阅读本书,你会学到一些东西,但是如果在看答案之前先自己尝试解决问题,那么你会收获更多。

当你应聘一份程序设计、软件开发或技术咨询方面的工作时,雇主几乎总是会安排一次面试来考察你的程序设计能力。我们写作本书的目的就是希望能够帮助大家顺利地通过这类面试。程序设计面试的目的是为了考察应聘者的程序设计水平和动手能力,其过程与传统意义上的求职面试并没有多少相似之处,所以传统的应聘秘笈和面试技巧在这里并没有多大用处。程序设计面试题以程序设计问题、智力难题以及各种与计算机有关的技术为主。本书将对这些常见的程序设计面试题进行讨论,并通过一些取材真实的面试题向大家展示如何才能最好地回答这些问题。

看到这里,你可能会产生这样的疑问:作为本书的作者,我们都是些什么人?是谁让我们写这本书的?我们两人都是刚毕业不久的研究生,在过去的几年里,我们参加了许多场面试。从老牌大公司的技术咨询职位到新兴公司的编写设备驱动程序的职位,我们面试过的工作岗位可以说五花八门,这本书就是我们根据自己亲身参加过的各种面试(有成功也有失败)总结出来的。我们认为,这是写作本书的基础。说实话,我们并不清楚负责招聘工作的人力资源部门主管对程序设计面试工作都有哪些想法,我们也不清楚猎头公司将依据什么样的标准来评估应聘人员在程序设计面试中的表现。但在读完本书之后,相信大家都会对美国顶尖的软件和计算机公司里的程序设计面试情况有一个比较实际的了解,并知道自己应该去做些什么来赢得自己想要的那份工作。

注意

根据自己的亲身经历,我们认为现在的程序设计面试工作还有许多地方需要改进。现在的做法过于偏重考察应聘人员解答智力难题或者类似问题的能力,而忽视了对其知识面和知识深度的考察,因此很多在软件行业中取得成功所必须具备的重要素质都无法得到准确衡量和评估。

需要特别说明的是,本书中的面试题目没有一道是我们虚构出来的,这些题目全部来自于我们此前参加过的面试。换句话说,类似的题目类型和难度很可能会出现在你今后参加的某次程序设计面试中。但大家同时也要明白,这本书里的问题只是程序设计面试中一些比较有代表性的题目,而不是一个包罗万象的习题集。如果希望靠死记硬背本书的例题和答案来通过程序设计面试,就很可能弄巧成拙。在面试中你可能会遇到这本书里的问题,但你不能抱有这样的幻想。程序设计面试题本来就是千变万化的,而一位聪明的面试官在看过本书之后,肯定不会再用本书中的题目。可话又说回来,程序设计面试题范围内的类型也就那么多,想变化也变化不到哪里去。只要你不是死抠本书中给出的例题,而是对它们所代表的试题类型进行研究,那么无论在程序设计面试中遇到什么样的题目,你肯定都能应付自如。

为了帮助大家提高解决问题的能力,我们采用了一种循序渐进的办法。首先,根据实际情况,我们会在给出面试题之前对有关的重要概念进行复习。其次,我们会把解决问题的整个思路向大家解释清楚,而不是简单地直接给出问题的答案。我们发现,从例题的使用方面来讲,本书以外的其他教科书或习题集几乎全都采用了另一种套路:先列出一个问题,接着马上给出答案,然后再解释那个答案为什么是正确的。以我们个人的体会来说,这种套路往往不能给你以最大的帮助:你能够看懂某个具体的答案,并知道它为什么是正确的,但很难了解和把握作者得出有关答案的思路,不容易在遇到与例题类似的问题时做出正确的分析和判断。为了避免上述弊病,本书采用了一种循序渐进的解题方法,而我们希望本书中的解题思路不仅能够让大家知道什么是正确的解决方案,还能让大家明白怎样才能得出正确的解决方案。

只看不动手是学不到真本领的。如果你想从本书中得到的收获最大,就必须亲自动手去尝试解决书中的每一道题。我们建议大家采用下面的学习方法:(1)看过题目之后,先把书放在一边,自己动手去寻找答案。(2)如果你中途卡住了,再回过头来研究书中的解决方案。为了让大家开动脑筋,这本书里所有例题的答案都安排在有关内容的最末尾,所以你完全不必担心我们会提前“泄密”,让大家“意外地”看到答案。(3)在看过足够多的内容并得到足够多的提示之后,你应该再次把本书放在一边,继续开动脑筋。(4)如此重复,直到彻底解决某个问题为止。

你通过自己的努力而得出的解决方案越多,对有关问题的理解也就越透彻。这种学习方法还有另外一个好处,那就是它与程序设计面试的实际过程非常相似:你必须完全依靠自己来解决面试问题,但在需要的时候,面试官会给出必要的提示。

程序设计是一种难度极大的技术性艺术,只通过一本书就把计算机科学和程序设计工作所涉及的各种细节全都介绍给大家是根本不可能的。因此阅读本书需要有一定基础。我们希望你的计算机知识不低于大学计算机系一年级或二年级学生的水平。具体地说,我们希望你能够熟练地使用C语言进行编程,有使用C++或Java进行面向对象编程的经验,了解计算机体系结构和计算机科学理论方面的基础内容。这是参加程序开发工作最小的要求,所以大多数面试官都会有类似的预期。如果发现自己在上述几个方面有所欠缺,请务必在找工作和参加程序设计面试之前把功课补上。

在本书的读者中,肯定会有很多人在计算机方面的学识与经验大大超出我们刚才提出的最小要求。如果你就是其中一员,那么你可能对本书中的一些高级主题,比如数据库、图形处理、并发计算以及Perl语言等更感兴趣。但千万不要因为自己的经验比较丰富就忽视了基础性的概念和试题。不管你的简历写得多好,面试官仍会从最基本的问题开始提问。

我们已经尽了最大的努力来保证这本书里的信息是正确无误的。所有的程序代码都经过了编译和测试。但就与读者在你们自己的程序设计工作中遇到的情况一样,程序设计漏洞和错误是在所难免的。一旦发现或者得知此类错误,我们会立刻把它们公布在http://www.piexposed.com上。

我们相信,在你寻找新工作时,本书对你一定有所帮助。同时,我们还希望本书中的面试题目分析和解决方案能够对你找工作有所启发。如果你想把你的读后感、对每个问题的具体看法,或最近看到的某个程序设计面试问题告诉我们,我们将非常欢迎。我们的电子邮件是:authors@piexposed.com。

预祝大家都能找到一份满意的工作!致谢

第3版的出版非常不寻常,我们感谢来自Wiley出版社的工作人员所付出的努力,使得这个版本可以及时成功地顺利完成。可以快速克服任何新障碍的编辑Maureen Spears,个人对此关注的出版人Jim Minatel,以及特别关键的高级组稿编辑Carol Long,我们感谢他们为此付出的时间、工作以及帮助。

这个版本的质量因为Wayne Heym的建议以及详细的审阅而得到巨大提升,我们感谢他提供的大量帮助。

此外,John非常感谢Michael J.Mongan的帮助,协助他可以参与这个版本的工作。

如果没有前两版,以及许许多多为前两版作出贡献的人们,是不可能有第3版的。因此,我们也感谢原来的编辑Margaret Hendrey和Marjorie Spencer,感谢他们的耐心和帮助。同时也感谢原来的审稿人和顾问Dan Hill、Elise Lipkowitz、Charity Lu、Rob Maguire和Tom Mongan。Dan的贡献最多,第1版的质量由于他认真细致的审阅而得到了巨大的提升。技术编辑简介

Michael Gilbert长期担任几家不同的工程公司的系统程序员。在Atari ST公司开始开发游戏,并且是《Start》杂志的特约编辑。多年来,他为来自全球范围的客户开发PC上和Mac上的游戏软件。同时他也是一位专家级的Flash Actionscript程序员,他研发了一个流行的网络游戏平台HigherGames,你可以在www.highergames.com上看到。现在他喜欢上了开发iPhone和iPad上的游戏,目前在AppStore中有4款游戏(Woridgo、Jumpin'Java、Kings Battlefield以及Set Pro HD)。在业余时间,他喜欢在一个友好的拼字游戏中与他的妻子Janeen战斗。你可以在Twitter上收听他:@mjia711。

Justin Vogt是一位经验丰富的职业软件开发者,具有很多综合能力(技术、架构、设计、沟通、创新、管理以及领导研发)。他具有超过15年的丰富软件研发经验,曾经参与过的项目包括嵌入式软件、移动开发、网络开发、商业软件开发、通信设备、医疗应用程序和非营利组织解决方案的开发。第0章引言

获得一份非常好的编程工作不能靠运气,而是要靠准备工作。如今大多数软件公司的程序设计面试过程都经过仔细设计,用来确定你是否真的可以编程。这会是一个艰难的过程,尤其是面试形式多种多样,使得这个过程完全不同于你在学校或其他工作中所经历过的面试。如果你之前从未经历过程序设计面试,那么这将会是个沉重的打击。即使是非常优秀的程序员,如果没有经历过程序设计面试,也没有为面试做好准备,也会相当艰难。

写这本书的目的是帮助你准备这个技术面试过程,使得你在展示自己是个多么优秀的程序员时没有任何问题。本书并不教你如何编程,而是展示在程序设计面试中如何通过你的编程技能快速脱颖而出。在你阅读本书时,请记住,大部分程序设计面试事实上并不是记忆力测试,所以本书并不提供在面试中需要记住的小抄,而是通过实例教你通过面试所需的技巧和思考过程。掌握这些最好的办法是花时间解决这些问题,并理解它们。如果你这样做了,在面对面试问题时,你将会非常自信,因为你已经为解决任何面试问题做好了准备,这使得你更加接近你希望的职位。为什么要进行程序设计面试

为什么软件公司都会进行程序设计面试?他们希望雇佣那些优秀的、可以与他人合作并能成功创造出优秀产品的程序员。但遗憾的是,经验表明,相当一部分应聘程序员职位的应聘者都不会编程。你也许认为通过认真地检阅应聘者的简历、经验、所学课程以及学位可以筛选出来,但事实上这通常是无效的。有相当数量的应聘者拥有出众的简历、业界多年的相关经验,但是连一些简单的编程任务都无法胜任。他们中的许多人都收集了足够多的术语,在讨论编程技术的话题时看上去非常有竞争力。雇佣这些不会编程的开发人员很容易击垮一个部门(甚至是一个小公司)。

由于认识到普通的面试过程对于区分应聘者是否会编程是无效的,所以雇主们通常采取以下步骤:在面试中让应聘者编写一些程序。程序设计面试就诞生了。程序设计面试在区分应聘者是否会编程时非常有效,这也正是技术面试过程中几乎都有这一部分的原因。

程序设计面试中困难的部分是雇主不仅想知道哪些人不会编程,而且想从应聘者中挑选出优秀的程序员,这更难。通常,面试官通过使用困难的、有挑战的编程题目,并留意应聘者解决它们的速度和准确性来衡量应聘者的能力。

这种方法的问题在于面试的时间有限,在程序设计面试过程中仅可以测试部分技能,这些技能只有部分与现实世界的开发有关。在程序设计面试中必须让你当场解决问题,有个人看着你,并且没有任何可以参考的东西。没有时间来编写大量代码,所以问题必须有简短的解法。大多数有简短解法的问题都很简单,为了避免这种情况,许多面试问题都涉及不常见的算法技巧、随意的限制或者奇怪的语言特性。因为这类问题在现实世界的开发中并不常见,即使一个优秀的程序员如果没有经历过这种奇怪的面试通常也是无法通过的。

相反,许多在专业开发环境中的核心技能在程序设计面试中却没有得到很好的评估,甚至未进行评估。这些技能包括沟通、合作、架构、对大型代码库的管理、时间管理、按时间表持续地产出可靠的代码,以及处理大型项目、区分各部分的组件,并且推动整个项目的完成等能力。

显然,程序设计面试并没有提供衡量一个应聘者作为公司未来员工的价值的完美方法。但是就像丘吉尔对于民主的衡量方法所说的一样,程序设计面试是技术面试中最差的方法,除了其他已经被尝试过的方法之外。更重要的一点是程序设计面试是雇主选择到底雇佣谁的方法,所以无论这种衡量方法是否完美,你都需要在其中表现良好。本书就是为了展示如何将你的编程技能应用于各种奇怪的面试问题,并且帮你准备和进行练习,以在你想要的职位面试中脱颖而出。如何使用本书

进行准备是掌控面试进程的关键。下面是如何使用本书来准备程序设计面试的一些一般性方法。

◆ 留出充足的时间进行准备。尽可能早地开始准备,最好是在参加面试几周前或一个月前。你需要时间来练习这里介绍的概念。(如果你没有这么多时间,试着找一些不被打扰的大块时间来学习这些内容。)

◆ 练习回答问题。不要只是通读问题的解法。在解决问题卡住时,将问题的解法作为提示,并且用来验证你的答案。试着模拟面试过程。大多数情况下,你需要在一个白板上或纸上写出代码,这需要练习!这听上去很傻,但是确实需要进行一些练习,以便在编程的时候你可以用一支笔来代替键盘。

◆ 确保你理解问题背后的概念。理解问题背后的概念是成功的关键。不要跳过或掩盖你不理解的东西。这本书提供了足够的解释让你复习之前学习过的主题,但是如果你遇到一些已经完全忘记的东西或从未学习过的东西时,你可能需要读一些其他的参考资料。

◆ 不要浪费时间死记硬背问题的答案。面试官不太可能用本书中的任何问题来面试。即使他们这样做,也会对这些问题进行一些修改。如果你仅仅把问题的答案背下来,那么你的答案很可能是不正确的。

◆ 继续练习。不要在完成本书中的面试题目后停止准备。继续练习一些编程问题。从网络上很容易找到一些问题。再寻找一些参考资料,特别是你擅长的领域,并继续阅读。

你的健康和福祉是你最重要的资本,它会影响你的学习和面试。记住需要足够的睡眠(特别是接近面试日期的时候),并且要保持合理的锻炼和饮食。定时进行休息有助于你的头脑整合所有的资料,不要在临近面试的最后一刻还不停地学习。如果放松一下,使自己头脑清晰,这要比在考前不停地学习更高效。

作为准备的一部分,请访问网站http://www.piexposed.com,注册并获取我们的邮件列表,了解我们为帮助你准备面试开发的智能手机应用。

现在让我们开始吧!第1章求职之前

在找工作之前,你需要做好充分的准备。如果你还没弄清楚自己究竟想要什么样的工作,那么就先别申请工作。仅仅成为一个优秀的编码人员是不够的,你必须了解市场的需求,以及如何系统地提升自己的技能,使得你想去的公司也想要录用你。1.1 了解你自己

与人们的固有印象相反,每个程序员的类型都是不一样的。了解你属于哪一类程序员对找到适合你的工作至关重要。也许你可以胜任很多不同类型的编程工作,但你喜欢的程度可能并不相同。做一些你不喜欢的工作短期来说还可以接受,但就长期而言,还是应该从事一些能令你感兴趣的和为之奋斗的工作。最好的程序员对他们的工作是充满激情的,对你来说,仅有适度兴趣的东西并不能使你对工作真正充满激情。

如果你还不确定自己喜欢什么或不喜欢什么,那么试问以下问题:

◆ 你是一个系统程序员还是一个应用开发者?系统程序员的工作是写一些支持计算机系统运行的程序,如框架、工具、编译器、驱动、服务器等。其他程序员主要是系统程序员的用户,所以系统程序员与非程序员们很少沟通——并且这些任务通常很少或不涉及用户界面的工作。而应用程序开发人员开发的模块的使用者是非技术人员,并且经常与非技术人员沟通。有些程序员觉得与非技术人员进行技术话题沟通很令人沮丧;而有些程序员看到用户使用自己创造出的应用程序时会非常有成就感。

◆ 你是否喜欢编写用户界面?用户界面设计——又称为用户体验(User Experience,UX)或人机交互(Human Computer Interaction,HCI)——会用到多种多样技能,包括编程、图形设计以及心理学。这项工作是很高调的,因为用户界面是任何应用程序中被看到最多的部分。在移动应用开发中,用户界面设计显得尤为重要,受设备的限制而需要更多的创造力和创新。如果你有必要的技能并喜欢这个工作,那么你将在精英公司里:很多程序员发现这项工作很难做得很好,而且很容易受批评,尤其是把国际化和可访问性考虑在内的时候。

◆ 你是一个好的调试者吗?如果你认为找到自己代码里的问题很困难,想象一下当你解决别人代码中的问题时会是什么样子。这需要很强的分析和解决问题的能力。凭借自身力量找到并解决bug是非常有益的。你需要知道如果你主要做维护工作时是否会快乐。(当然,你应该预料到会持续地维护自己写的代码——所有的程序员都需要调试技能。)在很多情况下,特别是在一些较老的公司,维护现有代码的工作主要涉及较老的现在被认为是过时的或不再流行的技术。学习一些较老的技术可能会使适合你的工作范围变得狭窄,但是因为掌握较老技术的专家也很难找到,你以后可能会受到少数依赖较老技术的公司重视。

◆ 你喜欢测试吗?测试——也称为质量保证(Quality Assurance,QA)——需要一丝不苟以确保测试用例覆盖使用程序的所有可能情况,同时结合创造性思维,以生成该程序的开发人员从来没有考虑过的输入组合来发现程序中的bug。熟练的测试人员是很难找到的,而且编写测试工具和自动化测试用例需要很好的编程技能。

◆ 你是一个架构师还是一个编码人员?每一个编码的工作都包括一些设计,但是每个工作都更偏重于某一方面。如果你喜欢设计,特别是设计大规模的大型项目,一个软件架构师的职位可能相比一个以编码为中心的职位对你更有吸引力。虽然你需要理解如何编码以成为一个高效的架构师,但是架构师的职位要求经常参与会议和人际交往并且极少编码。通常成为架构师的职业路径是,做一个程序员然后展示作为一个架构师的设计能力和把一个项目的各个模块组合起来的才能,除非你参加过软件架构师方面的正式培训。

前面的问题都涉及编程任务,但是你应该同样考虑一下非编程的任务和工作环境:

◆ 你是否对管理感兴趣?有些编码人员的一个长期目标是成为管理人员,而有些人一想到这儿就哆嗦。如果做管理工作是你的目标,你需要发展领导力的技能并且展示你可以像管理好技术部分一样管理好软件开发中的人力部分。如果做管理工作不是你的目标,那么找一个有着良好技术发展通道的公司,以使你不被迫通过做管理工作来获得升职。(无论你选择哪个职业通道,你仍然需要领导力技能来获得升职,但是领导力技能与管理技能是不一样的。)

◆ 你是否喜欢为一个大公司工作?在一个大公司工作有利有弊。比如说,大公司可以提供更稳定的工作(虽然在经济衰退期间的裁员是常见的)和很好的职业发展通道。它可能也会很有名,即使那些不懂技术的人也都知道。但大公司里的官僚作风、严格制度以及内部竞争也会使人感到窒息。

◆ 你是否喜欢为一个小公司工作?小公司的薪水可能会少一些,但是从一个新公司初始建立时就加入,随着公司的成长和成功,能带来晋升机会(和可能丰富的报酬)。同样,小公司的工作环境和大点儿的组织相比不是那么正规。当然,不好的方面是多数新的探险都会失败,你可能会在一到两年内失业,最可能的是你没有像大公司那样有像样的遣散费。

◆ 你是否希望从事开源软件项目?绝大多数编程任务历史上都是涉及专利、闭源的项目,有些程序员不喜欢这样。目前有些公司已经发生转变,它们更喜欢开放软件开发过程,这给一些人提供了为开源项目工作的机会并且仍然可以通过参与项目获得报酬。如果对你来说你的工作项目开源很重要,那么找一个已经参与到开源项目的公司。试图在传统软件公司中支持开源往往是一个令人沮丧的和徒劳的事情。

◆ 你喜欢长期项目还是喜欢短期项目?有些程序员渴望变化,在每个项目上至多花费几个月。如果你喜欢短期项目,并且不介意旅行,参与一家咨询公司的“演出”可能会比为传统的公司工作更有意义。

这些问题是没有通用答案的,而且也没有绝对正确或绝对错误。你越真实地回答这些问题,就越有可能会发现什么样的编程工作是你真正喜欢的。1.2 了解市场

了解你喜欢做什么很重要,但是不要把你自己束缚得太窄。你也需要理解当前的人才市场,以及它如何限制你寻找“理想”的工作,特别是在经济低迷时期,就像20世纪90年代末的互联网泡沫破灭或2000年后期的全球房地产和银行业危机。1.2.1 基本的市场信息

就业市场不断变化,其中什么是热点,什么不是热点,有许多信息来源,例如:

◆ 社交网络——得到巨大发展的社交网络,像LinkedIn、Facebook和Google+已经成为各种类型、各种大小的公司的虚拟招聘市场。其中LindedIn特别重要。其他的社交网络可以提供关于市场的一个间接“脉搏”,也可以为新的甚至未经宣布的招聘信息提供有价值的线索。

◆ 在线招聘网站——在你研究找工作时,访问两类招聘网站。招聘列表网站,像Dice(专长于科技相关的职业列表)和Monster(一个更普遍的工作列表网站),可以使你看到当前有什么类型的工作需求。点评网站,比如Glassdoor和CareerBliss,讨论工作条件、薪酬、奖金、额外津贴和其他对你寻找合适类型的公司有用的信息。

◆ 书店——尽管越来越多的程序文档可在线上浏览,但是专业出版的书籍仍然是重要的,无论是印刷版或下载版。在任何给定主题的图书中,图书出版数量是编程社区对这一主题兴趣的一个很好的迹象。特别是关注迅速成为主流的主题,但要注意在大多数公司中,主流技术的应用滞后于书中热议这一技术好几年。

◆ 职业发展课程——职业院校和大学会尽力跟进社会的需求,并会围绕这些需求设立职业发展课程。

如果你不在学院或大学里,那么应了解什么语言和技术是本地的教育机构和你的母校对计算机科学系学生的要求。虽然学术需求并不总是恰巧与社会的需求相同,但是教育机构总会希望学生学到将能用到的技能。1.2.2 外包怎么样

外包(outsourcing)和离岸外包(offshoring)——把任务承包给其他公司或外国的部门或公司——是技术类就业市场的重要组成部分。辅助经营活动的外包,如薪酬管理及物业保养已经存在了几十年。近年来随着廉价电脑的出现,互联网提供的廉价的长途通信,以及发展中国家重视科技教育的廉价的劳动力的带动,外包已经扩大到编程领域。在2000年中期掀起了外包风潮,尤其是离岸外包。在过去的几年里这已经变成更加局部的现象,因为大多数打算外包的公司已经把他们可以外包的都外包出去了。此外,离岸外包的成本已经随着发展中国家的工资上涨不断上升,特别是在中国和印度。由于意识到来自不同文化背景、不同时间安排的劳动力之间的协作会带来隐性成本,导致一些公司把以前外包的都自主开发。不过,对扩张中的公司,以及新成立的认为把工作都留在本地完成花费很高的公司来说,外包和离岸外包仍然是削减成本的一种可能选项。

如果你不喜欢外包(特别是离岸外包),考虑采取措施来避免找一个未来某个时间可能会被外包出去的工作。下面是一些建议:

◆ 为软件开发公司工作——一个软件公司存在的理由是它开发的知识产权。虽然大中型的公司会在世界的其他地方建立研发中心,但是聪明的公司不太可能会把整个公司的运营都转移到其他国家,也不会将自己的未来托付给外面的公司。也就是说,一些公司出于成本或其他原因的考虑会将一个项目的全部或者大部分外包到其他国家,所以有必要研究一个公司的行为和策略。

◆ 为外包公司工作——奇怪的是,很多外包企业从像美国这样的国家聘用人员。

◆ 向程序员食物链的上游移动——面向设计的职位不太可能被外包出去。编码人员相对廉价,也很多,但一个好的设计师则很难找到。(前提是你的公司认识到好的设计能力与好的编码能力是不同的。)另一个使你更加难以被替代的办法是获得特定领域的知识:与编程本身无关但与你编写的程序相关的专业知识。例如,如果你开发财务软件,你除了编程技能外还有会计技能,相比纯粹的编码人员,把你的工作外包出去要困难得多。

◆ 取得管理职位——管理职位可能不会受到外包的影响,所以管理职业通道是可以考虑的一个选择。

在所有这些选项中,向食物链的上游移动通常是最好的方法。你的工作要求的非编程知识越多,或者与客户沟通的越多,被外包出去的可能性就越小。当然,没有谁可以保证你永远不会被外包出去,也不能保证你能永远保住自己的职位。毕竟,你的公司可能会在任何时刻终止你正在工作的项目,或缩小它的规模,把你赶到大街上。因此,在你的职业生涯中发展基本的技能和就业市场需要的技能是非常重要的。1.3 培养市场需要的技能

在附录中我们讨论了如何将简历作为获得面试机会的一个营销工具。最好卖的东西是人们想要的,培养市场需要的技能对于找工作至关重要。想要在笔试和面试中脱颖而出,你需要培养技能和本领,特别是当你第一次找工作时。以下是一些建议:

◆ 提高你的凭证——众所周知,像Google这样的公司更喜欢具有研究生学历的应聘者。获得硕士或博士学位来提高你的凭证。你也可以通过其他方法来提高你的凭证,比如说参加大学的或职业的开发课程或者参与编程竞赛。

◆ 获得认证——认证在软件开发行业是一个有争议的问题,但有些职位喜欢或要求应聘者获得某项技术认证,尤其是IT职位。在你花费时间和金钱来获得认证之前,考虑考察一下那些你感兴趣的职位是否需要获得认证。

◆ 参与周边的项目——参与一个与你的主要工作或研究方向没有直接关系的项目,这是扩大你掌握技能范围的很好的方式。发起或参与一个开放源码开发项目是一个途径,或者如果你在一家公司工作,看看它是否会让你在一个附属项目上花些时间。

◆ 在学校里表现突出——尽管分数不能代表一切,但是公司会通过分数来考察几乎没有工作经验的应届毕业生。你在计算机和数学课程方面的得分越高,就越可能给招聘人员留下印象。

◆ 不断学习——正规教育的结束并不意味着你应该停止学习,尤其有各种各样的关于编程的信息来源。无论是通过书籍或博客,无论你的编程工作属于哪种类型,总有一个保持在前沿的途径。这也是扩大你的视野和发现其他感兴趣的领域的极好方式。虽然这种学习不能显示在你的简历中,但在技术面试中可以突出显示出来。

◆ 做实习生——在假期做过实习的应届毕业生,特别是参加过合作教育项目的学生,比那些还没有涉足实践的同龄人有巨大的优势。用人公司知道,业界的软件开发和学习中的软件开发往往不是一回事儿。

无论你处于职业生涯的哪一个阶段,秘诀就在于不断学习。市场需要的技能不会一蹴而就,而需要持之以恒的努力,它们对你的职业生涯会产生持续的影响。1.4 把事情做好

公司在寻找那些能把事情做好的软件开发者。也许你的简历上有着良好的技能和教育背景,但是文凭和知识不会直接变成公司可以销售的产品或服务。真正使你从众多应聘者中脱颖而出的是你完成某些工作的能力。

获得一个高级的学位(比如说博士),成为一个广泛使用的开源项目可靠的贡献者,或者驱使一个产品从启动到投放市场都是一些很大的成就。但是小的成就也可以与之同等重要,比如给一个产品增加新功能,确切提高产品的性能,启动并完成一个附属项目,或者为一个课程项目创建一个有用的应用。这些都显示了你可以把事情做好。

招聘人员和招聘团队喜欢看到你有多个成就——把事情做好的例子。这些对更高级和有经验的开发人员更是如此。你需要在你的简历和网上个人资料中显示出这些成就。无论你的成就或大或小,永远准备好聪明和自信地谈论你的成就,这是非常重要的!确保即使你面对一个非技术人员也能清晰、简洁地描述潜在的问题和你是如何解决这个问题的。展示对编程的热情总是有利的,明确地表达出你开发的产品或服务被别人使用时的成就感能让你从众多候选者中脱颖而出。1.5 管理网上个人资料

网上个人资料——网上所有关于你的公开信息——与你的简历同等重要。招聘人员使用网上个人资料来寻找需要的应聘者。筛选者使用它们来过滤不适合的应聘者。当简历中缺乏细节时,面试官使用它们来准备有深度的面试。

网上个人资料包括:

◆ LinkedIn的个人资料——LinkedIn是一个可以跟踪职业人员之间连接的社交网络。加入是免费的,你可以建立关于你的详细个人资料,包括你的工作、教育背景——本质上是一个网络简历。同事和客户可以公开赞赏你的工作,这可能是非常有价值的。

◆ 其他社交网络的资料——其他的社交网络比如说Facebook或Google+,不过这些取决于你的隐私设置。

◆ 个人网站——这是一个更加深入的关于你的信息的潜在来源。

◆ 发表的帖子或博客——如果你写一些编程相关的主题,这会是一个使招聘人员评估你的经验的很好途径。

◆ 评论和论坛帖子——这提供了洞察到你的编程技巧和你对技术和技术型公司的态度的另一种途径。招聘人员从你的网上个人资料中获得的印象会影响你被雇佣的几率。如果你的简历上列出了你对C#有着丰富的经验,但是他们发现你仅仅在6个月前发了一个如何用C#打开一个文件的论坛帖子,他们很可能会认为你夸大了自己的经验水准,并且质疑你的整个简历。或者他们看到了一些认为是你发布的让人感到不适的或过激的言论,无论你的简历看起来多好或者你在多久之前写了这些,他们都会直接忽略你的简历。没有人能对他们在高中或大学里做的所有事情引以为豪,但是在后互联网时代长大的人们发现这些他们宁愿忘记的东西会一直跟随着他们。老一代的人很少需要与这些东西斗争。

在你应聘一个职位之前,需要好好看一下你的网上个人资料。站在一个公司的角度换位思考,看看可以找到多少关于你的信息——好的和坏的——公司可能会找到与你有关的链接。如果你的网上个人资料有可能妨碍你找到工作,采取一些措施清理这些资料。尽可能从Web和搜索引擎中删除那些有问题的资料。

花一些时间扩大网上个人资料中积极的一面,这对于在网上有你不愿意看到的对你不利的资料时特别重要。也许你应学习一些搜索引擎优化(SEO),使关于你的积极的信息在搜索结果中比那些你不太喜欢的信息排得更靠前。如果你没有LinkedIn账号,那么注册一个,并且尽可能添加一些个人信息的细节。如果你已经有一个,那么确保账号资料保持最新。考虑在Stack Overflow或者类似的问答网站上注册一个账号,并花一些时间在你擅长的领域回答一些问题。

警告

关于更新LinkedIn账号资料的警告:默认情况下,你更新资料时会通知你所有的联系人。很多人已经知道这些通知说明某人事实上正在找新工作。这可能帮助你表达这个意思,但是如果你的联系人中有你当前公司的同事,并且你不想让他们知道你正在找新工作,那么在更新资料前应关闭这些通知。

准备更好的网上个人资料,让筛选者不致发现严重问题。找到好工作已经很不易了——为什么还要搞得更加困难呢?1.6 本章小结

在求职之前所做的事情对于找到合适的职位至关重要。从这一点出发,你应该思考下面的问题:

◆ 作为一个程序员,知道自己喜欢什么,不喜欢什么。

◆ 为了找到最好的工作,要了解市场。

◆ 掌握市场所需的、用人公司所需的技能,这会提升你的职业生涯。

◆ 管理好你的公开资料,展现出你的最好一面并且确保不会有惊人的事情吓走潜在的用人公司。

当你排查完所有这些要点后,你就可以开始找工作了。第2章求职过程

由于大多数科技公司的招聘和面试流程是相似的,所以为可能遇到的情况准备得越多,就越容易成功。本章教你熟悉从联系公司到开始新工作的整个求职过程,使你也许不会浪费前几次求职尝试来积累经验。科技公司的招聘流程通常与传统公司的相差很大,所以即使你已经工作了一段时间,你也会发现本章介绍的这些信息很有用。2.1 寻找公司并进行联系

找工作的第一步就是寻找并联系你感兴趣的公司。虽然通过推荐是获得一份工作最好的方式,你也可以通过与猎头公司合作,或直接联系公司。2.1.1 寻找公司

如果你知道哪些公司有你最感兴趣的工作,则可以更有针对性地搜索。大公司很容易找到——你可能随便想一下,就可以说出十几个国内或国际高科技公司。你也可以通过在贸易和本地商业新闻的文章中找出中等规模(以及大规模)的公司。许多杂志和报纸定期编制成功公司的名单和最佳工作场所排名。(对这些排名需持保留态度:影响在不同的大公司的工作和生活质量有许多因素。)大多数这种规模的公司经常在网上求职公告栏里公开一些空缺的职位。这些帖子可以帮助你确定公司并进一步了解,即使发布的具体职位并不适合你。

在小企业,尤其是处于早期阶段的创业公司中,可以找到更具有挑战性的工作。通常情况下,由于这些公司都太小、太新或者过于诡秘而得不到太多新闻关注。除了自己的网站外,他们可能没有足够的资源来宣传空缺的职位,除非你知道公司的名称否则你是找不到这些网站的。一个好办法是询问朋友和熟人看他们是否知道某些初创公司正在招聘。另一种方法是使用在线社交网络。可以使用一些网站,如LinkedIn,搜索在一个领域内的职业人士。大多数人在这些网站上会列出他们的公司的名称,这样你就可以通过这个搜索结果建立一个某一特定领域的公司列表。这可能要花费一番工夫,但回报的一部分是,如果用其他方式找不到这些公司,那么其他人也一样,所以你可能面对的应聘者竞争者较少。2.1.2 获得推荐

找工作的最好办法是通过内推。告诉你所有的朋友你想找什么样的工作。即使他们并不在那些可能雇用你的公司工作,他们也许认识一些知道的人。如果你的简历从“Susan的朋友”或“Bill的邻居”这样的关系投递的,比起成百上千从网上、招聘会或者其他招聘活动匿名投递来的简历肯定会得到更认真的考虑。为了发现潜在的工作机会,一定要使用你的现实中和虚拟的社交网络。

不要感觉你是在利用你的朋友或熟人。公司通常会给予那些成功推荐有能力的软件工程师的雇员丰厚的奖励——多至数千美元。奖金激励你的朋友提供可能更多的推荐简历!(这也是为什么公司在那些经过内推成功获得职位并开始工作后才发放奖金。)

你找到某个公司的联系人后,如何充分利用这个关系完全取决于你。你的方法取决于你对这个联系人的了解程度。

如果联系人不是亲密的朋友,给这个人发封电子邮件来约一个交流的时间。当你与这个人交流时询问有关该公司和工作环境的情况。然后问问所有现有的空缺职位。这个人可能不知道所有的空缺职位——许多员工只知道他所在小组的空缺职位——但是如果你知道某个职位空缺,把这个职位列表给他看。解释为什么你与那些空缺职位很匹配。然后请他提交你的简历。当你结束谈话前,一定感谢他抽时间与你交流。

如果联系人是个亲密的朋友,你可以更随意,问一下有哪些空缺职位并且他们是否想要你。

最好的推荐者是以前和你一起工作过的人。现有员工为你的技能和成就作证明是最强有力的推荐。这就是为什么你需要与以前的同事保持联络——有一天你可能会与他们继续合作。2.1.3 与猎头打交道

许多公司都会通过猎头帮助他们来寻找候选人,特别是当劳动力市场紧张的时候。此外,你可能会发现有必要寻找一家猎头,并为她提供你的信息。

如果你把自己的信息告诉猎头,她就会帮你找工作。当她知道某些空缺职位与你的技能相符时,就会给你打电话。这可能需要一段时间,所以不要气馁。

一些猎头可能比其他猎头能提供更多帮助,所以到处打听一下,看看是否有你认识的人可以给你一些建议。如果你无法通过这种方式找到一个猎头、职业中介或人力资源服务,你可以在网上搜索。可以向猎头要求提供他的成功案例,以便了解猎头的能力,但要知道猎头一般会接触很多人,即使那些经常把工作做得很差的猎头也会有5~10个满意的被推荐者。

当你与猎头打交道时,你必须知道他们的动机:只有当他们推荐的人选被雇用时,猎头才能拿到佣金。因此猎头最重视的就是在尽可能短的时间内将尽可能多的人成功推荐到尽可能多的工作职位上去。正因为如此,帮你找到最好的工作,或帮公司找到最好的应聘者不会给他们带来经济上的好处。如果你意识到猎头只是在赚钱谋生,而不是以帮助你为目的,你就不会太吃惊或失望了。这并不是说猎头是坏人,也不是说他们从公司或应聘者那里占便宜。猎头可以很有帮助,但是你不能指望他们把你的利益置于他们自己的利益之上。

当你从一个猎头那里得到一个可能的机会时,她通常会发给你一些关于职位的描述以及关于公司类型模糊的描述,并不会告诉你公司的名称。这是为了确保你申请职位是通过猎头进行的,让她得到她的佣金。如果独立申请通过猎头公司给你提供的一个职位是不道德的,但有些时候你可能想在继续申请职位前得到关于职位或公司更多信息。比如说这可能是一个你已经申请过的职位,或者公司的位置会使你上下班花费太久。猎头发给你的职位描述通常是逐字从公司的网站复制的,所以粘贴到你最喜爱的搜索引擎里就可以找到最初的职位列表。

有些公司不以任何身份与猎头公司合作,所以不要只通过猎头找工作,因此,避免与任何坚持成为你的独家代理的猎头合作。最后需要注意“猎头”这个词被这个行业之外的人广泛使用,但是大多数这个行业内的人都认为这是个贬义词,所以与他们打交道时最好不要使用“猎头”这个词。2.1.4 直接与公司联系

你也可以直接与公司联系,因特网是这种方式的最佳媒介。许多公司的网站都有如何提交简历的说明。如果公司的网站上列出了某个空缺职位,仔细阅读并针对你感兴趣的职位提交简历。如果你不认识公司内部员工,最好的办法是寻找具体的空缺职位:在许多公司中,针对具体职位提交的简历会直接发送给该职位的上级经理,没有具体指明职位的会放到人力资源数据库中。如果你没有一个正在考虑的特定公司,技术招聘网站是一个展开搜索的好地方。

如果网站上没有提供任何关于提交简历的说明,寻找一个邮箱地址,你可以把简历发送到那里。把你的简历以纯文本方式在邮件正文中发送(这样接收者不需要任何额外操作就能读到它的内容),除非特别说明,将简历同时作为附件发送。PDF文件是理想的格式,或者Microsoft Word格式的文件也可以。除非特别要求,不要用任何其他格式的文件。确保把文件转换为老的Word也能够读取的格式,并用杀毒软件进行扫描(通过把自己的简历添加到邮件的附件中,你可以很容易地做到这一点)以绝对保证你的简历中不携带任何宏病毒。

像这样直接与公司联系有点类似远距离射击,特别是当简历寄到了一般的人力资源邮箱时。许多公司使用自动筛选系统来过滤投递进来的简历,所以如果你的简历中缺少特定的专业术语,可能没人能看到它。请参考附录中让简历通过自动筛选的提示。手中有一份好的简历,应聘花费的时间和努力会更少,而且你也不会损失什么。2.1.5 招聘会

参加招聘会是一种不需要花费很大代价就可以了解许多公司并与之取得联系的方式。在招聘会上成功找到某个特定公司职位的机会是很小的,因为每一个公司在招聘会上都会遇到许多应聘者。然而每个招聘会上的公司数量都很大,总的来说机会还是很可观的。如果你在招聘会上收集名片,并随后与这些人取得进一步联系,你就可以从众多应聘者中脱颖而出。

此外,如果你可以得到大学的就业指导中心、校友会或者职业协会的帮助,对找工作也是很有用的。2.2 面试过程

如果有人对你的简历印象非常深刻并且想与你谈谈,下一步就是一个或多个筛选面试,通常之后还会有一个现场面试。本节为你准备面试中的各个环节并帮助你如何穿着得体以获得成功。2.2.1 筛选面试

筛选面试(screening interview)通常是通过电话进行的,持续15分钟至一个小时。你需要找一个安静的不会被打扰的房间,准备好纸和笔在手边来做记录。筛选面试也可能发生在招聘会现场,或在校园招聘时在校园中进行。

初次筛选面试是同公司的招聘人员或人力资源代表进行的。招聘人员希望能确定你对公司正在招聘的职位感兴趣,同时具备胜任该职位的技能,并且愿意服从该职位的其他要求,比如工作地点变动或出差。

如果你通过了第一次的筛选面试,通常会有第二轮筛选面试。在这轮面试中技术人员会问一些技术相关的问题。这些精心设计的问题是为了淘汰那些简历有水分或缺少该职位所需技能的应聘者。在技术面试中你可能会被要求使用某种基于云的文件共享工具,如Google文档编写一些代码。面试官可以亲眼看看你的编程技能。

你需要像对待现场面试一样对待电话面试,这毕竟也是个面试。

如果从技术面试官那里得到了积极的反馈,招聘人员随后就会与你取得联系,通常在一周以内就会在公司安排一个现场面试。2.2.2 现场面试

你在现场面试(on-site interview)中的发挥是决定你能否拿到工作要约最关键的因素。现场面试由各种各样的技术问题组成:编程实现一个简单的程序或函数的问题;测试你在计算机、语言、编程方面知识的问题;有时还会有数学和逻辑推理方面的难题。本书大部分内容关注如何帮助你解答这些问题,以成功通过面试。

现场面试通常持续半天或一整天,通常由3~6轮每轮30~60分钟的面试组成。早点儿来到公司的办公室好好休息一下,如果可能,在每轮面试开始前都去洗手间一次。关闭你随身携带的手机或传呼机。任何情况下都不要中断面试来阅读并回复短信或电话。与你打过交道的招聘人员或招聘经理很可能会来迎接你。在正式面试开始前,可能会为你提供一个非正式的游览,这是了解该岗位工作环境的好方法。

你的面试官可能是你将要与之共事的团队成员,或是从公司其他团队中随机选择的工程师。大部分公司都有这个规则,即任何一位面试官都有权决定不聘用某位应聘者,所以每一轮面试都很重要。有时同一天里可能有来自两个不同团队的面试官对你进行面试。一般来自任何团队的面试官都有权决定是否给你工作要约。

面试当天,公司一般会带你出去吃午餐。在一家不错的餐馆,甚至是公司的餐厅吃一顿免费午餐当然是一件好事,但不要放松警惕。如果你在午餐时给人留下了不好的印象,就可能丢掉这个工作机会。要有礼貌,避免饮酒和吃容易弄脏衣服的食物。这些原则适用于一切公司聚餐的场合,包括晚上的求职联谊活动。在晚餐适度饮酒是可以的,但一定要有节制。醉酒不太可能会增加你拿到工作要约的机会。

在面试日结束的时候,你通常有机会与公司的老板面谈。如果他花了很多时间来说服你加入公司,就说明你在面试中表现很好,工作要约随后就会到来。2.2.3 衣着

应聘者传统上穿西装去面试。不过大多数科技公司上班穿商业休闲装,甚至是休闲装。某些公司流传着这样的笑话:穿西装的不是来面试的就是来推荐的。

在这方面做一些研究很关键。如果公司没有人穿西装,甚至销售人员也不穿,那么你穿西装可能也没什么好处。另一方面,如果你穿着牛仔裤和T恤,即使面试官也穿着牛仔裤,他也可能会觉得你表现得不够严肃和尊重。问一下周围的人,看穿什么去这个公司比较合适。对于上班着装的期望随着业务的地点和性质而变化。比如,为银行或券商工作的程序员穿西装比较合适。你应该比你应聘的职位平时要求的穿着同样或略微正式一些。

一般来说,穿西装甚至是夹克配一条领带对于大多数技术职位的面试都太正式了。对于男士来说,标准的技术面试着装包括非牛仔布纯棉裤子,有领上衣和便鞋(不要穿运动鞋或凉鞋)。女士的衣着与男性类似。无论你的性别如何,请使用较淡的香水或古龙水。2.3 招聘人员的角色

你的面试和工作要约通常由公司的招聘人员或人力资源代表来安排。招聘人员通常负责安排面试和后勤方面的事务,包括报销你面试的交通和住宿费用。招聘人员通常不会参与是否录用的决定,但他可能会把关于你的信息告诉做决定的人。他们通常会事后给你打电话发工作要约并进行薪资协商。

招聘人员通常对他们的工作很在行。大多数招聘人员都是值得你尊重并对他们有礼貌的人。但是,不要被他们的友好所欺骗,误认为他们是来帮助你的。他们的工作是促使你以尽可能低的薪资尽可能快地与公司签约。像猎头一样,你需要理解招聘人员的角色,这样你才能理解他们的行为:

◆ 招聘人员可能会主要谈到这个职位好的方面,使你忽略这个职位的负面信息。他们通常会告诉你对这个职位有任何问题都可以问他们。有关薪资和福利的问题都可以,但是问关于职位的问题是不明智的。招聘人员对你应聘的职位了解并不多。当你问他关于这个职位的某个问题的时候,他并不太愿意准确地回答你,特别是这个答案可能会导致你放弃这个职位的时候。招聘人员可能会按照他的想象,给出一个模糊的你愿意听的答案。如果你想知道问题的准确答案,最好是直接去问将要与你共事的人。如果你觉得招聘人员讲的不合理,也可以直接去找未来可能的经理。这是有点风险的策略——这肯定不会让招聘人员喜欢上你——但通常雇佣你的经理有对招聘人员决定的否决权和限制权。雇佣你的经理通常愿意比招聘人员更灵活一些。对于招聘人员来说,你仅仅是一个应聘人员而已,但是对于雇佣你的经理来说,你是他要选择与之共事的人。

◆ 一旦决定向你发放工作要约,招聘人员的工作就是尽一切努力让你以尽可能低的薪水接受这个职位。招聘人员的工资通常与成功签约的应聘人员的数量相关。为了让你签约,招聘者有时会扮演职业顾问,询问你的其他工作要约,然后进行针对性分析,让你确定哪一个工作最好。毫不奇怪,这个过程总会得出一个结论,即招聘者公司的工作是最好的选择。

◆ 一些招聘人员对他们的应聘人员有很强的范围意识,他们不会给你未来的团队的联系信息。为了防止这种可能性,在面试时收集面试官的名片,特别是你未来的管理人员。然后你将拥有必要的信息,而无需通过招聘者。2.4 工作要约和协商

当你拿到一个工作要约后,你已经通过了最难的部分:如果你想要的话,你现在已经有一份工作。但是,事情还没有结束。正是因为需要赚钱,你才来找工作。你在事情快结束时的表现将在很大程度上决定你最终能得到多少。

当你的招聘人员或雇用你的经理发送工作要约时,他们也会告诉你公司计划给你的薪酬。但更常见的情况是,招聘人员或雇用你的经理会告诉你公司打算雇用你,同时问你对薪酬的要求。关于这个问题将会在第17章中详细介绍。

当你收到一份包括薪资、签约奖金和股票期权的详细工作要约后,你需要确定自己是否满意。不应该立刻做决定——永远不要当场就接受工作要约。像这样重要的决定,至少要花一天时间来好好思考。一天之内发生的改变往往会令人吃惊。2.4.1 应对招聘人员的压力

招聘人员常常使用各种高压手段使你尽快接受这份工作。他们可能会告诉你,如果你想要这份工作,必须在多少天之内接受。或者给你提供一份丰厚的签约奖金:并且这份签约奖金会按天递减。不要让这些手段干扰你的决定。如果公司想要你(如果已经发出工作要约,则表明公司肯定是这样想的),这些限制和条款都是可以协商的,即使招聘人员声称是不可以的。如果招聘人员拒绝变通,你也可以越过他,直接与雇用你的经理谈。如果这些条款真的是不可协商的,那也可以不去这样一家要求苛刻的公司工作。2.4.2 薪资协商

经过认真考虑后,如果这个工作要约已经符合或者超出你的预期,那就太好了。但是如果你对这个工作要约并不是特别满意,你应该尝试进行协商。许多应聘者认为工作要约是不可以协商的,并且未尝试与公司进行协商就拒绝或者直接同意这个并不十分满意的工作要约。在某种程度上,所有的工作要约都是可以协商的。

你永远不应该因为薪资不满意并且没有尝试与公司协商就拒绝一个工作要约。当你对一个自己很想拒绝的工作要约进行协商的时候,主动权完全在你手中。你已经准备好放弃,所以你也不会失去什么。

即使工作要约在你的预期范围之内,通常也要进行协商。只要你在协商中表现出尊敬和真诚的态度,并且你提的要求也很合理,就不会因为协商而丢掉这份工作。最差的结果是公司拒绝修改工作要约,但你得到的也不比协商之前的少。

如果你决定与公司就薪资方案进行协商,下面是具体的做法:

◆ 弄清楚你真正想要的是什么。你也许想要签约奖金、更好的薪水,或者更多的股票期权。

◆ 安排好时间与合适的协商人进行电话沟通。你的协商对象通常是那个给你发放工作要约的人。不要随意打电话,因为可能碰上协商

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载