文档库 最新最全的文档下载
当前位置:文档库 › Java基本面试问题汇总

Java基本面试问题汇总

Java基本面试问题汇总
Java基本面试问题汇总

引用类型类接口数组还有null(没有名字)特殊类

This的用法调用其他多参构造里面的参数将参数传给成员变量(构造器中引用该构造器正在初始化的对象方法中引用调用该方法的对象)

(实例对象的引用)

Super的用法在构造方法中直接调用父类中的参数

Gc的处理机制垃圾回收

面向对象的特性封装多态继承

方法的重载多参构造定义多个参数实例化对象的时候需要把参数传递进去(一个类中包含了多个以上的同名方法,但是形参列表不同叫做方法的重载)

方法的重写子类继承了父类以后定义了和父类中相同的方法,此方法将会覆盖父类中的方法,调用的时候一定调用的是子类被覆盖后的方法叫做方法的重写

对象多态和方法的多态(编译时和运行时类型不相同就可能出现多态)编译时是父类运行时是子类用子类实例化父类对象或者父类的向下转型(扩大范围)

组合

Instanceof用法/**用于验证是否是某个类的实例或者是继承关系以及接口(用于判断前面的对象是否是后面的类,或者其子类,实现类的实例。如果是,返回true,否则返回false)*/( 前面通常是一个引用变量,后面通常是一个类或接口,当前面的对象是后面的类或子类接口实现类的实例时,返回true,否则返回false。当编译时前面的实例的类型要与后面的类相同或与该类的子类具有父子继承关系,否则会发生编译异常

)

单例类和不可变类和区别只实例化一次的类单例类

异常throw和throws的区别throws抛出的异常类可以单独使用throw抛出的异常对象不可以单独使用throws抛出的异常类可以使用多次throw抛出的异常类只可以使用一次

二维数组遍历

int a[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};

for(int x=0;x

for(int y=0;y

System.out.print(a[x][y]+””);

}

System.out.println();

}

String和StringBuffer的区别

相同点:都是用于处理字符串 2.拥有相同的方法3.都有下标下标都是从0开始

不同点:1.String中的字符串可以通过+连接,StringBuffer不行

String长度不可变,StringBuffer长度可变

2.String中有Object的equals()方法,StringBUffer没有

3.String的toString()方法和StringBuffer的toString()方法不同,String的toString是返回当前String本身对象的引用,而StringBuffer的toString方法是用于生成了最终的字符串以后,将其转换为一个新的String对象

Final的用法

修饰类属性方法

修饰了变量便是一旦获得了初始值不可改变

Final修饰的类不可被继承

内部类

静态内部类

匿名内部类

接口interface

抽象类abstrace

接口和抽象类的区别

接口中只能包含抽象方法静态方法和默认方法不能为普通方法提供方法实现抽象类完全可以包含普通方法

接口只能定义静态常量,不能定义普通成员变量,抽象类可以定义普通成员变量和静态常量接口不包含构造器,抽象类可以包含构造器,抽象类的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作

接口里不能包含初始化块;单抽象类可以包含初始化块

一个类最多只能有一个直接父类,包括抽象类单一个类可以直接实现多个接口,通过实现多个接口可以弥补java单继承的不足

方法的递归自己调用自己的方法

栈内存堆内存

封装private 属性private方法

继承extends 子类继承父类可以调用父类中的属性和方法

装箱:

基础数据通过其对应的包装类的构造方法转换成对象的过程

自动装箱:

直接将基础数据赋值给其对应的包装类的过程

拆箱:

用包装类的方法将包装类转换成其对应的基础数据

自动拆箱:

将包装类的值赋给其对应的基础数据类型

不可变类:用private和final修饰该类成员变量

提供带参数构造器,用于根据传入参数来初始化类的成员变量

仅为该类成员变量提供getter方法,不提供setter方法

有必要重写hashcode和equals方法

单例类编写步骤:用private static 修饰一个属性用于缓存一个类的实例;

用private修饰构造方法来隐藏构造器

用静态工厂方法来获取当前类的实例(getInstance())

静态工厂方法:

返回类方法如果类的实例为null 就创建一个类对象最后用类方法来获取类的实例

对象序列化:

1.被序列化对象所在的类必须已经实现了Serializable或Externalizable

2.创建一个对象的输出流(ObjectOutputStream),它可以包装一个其他的字节输出流

3.通过对象输出流的writeObject()方法将对象写入流中

对象反序列化:

1.被反序列化的类必须已经实现了Serializebale或Externalizable接口

2.创建一个对象的输入流(ObjectInputStream),它可以包装一个其他的字节输入流

3.通过对象的输入流的readObject()方法将对象从流中读取出来,并恢复(重构)

