这里有你在编程面试中取得成功所需的技巧和方法...

 程序员是互联网时代的主要建设者,其薪资待遇遥遥领先于其余行业。虽然我国html

各项IT 技术的人才缺口较多,可是因为人口基数大的客观现实和信息技术教育的日益程序员

普及,岗位竞聘显得极其激烈。现在连小学生都在学习Python 编程,不难想象,往后面试

会有多少个程序员!若要在应聘中脱颖而出,除了有过硬的技术本领,还应作好哪些算法

准备呢?答案就在本书中!数据库

从内容上来看:编程

本书是面试的指南针,不管读者处在什么阶段——成竹在胸或一脸茫然、高校新设计模式

晋或职场老手、兴趣使然或宏图大志,本书从求职以前的准备工做开始,事无巨细地数组

在每个分岔点作好守候。读者适合什么岗位、知识如何储备、包装如何到位、心态服务器

如何控制、与人事管理人员如何交流、在面试官面前如何表现,均有建议。网络

本书是编程知识的百宝箱,不管读者是闲来无事仍是临时烧香,所喜或所需的门

道——基本数据结构、经典算法、编程语言特征、设计模式、当下主流技术,甚至活

跃解题思惟的脑筋急转弯,本书都为读者逐一备好,开篇引进门,再拓宽知识领域,

以字里行间对面试解题的刨根究底,激发读者对编程的兴趣和热情。

本书是事业的助推器,书中描述的面试过程或编程知识能与读者的切身经历回响

共鸣。本书从第1 版至今,已逾十年。时光荏苒,有什么编程知识还依旧重要,有什

么经验教训还依旧实用,本书积淀下来,就是为了对读者的事业再添一把力。

另外,经过翻译本书,我还发现了本书具备以下特点:

(1) 知识涵盖面广。除了剖析求职准备、求职过程、电话面试的关键步骤和关注重

点外,还分别讲解了二十余项面试重点,包括链表、树、图、数组和字符串、递归、

排序、并发、面向对象编程、设计模式、数据库、图形和位运算、数据科学、随机数、

人工智能、数理统计、脑筋急转弯、知识方面和非技术方面的问题等。

(2) 题型具备典型性。若读者掌握了应对书中题型的技巧,就能在面试时举一反三,

处变不惊。

(3) 讲解具备启发性。与通常教科书不一样,本书不是给出问题后立刻提供并解释答

案,而是经过模拟真实面试的场景,引导读者得到线索,找到问题切入点,最终获得

答案。在引导过程当中锻炼读者的编程思惟。

本书久经打磨,是多种IT 技术职位竞聘不可多得的好书。尽管如此,我仍是敬请

读者在掌握本书要义以后,继续扩大知识面,特别是要关注和钻研与应聘职位相关的

专业知识,方能稳操胜券。

本书主要由程钢翻译,在翻译过程当中力求“信、达、雅”,可是鉴于译者水平有限,

错误和失误在所不免,若有任何意见和建议,请不吝指正,感激涕零!

  

节选自《斩获Offer:IT名企面试策略与编程笔试精解》一书

-----------------------------------------------图书基本信息------------------------------------------------------

 

 

 

书名:《斩获Offer:IT名企面试策略与编程笔试精解》

ISBN:9787302526711

订价:59.8元

出版时间:2019年4月

------------------------------------------------------试读样章--------------------------------------------------------

 

求 职 之 前

动身求职前须要准备充分。若是不知道本身想要什么样的工做,就不该该提出申

请。若是只想作一名好的程序员,是不够的。必须了解市场的需求,并懂得如何提升

和包装看家本领,以确保获得意向公司的青睐。

1.1 了解本身

与刻板的程序不一样,全部程序员都是不同的。了解本身是什么样的程序员对于

找到合适的工做相当重要。短时间内作一些本身不喜欢的事情还凑合,但令人甘愿长期

投入的仍是那些能触发兴趣点和兴奋点的工做。优秀的程序员对其工做每每充满热情,

若其乐稍逊,则不能全情投入。

若是不肯定本身的兴趣,那么能够试着回答如下问题:

