2023程序员面试白皮书.docx
《2023程序员面试白皮书.docx》由会员分享,可在线阅读,更多相关《2023程序员面试白皮书.docx(148页珍藏版)》请在课桌文档上搜索。
1、程序员面试白皮书20221 .第1章简历、面试和Offer第1章简历、面试和Offer整个招聘流程主要如下:申请某个公司你感兴趣的职位,投出你的简历。HR从简历库中筛选符合要求的简历,安排面试。面试主要分为电话面试和现场面试,如果面试表现优秀,HR会同你讨论待遇、福利、起始时间等具体信息。针对上述流程,让我们一一分析其中的关键环节。1.1 简历简历是求职的第一关,尽管简历不能决定最后的录取结果,但是一份结构清晰、内容充实且具有针对性的简历,可以给你带来宝贵的面试机会。本节将从格式、内容安排和描述技巧等方面介绍如何生成一份对HR有吸引力的简历。可以根据不同的职位描述适当更改简历的某些内容,但不建
2、议准备太多份区别过大的简历,以免自己投递的时候产生错误。如果你真的需要这么多简历以应对不同职位,则应当考虑下自己的优势在哪些方面,适当减少求职目标。注意,下文的描述注重在北美求职的简历结构,其中大部分要点具有普适性,但是如果在国内求职,有些地方可能需要根据实际要求进行更改。1.1.1 格式除非你想面试用户体验或者设计相关的职位,否则简历的格式尽量以简介清晰为主。标题及名字等重要信息可以适当加粗或者增大字体,其他文字描述尽量统一字号。字体选定一种即可,不建议用不同的字体去突出不同的内容:不同的字体会显得版面杂乱,并且对排版造成困难。英文简历Calibri是比较适宜的字体,中文可以用宋体。简历可以
3、用WOrd、Lalex、PageS或者InDeSign制作,但是最后务必导出成PDF,确保在不同的平台上,对方看到的格式一致。1.1.2 内容安排简历是一个提供信息、展示自己的平台。对于刚毕业、没有什么工作经验的人来说,简历一般控制在一页为宜,如果是PhD,需要适当列举一些相关的文章发表信息,那么简历可以扩展至两页。这里就给一个示例,它在一页纸的长度中精炼地描述了求职者的教育背景、实习经历、技能和专业背景,如图所示。AnakinSkywalkcrContactInformationSchlofComputerScience,Carn唯eMellonUniwreityTl:(XXX)XXX-XX
4、XX5000ForbeeAvenUieE-mail:xxxQandrew.cmu.eduPittsburgh,PA15213Website:http:WWW.website.811EducationCarnegieMellonUniversity.Pittsburgh,PAMasterofScienceinInformationTechnologyAugust2013December2014(expected) Specialization:XXX1GPA:XXX Coursework:MultimediaDatabaseandDatamining,MachineLearningwithLar
5、geDatasets,DistributedSystems,WebApplicationDevelopment,OperatingSystemsXXXUniversity,Beijing,China(PR)BachelorofScienceSeptember2009July2013 Mjor:ComputerScienceProfessionalExperienceXXXInctPaloAlto,CASoftwareEngineerInternMay2012August2012 BenchmarkedXXXperformancebyimplementingaXXXwithXXX. Profit
6、edMdexploredwaystoimproveperformanceforXXX.ReducedthePrOCCeSinglatenciesbyXX%throughXXXandYYY.XXXInc.1Beijing5China(PR)SoftwareEngineerIntcmMarch2010-June2010 DesignedandimplementedaXXXsystemtoautomaticallyXXX. BuiltaXXXbasedrecommendationsystemtoautomaticallyrecommendationadstocustomerswithXXXandYY
7、Y.ThisSyStemachievesaXXXprecisionandXXXrecall. ImprovedaXXXalgorithmtoautomaticallyfilternoeinformationfromextractedwebpagandimprovedtheprecisionofthisalgorithmby50%throu汕replacingXXXmodulewithYYYmodule.XXXInc.,Shenzhen,China(PR)SoftwareEngineerInternAugust2008November2009 DesignedandimplementedaXXX
8、system,whichconsistedofXXXandYYY.ExperimentsShOWedthatthissystemwasaUetoXXX.SkillsC,C+,Java,Python,.NET,MatlabfBash,SQL,Linux,Hadp.HonorsandAwardsXXXScholarship,XXXCniveraity.2013YYYAward,XXXUniversity.2012图1-1一页纸的简历简历的第一要务是让对方能够认识并联系上你,所以名字、邮件、电话、地址等基本信息缺一不可。特别的,对于在美国本地求职的人而言,邮编很重要,因为网上的申请系统往往会根据邮编
9、将申请者按地域划分。对于很多公司而言,他们会优先考虑本地的申请者。所以当你申请的公司在当地有总部/分部时,务必写上本地的邮编。这里有个小技巧,由于绝大部分科技公司都在加州,特别是北加州硅谷附近,所以如果有朋友在加州的话不妨写朋友的地址。这样做的确可以提高被选中面试的几率,甚至有些小公司可能会跳过一轮电话面试直接邀请你去公司面试。现在绝大部分面试过程都是通过电话或邮件确定,除了最后给你发Offer,招聘的中间部分都不会给你提供地址寄送任何文件。如果公司决定给你Offer,你也完全有机会和HR确认/更新你的实际地址。这样做的缺点是,可能去公司面试的时候你需要自己安排机票住宿,如果真到了这一步,权且
10、就当花钱买个机会了。基本信息之外,对于刚毕业的学生而言最重要的信息包括学校、专业和学位。学习成绩对于大部分公司而言只是加分项,如果GPA低于3.3,可以考虑不包括成绩。当然,如果GPA是你的亮点之一,那也完全可以包含此信息。在这方面,OraCIe是出了名的名校控,如果你高GPA、名校出身,基本上半只脚已经踏入了OraCIe。相对而言,其他公司并没有这样的要求。此外,对学生而言可以列举一些在校学过的相关课程。只需要列举课程名即可,内容数量以5项左右为宜,课程名尽量选择大家熟知的,比如算法、数据结构、操作系统等,如果是研究生课程,可以加上“高级(advanced)”关键字。简历中另一个十分关键的内
11、容是之前做过的项目描述,包括工作经历、实习经历或者课程项目经历,这些部分的目的在于展示你具有相关经验,具有较强的技术实力,能够加入团队一起完成一个复杂的项目。这里,我们主要介绍如何选择合适的项目,在描述技巧部分,会进一步介绍如何描述使得你的项目更有趣。就项目内容而言,你需要优先选择和职位描述相关的项目,相关性包括:需要相似的知识,需要使用相同的软件或开发环境,需要类似的编程语言或编程模式,需要实现类似的功能等等。这些项目最能体现你的价值,使得你从一堆申请者中脱颖而出。如果没有相似的经历,那么你可以列举一些比较复杂的项目,突出你的综合能力。这些可以包括:毕业设计、课程的学期作业、网上参与合作的开
12、源项目等。列举的目的主要是突出你的技术水准优秀,具有与他人合作的能力。就项目种类而言,你需要优先选择业界的工作实习经历,只要它们和你所求职位的描述大体在同一个行业即可。毕竟,有实际的工作经验可以传达下列信息:你对业界有一定的了解,熟悉业界的开发模式和开发周期,能够适应公司的工作环境。简历的最后部分可以用来列举你的技能,包括熟悉的编程语言、开发环境、技术强项等。这部分的目的在于让HR能够从简历库中匹配到你的信息。通常,每个职位都有一些技术要求,HR会通过查询关键字,从简历库中选择匹配程度高的简历。这部分可以大大增加简历被匹配上的可能性。列举的原则是,并不需要特别熟悉,只要实际用过就可以在此列举。
13、注意,如果你有幸被安排了面试,一定要回到这个部分,确保你所列举的部分至少都能回答一些基本的问题,千万不要给人做假的感觉。往往,HR并不一定了解你项目部分的描述是否与职位要求一致,因此,你这部分所列举的技能需要尽量用业界标准的语言,列举名词即可。1.1.3 描述技巧描述的技巧主要体现在项目描述方面。项目描述主要突出你做了什么,实现了什么样的目的。项目名称一般需要让读者大致了解你做了什么,然后以如下模版,”通过开发方式(或者技术),做了,最终实现了的结果”,描述项目的具体内容。就英文简历而言,一般以过去时为主,以动词开头,描述你做过了什么,实现了什么目的。举例如下:SoftwareEngineer
14、ingInternship,XXCompany,6/1/2014-9/1/2014Internedwiththeserverteam.ImplementedadistributedaccesscontrolalgorithminC+,whichimprovedlogintimebyaround50%.英文简历常见的另一个问题是如何翻译专有名词,比如在国内大学获得的种种荣誉等。此时,一定要参考网络资料,确保读者的理解和你想要表达的意思一致。甚至可以用一句话简单描述这是怎样的荣誉,或者用百分比表示只有top的学生才能获得该项荣誉。举例如下:ExcellentStudentAward(lop3%)G
15、rantedtorecognizeoveralloutstandingperformance.另一个很好学习途径,就是去Linkedln上看一些优秀人士的个人主页,特别是你想去的公司的工程师的背景。一般都会很清晰地构建他的目标和过去经历,不需要照搬内容,但可以给你启发,当你去投这些公司时.,你就知道什么样的简历更容易被他们欣赏。1.2 面试根据面试的不同对象,在招聘过程中你可能需要面对HR、技术面试官和老板。针对不同的角色,你应该准备不同的面试方式。具体分析如图1-2所示。面试官他想要知道可以向其询问人力资源你是谁?你的职业兴趣是什么?公司的整体信息和组织结构;开放的职位工程经理你做过什么项目
16、?具备什么技能?对什么项目感兴趣?团队的职责是什么?团队目前和将来会做什么项目?团队在找什么样的人?产品经理对公司产品的观点/反馈/建议。如果让你设计一款产品,你会怎么做?公司的下一步产品是什么?公司面临的关键性挑战是什么?公司中的工程师如何与产品经理交互?午餐面试你之前或当前公司/学校的团队怎么样?你喜欢他们吗?为什么?你怎样融入公司的文化?公司中的团队是怎么样的?他们有哪些团队构建活动?者工程师如果你能够提出合理的清晰的问题,如果你能够有效地表达你解决问题的规划,如果你最终能够解决这个问题那么,请展示你的代码一般的工作流程是怎样的?公司使用的技术栈是什么?架构师你是否能够以可扩展的方式解决
17、问题?你是否能够认清系统设计中的关键权衡?公司使用的技术栈是什么?公司如何使用这些技术来解决现实世界的问题?图1-2面试须知1.2.1 HRHR是你与公司的连接点。通常,HR负责安排协调面试,主要通过邮件联系。HR也有可能会直接打电话联系你,目的是了解你的基本情况,包括身份、毕业/离职时间等。HR通常会介绍职位要求和公司的基本情况,并且在面试当天接待你,了解你是否有其他面试安排或者其他公司的Offe此外,HR还负责面试你的沟通能力,向老板反馈性格方面与团队的契合度以及对公司感兴趣的程度。因此,每次与HR的沟通也需要热情、职业。适合向HR了解的信息包括:公司的整体氛围、面试的流程安排、最近公司人
18、员流动情况等。1.2.2 技术面试官技术面试官主要负责衡量你的技术水平,以及判断你是否符合职位要求。总体而言,对科技公司,技术面试官的意见最为重要。技术面试包括电话面试和现场面试,前者主要偏向概念性的问答,也包括通过协作网站直接写代码等。现场面试通常包括白板写代码,解决一个算法问题或者设计问题等。本书的主要目的就是帮助你通过这轮面试。一些面试的小技巧如下:一定要先沟通,明确自己了解题意,不要过分考虑或者欠考虑。首先可以给出一个比较容易想到、但并不是最优的解决方案,再逐步优化。在思考的时候也要把思路讲出来,哪怕不是很成熟的方案。一旦遇到困难,可以先自己设法解决,如果五分钟没有思路,可以向面试官求
19、助。适当的提示并不会影响你面试的最终结果。当开始写程序的时候,尽量注意语法格式、变量命名等,避免写伪代码,越接近真实代码越好。写完以后自己检查下有没有明显的错误,可以列举几个简单的测试数据,与面试官一起检验一下整个运行过程。面试是一个合作解决问题的过程,沟通一定是面试的关键:需要通过沟通展示你的逻辑性、理解能力和表达能力。在面试的最后,通常对方会给你提问的机会,你可以问的问题包括:团队平时使用什么样的技术,通常的工作压力和工作时间,公司最让人兴奋的地方;在当前职位工作了多少年,面试官之前的工作经历与现在相比有什么异同等。面试考察的基本功,包括以下方面: 程序风格:能正确使用缩进,括号要对齐,变
20、量名可以起的有意义; 编码习惯:异常检查,边界处理; 沟通:让面试官时刻明白你的意图,不要闭着眼睛不停地写。因为你的算法未必对。对了你也未必写得出来。中间稍微有点问题,你就失败了。对于面试官来说,他根本不知道你的解题进行到哪一步了; 测试:主动写出合理的测试用例(TeStCase),一些常见的用例,如nW检查。一般你没写的话,面试官会让你写,但如果你主动写出来,说明你有好的习惯,容易加技术面试的流程通常如下,可供参考。当你拿到一个具体问题时,可以按照以下流程回答:1 .明确题意:通过与面试官交流明确需要解答的问题。这部分主要为了让自己放松心态,并且给面试官留下你具有良好团队意识和交流能力的印象
21、。2 .描述大体思路:描述你打算用什么算法,什么数据结构。主要是为了让面试官了解你的思维过程,如果你给出的解答与他想要的答案偏差太多,可以及时纠正。同时,描述思路也给了你自己思考的机会。3 .实现算法:先处理边界条件。对于重要的算法模块,加一些注释或者与面试官进行交流。目的是让面试官始终了解你在做什么,算法框架是什么。4 .跑一个测试:用一个测试用例走一遍你写的程序。目的在于和面试官一起确保你的算法是有效的,可以在过程中及时发现并纠正自己的错误。同时,给面试官留下你有写单元测试(unittest)习惯的良好印象。5 .描述算法复杂度,回答面试官的问题。1.2.3老板团队的老板通常最后一个出场面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 程序员 面试 白皮书

链接地址:https://www.desk33.com/p-654292.html