潜克隆和深克隆:

输入流:只能读取数据而不能写入数据的流

输出流:只能写入数据而不能读取数据的流

字节流:在读写(输入/输出)时,处理的数据单位是字节的流

字符流:

高级流(包装流/过滤流):如果一个数据流直接处理的不是一个物理节点,而是通过其他的数据流对物理节点进行处理的流就是高级流

节点流:如果一个数据流直接处理的是一个物理节点,如文本文件,那么这样的数据流就是节点流

Hashmap和Hashtable的区别:

Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMap 比Hashtable的性能高一点;但如果有多个线程访问同一个Map对象时,使用Hashtable实现类会更好。

Hashtable不允许使用null作为key和value,如果试图把null值放进Hashtable中,将会引发NullPointerException异常;但HashMap可以使用null作为key或value。

由于HashMap里的key不能重复,所以Hashmap里最多只有一个keyvalue对的key为null 但可以有无数多个keyvalue对的value为null

Sleep()与yield()的区别

1.sleep暂停当前线程后,会给其他线程执行的机会,

不理会其它线程的优先级;而yield暂停以后只会给优先级

相同或更高优先级的线程运行机会

2.sleep会将当前线程转入阻塞状态,直到经过堵塞时间才会转入

就绪状态;而yield不会将线程转入阻塞状态,它只会强制将当前线程

转入就绪状态,因此完全有可能某个线程调用了yield暂停后,立即再次获取cpu

的执行权被执行

3.sleep声明抛出异常,所以调用该方法时要么抛出异常,要么捕获异常;

而yield没有声明抛出任何异常

4.sleep比yield有更好的可移植性,通常不要依靠yield来控制并发线程的执行

后台线程(守护线程/精灵线程):

守护线程是为其它线程提供服务的线程,它一般应该是一个独立的线程

它的run()方法是一个无限循环的

使用同步方法的特征:

1.该类的对象可以被多线程安全的访问

2.每个线程调用该对象的任意方法后都将得到正确的结果

3.每个线程调用该对象的任意方法,该对象的状态依然保持合理状态

4.倍同步的方法修饰的类将变成线程安全的类

临界资源:

通过synchronized修饰的代码就是可以保证并发线程在任意时刻只有一条线程可以进入修改共享资源的代码区,该区被称为临界区(临界资源)

线程之间保持同步:

所谓线程之间保持同步,是指不同的线程在执行同一个对象的同步代码块时,因为要获得这个对象的锁,而相互牵制

什么时候会释放锁(同步监视器):

1.同步代码块或同步方法执行完成

2.在同步代码块遇到break,return跳出该代码块(同步代码块)会释放锁

3.执行同步代码块或同步方法时遇到了未处理的异常,会释放同步监视器

4.调用了同步监视器的wait(),会释放锁

线程池:

池的本质,就是一种缓存技术

缓存的本质,牺牲空间,换取时间

是否要缓存一个对象,取决于该对象的创建成本

但是使用缓存技术也要考虑系统内存大小,线程对象

的创建成本比较大,所以在适当的时候选择使用线程池

并发运行(并发性);

当进程中的多个线程同时运行,这种运行方式成为并发运行。

线程的创建与启动:

ArrayList和linkedlist区别

ArrayList用于查询功能

LinkedList用于插入或删除功能

ArrayList:

由于ArrayList底层是以数组的方式存储的,查询性能非常快,当插入或删除元素时,后面的所有元素都要跟着整体移动,所以进行插入或删除操作时,性能比较慢

LinkedList:

由于LinkedList底层采用链接列表方式存储元素,因此根据索引表查询性能比较慢,而当插入或删除元素时,后面的所有元素都不跟着整体移动,所以性能比较快

TCP:

TCP协议具有可靠性和有序性,并且以字节流的方式发送数据,而且TCP是在端点与端点之间建立持续的连接而进行通信,面向链接的协议

Socket:

是由IP地址和端口号组成的

两个Java应用程序可通过一个双向的网络通讯链接实现数据交换,这个双向链路的一端称为一个Socket

服务器端的编写步骤:

1.创建serversocket对象,该对象负责接收连接

2.如果客户端有连接,accept()将会返回一个socket

3.通过IO的字节流读取对方的数据,也可以向对方发送数据

客户端的编写步骤:

1.创建Socket对象来建立与远程服务器的连接

2.通过IO字节流读取对方的数据,也可以向对方发送数据

UDP:

UDP向应用程序提供一种发送封装的原始IP数据报的方法,并且发送时无需建立链接,’是一种无序不可靠的链接

县城一共有五个状态:

新建:程序用new关键字创建一个线程以后,该线程就处于创建状态

就绪:调用线程对象的start方法就会进入就绪状态