● 你是系统程序员仍是应用开发人员?系统程序员致力于使计算机系统保持运

行的代码,例如框架、工具、编译器、驱动程序、服务器等。其余程序员是他

们的主要受众,所以系统程序员不多与非程序员互动——并且这项工做一般与

用户界面关系不大或者无关。另外一方面,应用开发人员负责用代码实现那些非

程序员工做中须要代劳的部分,而且一般会与非技术人员进行更多的互动。

不少应用开发人员以为与非技术人员就技术话题进行沟通困难重重,但与此

同时,他们又但愿本身的做品有人捧场,而且期待那些捧场的人不仅是其余

程序员。

● 你喜欢编写用户界面吗?用户界面设计——也称为用户体验(User eXperience,

UX)或人机交互(Human Computer Interaction,HCI)——是一种涉及各类技能的

工做,包括编程、图形设计和心理学。这项工做很是引人注目,由于用户界面

是各类应用中可见度最高的部分。用户界面设计在移动应用开发中尤其重要,

由于移动设备的限制条件要求咱们有更好的创意和创新。若是你拥有相关技能

并喜欢这项工做,那么你将成就一家精英公司:不过,很多程序员以为这项工

做颇有讲究,难以作好,并且老被人挑刺,特别是涉及国际化和易用性的时候。

● 你是调试能手吗?若是你认为在本身的代码中发现问题很困难,那么想象一下

给别人的代码解决问题是什么感受。调试工做须要强大的分析和解决问题的能

力。找到并修复问题自己是很是有益的。你须要肯定你是否乐意一直扑在维护

工做上(固然,维护本身的代码责无旁贷,毕竟程序员都必须精通调试)。大多

数状况下,特别是在老公司中,维护编程工做主要涉及如今被认为已过期或不

再流行的旧技术。依靠旧的技术经验和技能找工做路子不宽,但因为与旧技术

有关的能人稀缺,所以为数很少的几家依赖旧程序的公司仍会求贤若渴。

● 你喜欢测试吗?测试——也称为质量保证(Quality Assurance,QA)——要求具有

对各类细节的缜密观察能力,以确保涵盖程序的每一个可能的使用场景,而且要

求具有创造力,经过尝试开发人员从未考虑过的输入组合来发现程序中的问

题。熟练的测试员十分稀缺,编写工具和自动化测试用例须要良好的编程能力。

● 你是架构师仍是编码员?每一个编码工做都包括一些设计,但每一个工做都更侧重

于本身那一面。若是你喜欢设计,特别是为大型项目设计结构,那么软件架构

师的职位可能比以编码为主的工做更具吸引力。虽然成为好架构师须要很好地

理解如何编写代码,但架构师这个职位会涉及大量会议和人际交往,不多或根

本没有机会编码。除非受过软件架构方面的正式培训,不然成为架构师的一般

办法是先作好编码工做,而后展现出对项目各个部分的设计和装配才能。

上面的问题与编程的类型有关,但有吸引力的非编程职位和心仪的工做环境一样

值得考虑:

● 你对管理感兴趣吗?成为项目经理是一些程序员的长期目标,而另外一些程序员

一想到此却感到畏惧。若是将管理定为目标,则须要培养领导才能,并展现出

在应对技术方面的同时能处理好软件开发中有关人的问题。若是不将管理定为

目标,那么能够找一家提供良好技术职业发展途径的公司,这样能避免晋升后

被迫管理别人(不管选择哪一种职业途径,领导能力仍然是得到晋升的必要条件,

但领导能力与人员管理能力是有区别的)。

● 你想为大公司工做吗?在大公司工做有利有弊。例如,大公司能提供更好的工

做稳定性(只是在经济衰退期间裁人是常事)和某种职业途径。公司品牌能获得

非技术人员的承认。另外一方面,大公司常见的官僚做风、严格制度和公司内部

竞争可能让人感到窒息。

● 你想为小公司工做吗?薪酬可能会低些,但随着公司步入正轨,底层角色是可

以开创出一番天地的(报酬可能也会有惊喜)。此外,小公司的工做环境一般比

