程序员面试宝典,程序员两大困惑

10月24日,不知道从哪一年开始,被定义为程序员日,因为,1024是计算机重要的计数方法,1024是2的十次方,二进制计数的基本计量单位之一。针对程序员经常周末加班与工作日熬夜的情况,一些公司和机构倡议每年的10月24日为1024程序员节,在这一天建议程序员不要加班,好好过节。1G=1024M,而1G与1级谐音,也有一级棒的意思。

有程序员朋友问:BLUES,可否写一点关于程序员的职业发展文章?我在20多年前写过代码,还是DOS时代,那时候实现的是一个题库系统,自动出题考试,算是一个远古程序员。这是一篇经典文章,相信会给程序员们带来很多参考。现在,每天和程序员打交道,但不敢说懂程序员,如果要写,也是找真正的程序员来写,尤其是找那些已经成长为企业技术骨干的架构师们,用自己的成长经验告诉大家,程序员从职场小白如何成长起来。要让程序员写文章,是不是比写代码更有难度?于是,BLUES草拟了几个问题,让一些行业资深程序员们来回答。1. 自己作为技术路线的应聘者,在校招时候,是如何选择第一份工作的?考虑过什么因素?选择第一家公司的原因是什么?2. 目前工作几年?做过几个项目?在技术方面,有怎样的成长?3. 让你获得进步和成长的方法,有哪些?4. 在作为程序员工作的第一年,遇到过的最大问题是什么?如何解决的?5. 对今年的技术背景的毕业生,有什么校招的建议?例如笔试、面试的方法,注意什么6. 对程序员工作的前三年?有什么建议?没想到,居然收到了这么多的回复,有的回答甚至可以独立成篇,相信对程序员朋友们的职业发展有很大的参考。回答问题的朋友们,分别来自:腾讯、今日头条、迅雷、YY语音、100教育、梅沙科技,有10年经验以上的老司机,也有刚刚工作2年的程序员小鲜肉。下面是参与本次程序员问答的程序员:大麦,飞笛资讯技术负责人,原腾讯高级工程师,工作10年;茂锴,腾讯高级工程师,工作10年;阮威,原腾讯、YY语音资深程序员,现任某公司技术副总裁;工作11年;智聪,原迅雷首席工程师,目前创业;工作13年;欢欢,今日头条算法架构师,机器学习领域博士;实习2年,正式工作10年;秋良,今日头条移动端技术总监;工作12年;绪宏 ,今日头条资深架构师;工作9年;文勇,100教育首席架构师,原YY语音首席高级架构师;工作20年;Longshen,迅雷高级工程师;工作9年;刘凡,工作5年,猎豹移动工程师;原迅雷工程师。参与回答问题的还有梅沙科技的程序员小伙伴:Mask, Johnson, Lemon, Daniel, Mandy, Jan等。

问题一,自己作为技术路线的应聘者,在校招时候,是如何选择第一份工作的?考虑过什么因素?选择第一家公司的原因是什么?

从上面的身份介绍,大家大致可以知道回答问题的程序员大致是什么样的职场段位,综合大家的回答,第一份工作的选择,大致有下面几种类型。一是选择大公司大公司通常是成熟团队,大公司有大牛,薪酬高,这应该是校招中比较普遍的想法,非常朴实。例如校招时候就进入腾讯的大麦、阮威,还有进入迅雷的刘凡。大麦(飞笛资讯技术负责人):他回想当时校招找工作也是比较盲目的,目标就是进大公司,找工资比较高的,技术比较牛的。师兄师姐有在腾讯百度工资的,说这两家挺不错。于是优先应聘这两家公司,结果腾讯笔试面试通过,就来腾讯了。其实当时更想去百度,因为听说技术牛啊,不过百度笔试就挂了。阮威(技术副总裁):毕业生选择第一家公司的时候,考虑的因素通常都不是完全理性的和全面的,主要看的是企业知名度和薪资福利。如果能力足够,建议首选的是BAT这样的知名企业,开阔视野,学习技能,和牛人共事。当初我自己校招的时候以为进了腾讯就可以做QQ,所以最后从众多offer中选择了腾讯,这个算是考虑的情结因素吧。刘凡(猎豹移动工程师):校招应聘的时候个人考虑比较多的是公司文化氛围、名气, 当时自己压根不考虑收入的,因为觉得刚毕业,这个不是很重要。二是选择中小公司。敢于在毕业时候,如果是放弃大公司的offer,主动选择中小公司,还是需要勇气的,通常这类程序员比较自信,能力都比较强,渴望更全面的锻炼和挑战机会;或者就是比较自大,不屑于在大公司从基层普通岗位开始做起。秋良(今日头条移动端技术总监):我是2007年北航计算机专业毕业的, 在校时专业课学习的是EDA(电子设计自动化),自学过JAVA编程,搭过一些小的后台。毕业时希望找一家技术氛围较好的中小公司,能快速提升自己的技术能力。小的团队中每个人能承担的事情比较多,在压力下会有利于个人快速成长。再就是团队所用技术能够吸引我,业务与我兴趣相匹配。基于自己的专业背景,当时聊了一家EDA行业的公司, 团队十几个人中绝大部分都是技术人员。因为感觉到团队技术氛围比较好,对技术比较有追求,会有利于自己的技术成长,就选择了这个团队。三是综合考虑型。茂锴(腾讯高级工程师):在选择第一份工作的时候主要思考了这几个问题:

