日期:2014-05-20  浏览次数:20694 次

请教:什么样叫做Java知识基础扎实
学习Java有一段时间了,目前已经学到了三大框架,自己也跟是视频做了几个小项目。应该算是入门了吧。不过,心里总是发虚,总觉得自己基础不扎实,可是有不知道什么叫做基础扎实,如何夯实基础?请大家帮一下忙,说说什么样的水平敢叫做基础扎实。谢谢了!

------解决方案--------------------
SCJP的题目拿来做做,如果感觉不错,可以参加考试验证一下自己的能力。
------解决方案--------------------
我给你看看 J2SE 中的基础有哪些(原来总结的),常用的我也不说了:

Java 中的三大支柱,在 java.util.concurrent、java.security、javax.cropty、javax.security 四个包中就占了两个(多线程、安全),还有一个网络在 java.net、javax.net 中,呵呵

掌握了上面 6 个包及其子包中内容的话,那 Java 水平可以说达到了另一种境界。

PS:三大支柱是我个人给 Java 中多线程、网络和安全取的代号,并不是官方定义,嘿嘿

多线程(multi-threading and concurrent)

1:关键词:volatile, sychronized

2:传统的线程 API:java.lang.Thread, java.lang.Runnable, java.lang.ThreadGroup, Object#wait, Object#notify, Object#notifyAll

3:JDK 5 并发包(java.util.concurrent)API:线程池、执行器、信号量、倒计数门闩、并发集合(并发 Map、阻塞队列等)、原子 API(java.util.concurrent.atomic)、锁 API(java.util.concurrent.lock)

4:锁理论:自旋锁、分离锁、分拆锁、可重入锁、读写锁、锁的公平性等

涉及多线程及并发的 API 在 java.lang 中及 java.util.concurrent.** 中。

网络(network communication)

1:阻塞 TCP 通信、阻塞 UDP 通信、组播
2:非阻塞 TCP 通信、非阻塞 UDP 通信
3:客户端通信 API(java.net.URL, java.net.URLConnection 等类库)

涉及网络通信的 API 都在 java.net 和 java.nio.channels 包中。这里的网络已经将 RMI 相关包 java.rmi, javax.rmi 都排除了。

安全(security, cryptography and AAA)

1:Java 加密类库 JCA
2:Java 加密类库扩展 JCE
3:涉及密码学知识点的消息摘要、消息认证码、对称加密、非对称加密、数字签名
4:涉及网络通信证书管理工具(keytool)及 API
5:基于 SSL/TLS 的安全网络通信 API(JSSE)。阻塞 SSL 通信和非阻塞 SSL 通信
6:Java 认证及授权服务(JAAS)API

涉及安全的东西都在:

java.security(JCA、JCE、数字证书、SPI)
javax.net(SSL/TLS)
javax.security(JAAS)
javax.crypto(密码学)
JDK 工具 keytool

===================================================

如果对下面这些知识点不熟悉的话,那就先把 SSH 放一下!

在使用 Struts 等 MVC 框架之前,我认为应该先掌握:

* 了解 application, session, request, page 四种范围的特点,以及使用时的注意事项
* 熟练使用 Servlet,以及 Servlet 相关的 Filter、Listener 等
* 使用 Servlet + JSP + JDBC 至少做过一个有 10 个功能的应用
* 了解前端控制器、视图助手、组合视图、分配器视图等 J2EE 中涉及视图层的模式

在使用 Hibernate 等 ORM 框架之前,应是相当熟悉 JDBC 操作,并且知道一些理论性东西:

* 使用 JDBC 的时候,是否使用了数据库连接池,如何使用开源的数据库连接池?
* JDBC 中的行集(RowSet)是做什么用的?
* JDBC 如何实现对象/关系映射,也就是 O/R Mapping
* 为什么 JDBC 规范推荐首选从 DataSource 中获得数据库连接对象(JDBC 4.0 Specification, p.51.),
而不是首选从 DriverManager 中获得连接对象?
* 使用 DriverManager 获得连接对象时,虽然从实现 JDBC 4.0 规范的驱动程序开始,不需要使用
Class.forName("xxx.xxx.xxx.Driver"); 了,但我们也有必要了解一下这句话的作用是什么?
* 单纯地使用 JDBC 时如何实现低耦合性的事务管理?也就是说事务边界在业务层,一个业务层调用
多个数据库操作的方法完成一个事务,在这种情况下如何进行事务控制? 

在使用 Spring 等 IoC 框架之前,我认为应先掌握:

* 熟练地使用 JAXP、jdom, dom4j 等工具解析/生成 XML 文件,并能使用 XPath 进行 XML 查找
* 掌握 Java 中的反射,以及 JavaBeans 规范中的内省类,了解 JavaBeans 规范对于方法名、属性
的要求(别看这个很简单,实际上很少有人知道)
* 了解 JDK 的动态代理和 Cglib 的动态代理,了解 JDK 动态代理的限制,以及与 Cglib 动态代理
的优缺点,并且了解一下动态代理是做什么用的
* 熟练地使用日志工具,比如:JDK 日志工具、log4j 工具等,以及在使用时需要注意些什么
* 能善于使用开源框架中已经实现的东西,比如 Apache Commons 中很多实用的方法,像实现了 LRU
算法的 Map 等等之类的
------解决方案--------------------
网上找scjp scwcd的模考题做

scjp 到 95%
scwcd 到 90% 算是基本功不错