编程随想:Java新手的通病
概述
其实很早以前就想写这样一个文章,可惜当时我没有 Blog,所以到现在才写下来。最近几年,随着
Java 在 Web 应用和企业应用两个方面的普及,对 Java 程序员的需求量大增。因此 Java 程序员的数
量也突然猛增(从 TIOBE 的排行榜可以看出来)。这虽然对 Java 社区来说是好事,但也暴露出一些
问题。一方面由于大量的开发人员进入 Java 这个领域,相应的教学、培训跟不上;另一方面,很多
进入 Java 领域的开发人员都比较浮躁,寄希望于"速成",没有耐心练好基本功。
根据最近几年我面试 Java 程序员的经历以及对周围使用 Java 的同事的观察,我总结了一些共通的问
题以及相应的解决方法。如果你是一个 Java 新手(刚学会 Java 不久,工作1‐2年),你可以看看我
说的通病是不是你也有,如果有的话,得赶紧补救一下了!
对算法和数据结构不熟悉
为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东。不管你使用 Java 还是其
它的什么语言,都离不开它。而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上。
既然“数据结构和算法”这么重要,为什么很多 Java 新手却很不熟悉捏?我琢磨了一下,估计有两种
可能。有些人虽然是计算机系毕业的,但是当初压根没好好学过这门课程,到工作时早都还给老师
了;还有一些人是中途转行干编程,转行后又没有好好地打基础(都指望速成)。
下面我列出几个很基本的问题,如果你每一个问题都搞得很清楚,那说明你过了这关,可以去看看
下一个帖子了。否则的话,你赶紧去找本算法和数据结构的书恶补一下吧。
什么时候该用数组型容器、什么时候该用链表型容器?
什么是散列函数?HashMap 的实现原理是什么?
什么是递归?如果你以前从来没写过递归函数,尝试着写一个(比如用递归函数进行目录树遍
历)。
什么是算法复杂度?
你是否理解空间换时间的思想?
写一个针对整数数组的冒泡排序函数,看看你要修改几次才能跑通。
写一个针对整数数组的二分查找函数,看看你要修改几次才能跑通。
后面接着说第 2 个通病:缺乏面向对象的基本功。
缺乏面向对象的基本功