大公司随意些。固然,缺点是大多数创业都会失败,失业可能就在一两年间,

届时可不像大公司,极可能没有遣散费。

● 你想作开源项目吗?绝大多数编程工做曾经都涉及专利和闭源项目,这让一些

程序员感到不满。如今一些公司在观念上有所调整,倾向于更开放的软件开发

模式。你们能够基于开源项目,而且能因这种参与形式而拿到报酬。值得注

意的是,若是你以为本身的工做项目是开源的这一点很重要,那么最好去找

已参与开源的公司。试图在传统软件公司中捍卫开源一般只会获得挫败感和

一场空。

● 你想参与长期项目仍是短时间项目?一些程序员渴望改变,在每一个项目上最多愿

意花费几个月的时间。若是你喜欢短时间项目而且不介意出差,那么在咨询公司

工做可能比在更为传统的公司中工做更有意义。

其实,这些问题没有普适的答案,回答的方法也没有正确或错误之分。给出的回

答越真实,觅得的职位才越能趁心如意。

1.2 了解市场

了解本身想要什么工做当然好,但不要过于狭隘。咱们还须要了解当前的就业市

场以及它如何限制你寻找“理想”的工做,特别是在经济衰退期间——例如20 世纪90

年代末的互联网泡沫,以及2010 年先后全球房地产和银行业的崩溃。

1.2.1 基本的市场状况

想了解开发人员就业市场的状况,有不少信息来源,包括如下方面:

● 社交网络。像LinkedIn 和Facebook 等社交网络现在正迅猛成长,已经成为各

类大小企业的虚拟招聘市场。LinkedIn 尤其值得关注。其余社交网络能够间接

展示市场“脉搏”,也能够为新的甚至是潜在的职位发布提供有价值的线索。

● 在线求职网站。研究哪份工做好时能够参考两类网站。一种是罗列型网站——

例如Dice(专一于技术相关的职业列表)和Monster(各类职位列表的网站)——能

展现当前招聘中的岗位。另外一种是评论型网站(如Glassdoor),会交流谈论工做

条件、薪水、奖金、津贴以及其余有助于找到趁心公司的信息。

● 书店。尽管愈来愈多的程序员资料能够在线得到,但不管是印刷版仍是下载版,

专业出版的书籍仍然很重要。以各类主题出版的书籍的数量很好地代表了编程

社区对该主题的兴趣程度。特别须要注意那些忽然成为主流的高精尖话题,但

要知道在大多数公司中,主流技术的应用滞后于书中的美好图景好几年。

● 专业发展课程。职业院校和大学致力于掌握企业招人的前沿状况,并围绕招聘

需求创建专业发展课程。

若是你已经毕业,那么能够从母校或者当地培训机构了解计算机科学专业的学生

须要掌握的计算机语言和技术。虽然学校讲授的并不老是与企业想要的一致,但教育

机构试图灌输给学生的是企业用得着的实用技能。

1.2.2 关于外包

外包和离岸外包——把任务托付给其余公司或者外国部门——是技术类就业市场

的重要组成部分。工资管理和物业维护等辅助业务活动的外包已经存在了几十年。近

来,得益于廉价计算机的兴起、廉价长途通讯在互联网上的实现,以及低薪发展中国

家技术型劳动力的能力被承认,外包已经扩展到编程领域。在2005 年左右,出现了一

阵外包,特别是离岸外包。在过去的几年里,这已经算不上热门了,由于大多数打算

外包的公司已经外包了他们所能外包的一切。此外,随着发展中国家(特别是印度和中

国)的工资上涨,离岸外包的成本也随之上升。因为不一样文化背景的劳动力工做进度不

同,会带来隐性的劳动力协调成本,所以意识到这一点的公司将之前外包的工做转为

内包。尽管如此,外包和离岸外包仍有可能存在,例如一些公司正在发展,以为这个

办法能够削减成本,又如一些公司成立后会考虑是否由于一直雇用本地劳动力而付出

了太多代价。

若是以为外包(特别是离岸外包)很困扰,那么要考虑采起措施以免所从事的工做

可能在未来的某个时候被外包。如下是一些建议:

