java基础.docx
- 文档编号:19348756
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:24
- 大小:35.04KB
java基础.docx
《java基础.docx》由会员分享,可在线阅读,更多相关《java基础.docx(24页珍藏版)》请在冰豆网上搜索。
java基础
抽象:
从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。
继承:
指一个对象直接使用另一对象的属性和方法可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。
封装:
将属性、方法或实现的详细信息进行隐藏处理的方式。
多态:
允许将父对象设置成为和一个和多个它的子对象相等的技术。
String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。
为了提高效率节省空间,我们应该用StringBuffer类
int和Integer有什么区别?
Java提供两种不同的类型:
引用类型和原始类型(或内置类型)。
Int是java的原始数据类型,Integer是java为int提供的封装类。
String和StringBuffer的区别?
String类提供了数值不可改变的字符串。
而StringBuffer类提供的字符串进行修改。
当你知道字符数据要改变的时候你就可以使用StringBuffer。
运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
说出ArrayList,Vector,LinkedList的存储性能和特性?
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
Collection和Collections的区别?
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
&和&&的区别?
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
HashMap和Hashtable的区别?
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或者排序。
它允许一个null键和多个null值。
Hashtable类似于HashMap,但是不允许null键和null值。
它也比HashMap慢,因为它是同步的。
final,finally,finalize的区别?
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
sleep()和wait()有什么区别?
sleep()方法是使线程停止一段时间的方法。
在sleep时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
Overload(重载)和Override(重写)的区别。
Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。
error和exception有什么区别?
error表示恢复不是不可能但很困难的情况下的一种严重问题。
比如说内存溢出。
不可能指望程序能处理这样的情况。
exception表示一种设计或实现问题。
也就是说,它表示如果程序运行正常,从不会发生的情况。
同步和异步有何异同,在什么情况下分别使用他们?
举例说明。
如果数据将在线程间共享。
例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
abstractclass(抽象类)和interface(接口)有什么区别?
接口可以被多重实现,抽象类只能被单一继承。
接口只有定义,抽象类可以有定义和实现。
接口的字段定义默认为:
publicstaticfinal,抽象类字段默认friendly。
Heap(栈)和stack(堆)有什么区别?
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。
栈按照后进先出的方式进行处理。
堆是栈的一个组成元素。
forward(转发)和redirect(重定向)的区别?
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,转发页面和转发到的页面可以共享request里面的数据,效率更高;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接,浏览器的地址栏中可以看到跳转后的链接地址,但不能共享数据,效率较低。
StaticNestedClass(静态嵌套类)和InnerClass(内部类)的不同?
StaticNestedClass是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。
而通常的内部类需要在外部类实例化后才能实例化。
JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:
include动作实现 includepage="included.jsp"flush="true"/>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@includefile="included.htm"%> 什么时候用assert(断言)? assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。 在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。 一般来说,assertion用于保证程序最基本、关键的正确性。 assertion检查通常在开发和测试时开启。 为了提高性能,在软件发布后,assertion检查通常是关闭的。 GC是什么? 为什么要有GC? GC是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 Strings=newString("xyz");创建了几个StringObject? 两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11; shorts1=1;s1=s1+1;有什么错? shorts1=1;s1+=1;有什么错? shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。 可修改为s1=(short)(s1+1)。 shorts1=1;s1+=1正确。 Java有没有goto? java中的保留字,现在没有在java中使用。 启动一个线程是用run()还是start()? start()方法 应用服务器有那些? BEAWebLogicServer,IBMWebSphereApplicationServer,Oracle9iApplicationServer,jBoss,Tomcat 给我一个你最常见到的runtimeexception? IndexOutOfBoundsException数组越界 NullPointerException空指针异常 SystemException系统异常 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concreteclass)? 接口可以继承接口。 抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 List,Set,Map是否继承自Collection接口? List,Set是,Map不是 说出数据连接池的工作机制是什么? J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。 如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。 当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 都不能 数组有没有length()这个方法? String有没有length()这个方法? 数组没有length()这个方法,有length的属性。 String有length()这个方法。 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。 equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 是否可以继承String类? String类是final类故不可以继承。 swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。 因此传递给switch和case语句的参数应该是int、short、char或者byte。 long,string都不能作用于swtich。 try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。 用最有效率的方法算出2乘以8等於几? 2<<3 两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对? 不对,有相同的hashcode。 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。 Java编程语言只有值传递参数。 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。 对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 Java的接口和C++的虚类的相同和不同处? 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。 与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。 当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是publicstatic,所有方法默认情况下是public.一个类可以实现多个接口。 Java中的异常处理机制的简单原理和应用? 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。 违反语义规则包括2种情况。 一种是JAVA类库内置的语义检查。 例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。 另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。 所有的异常都是java.lang.Thowable的子类。 垃圾回收的优点和原理。 并考虑2种回收机制? Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。 由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收 请说出你所知道的线程同步的方法? wait(): 使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep(): 使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify(): 唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity(): 唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 你所知道的集合类都有哪些? 主要方法? 最常用的集合类是List和Map。 List的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元素的情形。 Map提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 描述一下JVM加载class文件的原理机制? JVM中类的装载是由ClassLoader和它的子类来实现的,JavaClassLoader是一个重要的Java运行时系统组件。 它负责在运行时查找和装入类文件的类。 char型变量中能不能存贮一个中文汉字? 为什么? 能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口,同步的实现方面有两种,分别是synchronized,wait与notify 线程的基本概念、线程的基本状态以及状态之间的关系? 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。 Java中的线程有四种状态分别是: 运行、就绪、挂起、结束。 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 区别主要答两点: a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路 XML文档定义有几种形式? 它们之间有何本质区别? 解析XML文档有哪几种方式? a: 两种形式dtd schema b: 本质区别: schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的) c: 有DOM,SAX,STAX等 DOM: 处理大型文件时其性能下降的非常厉害。 这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问 SAX: 不现于DOM,SAX是事件驱动型的XML解析方式。 它顺序读取XML文件,不需要一次全部装载整个文件。 当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问STAX: StreamingAPIforXML(StAX) 简述synchronized和java.util.concurrent.locks.Lock的异同? 主要相同点: Lock能完成synchronized所实现的所有功能主要不同点: Lock有比synchronized更精确的线程语义和更好的性能。 synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。 CORBA是什么? 用途是什么? CORBA标准是公共对象请求代理结构(CommonObjectRequestBrokerArchitecture),由对象管理组织(ObjectManagementGroup,缩写为OMG)标准化。 它的组成是接口定义语言(IDL),语言绑定(binding: 也译为联编)和允许应用程序间互操作的协议。 其目的为: 用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。 说说你所熟悉或听说过的j2ee中的几种常用模式? 及对设计模式的一些看法 SessionFacadePattern: 使用SessionBean访问EntityBean; MessageFacadePattern: 实现异步调用; EJBCommandPattern: 使用CommandJavaBeans取代SessionBean,实现轻量级访问; DataTransferObjectFactory: 通过DTOFactory简化EntityBean数据提供特性; GenericAttributeAccess: 通过AttibuteAccess接口简化EntityBean数据提供特性;BusinessInterface: 通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性;EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。 项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 常用的设计模式? 说明工厂模式。 Factory(工厂模式),Builder(建造模式),FactoryMethod(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),TemplateMethod(模板方法模式),ChainOfResponsibleity(责任链模式)。 工厂模式: 工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 排序都有哪几种方法? 请列举。 排序的方法有: 插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。 请对以下在J2EE中常用的名词进行解释(或简单描述)? web容器、EJB容器、JNDI、JMS、JTA、JAF、RMI/IIOP web容器: 给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。 主要有WEB服务器来实现。 例如: TOMCAT,WEBLOGIC,WEBSPHERE等。 该容器提供的接口严格遵守J2EE规范中的WEBAPPLICATION标准。 我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 EJB容器: Enterprisejavabean容器。 更具有行业领域特色。 他提供给运行在其中的组件EJB各种管理功能。 只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。 并且可以通过现成的接口来获得系统级别的服务。 例如邮件服务、事务管理。 JNDI: (JavaNaming&DirectoryInterface)JAVA命名目录服务。 主要提供的功能是: 提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 JMS: (JavaMessageService)JAVA消息服务。 主要实现各个应用程序之间的通讯。 包括点对点和广播。 JTA: (JavaTransactionAPI)JAVA事务服务。 提供各种分布式事务服务。 应用程序只需调用其提供的接口即可。 JAF: (JavaActionFrameWork)JAVA安全认证框架。 提供一些安全控制方面的框架。 让开发者通过各种部署和自定义实现自己的个性安全控制策略。 RMI: (RemoteMethodInterface)远程方法调用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础
![提示](https://static.bdocx.com/images/bang_tan.gif)