行业层面,计算机专业主导行业有哪些,这些行业中top3的公司是哪些,这些公司的商业模式和竞争的护城河是什么,这些问题答案很大程度决定了公司未来的发展空间;个人层面,要多问自己内心喜欢的是做什么样的工作,兴趣是最好的老师,兴趣也在后来的职业生涯中帮助我更好地找准发展方向,即使在计算机专业领域,也是有很多细分的方向(例如安全领域,后台领域,移动领域,算法领域等)可以发展的,把它给明确下来;兴趣和岗位的匹配层面。

明确了自身的兴趣和发展方向后,就要对应地去匹配行业中有发展空间的top3公司的合适岗位,仔细看下这些岗位的Job Description的技能和知识要求,查漏补缺,把自身的能力短板补充好,做好充分准备再去面试。四是考虑成长导师和个人成长。绪宏 (今日头条资深架构师):第一份工作找技术影响力大口碑好发展快的公司。主要考虑:首先是平台的技术成长空间,然后是否有牛人能够学习,技术方向是否吸引你,技术氛围好不好等等,当然也会考虑薪水,工作环境,福利等。之所以选择第一个公司,是团队里有业界比较知名的工程师,在当时业务发展也有很大空间,做的项目觉得能够学到东西。去的团队研究生时实习过,对工作环境、同事和做的事情都比较熟悉、了解。所以也建议同学可以多实习,或者拿到offer后进入公司实习,一方面可以提前熟悉环境、人和事,一方面其实也是提前检验自己的选择是否正确,如果发现选择不对,应该有勇气及时调整。Daniel(梅沙科技工程师)作为一个大学生应聘者,iOS技术不是很成熟的我来说,选择第一份工作着重考虑公司团队是否给我带来成长经验,是否有大牛导师解答我技术上的难题。除了技术方面的考虑因素,还有项目的多少,合作伙伴的质量。薪水福利对于当时的我来说是次要因素,关键是要能给予项目实战。因为面试官对我的态度,还有各方面福利,技术组长吸引了我,选择了当时的第一份工作。毕业时的选择遗憾欢欢(今日头条算法架构师):说实话,回顾当年毕业找工作时,其实有些遗憾。我是机器学习领域的应届博士,当时希望做一些和应用结合更紧密的研究性工作,希望团队的技术水平比较高,也希望有一定的上升空间,综合考虑下选择了诺基亚中国研究院。因为和实习过的MSRA相比,诺基亚研究院更注重研究和产品的结合,而且新任院长是AI背景,提出了很多有前瞻性的移动互联网和大数据,算法结合的项目,有个很棒的团队。之所以后来觉得遗憾是因为工作一年后发现个人在成熟的大公司能得到的锻炼有限,而且在一家缺乏互联网基因的硬件公司推动移动互联网的项目困难重重。再加上公司整体业绩下滑,不到三年就离开了第一家公司,加入了一个早期创业团队。如果回头再看,我可能会选择发展快速且平台够大的公司,既能得到充足的锻炼同时获得更大的上升空间,并且在推进、执行上更容易落地出好的产品。结论:不是每一个架构师从一开始就是大公司干起,多种职业起点的选择,无论起步的公司大小,都可以成长为架构师,其中能有引路的导师是个重要考虑的因素,如有老司机带路,会得到较快成长。如果能找到行业和公司本身发展快速且平台够大的公司,是一种幸运。对于公司的选择,还有特别重要的一点,就是公司的领导人,或者说创始人带来的企业文化。创始人在一定程度上是公司最大的导师,引领者公司的方向和文化,了解公司文化和创始人,一方面是他发出的声音,倡导的价值观,另一方面就是咨询公司内部的人。例如前阵子在微信朋友圈刷屏的一篇文章,今日头条创始人张一鸣写的《张一鸣:我遇到的优秀年轻人5个特质》,这五个特质是:第一, 有好奇心,能够主动学习新事物、新知识和新技能。第二,对不确定性保持乐观。第三,不甘于平庸。第四,不傲娇,要能延迟满足感。第五,对重要的事情有判断力。可以说这五个特质是能够被广大的年轻人所喜爱的价值观的反应,现实体现如何,或许就需要和今日头条的朋友打听探讨。