● 为软件开发公司工做。软件公司的存在理由是它所开发的知识产权。虽然大中

型公司可能会在世界其余地方开设开发中心,但精明的公司不太可能将其全部

业务转移到其余国家,也不会将其将来托付给外部公司。即使如此,一些公司

仍是会出于成本或其余缘由将项目的所有或大部分外包给其余国家。所以,应

聘时研究一个公司的行为和政策是值得的。

● 为外包商工做。出于五花八门的缘由,许多外包公司会在美国这样的国家雇用

员工。

● 沿程序员食物链往上走。面向设计的工做不太可能外包。代码员相对廉价且数

量众多,而优秀的设计师难找(这得假设公司认可良好的设计技能与良好的编码

技能是分开的)。另外一种让本身更难以被替代的方法是掌握领域专业知识——与

你编写的程序相关的专业知识,但其又在编程领域以外。例如,若是有人开发

财务软件,其除了编程以外还涉及会计技能的应用,那么外包给这我的的工做

要比这我的纯粹是一个程序员困可贵多。

● 作管理工做。管理工做能够免于被外包,所以以管理为导向的职业途径是一个

值得考虑的选择。

在全部这些选择中,沿食物链往上走一般是最好的方法。工做须要的非编程知识

越多,或者与客户的互动越多,被外包的可能性就越小。固然,本身的工做永远不会

被外包是不可能的,本身的工做永远都能保住也是不可能的。毕竟,公司可能会在任

什么时候候缩紧或关闭正在推动的项目,并让雇员失业。所以,在整个职业生涯中练就一

招鲜的本领和顺应市场的技能很是重要。

1.3 培养顺应市场的技能

附录部分讨论了简历,它是获取面试机会的营销工具。你们都想要的东西每每是

最叫座的,因此让潜在老板满意的重点是掌握顺应市场的技能。

要在笔试和面试中脱颖而出,积攒实力和成果是必需的,特别是第一次走进就业

市场。如下是一些方法建议:

● 提高资本。像谷歌这样的公司以偏心研究生学位求职者而闻名。得到硕士或博

士学位是提高资本的一个途径。此外,还有其余途径,例如参加大学或专业培

训,以及参加编程竞赛。

● 不为证书烦恼。本书的做者认为编程证书价值有限,由于极少工做须要看证

书。此外,顶级企业中几乎全部程序员都没有正式的编程证书,而面试/评估

你的就是这些人。与其花时间考证,不如试试其余可取途径(例如参加业余项

目或培训)。

● 参加业余项目。拓展技能集的一个好办法是参加与主营工做或学习重点无直接

关系的项目。发起或加入开源项目开发是一种方法。或者,若是已经就任,那

么就看公司是否会让你参与辅助项目。

● 学生时代好好表现。虽然成绩不表明一切,但倒是公司选拔没有工做经验的应

届毕业生的凭据。成绩越好,特别是在计算机科学和数学方面成绩好,越能给

潜在的雇主留下深入的印象。

● 不断学习。正规教育的结束并不意味着应该中止学习,尤为是当有条件从各类

来源得到有关编程的大量信息时。不管书本仍是博客,也不管编程种类,总有

办法将学识维持在最新状态。这也是扩展视野和发掘其余爱好的好方法。这种

学习方法没法在简历里体现,但在技术面试中能够凸显出来。

● 参加实习。可以在课余参加实习的应届毕业生——特别是那些参加合做教育项

目的人——与还没有走上社会的同行相比占有巨大优点。现实世界的软件开发通

常与学术环境中的软件开发不一样,潜在的雇主也明白这一点。

● 参加代码竞赛。TopCoder、HackerRank、CodeWars 和几个相似的网站会让开

发人员“面对面”解决编程问题。若是取得优胜,那么意味着你比竞争对手或

机器人能更快地解决问题,可让本身的排名上升并得到更高评价,这一点可

以在简历中体现出来,让你们知道。并且,即便输了,这些也都是应对编程面

试的绝佳实践。这些网站的大多数盈利模式都围绕着推荐候选人和收取招聘费

