java 接口开发优点 什么样的业务可以使用接口开发_学习JAVA最有效的面试题及简单总结...

JaVa 程序设计基础

一、

什么是JAVA:

JAVA是一种具有多功能的高级语言;它可以开发WEB页面的小程序、桌面上运行的应用程序、还可以用于客户端和服务端资源通讯等功能。

二、JAVA语言的特点

简单、面向对象、分布式、健壮、可移植、安全、多线程、垃圾回收。

三、执行JAVA运行环境的三大任务:

1)、加载代码

2)、校验代码

3)、执行代码

四、语法和语义的区别:

语法:规定了编择器正确处理程序而必须遵守的语法;

语义:定义了计算机程序正确运行的逻辑规则;

五:什么是数据类型、为什么要用数据类型:

数据类型是一种易于人类阅读的标记,是用来表示计算机内存的特点语法。

六:if语句的语法:

If(条件){//执行这些的语句}

If(条件){//语句1}else{//语句2}还可以在if(){}else{}嵌套多个。

If(条件){}else if(条件){}

七:三元运算符语法:

条件 ?真语句 :假语句;

Boolean

letIntoClub=(age>=18) ? true :false;

八:switch语句的语法:

Switch(条件){

switch是语句的开始 ()是向switch语句传递变量也是对变量进行所以分支条件的选择;

Case 值1;将变量的结果标注为特定值;

//语句

Break; 使执行过程跳出switch语句块。

Switch 语句后的值必须是整型或者可以转变为整型的值(char byte short

int);

}

九:循环提供了三种结构:

While(布尔条件){//语句块} 先计算布尔条件,再执行循环体语句

Do{//语句块}while(布尔条件); 先执行循环体语句块,在执行布尔条件

保证循环体内的语句块至少执行一次。

For(初始化语句;布尔条件;迭代语句){

//语句

JAVA 面向对象编程

一、

什么是面向对象:

面向对象(oo)是一种认识事物的方法,是一种以对象为中心的思维方式。

面向对象是一种符合人类自然思维习惯的方法;

二、什么是对象。有什么特征:

世界上所以的事物都可以称为对象;它们都具有属性及行为。

三、什么是类:类和对象关系:

类是具有相同属性和相同行为的对象集合;

类是对象的抽象,而对象是类的实例。

四、可以定义私有的接口吗?

不可以,所以的接口都是public和adstract类型。

五、运行时异常与一般异常有何异同:

一般的异常是程序在运行的时候可能出现的非正常状态;

运行是异常虚拟机可能发生的异常,是一种常见的运行错误。

JAVA编译器要求方法必须声明抛出可能发生的非运行是异常,但是并不要求必须声明抛出未捕获的运行是异常

MVC是有那些部分组成,如何实现:

Mvc是Model-View [vju:] –Controlle[kənˈtrəulə]的简写。

Model:是代表的是应用的业务逻辑(通过JAVABean,EJB组件来实现)。

View:是应用的表示面(由JSP页面产生)。

Controlle:是提供应用的处理过程控制(一般是一个Servlet),通过设计模型;

多线程有几种实现方法、都有什么?同步有几种实现方法、都有什么?

多线程有两种实现方法:分别是继承Thread类与继承Runnableˈrʌnə]接口同步的实现有两种方法:分别是synchronized[ˈsiŋkrənaiz],wait与notify

Sleep[sli:p]和wait()[weit]有什么区别:

Sleep是线程类(Thread[θred])的方法,调用Sleep()方法会导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复。

Wait是object类的方法,对此对象调用wait()方法导致本线程放弃对象锁,进入等待对象的等待锁定池,直到被唤醒或者等待的时间到了。

只有针对对象发出notify [ˈnəutifai]方法(或notifyAll)后本线程才进入对象池准备获得对象锁进入运行状态。

启动一个线程是用run(),还是start()?

启动一个线程是调用start()方法,使线程的虚拟机处于可运行的状态,这意味这它可以由JVM调度并执行。这并不意味着线程就会立即执行。

Run()方法可以产生必须退出的标志来停止一个线程。

在JAVA中一个类被声明为final [ˈfainəl]类型,表示什么意思:

表示该类不能被继承、方法可以覆盖,是顶级类。

Error[ˈerə]和exception [ikˈsepʃən]有什么区别:

Error 表示系统级的错误和程序不必处理的异常。

Exception 表示需要捕捉或者需要程序进行处理的异常。

接口是否可继承接口?抽象类是否可实现接口?抽象类是否可继承构造函数。

接口可以继承接口。抽象类可以实现接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

谈谈final,finally,finalize的区别:

Final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

Finally是异常处理语句结构的一部分,表示总是执行。

Finalize是object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

&和&&的区别:

&是位运算符,表示按位与运算,

&&是逻辑运算符,表示逻辑与and

HashMap和Hashtable的区别:

都属于Map接口的类,实现了将唯一键映射到特定的值上。

HashMap

类没有分类或者排序。它允许一个null键和多个null值。

Hashtable 类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的

Collection 和 Collections的区别:

Collection是java,util下的类。是集合类的上级接口,继承与他的接口主要有Set 和List.

Collections是java,util。是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。

String有有length()这个方法。

什么是类的反射机制?

Java

的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性。

如何将String转为Integer

Dim s As String =

"12"

Dim n As Integer = CType(s,

Integer)

Dim m As Integer =

Convert.ToInt32(s)

Dim o As Integer =

Integer.Parse(s)

上面3个方法都可以

int 和 Integer 有什么区别

int 是java原始数据类型

Integer是java integer提供的封装类

原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble

String 和 StringBuffer 的区别

它们都可以储存和操作字符串,即包含多个字符的字符数据

String提供的数值不可以改变字符串;

StringBuffer是可以修改字符串

说出 ArrayList,Vector [viə],

LinkedList 的存储性能和特性

ArrayList和Vector都是用数组的方式来储存数据的

ArrayList可以任意的增大以存放更多的元素。查询快

Vector [viə] 由于使用了 synchronized

[ˈsiŋkrənaiz] 方法(线程安全),通常性能上较 ArrayList 差,

而 LinkedList

使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

Java 持久化

浅谈你对持久化的理解

持久化

仅仅指的是把域对象永久的保存在数据库当中。广义的理解,“持久化“包括和数据库相关的各种操作。

● 保存:把域对象永久保存到数据库。

● 更新:更新数据库中域对象的状态。

● 删除:从数据库中删除一个域对象。

● 加载:根据特定的OID,把一个域对象从数据库加载到内存。

● 查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载到内存中。

为什么要使用持久化

持久化技术 封装了数据的访问细节,为大部分业务逻辑提供了面向对象的API:

● 根据持久化可以减轻访问数据库访问的次数,增加应用程序执行的速度

● 代码重用性高,能够完成大部分数据库的操作

● 松散耦合,使持久化不依赖与底层的数据库和上层的业务逻辑实现,更新数据库时只需要修改配置文件不用修改代码。

数据库的英语简写:R D B M S

数据库发展过程出现了几种模型:

● 层次模型

● 网状模型

● 关系模型

● 对象模型

● 我们一般用的都是关系模型。

Statement【steitmənt】和

PreparedStatement

[ˌpri:ˈpei]【steitmənt】的区别:

Statement在执行SQL语句必须是完整的SQL。

PrepatedStaement可以使用“?”作为SQL语句当中的占位符,然后用setXXX方法来给占位符赋值,最后执行。

如果Statement出现了“ ‘ ”或者“-”等符号,必须使用转义字符来进行转义。

PreparedStaement会自动转换。

使用Statement时,SQL语句每次都要进行编译。

PreparedStaement 每次执行的时候只需要将参数设置相对应的占位符就可以运行。

使用PreparedStaement还可以对编译次数减少,提高提高数据库总体性能。

Char和varchar的区别:

Char的长度是固定;存储字符串“abc",对于char

(10),表示你存储的字符将占10个字节(包括7个空字符),

Varchar长度是可以改变的;而同样的varchar(10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度来判断。

Char的效率比varchar稍高。

对于SAX(简单XMLAPI)和DOM(文档对象模型)解析XML的区别:

SAX:只能读,不能修改,只能顺序访问,适合对大型的XML的解析,解析速度快!

SAX:应用于保存大量数据的XML(为什么要用XML保存大量的数据类容?答:可以实现异构系统的数据访问,实现跨平台!)

SAX的缺点不能随机访问,文档只能遍历一次。

DOM:不仅能读,还可以修改、而且都够随机访问。缺点是解析速度慢,适合小型文档解析慢。要在内存中生成节点树,而生成树是比较费时的)

JAVA WEB 编程

什么是HTTP协议:

HTTP协议是一种超文本传送的协议,是一套计算机在网络中通信的一种规则。

定义HTTP事务处理分几步走:

1、 客户端和web服务器建立连接。

2、 客户端发送http请求。

3、 服务端接受客户端的HTTP请求,生成HTTP响应回发。

4、 服务器端关闭连接,客户端解析回发响应,恢复页面。

什么是WEB服务器,有什么缺点:

WEB服务器是被用来向客户端提供HTTP服务的。

如何生成一个动态页面呢:

在WEB服务器主机上增加一个辅助应用,这个辅助应用负责生成动态页面,并且能够与WEB服务器软件通讯。

用什么技术来进行解决,它们各自的区别:

最早使用的是CGI技术:通用网关接口。

优点:

缺点:每次在请求就打开一个CGI进程,严重消耗服务器资源。

Serlet技术:serlet主要用于在服务器端产生动态内容。Serlet是与平台无关的JAVA类。能够编译成中立的字节码,从java技术的web服务器动态装载和运行。

Serlet在服务端主要执行什么任务:

1、 读取客服端发送的显示和隐式数据。

2、 生成结果

3、 向客户端发送显示数据和隐式数据(HTTP响应数据)。

什么是Serlet:

是在运行web服务器或应用服务器上的java程序。创建动态内容上有效而强大的解决方案之一。

Java开发者提供了强大的APL、面向对象编程、平台无关、强类、垃圾回收、以及其他的JVM的安全机制。

Serlet的生命周期:

Serlet分为三个阶段:初始化、服务、销毁。

其次初始化和销毁之被执行一次,而服务可以执行多次。

设置状态码HttpSerletResponse常见的两种方法:

sendError方法:生成一个404应答,同时生成一个简单的HTML错误信息文档发生给客户。

public

void sendError(int code String message);

sendRedirect方法:

sendRedirect()将生成一个302应答,

public

void sendRedirect(String url);

HTTP请求提交的方法

默认的情况下使用HTTP协议的GET方法提交请求。

如何获取表单数据:

GetParameter(),获取表单数据参数的值,参数名区分大小写,与HTML表单中出现的参数保持一致。

GetPatameterValues()

获取同一个参数名的多个参数值,返回字符串数组对象。

请求转发和重定向的区别:

请求转发和重定最大的区别在于,重定向让客户端浏览器来完成,而请求转发是在服务器端做工作。

请求转发:GetRequestDispatcher().forward(request,response)。路径必须以根目录“/开始”,改资源利用请求和响应对象来处理HTTP请求。

重定向:response.sendRedirect(地址);

Web应用程序状态管理:

Cookie和Session的区别:

Cookie和Session最大的区别:cookie是把数据保存到客户端的,而Session是把数据保存到服务器

Cookie的缺点是:如果客户禁止cookie就没办法了。这就需要session了,在PHP4中,session可以有两种办法实现,一是用cookie,即把sessionID保存在cookie文件中;二是把sessionID附带在URL上进行传递。

session什么时候被创建:

在很多情况下初学的程序员都会放一个这样的错误

会以为session在有客户端访问的时候就被创建,然而事实是直到某个servlet端程序(如servlet)调用HttpServletRequesr.gerSession(true)这样的语句才会被调用。

Session在什么时候被销毁:

程序员手动调用HttpSession.invalidate();

距离上一次收到客户端发送的session id的时间间隔超时了session的最大有效时间

服务器进程被停止

注意:关闭浏览器只会让客户端浏览器内存中的session

cookie失效,不会使服务器端的session对象失效。

使用隐藏的表单域有什么缺点吗?

每个页面都是有表单提交而动态生成时,才能使用这种方法。单击常规的

hrer>超文本链接并不产生表单提交,因此隐藏的表单域不能支持通常的会话跟踪,只有用于一系列特定的操作中。

会话跟踪的基本步骤:

1、 访问也当前相关的会话对象

2、查找与会话相关的信息

3、存储会话信息

4、废弃会话数据

getSession()/getSession(true)、getSession(false)的区别

getSession()/getSession(true):当Session存在是返回该session,否则新建一个session并返回该对象

getSession(false): 当session存在时返回该session,否则不会新创建session,返回null;

开发过滤器的步骤:

1、编码:所以的过滤器必须实现java.servlet.Filter接口。Filter接口下中有三个方法init()、doFilter()和destroy().

2、编译

3、部署:过滤器部署分为两个步骤:

4、运行

1、把编译成的Class复制到Tomcat安装目录的子目录\webapps\lovobook\WEB-INF\classes\com\lovobook下

2、在部署文件web.xml中添加阴影部分的代码,指定过滤器类,然后讲所需的请求url映射到这个过滤器上。

HellowWorldFilter

com.lovobook.HellowWorldFilter

HelloWorldFilder

/filter/*

过滤器API包括几个接口:

1、Filter:是过滤器API的核心,只需要实现Filter接口

2、FilterConfig:该接口只要是为过滤器提供初始化参数。它下面有声明了四个方法

String getFilterName():返回在部署描述文件中指定的过滤器的名称

String getIntParameter(String):返回在不出描述文件中指定的参数的值

Enumeration getInitParameterNames():返回在部署描述文件中指定的所以参数的名称。

ServletContext

gerServletContext():返回WEB应用程序的ServletContext.过滤器可以使用ServletContext设置,获取application范围的属性。

3、FilterChain::该接口只要是为过滤器提供初始化参数。它只有一个方法;

Void

doFilter(ServletRequest,ServletResponse):我们从一个过滤器对象的doFilter()方法中调用次方法,以继续过滤器的链的传递过程,它会将控制转到链中的下个组件。

Jsp页面运行分为七个阶段:

1、翻译2、编译、3、类装载4、初始化 5、服务 6、销毁

JSP网页主要是由元素和模板数据两个部分组成:

模板数据是JSP的静态部分,它是WEB容器不处理的部分(例如HTML),它直接被发送到客户端执行

。而元素则是必须经由WEB容器解释的部分。

WEB容器支持两种不同格式的JSP语法:

普通格式和XML兼容格式

采用脚本的JSP可以使编写JSP页面变得简单、直观、但是它的缺点是:它只适合于业务流程简单、系统规模小的应用系统。还严重缺乏可读性而且没有将页面表现和业务逻辑实现分开,使维护性难度增加。

你可能感兴趣的:(java,接口开发优点,什么样的业务可以使用接口开发)