问题二,目前工作几年?做过几个项目?在技术方面,有怎样的成长?

创业可以带来技术的快速成长没有进过创业公司,有时候也是一种遗憾,创业,让身处其中的人充满激情的去奋斗,身兼数职,全栈工程师、全栈产品经理通常诞生于创业公司,通常很多时候是被逼出来的,鬼才知道他们怎么能够这么快速的学习,因为如果不够快,如果不掌握多种技能呢,他们会很快死去,面临生死,是奔跑最快的时候。大麦(飞笛资讯技术负责人):在QQ秀项目后台做了5年,然后转到手Q增值团队做了1年半iOS开发。现在出来创业负责公司网站和APP的技术实现。技术方面,刚开始进公司啥都不懂的那2年成长最快。升T3之后感觉变慢了,迷茫了,不知道该往哪里前进了。感觉在一个地方待久了是会有惰性,需要改变和重新找方向。后来转iOS开发,从web转到移动终端,知识和难题不一样了,于是又是一轮成长。去年刚好有个好机会出来创业,需要解决的问题范围更广,还需要不断学习。工作多年总体是在不断提升的,能力范围是在扩大的。技术成长其实是跳跃式的,什么都不懂得时候成长最快。成了熟手之后就会感觉成长变慢,往往半年总结时发现做了好多项目,苦逼了很久但提升有限。其实这是已有技能的高强度重复利用,没有新技能补充。想要提升还是得跳出舒适区,找到难题和想办法解决它。有时候确实能碰上难题,折腾几天甚至几周的时间,终于找到方法。这时才有了久违的成长的感觉。欢欢(今日头条算法架构师):做过的项目大概有一二十个。技术上成长最快的是离开诺基亚研究院参与创业那一年。当时的团队很好,再加上创业公司工作强度非常大,成长是非常快的,特别是工程方面。那一年的经历真正使我成为一名全栈算法工程师,夯实了我的技术栈。从开始只负责算法的调优,到离开时负责了公司最重要的几个核心产品模块。在头条这三年,经历了一个互联网产品从几百万日活的垂直产品发展成一个数千万日活的大型平台,参与解决的问题数不胜数,而且和一批最顶级的技术专家合作,在大数据处理,大规模机器学习,文本分析,算法评估分析等领域都收益匪浅,技术视野和架构经验也有了长足的进步。环境变化带来的新问题解决推动技术成长成长表现为技术水平的提升,这种提升很多时候是伴随着产品的变化、用户量的提升、新问题的出现,在不断的解决问题过程中形成自己的秋良(今日头条移动端技术总监):从早期只是开发几个功能,到现在负责整个应用的移动端团队,更多地参与产品的讨论、与前后端配合(比如接口定义)等。从能写功能、搭出简单应用,到对项目架构有更宏观的把握, 对产品稳定性、体验、用户需求等有了自己的一套理解和方法论以及评估意识和评估体系;在项目的推进上也克服了理科生的短板,能够更顺畅得沟通协作。完成了从执行者到规划管理者的转型。早期做的时候,活跃用户只有几十万,如今成熟的「今日头条」,日活用户6300万,不同用户量级的产品,对技术的要求和挑战是完全不同的。代码从最开始的5万行到现在70万行,参与项目的从几个人到几十个人,这中间的复杂程度要大很多,千万用户量级的应用,对产品质量和稳定性的要求更高,因为一旦出现问题,影响的用户群是巨大的。因此,我们性能上做了很多优化和改进,闪退率从过去千分之几到现在万分之五;搭建了较为完善的端监控体系: 对网络成功率、启动速度、内存等有了全面的监控。此外,大用户量的产品会遇到一般产品所遇不到的问题,比如网络劫持,头条从早期到现在,都会遭遇到不同程度的网络劫持问题(包括域名劫持和内容劫持),我们建立了域名切换、ip下发等机制,推进了https化,做了多链路优选等,目前可以最大限度保证整个应用请求成功率,劫持率极小。我还记得,2013年十一期间,广东地区突然有数百用户同时反馈用不了今日头条APP,我们迅速反应、跟用户沟通排查各种问题,当时一鸣早晚各打一次电话给我更新进度,最终6天内解决。这次是网络突发问题,运营商做内容过滤时操作不标准,使得安卓系统兼容出现问题。技术工作虽然在很多人眼中看起来枯燥,但对我们来说一直充满着新鲜感和挑战。Mask(原梅沙科技工程师):目前工作3年多了,完整的项目4个,半成品项目2个。技术上的成长是挺大的,因为毕竟在学校的时候并没有做过多少项目,做的也是些小项目或者Demo性质的,所以功能一般都很简单,并不会遇到太多的问题,但是工作了就不一样了,完完全全按照产品的设计做好开发大多时候并不是件容易的事情,而几乎所有不容易也得做,就会想尽办法去完成,解决问题的过程最能得到成长。在学校的时候并不会按照什么开发流程来做,也没什么机会实践,所以一般都是想怎么来怎么来,但工作就不一样了。在学校学的技术一般都比较简单,而且还有些落后,所以得自己学习,一些新的框架,新的效果,慢慢的也就形成了自己的开发套路了。Longshen(迅雷高级工程师):目前工作6年多时间,先后做过迅雷7,零流量分享,移动端云播,MIUI下载管理等项目。如果按平台技术分类,个人做过Windows开发,后面又转做android,iOS开发,再到跨平台研发,现在也参与部分后台研发工作,基本参与过绝大部分平台开发。从技术应用领域看,主要集中在数据传输/分发领域。包括迅雷核心的p2sp下载技术、应用分发、近场传输、流媒体等方面。整体上个人在技术方面的成长,前期更多扩展自身的广度,涉猎各个平台技术;最近几年则重点提升深度,串联之前积累的各个平台技术,形成自身的一张技术地图。

