java初学者必读手册

一、 JAVA语言
1、 面向对象的三个基本特征
答:继承、封装、多态
2、 方法重载和方法重写的概念和区别
答:方法重载:方法名称相同但方法内的参数个数和参数类型不一样。
方法重写:在类的继承中,当子类的成员变量与父类的成员变量同名时,子类的成员变量会隐藏父类的成员变量;当子类的方法与父类的方法同名,参数列表、反回值类型相同时,子类的方法将覆盖父类的方法,当重写的方法在子类的对象被调用时,他总是参考在子类中的定义的方法就被隐藏。
3、 接口和内部类、抽象类的特征
答:接口:在一个类里,只有申明没有实现。
内部类:是在一个类的内部定义的一个类
抽象类:是以abstract 定义的,里面至少有一个抽象方法。
4、 文件读写的基本类
答:File Reader 类和FileWriter类分别继承自Reader类和Writer类。FileReader类用于读取文件,File Writer类用于将数据写入文件,这两各类在使用前,都必须要调用其构造方法创建相应的对象,然后调用相应的read()或 write()方法。
5、 串行化的注意事项以及如何实现串行化
答:如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法
6、 线程的基本概念、线程的本状态以及状态之间的关系
STOP(),SUSPENG()
 STOP的本意是中止一个线程。中止的线程的问题根源不在于object locks,而是object的状态。当stop()中止一个线程时,会释放线程持有的所有locks。但你并不知道当时的代码正在做什么。
 Suspend() 原意是暂时悬挂起一个线程对应的是resume()函数,用来恢复先前被悬挂起的线程。它并不释放将被悬挂之线程所有的LOCKS。