运行:执行run方法就会进入运行状态

阻塞:调用sleep方法,调用一个阻塞式io方法,获得同步监视器,线程等待某个通知(notify), 死亡:run()或call()执行完成,线程正常结束线程抛出一个未捕获的异常直接调用线程stop 方法结束线程

JDBC编写步骤(☆☆☆);

创建driver 创建url 创建unama数据库用户名创建数据库密码

1.加载驱动

2.通过DriverManager获取数据库的连接

3.通过Connection的con对象获得Statement对象

4.通过第4步,得到ResultSet结果集rs

5.遍历结果集rs

6.关闭资源

三层结构:

MVC:

M model

V view

C control

DAO

Data access object数据访问对象,主要是将对数据库操作的类放在一起

瞬态:

Transient,不能修饰方法

Private transient String name;

用于修饰属性,不能修饰方法,被修饰的属性表示瞬态属性,而瞬态属性是不能被

序列化和反序列化的

SQL中where和having的区别:

Having 是筛选组,where是筛选记录

Having要配合group by使用where不行

Get和Post区别:

在客户端,GET通过URL提交数据,数据在URL中可见;POST把数据放在form的数据体内提交

GET提交的数据最多只有2048字节;POST提交的数据量无限制

由于使用GET时,参数会显示在地址栏上,而POST不会,所以,如果这些数据是非敏感数据,那么使用GET;如果包含敏感数据,为了安全,用POST

JS异常和Java异常区别:

Js中只有一个error异常,无需再定义函数的时候声明抛出异常,所以没有throws关键字2.js是弱类型语言,所以catch语句后面的括号里的异常实例无须声明类型,而java中必须指定类型

3.Js只有一个异常类。所以try语言块之后最多只能由一个catch语句,而java中可以根据需求有多个

4.Js中获取异常的描述信息是通过异常对象的message属性,而java中是通过getmessage 方法

内置对象:

9个

输入输出:out,request,response

作用域通信对象:pageContext,session,application

Servlet对象:,page,,config

错误对象:exception

forward()与redirect()的区别:

1、forward请求时,只请求一次;而redirect请求多次

2、forward在请求时,URL路径不发生变化;而redirect请求时URL路径会发生变化

3、forward请求时,会将这一次请求的数据一并打包传递;而redirect不会将第一次请求的请求数据进行传递

4、forward在需要获取这一次请求的数据时使用;而redirect在响应后第二次后以后请求获取时使用,而不会获取第一次请求的数据

HTTP特征:

1、支持客户/服务器模式

2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。

3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记

4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大

什么是JSP

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准

JSP 是在HTML中嵌入Java脚本语言然后由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言,最后将生成的整个页面信息返回给客户端

什么是会话

会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应的过程

4种会话跟踪技术

Cookie session 隐藏域storage url重写

Cookie和session的区别

(1)cookie是一种客户端的状态管理技术,将状态写在

浏览器端,而session是一种服务器端的状态管理技术,将

状态写在web服务器上面。

(2) cookie有很多限制:

a, 可以被用户禁止

b, cookie能够保存的数据比较小(大约4k),而且

保存的个数也有限制(300个左右)。

c, cookie不安全

d, cookie只能保存字符串

而session能够保存更多的数据,相对更安全,保存的

数据类型更丰富。

session会将所有的状态写在服务器端,所以服务器的

压力比较大,而cookie没有这个问题

Cookie:

Cookie 就是存在客户端(浏览器)的一小段信息,为了让客户端与服务器保持会话,可以由服务器端把链接的关系写入到客户端中,以后每次访问这个网页,都是先由客户端将Cookies发送到服务器端,再由服务器端进行判断

采用这种方式进行会话跟踪时,一当服务器接收到一个http请求,如果是第一次请求,服务器就为其创建一个Session,把用户请求的页面同sessionid一起返回给用户,然后连接被关闭。当用户再次发出请求时,会把sessionid一起发送到服务器,通过sessionid的比较,

可以将用户一一对应起来

服务器给用户发送sessionid实际上是在用户的浏览器内存中写了一个cookie,在jsp中,这个参加会话的cookie的名字必须是JSESSIONID,当所在浏览器窗口关闭,这个cookie也就消失了

分为三种:

1.继承Thread类:

(1).使一个类继承Thread

(2).重写Thread的run()方法,并实现线程的业务关系

(3).调用Thread类的start()方法来启动线程

(4).通过重写的Thread类的run()方法来执行(运行)线程

注意:子类可以重写父类(Thread)的start方法(),但是必须要使用super.start()调用,

推荐不要重写strat()方法

2.实现Runnable:

(1).使一个类实现Rnnable接口