问题三,让你获得进步和成长的方法,有哪些?

这部分或许是本文最有价值的地方,菜鸟如何成长,每个人有自己的见解,这些方法不会适用与每个人,自己根据需要,进行职业发展的规划调整吧。智聪(原迅雷首席工程师):首先是正确的学习方法,我们这行算是一个终身学习,终身成长的行业,好的学习方法能让学习更有效率。大的流程就是: 问题发现->提炼总结->在知识树上找位置->补充基础知识->自己尝试解决问题->研究行业已有解决方案。这比简单的“问题发现->研究行业已有解决方案”的路子要学习效果更好。Longshen(迅雷高级工程师):最终的两个方法:积极反思、勤于总结;敢于承担,乐于付出积极反思、勤于总结。互联网时代的信息更新急快,而作为程序员每时每刻都需要更新扩展自身的技术。通过反思,能加深对技术的理解,优化做事方法。总结输出保证知识的存储周期足够长久。 敢于承担,乐于付出。作为刚工作不久的新人,自身技术及能力成长是最核心的需求。而敢于承担,乐于付出,能是自身获得更多学习和成长的机会,更快成长的可能。文勇(100教育首席架构师):获得成长的方法最重要的是思维方式的提升,做技术需要思考如何做的更好?让我进步最大的思考方式就是站在更高一个层次去思考。比如说代码编写需要站在模块设计的角度去想如何组织代码;做模块设计需要站在架构设计的角度去考虑模块如何暴露接口,做架构设计的时候需要站在业务需求的角度去考虑如何设计架构能够更好的适应业务的变化。阮威(技术副总裁):如果要说一个性价比最高,最容易出成效的方法,那就是看书,看书,多看书,重要的事情说三遍。多看书,尤其是好书,是站在前人巨人的肩膀上前进。不要总是指望搜索引擎,我还没有见过从搜索引擎能成为牛人的;其次,多向别人请教。我还从来没有见到过哪个技术大牛是不爱学习的(看书是其中最重要的方式);最后还有实践,不实践,书也是白看了。秋良(今日头条移动端技术总监):