用展开,因此若是表现优秀,则好的工做机会将接踵而来。一些公司试图暗自

组织编程邀请赛来跳过中间人,邀请对象多是那些在公司网站上举动特别的

人,例如他们曾经在公司网站上搜索过编程相关的主题。

无论处于职业生涯的哪一步,不断学习是关键。一晚上之间练就顺应市场的技能是

不可能的。每一步虽然须要自觉和努力的倾注,但它可让你的职业生涯一路受益。

1.4 完成任务

公司须要可以完成任务的软件开发人员。在技能和教育方面,即使纸面上显得很

优秀,但证书和知识不能造出产品和服务供公司销售。能成事是真正从其余候选人中

脱颖而出的能力。

得到博士学位等高级学位、成为普遍使用的开源项目的可信赖贡献者或带着从酝

酿到发布都参与的产品都是重大成就。但小成就一样重要,例如增长产品功能、明显

地提高产品性能、启动并完成业余项目,或者针对一个专题开发出好用的程序。这些

都代表一我的有完成任务的能力。

招聘人员和招聘委员但愿看到一个应聘者有多项成就——一种能完成任务的表

现。高水平的、经验丰富的开发人员的表现大都如此。在简历和网上我的资料中展现

这些成就是必需的。不管成就大小,都要随时准备好介绍它们的机智和自信。这很是

重要!确保面对非技术人员也可以清楚简洁地描述本质问题以及本身的项目是如何解

决问题的。表现出对编程的热爱是绝对可取的面试招数。清楚地表达那份热情如何驱

使本身作出供人使用的产品和服务将能实实在在地让本身在面试者中脱颖而出。

1.5 准备好网上我的资料

网上我的资料——网上公开的各类关于本身的东西——和简历同样重要。招聘者会

经过网上我的简介寻找合适的候选人。筛选者经过它们来清除不须要的申请人,而面

试官经过它们来准备深刻交流的问题。

网上我的资料由如下一些或全部内容组成:

● 应聘者名字的谷歌搜索结果。它会成为潜在老板和同事的第一印象。

● LinkedIn 我的简介。LinkedIn 是一个用于跟踪专业人士之间联系的社交网络。

能够免费加入其中,并建立一个关于本身的详细介绍,包括工做和教育状况——

本质上就是在线简历。同事和客户能够公然地核实你或你的工做,这会很是有

价值。

● GitHub 我的主页。许多雇主会在见到真人以前经过GitHub 我的主页评估应聘

者的工做,所以有必要花点时间清理GitHub 我的主页,以便它反映本身最好

的代码。在隐私设置中删除或更改不完整的或质量不高的版本。若是没有多少

公开项目,则请将本身最得意的代码开放,以便明确表示本身写太重要的代码

且拥有GitHub 的使用经验。

● Stack Overflow 网站。该网站会在Google 搜索结果中显示,也许会被人力资源

部门查到。若是你最近问过的基本问题反映出本身学识浅薄,则可能须要将这

些问题删掉。若是尚未在该网站创建我的简介,那么建议置办一下,特别是

在几个月的求职时间里,你能够花时间解答一下他人的问题。

● 天使投资者的网站。这些网站不只将投资者与创业公司联系起来,还将创业公

司与潜在的雇员联系起来。AngelList 网站是这一类别中的重要角色。建议在其

中建立反映我的兴趣和专业技能的我的资料。

● 其余社交网络的我的资料。其余社交网络(如Facebook、Twitter 或Snapchat)可

能会被查看,具体取决于隐私设置。确保清理和收紧我的资料,防止不专业的

痕迹公之于众。

● 我的网站。这是更深刻反映我的特色和我的兴趣的潜在情报源。若是发表过关

于政治或有争议话题的言论,那么可能得在求职期间去掉它们。

● 文章和博客帖子。若是写过与编程有关的主题,那么这但是招聘人员评估我的

经验的好依据。

● 评论和论坛帖子。它们提供了另外一种方式来深刻表现我的编程水平以及我的对

技术和技术公司的通常态度。

雇主从网上我的资料中得到的印象将影响录用的机会。若是一我的在简历中表示