(2).重写Runnable接口中的run()方法,并实现线程的业务关系

(3).创建实现类的对象作为Thread的参数进行传递

(4).通过Thread对象调用start()方法启动线程

(5).通过重写的Runnable接口的run方法来执行(运行)线程

3.实现Callable接口:

(1).使一个类实现Callable接口

(2).重写Callable接口中的call()方法,并实现线程的业务关系,即run()方法是线程的运行(执行)体,并且该方法能够返回值,以及能抛出任何异常

(3).创建实现类的对象作为FutureTask类的参数进行传递

(4).由于FutureTask实现了Runnable接口,因此可以

通过Thread对象调用start()方法启动线程

(5).通过重写的Callable接口的call()方法来执行(运行)线程

(6).当线程执行完成后可以通过get()方法获取线程执行体结束后的返回值

如何理解JSP和Servlet:

SP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet

Final和Finally和Finalizable的区别:

拦截器:

每个拦截器类只有一个实例对象,即采用单例模式,所有引用这个拦截器的Action都共享这一个拦截器类的实例,因此,在拦截器中如果使用成员变量的时候,要注意同步问题

拦截器是在访问某个方法前后实施拦截,拦截器是

AOP(Aspect Oriented programming面向切面编程)的一种实现

拦截器有拦截器栈:

拦截器栈就是将拦截器按照一定的顺序结合而成的一个拦截器链

拦截器栈实现原理:

Struts2拦截器的实现原理相对简单,当请求struts2的aciton时,Struts2会查找配置文件,并根据配置实例化相对应的拦截器对象,然后串成一个列表,最后一个一个的调用列表中的拦截器

拦截器与过滤器的区别:

1.拦截器和过滤器的概念基本类似

2.过滤器是web中的概念,可以过滤一切对象,例如(servlet,jsp,html)等

3.而拦截器是struts2中的概念,只能拦截action的请求,无法对jsp的请求拦截

拦截器实现步骤:

1.编写拦截器,继承AbstractInterceptor类或实现Interceptor接口

2.在struts.xml中配置拦截器

3.在action中引用拦截器

什么是Jre 什么是Jdk

拦截器与过滤器的区别:

forward()与redirect()的区别:

县城一共有五个状态:

单例类编写步骤:

Get和Post区别:

对象序列化和反序列化

JS异常和Java异常区别:

TCP三次握手:

三次握手(three times handshake;three-way handshake)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。

为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。

.AJAX的工作原理

Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

MySQL和Oracle的分页

MySQL

MySQL有个专门针对查询出一段数据的语句limit,使用起来非常的方便。

select * from t_user limit 2,3

折叠复制代码

4 深圳中国 24 1 小李

5 纽约美国 25 1 Jack

6 华盛顿美国 23 1 Tom

上面查询中的2代表从第2条数据之后开始,注意是第2条数据之后,不包含第2条数据。3代表总共查询3条记录。那么limit 2,3代表从第2条(不包含第2条) 数据开始查询出3条记录。

Oracle

Oracle中有个rownum,其含义更加明显,就是第几行的意思,这样我们就可以通过where 条件来进行分段查询了。

select * from t_user where rownum>=2 and rownum<=4

Oracle中的游标:

(1)声明游标;

(2)打开游标;

(3)从一个游标中查找信息;

(4)关闭游标;

(5)释放游标

--定义游标

DECLARE A CURSOR FOR

SELECT num FROM test

--打开游标

OPEN A

--定义变量

DECLARE @SalePrice2 int

--检索游标

FETCH NEXT FROM A INTO @SalePrice2

--判断结束信息

while(@@fetch_status = 0)

begin

--更新

update test set price=price+10 where num=@SalePrice2

--检索游标

FETCH NEXT from A into @SalePrice2

END

--关闭游标

close A

--释放游标

MVC框架:

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

Servlet和JSP的关系:

Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat 而言,JSP页面生成的Servlet放在work路径对应的Web应用下。

Oracle中锁的类型:

根据保护的对象不同,Oracle数据库锁可以分为以下几大类:

DML锁(data locks,数据锁):用于保护数据的完整性。

DDL锁(dictionary locks,字典锁):用于保护数据库对象的结构,如表、索引等的结构定义。

内部锁和闩(internal locks and latches):保护数据库的内部结构,例如,数据文件。内部锁及闩锁的管理完全由Oracle 自动完成。

悲观封锁和乐观封锁

Oracle和Mysql的自动增长区别:

这里所说的自动增长列,主要是指一个表中主键id的自动增长。

Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。

Oracle必须通过创建sequence序列来实现自动增加列的功能。

首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence) create sequence test_sequence

[increment by 1]--增长的步长

[start with 1]--从几开始增长