保持良好的学习习惯:对技术提升保持很强的自驱力,工作的前几年我基本每天晚上都会花一些时间看技术文档、学习新技术;多看代码,源代码分析是理解项目、排查问题的好方式近朱者赤:加入一个技术氛围好的团队,leader、同事的指导、交流对自己考虑问题的思路也有很大帮助, 会少走很多弯路;勇于攻坚:参与有挑战的项目,在解决难题的过程中技术能力自然就提升了扩宽视野:随着工作经历,逐步拓宽自己的技术面,比如做客户端的同学去了解一些前端的知识,帮助更好的协作,以及看待问题将会更全面。

绪宏 (今日头条资深架构师):

兴趣驱动自我成长,能做技术源于我对技术的热爱,找到你的兴趣点;选择增长快速、行业领先的平台,有利于职业成长;有优秀的mentor指导;在某个领域需要有特长,需要去深钻;学会合作 不同于学校里接触的项目,工作上有大项目才能获得锻炼,你会发现原来需要考虑这么多问题,看起来一个简单的产品需要那么多人协同;辅助技能也是必备,不光是技术上的成长,需要了解用户、推动产品落地,这涉及到用户洞察、执行力、沟通能力等等一系列技术人员必备的技能。和业界保持更新,不要闭门造车,需要跟更多的业内人士交流、学习。

欢欢(今日头条算法架构师):最有效率的方法,就是我条(今日头条自称)经常宣扬的:和优秀的人,做有挑战的事。 和最牛的人合作,不断学习对方的优点,包括思维方式,工作方式,学习新技术的方法。做有挑战的事,则可以不断把自己逼到极限,激发潜力,也方便把从其它优秀同事身上学来的东西活学活用。至于经常看哪些技术博客,怎么总结项目中的问题,积极参与技术分享,这些当然也很重要,但这些都是具体的做法。而和优秀的人,做有挑战的事,则是更高层面的通用原则。大麦(飞笛资讯技术负责人):小的方面,主动去发现项目中的问题,尽力去找方法解决。大的方面,不断审视自己的工作和环境是否还能让自己提升,发现瓶颈及时调整,换项目换工作都是可选方案。另外,如果能找到自己喜欢做的事情,能安心投入其中的事情,那是最好了。进步神速,幸福感爆棚。

问题四,在作为程序员工作的第一年,遇到过的最大问题是什么?如何解决的?

