1自己介绍项目,看对项目的提炼总结能力(也是抽象能力);
2自己印象最深的bug,可以知道大概技术深度;
3设计模式提问,看有没有学习方法;
4语法基础问题,多线,分布,安全等问题,看知识面广度;
5智力问题,看反应能力,分析问题思路等
上述五步基本可知是否是一个好程序猿
计科专业从事软件开发十几年了,主要在浏览器内核领域研究的比较多,最近在研究服务器后台方向,辨别程序员水平高低主要看做出了什么产品,如同现在的程序员主要是项目经验,简历上写的一堆项目经验都是面试的时候主要提及的问题。经常在面试中会问两个关键点:一个是做过什么项目;一个是在项目组中承担什么职务,毕竟参与过和做的多少程度是不一样的,这些都是可以通过一些具体的细节检测出来,问题越具体越是容易看出水准,具体的东西不是能够编造出来的。
有很多技术公司直接不通过笔试,仅仅通过简单的面试就确定工资水准了,最简单的测试程序员水平的直接用笔试的方式,笔试可以把一些细节量化,尽量的细节化也是能测试出程序员基本功的,但这种基本用来测试初级程序员的,很多高级的程序员看到有笔试直接就抬腿走人了,因为有些程序员在一个方向做的时间太长了,很多基本功都忘得差不多了,所以笔试可能不过关,现实中很多程序员笔试不过关,面试还可以,也一样可以做项目说的就是这类人,起码这算是非常优秀的程序员。
有很多公司采用谷歌的方式,直接采用上机写代码的方式检验程序员水平,这种方式比较直接,但在现实中可能消耗的时间以及面试官的精力,目前只有极少数的公司用这种方式,国外的公司用这种方式比较多,这种看基本功非常有效。通过代码可以看到编码习惯以及算法的设计上,都能直接看的出来。
普通的程序员直接看项目的经验,高级的直接看做过的产品,特别是产品主要设计人员,这就是程序员内心的自豪感,毕竟作为一个程序员起码要有自己设计开发的产品,也算是不白做一个程序员,在程序员的职业经历中如果能经历过一个产品从开始设计的初稿到最后推向市场,如果是完整的经历,将是一种巨大的财富,只要经历过一次都会对产品设计有一个比较层次的认识,这种能力需要靠直接的面试语言表达来展示出来,谈下对产品的认识以及产品稳定性性能等方面的总结,能到这个层面起码是高级软件工程师的级别。
当然有些程序员内在的东西不是靠语言或者写代码看出来的,因为一个优秀的程序员不仅仅是代码能力以及框架能力,还有几个非常重要的能力
程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
希望能够帮到你。
自认为不是一个好的面试官,因为我认为在这么短的时间内,准确地衡量出来程序员水平的高低是有比较大的难度的,并且我有多次看走眼的时候,面试的时候觉得能力还不错,但是入职工作了一段时间之后,编程能力不忍直视。
工作之后接触一段时间,我会从这么几个方面观察他们,以判断技术能力的高低和发展潜力。
能不能出活儿、能不能debug
能不能把开发任务按时按质量地完成,当然是最主要的衡量标准了:
解决问题的方法
在开发过程中,难免会遇到没有见过的问题,有些程序员遇到问题无从下手,而优秀的程序员,自有一套解决问题的方法。
分析问题、流程设计的思路
有人会认为,程序员的主要工作就是敲代码,上班大部分时候都是在敲代码,其实并不是这样:
总结问题和改进问题的能力
好的程序员,相同的问题不会犯第二次,差的程序员,总会在一个问题上栽跟头:
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
不请自来,一介码农路过,留下些看法。
程序员主要是有四种综合能力,也就是debug 能力、 performance分析、 保护性编程和 投入产出比。
仅仅独立完成日后必然成高手?在这里不能说一棒子打死,至少对于很多人来说,能独立完成是没什么问题的,有的是因为对业务熟悉,有的是真的基础扎实。但怎么说呢,程序员和浏览器打交道是最多的,现在这个互联网时代,遇到的大部分问题百度都是可以解决的,也就是普通程序员 + 百度 = 超级程序员。 但很多人也没明白具体的原理,甚至都是这个项目抄抄那个项目抄抄的,久而久之虽然解决了平时的业务,但进步的空间却很少,甚至止步不前,写出来的代码也可能存在很多坑,所以,仅仅能独立完成任务的话,离高手还有比较远的一段距离。
如何辨别高手程序员?也就是结合我们一开始列举的那四个能力进行判断。不同级别的程序员,在那综合能力面前,强弱也是不同的。例如在奔溃的或者其他性能调优问题上,即使是面对大量复杂的代码,在信息不全的时候也会一步步的分析,抽丝剥茧缩小范围,最终定位根本原因
,并且最终给出一个好的方案。
如何成为高手程序员?
当然还有看他摘了帽子是否秃顶这样的笑话,就再不赘述了。
第一阶段(黄金):会用编程语言实现需求,比如现在的业务系统,都会找一些会搬代码的人来拼工作量,也就是能自己独立基于搭好的框架实现crud常规 *** 作。
第二阶段(铂金):除了crud,还会有一些自己踩过坑的经验,知道如何处理一些常见问题,或者可以基于搜索引擎快速解决一些异常情况。
第三阶段(钻石):能解决一些疑难杂症和会通过debug部分源码类库查看到这些疑难杂症是如何引发的,并通过编码解决这些问题,还能进行一些局部的性能优化,类似某个系统接口缓慢可以单独去优化。
第四阶段(星耀):会基于整个系统进行设计和规划,根据业务特性选择合适的框架,从源头控制开发遇到问题的频率,可以自主的搭建框架并完善机制,了解各个组件工作原理。
第五阶段(王者):小说里面总是说练武功的永远比不过创造武功的,同样的道理,用框架的也往往不如写框架的,所以写框架的这类人单独分层。
第六阶段(荣耀):其实这个阶段不应该列入进来,因为这类人往往不编码的,只是给出思想;像Hadoop这种框架就是基于人家发表的一些论文(bigdata)进行编码实现的,这类人注重的是思想和算法,区块链,大数据,云计算等等概念的创造和理论的支撑是这类人提出来的,这些人才是真正影响行业走向的人。
程序员的水平高低,不是靠语言或外在表现就能看出来的,不是看他会多少技术、参加过多少项目、写了多少博客,而是看他在实际业务场景中解决问题的能力,尤其是面对一些特别复杂的问题,或在高强度、高压工作状态下解决问题的能力与态度。
技术可以通过学习掌握,但是解决问题、定位问题的能力却不是一蹴而就。大家可能会说,“解决问题的能力”这个太宽泛了吧,可以更具象化吗,有具体的测量方法吗?简单整理了以下几点供参考。
优秀的代码能力
会写出满足需求的代码,早就不是评判程序员水平的标准了。代码编写既要满足业务需求,同时还要考虑后续的软件维护,说得通俗些,既要自己爽,也要别人爽。一个优秀的程序员,会致力于写出更简单、更效率、可读性强、扩展性强的程序代码。
逻辑思维
程序员在日常工作中,需要理解各式各样的业务需求,所以这就需要程序员具备一定的逻辑思维能力。可以说,逻辑思维是程序员的灵魂,因为每一行代码都是程序员逻辑的体现。
debug能力
项目着急上线,发布时出现问题?
业务高峰时段,系统宕机了?
业务催、运营催、用户催、老板催!
各种形态的bug,各种着急的心情,背后无数支眼睛盯得内心慌慌
这些都是一位合格程序员所需要面对的日常。不同的程序员,在解决问题的方法、效率、质量等方面,都各有千秋。一个经验丰富的程序员,能够扛住各方压力,在复杂条件下找到核心问题,通过抽丝剥茧的分析来找到产生问题的原因,并快速进行应对处理,事后及时复盘总结,减少同类问题出现的概率。
学习能力
随之互联网的发展,越来越多的人涌入程序员这个赛道,竞争日益激烈,加之新技术层出不穷,更新迭代快,程序员所使用的语言、框架、模式都会发生天翻地覆的变化。如果不主动学习,你很快就会被落伍淘汰。
沟通能力
这种其实在面试过程中能体现出来,沟通主要是技术沟通,以及和客户之间的沟通,所有技术都不是闭门造车就能搞定的,沟通能让事情推进起来更加顺畅,包括和产品经理之间的流畅的沟通也显得非常重要。程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
责任心
线上出bug了,第一时间响应、处理;
团队项目进度紧张、人手紧缺,主动补位;
又或者,在项目推进过程中如果只是关心自己模块内容,对于整个项目置之不理,只守着自己的一亩三分地。
随着时间轴的拉长,你会发现,有此f技术能力不是最好的,甚至不如你的小伙伴,最后做到了技术主管或经理、甚至更高职位,这里面除了技术实力,还有一个叫“责任心”的东西。
结束语
判断一个程序员的水平高低,核心是其解决问题的能力,而解决问题的能力养成,需要扎实的底层基础来支撑,要综合其代码质量、项目经验、框架能力、逻辑思维等等多方面,不能单看某一方面。
而对于1-6岁的程序员来说,想要成为一个高级程序员,变得越来越优秀,唯有持之以恒去学习、积累、实践、修炼。
----end----
一:50岁的时候,头发还是黑色的浓密的。
二:赚到的钱能保证家人快乐的生活。
三:当公司不要你的时候能成功转型。
其他的例如编程经验、写代码厉害啊什么的根本不值一提。
这就是程序员的面试嘛 :-)
(1)是否能熟练使用所用编程语言的主要功能;
(2)是否知道用合适的数据结构解决问题;
(3)是否知道基本的算法,并且用这些算法解决问题;
(4)只看少量代码的话,从变量命名和程序结构一般能够判断是否是新手;
(5)给出具体问题,能够用程序解决,能考虑到所有的边界条件;
(6)考虑程序的可扩展性,可维护性;
再往高一点走,就需要
(7)面对模糊的问题能够分析并且找到细节和具体的需求;
(8)知道利用已有的库,架构和工具等来解决新的问题,而不是什么都自己实现;
(9)能发现并改进已有程序中的瓶颈;
(10)对整个大项目的程序架构有很清晰的了解,知道相互之间的依赖,以及知道为什么采用这样就架构;
(11)给一个大的项目,能够对整个项目的程序架构和组件进行合理的设计,考虑并行性,低延迟,大数据量等各种需求和应对方式。
带领团队已多年,项目数十个,对判别程序员水平的高低,我有自己的看法,欢迎大家一起交流。
1代码质量。
优质的代码,首先是经得起考验。静态分析工具过一遍,无错误,无警告。当然警告部分需要人工重审,因为静态分析工具不一定完全正确。过了这一关,重要的还须过测试关,少Bug或无Bug的代码,才是好代码。优质的代码带有技术气质和艺术气质。阅读起来,有一种赏心悦目的快感,即工整美观,干净利落,又蕴含着理论常识,运用技巧,精准到位。
2表达能力。
3文档能力。
文档形式包括但不限于PPT,文字,图表,音视频。文档内容包括但不限于API说明,工具手册,项目事项,技术论述,陷阱总结,方案展示,指导手册。文档要求必须是满足公司或部门的规范和格式,否则五花八门的,不利于交流和传承。
以上3点,是我量化判断程序员水平的标准,仅供参考。相比水平,其实我更看重程序员的态度,执行力,时间观念,自学力等等,也是很重要的团队作战能力,也可以说是程序员水平的考量吧。
谢谢大家。
田晶
1能力验证简述
能力验证(Proficiency Testing)是指利用实验室间比对确定实验室的校准、检测能力或检查机构检测能力的活动,实验室和检查机构等可以通过能力验证,识别与同行机构之间的差异,补充其内部质量控制技术,为自身的持续改进和质量管理提供信息。实验室的用户、监督和管理机构、评价机构等可通过利用CNAS能力验证结果,判断实验室和检查机构等是否具有从事校准、检测活动的能力,以及监控他们能力的持续状况。
随着对实验室检测和校准结果准确性的要求越来越严格,能力验证已成为评定和监督实验室和检测机构技术能力的重要手段,也是认可机构加入和维持国际相互承认协议(MRA)的必要条件之一。我国自2001年开始进行实验室能力验证活动,并于2004年和2005年进行了针对珠宝检测实验室的能力验证。2009年的《CNAS T0438 大颗粒钻石分级及红宝石鉴定》能力验证计划由CN AS组织(《关于公布 CNAS 2009年度第二批能力验证计划的通知》(认可委(秘)(2009)28号)),国家珠宝玉石质量监督检验中心负责具体实施。
2本次计划的目的和意义
(1)加强各珠宝检测实验室横向联系,规范珠宝玉石检测行业。
(2)统一钻石分级检测尺度,避免各质检机构钻石分级结果差异。
(3)统一各珠宝检测机构对新规格的钻石颜色分级标准样品掌握的尺度,维护全国范围内钻石分级检测技术水平的稳定。
(4)统一各珠宝检测机构对充填处理红宝石判定的尺度。
3参加验证的实验室条件
此次能力验证计划依据CNAS-RL02《能力验证规则》要求组织实施,计划本着科学、真实、客观的原则,采用统一样品、统一要求、统一记录格式、统一汇总分析、统一结果通知等方式,依据国家标准GB/T 16554-2003《钻石分级》,进行裸钻分级比对活动,依据国家标准GB/T 16552-2003《珠宝玉石 名称》、GB/T 16553-2003《珠宝玉石 鉴定》,对红宝石样品进行宝石鉴定工作,满足条件的珠宝实验室自愿报名参加。条件包括:
(1)实验室应遵守CNAS能力验证的政策和程序。
(2)实验室应具备GB/T 16554-2003《钻石分级》国家标准中规定的钻石分级检测所需环境要求。
(3)实验室具备宝石鉴定所需仪器设备。
(4)实验室需配备至少2~3名取得国家注册珠宝质检师资格,从事钻石分级及宝石检测工作2年以上技术人员。
4参加验证的实验室范围
截至2009年5月20日,国家珠宝玉石质量监督检验中心共收到报名表63份,其中62家实验室参加了此次能力验证计划(表1),并提交了能力验证结果。参加本次能力验证的实验室涉及全国22个省及直辖市,其中大部分获得国家实验室认可,占参加比例的887%,其余实验室也获得相应的计量认证等资质证明。
5能力验证结果及分析
本次能力验证选取的样品为5粒未镶嵌钻石样品,进行钻石分级;5粒未镶嵌红宝石样品,进行宝石鉴定。要求各实验室按正常钻石分级及宝石鉴定程序进行比对工作,并在24小时内完成全部样品的检测工作,所出结果代表本实验室日常工作水平。本次能力验证结果表明,出现有问题的实验室绝大部分为检测结果低于指定值(即判定过于严格),极少虚高标注结果的情况。全部为满意结果的实验室共计50家,出现有问题结果实验室共计12家。
本次能力验证结果出现有问题及不满意结果主要集中在红宝石样品(编号CN AS T0438-10)的充填处理上,12家出现有问题的实验室中9家判定该样品结果有问题。另有4家实验室在钻石颜色级别判定中出现低标结果,2家实验室在钻石净度级别中出现有问题结果。
钻石样品(编号CNAS T0438-02),颜色级别公议值为E色,由于现在的珠宝市场中销售的钻石饰品颜色级别多为G色至K色之间,D、E、F色的高色级钻石较少,实验室检测人员日常检测中对高色级钻石训练较少,加之一些实验室的钻石颜色分级标准样品只有关键颜色,不包含高色级部分,导致实验室对高色级钻石颜色判定上过于谨慎,本次能力验证中有四家实验室将该样品的颜色级别定为G色,出现低标现象。
红宝石样品(编号CNAS T0438-06),其特性为在10倍放大检查下充填现象不可见,而在超过10倍放大检查下可见轻微充填处理。根据GB/T 16553-2003《珠宝玉石 鉴定》规定:“红宝石充填处理为10×放大检查可见裂隙或表面空洞中的玻璃状充填物或残留气泡”,其命名应该判定为红宝石,而不是红宝石(充填处理)。但是根据本次提交的结果来看,大多数实验室还是把其判断为红宝石(充填处理),我们认为是不妥的。所以样品CNAS T0438-06的结果不列入本次计划的能力评价范围,结果仅供实验室参考。但需要指出的是,实验室代码为T0438-31的实验室,在CNAS T0438-06上将其定名为合成红宝石,我们认为是属于比较严重的错误,希望该实验室认真分析原因,找出不足,进行改进。
红宝石样品(编号CNAS T0438-10)是未经过充填处理的红宝石,但由于实验室在对待能力验证样品的结果判定上过于严格谨慎,导致将没有经过处理的红宝石定为经过充填处理的红宝石,甚至定为经过染色处理的红宝石。
表6-3-1 全国部分珠宝首饰质检机构名录
续表
续表
对于大多数新的Minecraft玩家来说,花几分钟的时间才能弄清楚如何挖掘出 游戏 中至关重要的钻石,但是事实证明,培训人工智能技术来完成这项工作比预期的要困难。
19年整个夏天,Minecraft的发行商其他组织都向程序员发起钻石挑战,要求他们编写可以找到令人垂涎的钻石的AI程序。
大多数新手可以在第一次 游戏 中就可以挖到钻石。
但是在提交的660多个程序代码中,没有一个可以完成任务。
目前的目标是是否可以在不需要大量计算能力的情况下解决该问题。
一位组织者表示,她对某个程序员的代码“印象深刻”。参赛者可以使用记录的人类 游戏 库,展示如何导航 游戏 ,获取 游戏 中的物品并避免“死亡”。
微软研究院首席研究员卡特娅·霍夫曼说:“我们提出的任务非常艰巨。” “在Minecraft中查找钻石需要许多步骤-从砍伐树木到制作工具,再到 探索 洞穴并实际找到钻石。
“虽然没有提交的代码完全解决任务,但他们已经取得了很大的进步,并学会了制作此过程中所需的许多工具。”
自2011年发布以来,《我的世界》就已经大受欢迎。
这款开放世界 游戏 的销量已超过18亿册,每月活跃玩家超过112亿。
钻石是Minecraft中最重要的资源之一,因为它可以用来制造强大的装甲和强大的武器。
然而,为了获得钻石,玩家必须首先完成许多其他步骤。
Minecraft玩家朱尔斯·波特利(Jules Portelly)告诉英国广播公司,“如果您熟悉这款 游戏 ,则不需要花费超过20分钟即可获得第一枚钻石。”
参赛者只能使用一个图形处理单元(GPU)和四天的培训时间。就上下文而言,人工智能系统通常需要数月或数年的 游戏 时间才能掌握《星际争霸2》之类的 游戏 。
参赛者还可以使用一个相对较小的Minecraft数据集,其中记录了6000万帧人类玩家数据,以让他们的系统进行学习。参与者必须提交其源代码,以便组织者可以对其进行验证
霍夫曼博士解释说:“每集开始时,它们都是在程序生成的Minecraft世界中产生的。”
“因此,他们确实需要学习寻找资源,制造工具和寻找钻石的概念。”
组织者希望程序员通过称为“模仿学习”的技术来创建通过示例学习的程序。
这涉及通过让AI代理模仿人类或其他软件解决任务的方式来尝试使AI代理采用最佳方法。
这与单纯依靠“强化学习”形成了鲜明对比。在“强化学习”中,一个智能体被有效地训练,通过反复试验找到最佳解决方案,而不需要利用过去的知识。
研究人员发现,单独使用强化学习有时可以获得更好的结果。
例如,DeepMind的阿尔法狗程序击败了该研究中心此前的一项努力,即利用强化学习和对人类 游戏 中的标记数据的研究来学习围棋。
但是这种“纯粹的”方法通常需要更多的计算能力,这使得它对于大型组织或政府之外的研究人员来说太昂贵了。
主要竞赛组织者、卡内基梅隆大学(Carnegie Mellon University)博士生威廉•古斯(William Guss)向英国广播公司(BBC)表示,竞赛的目的在于表明,“对我们来说,将大规模计算用于解决问题,未必是推动这一领域发展的正确方式”。
他补充道:“它直接阻碍了对这些强化学习系统的民主化访问,并将在复杂环境中培训代理人的能力留给了拥有大量计算能力的企业。”
但这一结果可能有助于突显这些资金充足的实体所具有的优势。
以上就是关于如何辨别一个程序员水平的高低全部的内容,包括:如何辨别一个程序员水平的高低、实验室能力验证、我的世界钻石挑战,让人工智能AI来挖钻石,程序员表示我该怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)