[maxvalue 100]--增长的最大值

[nomaxvalue]--不设最大值

[cycle|nocycle];--循环增长/不循环增长

定义了sequence以后就可以在insert语句中使用test_sequence.nextval和

test_sequence.currval。

test_sequence.currval返回当前sequence的值,但必须在第一次初始化

test_sequence.nextval后才能使用test_sequence.currval。

test_sequence.nextval会增加sequence的值,并返回增加后的sequence的值。

然后可以alter修改sequence序列,来改变自动增加的方式。

alter sequence test_sequence increment by 1 ...;后面的选项跟建表时一样。

还可以用drop删除sequence序列。

drop sequence test_sequence;

Mysql先对Oracle来说就简单多了,可以在建表时进行设置。

create table( id int(10) auto_increment primary key) auto_increment=1;

了解的设计模式:

工厂模式、单例模式、代理模式、过滤器模式、桥接模式、策略模式

单例模式的几种实现:

1.懒汉模式

2.饿汉模式

3.双检锁

4.登记式(静态内部类)

5.枚举

单例模式:

单例模式(Singleton Pattern)是Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。

这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。代理模式:

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

工厂模式:

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量

Mybaits和Hibernate的缓存区别

缓存机制比较

相同点:Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。不同点:Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。

MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

两者比较:因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。

而MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。

MySql创建视图:

create or replace view v_name

as

select t1.*,t2.*,t3.*

from A表t1, B表t2, C表t3

where t1.a=t2.b and t2.b1=t3.c

IOC

控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。它包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。

AOP

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

Spring中Autowired和Resource的区别;

Spring中的配置文件/jar包

什么是aop ioc

Spring常用的注解作用

MySQL事务的几大特性

MySql的存储过程

Spring中的过滤器和拦截器的配置

MVC的工作流程

List的实现类

Set的实现类

Map的实现类

List和set的区别

ArrayList 和LinkedList的区别

正向代理反向代理

Linux基本命令

《Java学习笔记 良葛格》 fuluA word版

《Java学习笔记良葛格》 fuluA word版 介 Ant 简 A Ant 的全名是 Another Neat Tool,是由 James Duncan Davidson 在觉得Make 工具无法满足他的 Java 构建(Build)需求下所编写出来的工具,目前由Apache Software Foundation 持续进行开发。根据官方网站上的 FAQ 中有关什么是 Apache Ant(What is Apache Ant)中的回答:

Ant is a Java-based build tool. In theory, it is kind of like Make, without Make’s wrinkles and with the full portability of pure Java code. 简单地说,Ant 就像是 Make 工具,一个为 Java 应用程序所量身定做的构建工具。 A.1 Ant 设置 对于没有使用过 Make 工具的初学者来说,想象一下如何管理源代码?如何处理 Classpath 的问题?如何将编译过后的文件指定至某个目录?如何 将.class 包装为 .jar 文件?…… 这一切都可以通过 Ant 来完成!您不必重复地使用 javac、copy、cd 和 java 等指令来达到这些目的,只要编写好一个以 XML 组织的构建文件(buildfile),然后下 ant 指令,上述所有的问题就可轻松地解决。 或许有人会说这些需求一些 IDE 也可以办到,这并不是正确的说法。Ant 并不取代 IDE,它增强了 IDE,也没有 IDE 可以取代 Ant,它们是互补的,不是相互取代的。 简单地归纳一下 Ant 可以自动完成的任务: 编译 Java 源代码 建立 jar、 war、zip 文件

JAVA面试题汇总