阮威(技术副总裁):最大问题是快速填补学校的专业知识和实际工作岗位之间的技能鸿沟填补起来,使自己马上能投入到工作中。其次,是焦虑,担心自己事情做不好,进度赶不上,做出来的东西别人看不上。最后,是迷茫。技术领域的知识技能浩如烟海,快速找到自己的一条技术发展之路。方法其实很简单,就是不断学习,快速学习,很多问题就自然而然的迎刃而解了。是在没有想到其他好办法。大麦(飞笛资讯技术负责人):刚开始工作做的是QQ秀后台,从小的简单的功能开始切入。但QQ秀本身是个巨大的工程,即便是小功能也需要读很多相关的代码。读懂之前的代码和理解前辈的设计对我来说很难,硬着头皮熬了很多个夜才慢慢有感觉。这个过程绕不开,只能硬上,不过一旦读懂就会轻松很多。Lemon(梅沙科技工程师):毕业后第一年参加工作,主要的工作内容都在页面制作这块,所涉及到的知识面也不是太广,后来到了使用javascript时候,瞬间就慌了,各种页面效果,各种数据交互,各种异常处理应接不暇,当时的处理方法就是,每天早上早起1个小时去公司自学,从最基础的底层api学起,视频,论坛,qq群,反正只要能够获取到有用信息渠道的方式都去试,然后在公司的项目里运用一些所学到的东西,做一些可以实时看到的页面效果来让自己感到高兴和激励自己。Daniel(梅沙科技工程师):在工作的第一年,遇到过最大的麻烦就是第三方sdk导入项目当中,会出现静态库的问题,导致整个项目都运行不到。解决的时候是和团队多方沟通,配置了很多东西才将其运行起来,关键是要大家一起沟通交流,说出自已的思路想法,各自实现一下自已的想法看看行不行,还有就是学会查找资料,说不定这个坑有其他人踩过。秋良(今日头条移动端技术总监):我在工作前期学习了不少新技术,但发现当时的公司并不是适合自己长远发展的行业方向(EDA行业需要较深的电子相关理论)。后来因为当时移动开发已经渐渐兴起,但被朋友拉去做游戏了,如果再早一点投入移动开发会更好一点。希望同学们在未来选择行业更有长远的想法。如果时间倒流让我重新来过,我会选择发展更快的行业方向就业。因为其内部技术通常代表了当下领先的技术水平,如果我当时就选择移动开发,会有更好的发展。 所以我的忠告是,选择对的行业非常非常重要。绪宏 (今日头条资深架构师)在第一年,我自身方面可能唯一不足就是要多多学习技术。当时对我来说并没有太难解决的问题。但是,我身边的同学包括师弟以及后进公司的同事多少会反映出来在角色上的不适应。从学生到职场人士思考问题的方式不一样,学校配合的是老师,没有明确的要求,交差即可。而工作中,经常是多人配合协作,你不能够成为工作进度的瓶颈,并需要对工作负责任。为了避免这种职场的「水土不服」,我建议同学们心态需要多调整,多跟leader交流,积极改善自己的问题,会成为更优秀的自己。欢欢(今日头条算法架构师):严格来说,离开诺基亚研究院参加创业那一年,算是程序员生涯的开始。之前作为研究员虽然也经常编程,但是更多是demo和实验程序,基本没写过线上代码,在工程细节,程序性能和代码规范性方面有所欠缺。第一次提交线上代码,短短十几行,被负责code review的同事提出七项修改意见……不过我这人心态好,比较开放,算是符合张一鸣说的优秀年轻人应该没有太多自我要维护。适应一段后,代码质量已经达到优秀工程师的要求。另外,工程师和程序员是两个概念,作为工程师,写一手好代码只是最基本的要求,而且这个事本身门槛不高。真正的门槛是要成为某个领域的专家,比如机器学习,大数据处理,或者产品业务,另外就是有一套有效的工作方法论。Longshen(迅雷高级工程师):我刚工作遇到的最大困难是在刚毕业3个月,而参与的迅雷7开发预期国庆后正式发布,需要在国庆假期结束前解决现有下载引擎崩溃问题。当时团队核心骨干生病住院,而buddy(迅雷会给毕业生安排导师,称为buddy)刚好在休婚假。需要组长和我去解决这个问题,项目紧急没有任何时间供自己去准备适应(如使用WinDbg调试定位的经验)。最后只能通过边做边学,利用自身对技术逻辑的熟悉度,通过向周围老同事讨教调试经验。舍弃国庆7天假期,付出足够时间来解决这些问题。

问题五,对今年的技术背景的毕业生,有什么校招的建议?例如笔试、面试的方法,注意什么?

