做一个程序员需要达到什么样的水平

做一个程序员需要达到什么样的水平,第1张

辨别一个程序员的水平唯一的办法就是看 产出质量。

算法和数据结构都是锦上添花,并非是雪中送炭。而一个程序员的水准大致上是可以通过之前的代码质量估算出来的。【如果你可以获得此程序员的真实编写的代码,比如原创的Github】。

举个栗子:下面是我最近在单位一个同事写的代码,Java语言

private boolean checkProportions(String str, Integer grades) {

String proportion = str

for (int i = 1i <gradesi++) {

String st = proportion.substring(proportion.lastIndexOf(",") + 1)

if (st.equals(""))

return false

proportion = proportion.substring(0, proportion.lastIndexOf(","))

}

if (proportion.equals(""))

return false

str = str.replace(".", "")

str = str.replace(",", "")

for (int i = str.length()--i >= 0) {

int chr = str.charAt(i)

if (chr <48 || chr >57)

return false

}

return true

}

大致上的功能就是将 1,2,6.2,4,1 的字符串判断每一 ‘,’内是数字,而且长度符合规定

这样的代码看上第一眼就觉得非常的丑陋。所以在我的要求之下,进行了一次重构。

private static boolean checkProportions(String str, int grades) {

String[] proportions = str.split(",")

if (proportions.length != grades) {

return false

}

for (String s : proportions) {

if (!NumberUtils.isNumber(s)) {

return false

}

}

return true

}

这里看上去差不多就Ok。这样的代码其实也并没有用到什么数据结构和算法,就是很简单的字符串处理。

实际情况:在我们写的绝大多数的代码里面,大部分属于业盯瞎务逻辑,极少部分的代码需要使用到算法和数据结构侍卜,在这样的情况下,我们能使用的到的技能最为关键的是让代码如何更加合理。而让代码更加优凯谈空秀的方式是通过千锤百炼的重构,而重构是极大的考验一个程序员耐心和能力的东西。

质量的范围广泛,我从下面几个小方面聊聊。

出货能力:如果一个程序,算法再精妙,不能出货都是扯淡,我看过某某大神,算法溜得很,但是一个人完全做不到按照工程需要把事情给做完。

优化能力:并没有一个程序是一步到位的,一个工程的交出去可运行了,那才是第一步,很多时候随着业务的增大,对性能的要求越来越高,有一定对于代码优化的能力也是比较重要的。

调错能力:项目越大,遇见的Bug也就是越离奇,这个时候需要强大的Debug能力,找出那个最为关键的错误点,甚至于追溯底层框架的源码。

技术掌控:你项目能用Spring,Hibernate等等框架,但是有没有想过,这些技术你真的可以掌控么,如果有一天你的框架版本需要升级,真的做得到么?甚至于从Hibernate转为MyBatis。

算法和数据结构是影响到一些核心区的问题,但是其他的一些技能,比如面向对象的架构设计,代码的低耦合,那都是对整个项目有着直观改善的技能。并非是贬低算法,而在实际工作中,有太多比算法更重要的问题了。

考察基本功,可能对 *** 作核镇系统,语言,编译链接器,内存,进线程,网络,存储,图形学都要有深刻理解,也很考验逻辑推铅销理能力,在一堆证据中构建合理的证据链推导出最终结果,懂得大胆假设小心求证的工作方法,也考察耐心和毅力,有的问题需要构建复杂的测试场景,还要反复多次测试才能重现,考察沟通能力,复杂的bug可能涉及多个部门开槐氏游发组,可能还要对最终用户做访谈。

虽然现在很多科技公司已经取消了主力程序员的面试题,但是不少公司并没有取消初级程序员的笔试题,因为笔试题能够考察出一个初级程序员的知识结构,对于项目经验比较少甚至是没有项目经验的初级程序员来说,笔试是公司考察一个初级程序员能力的基本依据。所以,很多笔试成绩是初级程序员进入下一个环节的重要基础。

对于初级程序员来说,笔试都考察什么知识呢?其实大部分笔试的考试内容都是非常基础的内容,比如Java初级程序员的笔试题往往就是考察对Java基础概念的理解是否清晰,是否掌握基本的语法,能否建立起面向对象的编程思维等等,亮祥镇看一个简单的题目:

这个程序在语法上有没有问题呢?这个题目考察的是Java程序员对“接口可以多扩展”这个概念的掌握,这个程序是没有语法问题的。再看一个例子:

这个例子输出的结果是多少呢?输出的结果是322,这个例子考察的是对集合概念的理解,尤其是对Set应用的理解。再看一个例子:

这个例子的运行结果是什么呢?答案是程序在运行中会抛出敬粗异常,这个例子考察的是对TreeSet概念的掌握。再看一个例子:

这个例子考察的是对内部类的理解,包括静态内部类,要想完成这个例宴散子需要了解三方面知识,第一是内部类,第二是static内部类,第三是多态,这个程序是无法编译通过的,原因在于创建static内部类对象的过程不能采用基于外部类对象创建的方式。

通过以上四个例子我们会发现,其实这些题目并不复杂,但是却非常考验初级程序员对基础概念的掌握情况,如果对基础概念掌握的比较清晰就很容易能够完成,如果掌握的不够全面,那么这些看似简单的题目也无法完成。所以说,在参加笔试之前,一定要把这些基本的概念搞清楚。

最后给大家留一道题,看看你能不能回答出正确的答案(开启和不开启断言两种情况分别描述):

大家在评论区写出你的答案和理由吧。

我使用Java语言多年,我在头条上也写了关于学习Java的系列文章,想学习Java的朋友可以关注我,相信一定会有所收获。

如果有Java开发方面的问题,也可以咨询我。

谢谢!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12312789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存