目录 概念题 ---------------------------------------------------------------------------------错误!未定义书签。 一、JAVA基础 ------------------------------------------------------------------------------ 错误!未定义书签。 1)面向对象的特征 --------------------------------------------------------------------------------------- 错误!未定义书签。 2)什么是OOP?什么是类?请对比类和对象实例之间的关系。 ----------------------- 错误!未定义书签。 3)简述类与对象的概念 -------------------------------------------------------------------------------- 错误!未定义书签。 4)什么是属性与方法? -------------------------------------------------------------------------------- 错误!未定义书签。 5)什么是封装? ------------------------------------------------------------------------------------------ 错误!未定义书签。 6)描述一下JVM加载class文件的原理机制 --------------------------------------------------- 错误!未定义书签。 7)Java程序怎么优化? -------------------------------------------------------------------------------- 错误!未定义书签。 8)一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?----- 错误!未定义书签。 9)char型变量中能不能存贮一个中文汉字 ----------------------------------------------------- 错误!未定义书签。 10)逻辑操作符(&,|,^)与条件操作符(&&,||)的区别--------------------------------------- 错误!未定义书签。 11)Math.round(11.5)等於多少? Math.round(-11.5)等於多少? ------------------------- 错误!未定义书签。 12)Java有没有goto?-------------------------------------------------------------------------------- 错误!未定义书签。 13)int 和Integer 的区别 --------------------------------------------------------------------------- 错误!未定义书签。 14)如何将数值型字符转换为数字?如何去小数四舍五入保留小数点后两位。错误!未定义书签。 15)short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;有什么错误 -------------------------- 错误!未定义书签。 16)float f=3.4是否正确? ----------------------------------------------------------------------------- 错误!未定义书签。 17)String 和StringBuffer的区别 ------------------------------------------------------------------ 错误!未定义书签。 18)String是否是最基本的数据类型,能否被继承 ----------------------------------------- 错误!未定义书签。 19)String s = new String("xyz");创建了几个String Object? ------------------------------- 错误!未定义书签。 20)数组有没有length()这个方法? String有没有length()这个方法? ---------------- 错误!未定义书签。 21)排序都有哪几种方法?用JAVA实现一个快速排序 ----------------------------------- 错误!未定义书签。 22)swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上--- 错误!未定义书 签。 23)在JAVA中,如何跳出当前的多重嵌套循环? ------------------------------------------ 错误!未定义书签。 24)关于日期和时间的几个问题------------------------------------------------------------------- 错误!未定义书签。 25)一个对象被当作参数传递到一个方法,是值传递还是引用传递----------------- 错误!未定义书签。 26)什么时候用assert?------------------------------------------------------------------------------ 错误!未定义书签。 27)GC是什么? 为什么要有GC? ---------------------------------------------------------------- 错误!未定义书签。 28)垃圾回收的优点和原理 ------------------------------------------------------------------------- 错误!未定义书签。 29)垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?错误!未定义书 签。 30)java中会存在内存泄漏吗,请简单描述 -------------------------------------------------- 错误!未定义书签。 31)java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,他们分别是哪些 类?错误!未定义书签。 32)文件和目录(I/O)操作 ------------------------------------------------------------------------ 错误!未定义书签。 33)什么是java序列化?如何实现java序列化?------------------------------------------- 错误!未定义书签。

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

java基础学习心得

java基础学习心得 目录 第一篇:java学习需要什么基础 第二篇:java 基础要点总结学习java必看 第三篇:java学习心得笔记 第四篇:java学习心得 第五篇:关于java学习的一点心得体会 正文 第一篇:java学习需要什么基础 java学习需要什么基础 随着java这种语言的广泛运用,越来越多从事开发的人员开始学习接触这门课程,那么,java学习需要什么基础?java刚刚入门应该接触哪些知识呢?java入门应该学习什么内容呢? 首先要说明的,java有三个大的方向(j2se,j2me,j2ee),走不同的方向可能学的技术和要花费的时间可能有所不同。我是搞web方向的(j2ee),我学java除了以前一些简单的c语言语法外,没有太多的编程基础,我以前一直认为编程要有很强的数学和英语功底,现在看来这也不是必需,只要有一定的逻辑思维能力和掌握一些常见的计算机词汇,还需要具备一定的自学能力,因为软件开发工作是需要不断学习的。

其次,我想说下我的学习过程,我在网上下载了java教学视频,将java基础从头到尾看了一遍,将上面的代码基本上跟着敲了一遍,然后我把java基础的书看了一遍,一本书看完包括上面的习题大概做一遍差不多一个月。这时你对java的语法和基本知识应该都有比较充分的认识和了解了。 然后,再做一些小项目,跟着视频上的步骤做,最好能自己独立再写写,能写多少是多少。一般网上比较新的免费的项目库很不好找,因为项目库是需要实时更新以保证适合市场需要的,而它的升级和更新是需要钱的,所以去报一个培训中心利用它强大的项目库进行实战操作是个很好的选择。 操作一段时间之后,你对java已经有了一定的感觉,就要开始选择你的发展方向了。我选择了j2ee,如果你也是想走这条路,你可以接着看关于j2ee的视频,先是html+js+css,然后jsp+serverlet,再看struts+spring+hibernate等一些框架。同时可以看一些大的培训机构的关于设计模式的视频,最好是it牛人录制的,当然数据库也得学下,然后加上做项目的经验累积,半年就差不多可以出去工作了。 如果你做其他方向的话我不是很了解。再说下我个人的看法, j2me和j2se好像前景没j2ee好,不过我有同事是做android平台开发的,这个不需要j2ee的知识,你可以去买本android的看看,这个方向貌似很有前途,你应该也常听说android平台的手机,如果走这方向可

JAVA框架面试题汇总