大麦(飞笛资讯技术负责人):我自己招聘的经验,一方面动手能力强,写程序调bug思路清晰,知道怎么入手。另一方面对基础知识知其然也知其所以然然。反正都得平时下功夫,遇到问题不要逃避。阮威(技术副总裁):我参加校园招聘的次数也比较多,对基础知识的掌握这个是核心,不要过于流连于市面上流行的各种框架和技术,至少我基本不会问这些问题,除非是实在没有什么可问的。第二,技术面试不需要那么面面俱到,要知道自己在某个领域或者某个点上的优势和特长,并准确表达出来。某个技术领域的深度要比技能的广度更能打动面试官。第三,要诚信,要自信。不懂的不要装懂,不懂的也可以试图说说自己的想法和思路。面试不是考试,有些“答错”的问题也许能打动面试官,因为人家在观察你的反应。第四,如果在校期间自己倒腾过什么东西,或者参与过什么实践项目,这个拿出来说一说,会很打动面试官的。智聪(原迅雷首席工程师):我从2008年开始做校招,在这个问题上还是比较有发言权的,主要说说技术岗吧。首先是简历,一定要简洁(最好压缩到一页),然后突出亮点。什么是亮点呢?名校/GPA特别优秀/实际的项目经验/高水平竞赛获奖/学界认可的研究成果(Paper)一些和技术不太相关的经历和获奖就不用往简历上写了,尤其不要写精通office,photoshop之类。。。技术能力测试的时候起决定性因素的是CS专业的基本功(数据结构,操作系统,网络,组成原理),当然有一些当下流行技术的项目经验也是加分的。面试的时候,我喜欢对解决问题的能力进行测试,希望看到你在一个非常难的问题面前的思考过程,比如对问题进行分析,拆分,总结问题,思考思路,在确定思路前提出验证方法这样。面试的时候不要一直沉默,即使思考不完整也可以和面试官沟通交流。沟通能力也是面试时的重点。面试的时候的另一个关键点是“志”。立志要早,这样在工作中面对选择的时候,才能做出有连贯性的选择,不过遗憾的是在学生时代就能想清楚自己志向的同学太少了。面试的时候注意真诚,不必刻意迎合面试官和目标公司(因为面试官都是人精,大部分时候都是能看出来的)茂锴,腾讯高级工程师第一,通过各种手段了解清楚你要面试岗位的要求(通过JD和向在岗的人打听),针对这些要求准备好你全面和体系化的知识结构进行应对。第二,注意好你的仪表仪容,行为举止,要向面试官展示出你好学勤奋,积极向上,不畏困难等良好的性格品质。第三,遇到没了解过的领域的问题,不要轻易说不知道,要积极思考,给出你思考过的答案。文勇(100教育首席架构师):校招主要还是要考察学习能力,比如考察学生学习课本时是否会总结归纳,我面试校招毕业生经常会问你考的最好的专业课是哪门,总结下这门课主要讲了几个方面的内容,看学生总结的是否条理清晰。刘凡(猎豹移动工程师):对于校招有几个建议:简历一定一定要重视,不能因为自己是搞技术的,不是靠脸吃饭,就可以不注重外表(这里的外表是简历)。只有让别人先给你面试机会,才有了解到你技术长处的可能, 不然都是面谈;另外就是,可以结合自己理想的公司,了解该公司正在做的业务,针对性的去学习一些类似的开源项目,不仅会给自己面试加分, 入职后融入到业务中更得心应手。欢欢(今日头条算法架构师):我正好是今年头条应届技术招聘项目的联合负责人之一,对这个问题还真有一些要分享给职场新人。笔试对应届毕业生的考察,对计算机基础比较重视,包括数据结构,算法,操作系统和网络基础知识。同时针对不同岗位有相应的考察,但是也以基础知识为主,比如算法工程师岗,经典机器学习模型的了解,常用的评估方法,对问题的建模能力。面试的过程主要是挖掘你的亮点,比如对于实习经历丰富的同学,会考察很多项目细节,确认你在项目中到底有多少贡献,对整体业务是否有全面了解。对于学术工作较多的同学,会详细了解你的研究思路,遇到问题是如何解决的。因为能进入面试流程的同学都非常优秀,如果没有突出的亮点,很难脱颖而出。绪宏 (今日头条资深架构师):很多人准备面试就是在刷题,只做面试的算法练习,这个当然没问题,但除此之外,也需要做到基础和工程并重。最好是有更多的实践,不一定是实习,可以是自己日常去多做小项目尝试,让我们看到你对技术的热情,这一点很重要,已经有相关经验的同学会更有竞争力。我们看候选人时,比较看重:

技术面与职位匹配,建议对照应聘的职位描述,做有针对性的准备;技术热情 对技术热爱,善于使用技术解决问题;学习能力 技术不可能一开始全部具备,更新迭代快的环境下需要保持学习;沟通能力 团队协作需要能沟通顺畅、高效;项目经验 实习、生活中自己有项目尝试 ;问题六,对程序员工作的前三年?有什么建议?

大麦(飞笛资讯技术负责人):如果有类似导师的人带着做,一定要多问,要表现出积极好学的态度,让导师愿意给你讲。如果是在老系统上维护,那就快速熟悉老系统,才能提升开发效率。如果想快速提升,多加班,找找项目中的问题。一个正常的项目积累一段时间那问题都是一把一把的,争取解决立功。对能力提升有好处,对任命提拔也有好处。阮威(技术副总裁):行业里流行一种说法,叫工作的头三年是最为关键的三年,决定了你后面职业发展的速度和质量,我很认同。那么这三年做什么呢?学习,学习,再学习;实践,实践,再实践;思考,思考,再思考。我的职场全部秘密就这三条。如果你相信我所说的,并且坚持不懈怠,三年后你会有质的飞跃,不信的话咱们赌一把。智聪(原迅雷首席工程师):把工作中用到的技术的基础知识学扎实,基本功扎实才能让你飞的更高。工作中要勇于承担责任,主动要求承担困难的工作,多和buddy沟通,工程上的很多问题有人指导解决起来非常快。但一定要注意事后的复盘和总结。工作前几年最重要的就是个人的成长,这是拉开差距并能在未来抓住机会的关键阶段。所以选择工作的唯一标准就是“能得到什么成长”,而不是待遇,公司福利之类的细节,当然公司有一个好的,愿意带你的老师是非常关键的资源,要好好抓住。茂锴,腾讯高级工程师程序员一般在三年,五年,七年都分别面临自身发展的一个坎,根据HR的统计,这几年一般是程序员跳槽换工作最频繁的年限。对于工作前三年的程序员,TA一般都是能比较好地完成好手头上的工作,会开始觉得现在做的工作没有什么困难和挑战了,很多东西都会了,对工作的激情可能逐渐开始消退。我的建议是,Stay Foolish,Stay Hungry!