7、 线程的同步、如何实现线程的同步
答:当两个或多个线程同时访问同一个变量,并且以个线程需要修改这个变量。就要用到线程同步。在Java 中,同步是通过 synchronized 关键字来定义的。 诺是想同步化某程序段,可以使用 synchronized(object){}方法,其中{}内的程序语句被同步化。
8、 几种常用的数据结构以及内部实现的原理
答:list map使用红黑树来实现的 set 。
9、 socket通信(tcp/udp区别及JAVA的实现方式)
10、 JAVA的事件委托机制和垃圾回收机制
11、 JDBC调用数据库的基本步骤
答:注册驱动程序
生成连接
创建Statement/PreparedStatement对象
执行命令
查看结果
关闭连接,释放资源
12、 解析XML文件的几种方式和区别
答:Dom解析 在内存中创建一个DOM树,能随机访问文件内容,也可以修改原文件内容
SAX解析 线性解析,不能随机访问,也无法修改原文件
Dom解析要先用SAX解析创建DOM树
13、 JAVA的四种基本权限的定义
14、 JAVA的国际化
答:Java 中提供了诺干国际化明感类,来实现国际化的。例如:dateformat timezone 等等。
二、 JSP
1、 至少能说出7个隐含对象以及他们的区别
答:request,response, session, application, out, page, exception, pageContext
2、 forward和rederect的区别
答:redirect重定向到另外一个页面,重新开始一个请求
forward跳转到另外一个页面, 请求不断开
3、 jsp的常用的命令
答:page, include, talib, forward,
三、 servlet
1、 什么情况下调用doget()和什么情况dopost
答:当表单提交时method设置的 是 get 就调用 doget 方法,如果是 post 就调用 dopost方法。 http get方法请求一页面,调用doget() http post方法请求一页面,调用dopost()
2、 servlet的init()方法和service()方法的区别
答:初始化时调用init()方法
有请求到达时调用service()方法,service()根据请求的类型,调用doget()或depost()等方法
3、 servlet的生命周期
答:init()----serviece()----destory()
4、 如何实现servlet的单线程模式
答:默认就是单线程的
5、 servlet的配置
6、 四种会话跟踪技术
答:cookie
url重写
session
隐藏域
四、 ejb
1、 ejb 容器提供的服务
答:主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
2、 ejb的角色和三个对象
答:EJB角色主要包括Bean开发者 应用组装者 部署者 系统管理员 EJB容器提供者 EJB服务器提供者
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类
3、 ejb的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean
会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种
4、 bean实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。
5、 remote接口和home接口主要作用
remote接口定义了业务方法,用于EJB客户端调用业务方法
home接口是EJB工厂用于创建和移除查找EJB实例
7、 客服端口调用EJB对象的几个基本步骤
答;设置JNDI服务工厂以及JNDI服务地址系统属性
查找Home接口
从Home接口调用Create方法创建Remote接口
通过Remote接口调用其业务方法
五、数据库
1、存储过程的编写
2、基本的SQL语句
六、 weblogic
1、 weblogic指定大小的内存
答:在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M。
2、 如何设定weblogic的热启动模式(开发模式)与产品发布模式。
答:可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。
3、 如何启动时不需要用户名和密码。
答:修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.
4、 在weblogic管理控制台中对一个应用域(或者一个网站)进行jms以及ejb或连接池等相关信息进行配置,实际保存在什么文件中。
答:保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
5、 说说webloic中一个Domain的缺省目录结构?比如要讲一个简单的helloword.jsp放入何目录下,在浏览器上就可以打入http://主机:端口号//hello.jsp既可以看到结果,又比如其中用到了一个自己写的javabean如何办。
答:Domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
6、 如何查看在weblogic中已发布的ejb。
答:可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB
7、 如何在weblogic进行ssl的配置与客户端的认证配置或说说j2ee进行ssl的配置。
答:缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。
8、 在weblogic中发布ejb需要设计那些配置文件。
答:不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml
9、 ejb需直接实现他的业务接口或home接口吗?请简述理由。
答:远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。
10、 说说在weblogic中开发消息bean时persistenty与non-persistent的差别。
答:persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。
11、 说说你所熟悉的j2ee中的几种常用的模式?以及对设计模式的一些看法。
答:Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问
Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性
Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性
Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性
12、 java的调试如何进行。
答:jdb 是java 的调试器,类似于 UNIX系统的调试器 dbx,jdb 使用 Java调试器应用程序接口来完成对本地或远程的Java调试器的调用工作。
一般是在要测试的代码段想控制台打印消息。
13、 java中对象之间的通讯采用什么方法。
答:直接调用另一对象方法来进行通讯以及数据的交换。
14、 applet访问数据库采用了什么底层机制。
15、 tcp/ip在连接是有几次握手?释放是有几次握手?
答:建立连接是2次,释放是3次。
16、 谈谈你对swing mvc模式的理解?
答:Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swing的希望能够达到的目标就包括:
模型驱动(Model-Driven)的编程方式。
提供一套单一的API,但是能够支持多种视感(look-and-feel),为用户提供不同的界面。
严格的说,Swing中的MVC实际上是MVC的一个变体:M-VC。 Swing中只显示的定义了Model接口,而在一个UI对象中集成了视图和控制器的部分机制。View和Control比较松散的交叉组合在一起,而更多的控制逻辑是在事件监听者部分引入的。
但是,这并没有妨碍在Swing中体现MVC的精髓。事实上,在Swing的开发初期,Swing确实是按照标准的MVC模式来设计的,但是很快的问题就出现了:View和Controller实际上是紧密耦合的,很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大的必要。
17、 Java中线程间怎么通讯?什么叫僵死线程?
答:线程之间可以通过管道进行通讯。
18、 Java程序怎么优化?
答:提高JAVA的性能,一般考虑如下的四个主要方面:
(1) 程序设计的方法和模式
(2) JAVA布署的环境。
(3) JAVA应用程序的实现
(4) 硬件和操作系统
为了提高JAVA程序的性能,需要遵循如下的六个步骤。
a) 明确对性能的具体要求
b) 了解当前程序的性能
c) 找到程序的性能瓶颈
d) 采取适当的措施来提高性能
e) 只进行某一方面的修改来提高性能
f) 返回到步骤c,继续作类似的工作,一直达到要求的性能为止。
19、 Java中如何访问数据库?
答:Java 中是通过 JDBC 进行对数据库的访问的。
20、 Jdbc提供什么方法访问数据库?
答:1. 建立数据源
2. 建立连接
与数据库建立连接的标准方法是调用方法Drivermanger.getConnection(String url,String user,String password)。Drivermanger类用于处理驱动程序的调入并且对新的数据库连接提供支持。
3. 执行SQL语句
JDBC提供了Statement类来发送SQL语句,Statement类的对象由createStatement方法创建;SQL语句发送后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的getXXX方法,可以检索当前行的各个列,从而显示出来。
21、 在java中如何进行socket编程。
答:Sockets有两种主要的操作方式:面向连接的和无连接的。
无连接的操作使用数据报协议.这个模式下的socket不需要连接一个目的的socket,它只是简单地投出数据报.无连接的操作是快速的和高效的,但是数据安全性不佳.
面向连接的操作使用TCP协议.一个这个模式下的socket必须在发送数据之前与目的地的socket取得一个连接.一旦连接建立了,sockets就可以使用一个流接口:打开-读-写-关闭.所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高.
在服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
在客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
22、 用java怎样实现多线程?线程有那些状态?
答:Java 中实现多线程的方法有两种,一是继承 java.lang 包中的 Thread 类,二是用户自己的类实现 Runnable 接口。
初始状态,就绪状态,阻塞状态,运行状态,死亡状态。
23、 编译java用那些命令?
答:javac编译命令。Help命令可以帮助你得到你想要的命令。
24、 同时编译java两个类应带什么参数?
答:CLASSPATH
七、数据库:
1、 动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询?
答:讲查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现查询。
2、 如何优化数据库,如何提高数据库的性能?
答:优化数据库主要是优化查询语句,通过高性能的查询语句提高数据库的性能。
3、 设计数据库应注意那些问题
答:首先应尽量满足三范式的要求,在一定程度上打破3范式的要求以提高数据库的性能。
4、 表与表之间的关联关系
答:分为3种:一对一、一对多、多对多。
5、 主键和外键的区别
答:主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

你可能感兴趣的:(java)