1.SpringMVC Framework的理解: 1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成 2、不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3、可以任意使用各种视图技术,而不仅仅局限于JSP 4、支持各种请求资源的映射策略 5、它应是易于扩展的 2.简单的谈一下SpringMVC的工作流程? 流程? 1、用户发送请求至前端控制器DispatcherServlet? 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。? 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。? 4、DispatcherServlet调用HandlerAdapter处理器适配器? 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。? 6、Controller执行完成返回ModelAndView? 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet? 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器? 9、ViewReslover解析后返回具体View? 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。? 11、DispatcherServlet响应用户 3.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入: . .CharacterEncodingFilter . .???? .????????encoding .?????? utf-8

Java学习笔记

Java 程序分类 Java Application:以main()方法作为程序入口,由Java解释器加载执行。 Java Applet:没有main()方法作为程序入口,由浏览器或Appletviewer加载执行。 注释 一行中‘//’后的内容为注释; ‘/*’和‘*/’中的内容是注释; ‘/**’和‘*/’中的内容是注释。 -javac HelloWorld.java 源文件名为HelloWorld.java,由javac编译器编译源程序,产生字节码文件(.class文件)。java HelloWorld由java解释器解释执行。 命名 如果.java 文件包含一个public 类,它必需按该类名命名。Java语言中单词拼写严格区分大小写; 类个数 一个源文件中最多只能有一个public 类。其它类的个数不限。 结构 package 语句//0或1个,必须放在文件开始 import语句//0或多个,必须放在所有类定义之前 public classDefinition //0或1个,文件名必须与该类的类名完全相同classDefinition //0或多个 interfaceDefinition //0或多个

Java开发工具集JDK----Java Development Kits Java编译器 Java运行时解释器 Java应用程序编程接口 Java文档化化工具 其它工具及资源 环境变量 Path ----外部命令搜索路径; CLASSPATH ----类资源位置搜索路径; https://www.wendangku.net/doc/7a372025.html,ng----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 java.applet----包含applet运行所需的一些类。 https://www.wendangku.net/doc/7a372025.html,----包含执行与网络相关的操作的类。 java.io----包含能提供多种输入/输出功能的类。 java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。 JDK中提供了一个文档自动生成工具javadoc,在自定义类中public的成员前以/**…*/形式加入的注释内容均可被自动提取到生成的说明文档中。 用法:somepath\javadoc source.java Java分隔符组成 分号--“;”、花括号--“{}”、空格--“”

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

java各知识点详细总结(毕向东笔记整理)

Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java 虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件; 如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.wendangku.net/doc/7a372025.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.wendangku.net/doc/7a372025.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.wendangku.net/doc/7a372025.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.wendangku.net/doc/7a372025.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.wendangku.net/doc/7a372025.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

Java学习笔记(必看经典)_New - 共33页

JAVA -------- EVERYTHING IS OBJECT OOP class Student{

New null public int/void addNumber( ) throw Excepion {} public int addNumber(int a,int b){ } int a,int b public Student s=new Student() Student Student “Student()” () Student s Student public student(string name,int a){ } public student(int a,string name){ }

static void changename(student stu){stu.setName “LUCY”} overloading overriding JAVA overriding overloading Overloading overloading overloading overloading public void teach(){}; public void teach(int a){}; public void teach(String a){} Overloading Byte—short—float—int—long—double this student(){}; student(string n){ this();// student() } student(int a) this(int a) this this This Public void printNum(){ Int number=40 System.out.println(this.number); } This.number this.number (this) number

javaWeb面试题(含答案)

1、jsp和servlet的区别、共同点、各自应用的围?? JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层. 2、cookie和session的作用、区别、应用围,session的工作原理??? Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。 Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的存资源。 3、jstl是什么?优点有哪些?? JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。优点有: 1、在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。 2、简化了JSP和WEB应用程序的开发。 3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。 4、允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE 开发工具出现。 4、j2ee的优越性主要表现在哪些方面?MVC模式 a、 J2EE基于JAVA 技术,与平台无关 b、 J2EE拥有开放标准,许多大型公司实现了对该规支持的应用服务器。如BEA ,IBM,ORACLE

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.wendangku.net/doc/7a372025.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

java面试题大全(整理版)

2018年(整理版) 1、面向对象的特征有哪些方面? - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中的方法);2). 对象造型(用父类型引用引用子类型对象,

这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为) 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。 4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

javaweb学习心得

