java笔/面试题整理

名词解释:

POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆

所创造的简称。

JMS:(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中

的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,

翻译为Java消息服务。

XML:(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。

SOA:面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

SCM:供应链管理(Supply chain management,SCM)是一种集成的管理思想和方法,它执行供应链中从供应商到最终用户的物流的计划和控制等职能

DOM: DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这是表示和处理一个HTML或XML文档的常用方法,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言。

网络蜘蛛:网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页 ,从 网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网 站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。

 

String是最基本的数据类型吗?
      基本数据类型包括byte、int、char、long、float、double、boolean和short。
      java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

int 和 Integer 有什么区别
      Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类

     原始类型        封装类
      boolean     Boolean
      char           Character
      byte           Byte
      short          Short
      int              Integer
      long            Long
      float            Float
      double        Double

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 
null,而原始类型实例变量的缺省值与它们的类型有关。

String 和StringBuffer的区别
      JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

运行时异常与一般异常有何异同?
      异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

 

说出Servlet的生命周期,并说出Servlet和CGI的区别。
      Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
      与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

 

CGI:Common Gate Interface,通用网关接口

 

 

说出ArrayList,Vector, LinkedList的存储性能和特性
      ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

 

Spring的核心思想

Spring核心思想就是IOC和AOP,
IOC是控制反转的意思,以前我们通常要在一个类的方法得到另外一个类需要 new 一个
pulic OneFoo
{
void method ()
{
AnotherFoo anthorFoo=new AnotherFoo ();/
//下面是逻辑代码
}
}
在Spring里面可以通过配置文件(可以查阅goolgle)直接注入到这个类的对象中比如
pulibc OneFoo
{
public AnotherFoo aFoo;
public void setAnotherFoo(AnotherFoo aFoo){}
public void method()
{
aFoo.doSomething();
}
}
这样就不用在程序里面显示的new这个需要的类的对象了这是ioc

aop就是面向方面编程,你可以在一个方法前,方法后,或者类实例化后,实例化前处理一些你自己的代码,一般用在事务处理(Spring著名的申明性事务),和动态的进行log记录,
传统的log记录一般是你一个类一个类的去打印log,而用了aop你只要写一个类,配置下文件然后就可以动态的在某个类方法执行的时候打印出log. 

 

hashmap和hashtable 的区别 

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

两句话总结:
HashMap => 不同步、空键值、效率高;
Hashtable => 同步、非空键值、效率略低

habinate的运行机制,有什么优点

机制:
1、读取并解析配置文档
2、读取并解析映射文件,创建SessionFactory
3、打开Session
4、创建事务Trasction
5、持久化操作
6、提交事务
7、关闭Session
8、关闭SessionFactory

优点:
1、对JDBC访问数据库的代码做了封装,大大简化了数据访问繁琐的代码
2、Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,他很大程度的简化DAO曾的编码

  工作
3、Hibernate使用Java发射机制,而不是字节码,增强程序来实现透明性
4、Hibernate的性能非常好,因为他是一个轻量级框架,框架的灵活性很突出。它支持各种关系数据库从

  一对一到多对多的各种复杂工作

 

heap和stack有什么区别

1.heap是堆,stack是栈。

2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。

3.stack空间有限,heap的空间是很大的自由区。

在Java中,

若只是声明一个对象,则先在栈内存中为其分配地址空间,

若再new一下,实例化它,则在堆内存中为其分配地址。

4.举例:

数据类型 变量名;这样定义的东西在栈区。

如:Object a =null; 只在栈内存中分配空间

new 数据类型();或者malloc(长度);    这样定义的东西就在堆区

如:Object b =new Object(); 则在堆内存中分配空间

页面对象间传值的方法:

request、session、application、cookie

 

Synchronized和java.util.concurrent.locks.Lock的区别

主要相同点:Lock能完成Synchronized所实现的所有功能。

主要不同点:Lock有比Synchronized更精确的县城予以和更好的性能。Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值