2008-03-27
一个JAVA程序员应该知道哪些?
看了好多坛子里的帖子,也来写写我认为的一个java程序员应该知道的东西。
1、知道java语言。这应该是废话,不过还是提一下,也确实有人连关键字都认不全。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
3、知道RuntimeException和Exception的区别。
4、知道怎么用javac、java、jdb。这是基本功,虽然在项目中你也许永远用不到。
5、知道怎么使用ant。
6、知道jvm的类装载过程、gc。
7、知道类库是什么,至少熟悉一个类库的设计结构,如swing。
8、你不一定要非常熟悉Thread以及如何编制多线程程序,但是必须知道什么叫线程安全。
9、你不一定要知道cache的概念,但是一定要知道buffer的概念。
10、如果你使用IDE,至少知道这个IDE下如何debug,而不是用println出信息来进行所谓的“debug”。
11、知道为什么使用logger,而不是习惯性的或程序性的添加log代码。
12、知道如何测试你的代码,最好会使用一种单元测试框架,如junit。
13、如果你开发web应用,知道request、response、servlet的概念,最好还知道filter和listener。
14、如果你使用web framework开发web应用,并认为你使用的framework是最好的,那么一定要知道为什么它是最好的,而不是仅仅说出“它是最好用的,最方便的”这样子的理由,否则就默默的使用而不要到处宣扬它是最好的。
15、鉴于大部分的应用都会使用数据库,你应该知道如何使用JDBC。
16、你也许不知道如何去做,但是你至少要非常清楚要做什么。
1、知道java语言。这应该是废话,不过还是提一下,也确实有人连关键字都认不全。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
3、知道RuntimeException和Exception的区别。
4、知道怎么用javac、java、jdb。这是基本功,虽然在项目中你也许永远用不到。
5、知道怎么使用ant。
6、知道jvm的类装载过程、gc。
7、知道类库是什么,至少熟悉一个类库的设计结构,如swing。
8、你不一定要非常熟悉Thread以及如何编制多线程程序,但是必须知道什么叫线程安全。
9、你不一定要知道cache的概念,但是一定要知道buffer的概念。
10、如果你使用IDE,至少知道这个IDE下如何debug,而不是用println出信息来进行所谓的“debug”。
11、知道为什么使用logger,而不是习惯性的或程序性的添加log代码。
12、知道如何测试你的代码,最好会使用一种单元测试框架,如junit。
13、如果你开发web应用,知道request、response、servlet的概念,最好还知道filter和listener。
14、如果你使用web framework开发web应用,并认为你使用的framework是最好的,那么一定要知道为什么它是最好的,而不是仅仅说出“它是最好用的,最方便的”这样子的理由,否则就默默的使用而不要到处宣扬它是最好的。
15、鉴于大部分的应用都会使用数据库,你应该知道如何使用JDBC。
16、你也许不知道如何去做,但是你至少要非常清楚要做什么。
评论
抛出异常的爱
2008-03-31
aniken 写道
nazar 写道
debug ?
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
看来大家对debug的问题似乎看法差异很大。我在这里澄清一下。
首先、对于“经常用debuger不见得是好习惯”,似乎我从未提到要经常使用debugger。当然我也没去看楼上linux内核调试的讨论,我觉得相关性不大。
其次、我的初衷是想说一个基础的java程序员要会使用jdb,在ide环境要会设置断点进行debug。以前看到很多来面试java程序员的同学,代码运行有问题,上来就在代码中插一堆out.println,结果也不知道print出了什么东西,改来改去也没发现问题在哪里,所以很是反感。你何不设点断点debug一下呢?至少在没发现问题前,你的代码不用改动了吧。
最后、使用debugger是不是不是好习惯,使用println是不是就是好习惯,我无法判断,但是我还是建议新人用debugger。要精准的使用println来做"debug"是需要功底和经验的,不是那么容易的。
debug对于已有的代码改进有很好的帮助
可以让你看清代码的逻辑.
但是用来写代码时debug那有点太.....
纯凭侥幸来完成代码.
所有的状态都不顾
写出来的东西只有if else for while之类的....东东
跟本不管写的东西自己能否看的懂
我看用log4j至少还可以当注释用了.
(前面有个大哥说用sysout来写代码.就没有想过以后还会有回来看这些代码么)
最好的方式还是写好测试...一点点重构.
aroundall
2008-03-30
zhengshina5 写道
依我看,能忽悠是最主要的。。。
能忽悠一时,忽悠不了一世
gongkuang
2008-03-30
新手学习了。
zhengshina5
2008-03-30
依我看,能忽悠是最主要的。。。
aniken
2008-03-30
nazar 写道
debug ?
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
看来大家对debug的问题似乎看法差异很大。我在这里澄清一下。
首先、对于“经常用debuger不见得是好习惯”,似乎我从未提到要经常使用debugger。当然我也没去看楼上linux内核调试的讨论,我觉得相关性不大。
其次、我的初衷是想说一个基础的java程序员要会使用jdb,在ide环境要会设置断点进行debug。以前看到很多来面试java程序员的同学,代码运行有问题,上来就在代码中插一堆out.println,结果也不知道print出了什么东西,改来改去也没发现问题在哪里,所以很是反感。你何不设点断点debug一下呢?至少在没发现问题前,你的代码不用改动了吧。
最后、使用debugger是不是不是好习惯,使用println是不是就是好习惯,我无法判断,但是我还是建议新人用debugger。要精准的使用println来做"debug"是需要功底和经验的,不是那么容易的。
nazar
2008-03-30
debug ?
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
楼主可以去linux 内核社区看一下为什么linux 内部没有一个outofbox的内核调试器的讨论。
经常用debuger不见得是好习惯。
WorldHello
2008-03-29
除了java之外,还需要懂很多东西!
jix
2008-03-29
是不是说得内容都太简单了
lishali12345
2008-03-29
学习一下
因为我还只是在学习
没有一点项目经验
希望大家能多一些言论,就可以有很多的经验来吸收了呵呵
因为我还只是在学习
没有一点项目经验
希望大家能多一些言论,就可以有很多的经验来吸收了呵呵
fish4j
2008-03-29
Team work ?
aniken
2008-03-29
RCFans 写道
aniken 写道
foxxiao 写道
现在的情况是,紧紧知道这些,是不够的
我认为仅仅知道这些就可以做一个称职的java程序员,否者只能说项目中没有称职的架构师
知道这些只能做一个基本合格的开发人员,他的实现方法必须在高级程序员的指导下去完成
一个合格的开发人员不但要创造出树的一片叶子,还需要知道那片叶子的最佳位置
编码能力只能保障这个程序员写出的代码不会有太多程序漏洞和非业务性BUG
说的很好,我推崇的项目人员架构就是
项目经理 ...
|
...
项目小组 项目小组 ....
|
项目组长(和高级程序员可以是一个人)
高级程序员(和项目组长可以是一个人)
程序员1
程序员2
....
程序员n (3<=n<=7)
从项目管理的角度来说,我认为程序员不需要知道自己所处的在整个项目中的位置。对于特殊的项目,如安全要求很高的或开发的是核心的产品,这点尤为重要。
RCFans
2008-03-29
aniken 写道
foxxiao 写道
现在的情况是,紧紧知道这些,是不够的
我认为仅仅知道这些就可以做一个称职的java程序员,否者只能说项目中没有称职的架构师
知道这些只能做一个基本合格的开发人员,他的实现方法必须在高级程序员的指导下去完成
一个合格的开发人员不但要创造出树的一片叶子,还需要知道那片叶子的最佳位置
编码能力只能保障这个程序员写出的代码不会有太多程序漏洞和非业务性BUG
hacker47
2008-03-29
LZ写得很好,是一个初级程序员必须弄清楚的了!
aniken
2008-03-29
BEA 写道
最重要的一点是:coding的速度要快
我认为按时完成coding任务就可以了,快而优自然更好,但是如果不能优,还是请不要快。实际上大的项目中,个别程序员提前完成任务,对整个项目进度而言并无多大帮助。当然对于程序员本身,在保证代码质量的基础上不断提高coding速度自然是件好事。
aniken
2008-03-29
chinata 写道
aniken 写道
看了好多坛子里的帖子,也来写写我认为的一个java程序员应该知道的东西。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
那你和我说说java语言为什么没有采用多继承?
知道2充其量是知道怎么在java中模拟多继承罢了
语法是为语义服务的,java的设计者不认为语义上需要多继承,并认为多继承只为会令事情搞得复杂。我非常认同这种观点。不过话说回来,其实作为程序员,多继承还是单继承与之并无多大关系,这应该是设计人员应该考虑的事情。至于“java中模拟多继承”,有这个必要吗?倘若java需要模拟多继承,而java设计者却死活不加入多继承的语法,那倒是很奇怪的事情了。
BEA
2008-03-29
最重要的一点是:coding的速度要快
chinata
2008-03-29
aniken 写道
看了好多坛子里的帖子,也来写写我认为的一个java程序员应该知道的东西。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
2、知道接口和抽象类的区别。这似乎也是老生常谈了,不过认识了这点,也就会明白为什么java语言没有采用多继承。
那你和我说说java语言为什么没有采用多继承?
知道2充其量是知道怎么在java中模拟多继承罢了
aniken
2008-03-29
armorking 写道
aniken 写道
sslaowan 写道
过去一直认为会debug了就算对语言入门了,可是自从用了TDD,就再也没用过debug,真的忘记怎么用IDE的debug了
后来看到Bob大叔(也可能是Fowler?反正是这个级别的人)说,不要为使用out.println而感到羞愧,因为大师也这么用
后来看到Bob大叔(也可能是Fowler?反正是这个级别的人)说,不要为使用out.println而感到羞愧,因为大师也这么用
有相关文章吗?很好奇!大师也习惯用out.println做调试?
我写了6年半java,一直在用out.println
我从不因此而觉得羞愧
1、用out.println至少不用依赖于IDE
PS:我的IDE是editplus2
2、out.println的调试方法的弱点是,每次修改程序都得重新编译
如果一下子找不到点子上,就得往复修改编译,降低调试效率
但是,也因为这个原因,长期这样作下来,能够培养出一种对问题代码的嗅觉
这是程序员最应该具有的素质之一
既然如此为什么不用logger呢?
qjzhyf
2008-03-28
哈哈。我喜欢用log.warn("xxxx=" + "come here!!!" )
八百烦恼
2008-03-28
抛出异常的爱 写道
1.知道要作什么事
2.知道团队中其它人都在作什么事
3.知道怎么样问问题
4.知道完成任务所需要的大概时间
2.知道团队中其它人都在作什么事
3.知道怎么样问问题
4.知道完成任务所需要的大概时间
知道怎么样问问题 !!
我觉菜鸟大大们一定要知道啊 要不然 你要问的是"A方法" 结果你大哥误会听成你要问"B方法"
问一次两次还和你耐心解释 到后面啊 就烦你了
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 1959 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
DSC06570.JPG
共 4 张
共 4 张
最近加入圈子
链接
最新评论
-
一次尴尬的面试经历
也不一定,网上评论还是有一点可信的地方
-- by zhangsheng79 -
一次尴尬的面试经历
xly_971223 写道网上的评论你也信,那只是失意的孩子发牢骚的地方 网上 ...
-- by aniken -
一次尴尬的面试经历
网上的评论你也信,那只是失意的孩子发牢骚的地方
-- by xly_971223 -
一个JAVA程序员应该知道哪 ...
aniken 写道nazar 写道debug ? 楼主可以去linux 内核社 ...
-- by 抛出异常的爱 -
一个JAVA程序员应该知道哪 ...
zhengshina5 写道依我看,能忽悠是最主要的。。。 能忽悠一时,忽悠不了 ...
-- by aroundall






评论排行榜