在技术深度层面,不断挖掘自身工作有技术难度和挑战的难点,不要止步于仅仅把事情做好,要更多地思考怎么把事情做得好看和细致,思考如何让自身和团队的效率能更好地提升,思考如何让业务和技术指标有更好地体现。在技术广度层面,要拓展自身的技术视野,多了解业界竞争对手是怎么做的,是否有更好的解决方案,目前方案的延伸问题是什么;在业务层面,要更多地思考目前的工作成果是如何为公司创造价值的,商业模式是如何设计的。

这三个层面的思考我相信会对处于前三年这个阶段的程序员职业发展有所帮助。秋良(今日头条移动端技术总监)

专注提升自己的技术能力(当然了,技术理论要在项目中落地才能真正掌握、提升);先把一个方向的技术做精,逐步扩展技术面和视野;在项目中对自己提高要求,追求极致;学会团队协作、配合,尝试换位思考,主动推动工作,让别人都觉得你很“靠谱”。

欢欢(今日头条算法架构师):不同岗位的情况各有不同,我理解的共同点有下面几项:第一,尽快完成身份转换,从学生过渡到公司员工。更好的平衡实际产出和学习提高的精力,这方面有问题不妨多和直线经理沟通。第二,有更强的主动性,无论因为工作需要需要学习新技术,还是看到一些自己有能力解决,但是大家忽视的问题。第三,有开放的心态,不要太维护自我。对老同事的意见和建议在反驳之前先想想是否有可取之处,多学习身边同事的优秀特质。Lemon(梅沙科技工程师):从刚出来工作到慢慢的去学习和了解一些陌生的东西和专业知识,前三年养成的习惯对后面的影响应该是非常之大。首先,得虚心。由于刚迈入社会,自己的知识面和见世面不是太广,所以首先记住的是得虚心,这点很重要。在别人面前,不能太张扬,虚心请教,这样才能够得到更多的帮助。然后,要静心。很有可能在进入公司后会有各种各样的东西让你选择和大开眼界,一旦被吸引或者过于享受其中,就没办法投入到自己的研发工作中。软件研发是一个特别需要静心的工种,有时候,会碰到各种疑难的问题或者其他的诱惑,如果让自己变得急躁起来了,这对于进步和解决问题毫无用处。再者:要学习。前三年,要学的东西实在是太多了,特别是对于一个程序员。编程语言本身的很多特性和api就需要花费很多的时间去熟记,然后工作中的各种业务逻辑也需要花时间去理清。所以,这个阶段可以汲取大量的知识和积累大量的经验。最后,要学会总结。前面说了,作为初学者,问题肯定会碰到不少,大量的荆棘挡在前面,所以必然就会花大量的时间去除这些障碍。但是在除去这些障碍之后得把他们记录下来,使之变成自己的经验。绪宏 (今日头条资深架构师):首先,需要有一定的规划,包括技术上的和职业上的,要有自己明确的目标。当然,目标很有可能会变化,要选择最适合自己的。然后,如果没有想清楚,尽可能多去尝试,找到自己擅长或感兴趣的点,争取成为该领域的专家。另外,尽可能去有更多机会和空间的公司。平时,在行业里、公里或身边寻找一个榜样,让自己更有方向的进步。 ​==============公众号作者BLUES(兰军):致力于教育+互联网行业产品打造,梅沙科技合伙人,原迅雷产品总监,腾讯、YY语音高级产品经理,公众号ID:bluemidou,原创运营了6年公众号,写了700多篇原创文章,欢迎留言交流。

剪辑交流

如何学好色彩搭配,怎样搭配色彩才好看

2022-9-17 21:28:06

剪辑交流

轻松ppt,免费ppt模板

2022-9-17 21:30:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索