本身在C#方面有丰富经验,而论坛帖子代表那我的6 个月前曾发帖询问在C#中如何打

开文件,则此人的经验水平可能被认为是浮夸了,会致使整个简历受到质疑。或者,

若是雇主们看到被认为是使人困扰的网上我的资料,不管简历看着有多好,或者那些

网上资料实际上是好久以前写的,他们均可能在面试前把人淘汰掉。没有人会对本身在

高中或大学经历的全部事情津津乐道,除了那些在后互联网时代长大的候选人——由

于涉世不深,让他们忘了那些事情彷佛还太早,而大多数年长的候选人没有这方面的

困扰。

在申请工做以前,最好花点时间仔细查看本身的网上我的资料。以公司的眼光查

看有多少信息(好的或坏的)会指向本身和展示本身。若是网上资料有不利于被录用的可

能,则请采起一些措施来整理这些资料。若是可能,则从网页和搜索引擎中删除有问

题的材料。

花一些时间来修饰我的资料中的积极方面。若是没法删除网络上有关本身的不

利材料,那么这一点尤其重要。能够试着学一点关于搜索引擎优化(Search Engine

Optimization,SEO)的内容,并应用其中一些技术来使我的资料的积极方面出如今搜索

结果中较旧的、不太有利的搜索项以前。

最后,能够看看其余有我的简介特色的网上资源,这样作很是有用。大多数院校都

有工做网站,校友能够在该网站上传我的资料。一些公司为前雇员提供了相似的网站。

填写网上我的资料时不要给本身挖坑,要展现最好的本身。

1.6 小结

在正式求职以前,你的所做所为对于找到合适的工做相当重要。考虑到这一点,

要留意如下事项:

● 做为程序员和将来员工,看清本身喜欢什么和不喜欢什么。

● 掌握市场状况,以此寻找并申请最合适的工做。

● 培养顺应市场的、雇主须要的而且有助于职业生涯的技能。

● 管好本身的公开资料,以最佳方式展现本身,并确保不出意外地留住潜在雇主。

一旦以上全部事项就绪,就能够开始求职了。

求 职 过 程

大多数科技公司的面试和招聘程序都是相似的,因此针对须要经历的各个环节,

准备越充分就越容易成功。本章将解析整个求职过程——从联系公司到开始新工做,所

以你没必要靠头几回申请栽跟头来学到经验。科技公司的招聘程序一般与传统公司大不

相同,所以即便你工做过一段时间,也会以为这些信息颇有用。

2.1 寻找和联系公司

找工做的第一步是找到感兴趣的公司并与之联系。虽然推荐是找工做的最佳方式,

但与猎头合做或直接联系公司也是可行的。

2.1.1 寻找公司

若是知道本身最想在哪些公司工做,则能够更好地找到目标公司。大公司很容易

找到——有那么十来个国际国内的科技公司名字一拍脑门就能想出来。经过阅读商贸

和本地行业刊物文章,能找到适合的中型(以及大型)公司。许多报纸杂志会按期编制实

力公司名录和优秀办公环境榜(别太相信这些排名,由于大公司的工做生活质量每每

存在很大差别)。大多数榜上有名的公司会在网上求职板块中或多或少地昭示它们的

职位空缺。即便发布的具体工做不合适,这些告示也有助于你从中挑出进一步考虑的

公司。

小公司(特别是早期创业公司)可能更难找到。这些公司一般过小、太新或太隐秘,

没法得到其太多新闻。除自家官网外,它们的资源不足以用于宣传它们的存在,除非

知道公司名称,不然不可能找到它们。找到这些公司的一个好方法是询问熟人和朋友

是否知道有创业公司正在招聘。另外一种手段是使用社交网络。此外,还能够查看在线

的职位发布板(如Dice)、天使投资网站(如AngelList)或本身有权访问的目标职位列表(如

校友发布的职位招聘)。

能够使用LinkedIn 之类的网站在某个范围内按专业搜索人员。这类网站上的大多.....

 

想了解更多关于《斩获Offer:IT名企面试策略与编程笔试精解》内容,请点击:

https://item.jd.com/12778744.html