学习心得 在写心得之前总结下中级部分学习的内容,我们的中级部分主要学习了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,过滤器,监听器,JSTL,EL,jQuery,Ajax。 下面就各个模块进行总结:在学习html时,我是对这个没太在意的,因为里面全部是标签,没有需要理解的内容,全部是属于识记的,所以在学习时相对轻松,对于html常用的标签都是非常清楚的form中的十一种类型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的标签如div,table,span,select都是重要的标签. Css的学习:虽然说在标签中也可以定义样式,但是这么做看起来不是那么明智,我在学CSS时还是比较努力的,所有的样式效果都测试过,并且写了相应的案例,只是过了不到3个月就忘了一大半,很多时候都是查文档才能写出来的,虽然CSS对于我们来说不必要非常精通,但是我觉得掌握的东西越多,以后的工作就越轻松,所以在中级结束后也会去看看前面的笔记和案例。 Javascript:js 我认为是最重要的,甚至于超过servlet,jsp,在上课期间,讲的内容还是比较少的,就javascript 中创建对象来说吧,应该只讲过3中方法,虽然在一般的情况下是用不上的,但是我觉得还是有必要学习的,这样有助于看懂别人写的框架,在javascript这部分学习中讲的最多的还是dom操作,不过我觉得用dom操作太繁琐了,写的代码太多,而且效率看起来也不高,后面就是讲的事件,事件也算是简单的,只是对触发的事件进行相应的响应。除了这些就是javascript流程控制,对象一些基本语法,这些和java类似,所以在上课时没有讲得太多。 Xml:Extensible Markup Language可扩展标记语言。它是由SGML(Standard Gerneralized Markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在XML技术里,可以编写一个文档来约束XML文档的书写规范,称之为XML约束。本文主要介绍DTD与Schema两种约束,在这里学习了dtd,scheama,定义XML约束,这部分的学习是我感觉最累的一部分,DTD还算好,SCheama里面的内容,现在都忘了,没有任何记忆,只知道在XML约束中有着两中方式,还好这些在刚开始工作时是用不上的,因此我也没有用很多时间来学习。 Servlet:我觉得是比较简单的,可能是因为它是java代码,容易理解。首先讲的是开发环境的配置,安装tomcat,了解tomcat下的目录,以及web工程下的目录。后来是讲了servlet的访问方式,post和get的区别,处理中文乱码是servlet中一个重要的知识点,几乎每个项目都会遇到这个问题。主要乱码有get,post 乱码,是通过设置request或者response的编码方式来实现的。Servlet间的跳转方式有重定向和转发,对于重定向和转发的区别,现在理解的很透彻了,重定向是不能获取request中参数,是客户端的两次请求,而转发是服务器内部跳转,不过,两种在设置过滤器的情况下,都要通过过滤器才能跳转。Servlet的生命周期是笔试的必考题,其实这是很简单的,只需要理解,没必要死记硬背的,session算是重要的知识点,很多数据都是存储在内存中,如购物车,用户信息等,还可以对session设置生存时间。说到session就必须说说四种会话跟踪技术,cookie,URL重写,表单域隐藏和session。 JSP:JSP实际上和servlet是一样的,只不过两者侧重点不同,JSP的内置对象和作用域大致是一样的,JSP 中还有动作,常用的有操作JavaBean的动作,页面跳转的动作,以及包含的动作。这里重点提到两种包含的区别。在JSP还讲过jstl和EL表达式,都是基础的应用,不过写自定义的标签还是要有一定的java基础的,我开始不太理解标签的解析过程,后来看了几个例子,发现自定义的已不是那么难。 jQuery:jQuery可以说是中级部分学的最好的,主要是它方便了,特别是选择器,而且避免了一些浏览器的差异,所以在学习jQuery后,就再也不想用javascript来获取元素了。不仅如此,jQuery中封装的Ajax 操作也是非常简单,不需要自己封装一个类,$.get和$.post 能够省去很多麻烦,jQuery的监听事件也是很简单,不需要在标签中添加对应事件,可以动态的绑定事件。还有就是dom操作更是方便。我在学习完Ajax,json后就发现,即使是没有JSP,也能做出一个动态页面出来,只是会存在效率问题。 总结:虽然说这上面的知识大部分都掌握了,但是能否灵活运用才是重点,所以在今后的学习中多思考问题是否有多种解决方法。

华为java笔试面试题

华为Java笔试题+数据库题 一、单项选择题 1.Java是从( B)语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确(B ) A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 3.下列说法正确的有(C ) A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 4.提供Java存取数据库能力的包是( A) A.java.sql B.java.awt C.https://www.wendangku.net/doc/7a372025.html,ng D.java.swing 5.下列运算符合法的是( A) A.&& B.<> C.if D.:= 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是(C ) A.0 B.1 C.-1 D.死循环 7.下列哪一种叙述是正确的( D) A. abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 8.下列语句正确的是( C) A.形式参数可被视为local variable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 9.下列哪种说法是正确的(A ) A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 二、多项选择题 1.Java程序的种类有(BCD ) A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有( BCD) A.环境变量可在编译source code时指定

相关文档