等级大神在英雄联盟中代表什么(等级大神在英雄联盟中代表什么意思)
如何快速鉴别“菜鸟”级别和“大神”级别的程序员?
谈不上鉴别大神鉴别的程序员,毕竟我也不是大神,怎敢轻易的评价大神。
如果是我的组员,并且我对他不了解,那么我会给他分配一些查找BUG的任务,最多协助他完成本地环境的搭建,告诉他如何重现问题,看看他是否可以找到BUG并修复。
如果他可以独立面对大量的陌生的代码,抽丝剥茧找到BUG并修复,那么我认为他是个很出色的程序员,加以时日,很大几率会成长为大神。
如果他有自己解决问题的思路,知道如何阅读代码、查找问题,虽然最终结果不尽如人意,但也算不错的程序员,如果后期努力,应该也有机会成为高手。
没有思路,也没有方法,不过态度良好,在点拨之下,教一步学一步,最终也能达到效果,只能说是合格的程序员吧,技术差点儿,胜在态度。
还有一种就是要技术没技术,要态度没态度的,这种的“菜鸟”,坚决要清除出队伍。
当然,很多时候要鉴别程序员的水平,是在面试的时候,这时可没有太多的时间去分辨。我一般是看这个人业务理解能力、逻辑思维能力,最后才是技术能力。
说白了,就是聊项目,你做的项目是什么,业务流程是怎样的,你在项目里面主要负责什么,你对项目的贡献有哪些。在聊项目的过程中,顺便问问技术方面的问题,也仅限于你们项目把哪些数据放到Redis中,更新或超时策略是什么,而不是你们通过什么命令把数据放到Redis中,用Java的话怎么写。
程序员也是有一个成长的过程,希望现在的“菜鸟”,都能通过自己的努力变成“大神”!
一问数据结构: 链表、循环队列、优先级队列、二叉树的使用经历,用来解决什么问题,你就知道他层次了。没用过?那是初级业务员,不叫程序员。用过链表,顶多数据操作员。用过循环队列解决任务或者 IO 问题,那碰到一个高手,解决问题能力很高。至于优先级队列、二叉树嘛,算是数学逻辑比较过硬。
二问内存管理: 缓冲区的意义,使用缓冲区的经历;自动释放内存在什么情况比手动释放内存性能好;拷贝、标记清除、压缩、引用计数的过程。
三问通信协议: 拥塞控制与网络状况有什么关系;tcp 为什么需要握手;udp 为什么没有粘包;粘包有什么好处。
四问 IO 模型;
五问并行;
六问进程通信;
...
别问什么大数据、物联网、区块链、人工智能之类的玩意,没有任何营养,任何一个员工跟着公司某个项目干两年这些类型的项目,就成了大数据、物联网、区块链、人工智能高手了。
可以这么说,只要能够回答上面六条,就算没接触过这些技术,也能在两个月成为大数据、物联网、区块链专家。让 linus 学这些东西,俩星期就够了。
看循环和if的写法,比较直观
新手特别容易陷入多层for和if嵌套,最后代码难免变成这样:
for(...){
for(...){
for(...){
//...很多个for,或很多个if
}
}
}
再比如,某函数当参数a不为0时执行一段逻辑,为零时什么都不做。
新手:
if (a!=0){
//一段逻辑代码
}else {
return ;
}
老手:
if(a==0){
return;
}
//逻辑代码
//逻辑代码
//...
//...
老手的错误处理意识比较好,比如经常会用到try catch,新手通常没这个意识,或运用不当。
老手用正则都比较6,新手八不得绕开正则。正则确实头痛,这一点只能参考,毕竟有些老手也不喜欢正则~
老手通常会忍不住先做参数校验再引用。新手很容易拿来就引用。
还有很多,懒得打了
很多公司在面试程序员的时候有的都不用笔试,直接谈上一段时间就能给出结论这个人技术能力是不是适合做,能拿到多少工资,识别程序员水平高低谈上几句话就能搞定
如何鉴别一个程序员水平的高低?
1.编程基本功,直接用笔试题目或者面试的时候说几个在项目中遇到的常见语法细节,这种属于比较原始的考察方式,一般这种方式适用于刚毕业或者工作经验不是很长的程序员,很多老程序员面试时候见到有单位出笔试题目,一般会直接选择走人,笔试能够测试基本功,有些老程序员由于常年在一个专职的岗位上知识有些固化了,可能导致以前的知识的遗忘,基本上做东西的时候都会先在网络上搜索下,然后才能做东西,坦白而言这种程序员距离优秀程序员还是存在很大差距,但现实中这样程序员大有人在。
2.直接上机器写代码,这种国内很多公司都会这么干,直接上机实现一个功能,谷歌这种公司倒是经常采用这种方式,由于这种方式在现实中操作起来还是比较麻烦,所以大部分公司还是以笔试或者面试为主,直接上机写代码可以很直观的看到代码逻辑思维,代码风格,编程功底一目了然,这是最直接测试程序员基本能力的方法。
3.直接面试中通过实际的项目案例来考察,基本上按照简历上做的项目问几个在实际用到的细节就能大致判断一个人水平高低,记得有个同事说起如何面试,直接会说专业的知识一直问到底,知道的多的直接录取,虽然有点夸张但是有一定道理的,毕竟公司要的是对口的直接能够上手干活的人。
通过上面的三条,其实如何鉴别菜鸟还是大神都已经一目了然了。
菜鸟和高手几点区别
1.菜鸟程序员拿到新的需求就急忙忙的上阵打仗了,把自己搞的忙呼呼的,由于考虑不全面做的东西基本上经常被打回来重新写,经常的加班加点。高手拿到需求会在大脑之中,不停的寻找最佳的解决方案,可能在写代码之前已经有很多方案被否定了,所以写出来的代码成品率非常高,真正的高手写代码的时间很短,大部分时间都在思考梳理思维。
2.菜鸟程序员基本上写完代码之后,不太习惯对代码后续优化,甚至有些代码过了一段时间自己都不能识别出来,写代码的时候基本上没有指导思路,后续很容易忘掉。高手写的代码时间长了回来基本上瞅一眼就能明白,主要高手在代码上不断精益求精,不停更新自己代码思维。
3.抗压能力也是菜鸟程序员和高手一个很大的差异,菜鸟遇到大的需求会觉得暗无天日,还会怀疑是不是自己不适合做程序员,高手来再大的需求都会很沉稳,任何一个程序员都会遇到项目紧急状态,抗压能力没有很难在这个行业呆下去。
程序员高手也是从小菜鸟一步步学习起来的,要做到技术高端层次,先把基本功弄扎实,然后坚持下去,早晚会从小鸟变成老鸟。
带过几个团队,不过我不算大神,也是个渣渣。这个新手和老手不能按照工资和什么工作年限来区别。我见过工作两年不如应届生的,只会实现功能,写的代码容错性不高,少传一个参数到后台就直接报错。总的来说刚学的还是容易犯几个错误。
1.命名不规范,刚学的一般很容易出现命名和实际功能完全不沾边,命名格式也不统一。老手应该是见名知意的命名。
2.注释描述不清楚,很多时候看了注释也不明白做了什么功能。老手注释的描述很清楚,传递的参数,实现的功能,返回的结果封都非常简洁明了。
2.滥用嵌套,如果if这种判断条件过多,会写成一个倒着的三角形。老手基本上不会出现这种情况,只是一个逻辑正反问题。
3.判断条件单一,一般只判断null,或者压根不判断,直接进行使用。老手通常会进行一系列的判断或者给出默认值,排除掉非正常因素过后在执行功能代码。
4.编码效率和规范,刚学的通常会在不理清楚逻辑之前就开始编码操作,导致写到一半或者完工重头再来改,导致编码也不能按照规范进行。老手接手过来一般不想改动,看着眼睛花,会删掉重写。
平时注意到的就这几点,第一次回大这些个问题,还有很多,不过每个人都是这么过来的,总得有个时间过程,努力了就不会太差。