当前位置: 首页 > news >正文

专门做行业分析的网站天津做网站的大公司

专门做行业分析的网站,天津做网站的大公司,南宁正规的seo费用,广安建设网站参考链接#xff1a; 关于Java中文件名和类名的误解 Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答#xff1a;MVC是Model#xff0d;View#xff0d;Controller的简写。Model 代表的是应用的业务逻辑#xff08;通过JavaBean#xff…参考链接 关于Java中文件名和类名的误解 Java笔试题集锦  1.MVC的各个部分都有那些技术来实现?如何实现? 答MVC是ModelViewController的简写。Model 代表的是应用的业务逻辑通过JavaBeanEJB组件实现 View是应用的表示面由JSP页面产生Controller 是提供应用的处理过程控制一般是一个Servlet通过这种设计模型把应用逻辑处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。   2.J2EE是什么 答Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中可按照功能划分为不同的组件这些组件又可在不同计算机上并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。   3.J2EE是技术还是平台还是框架 答J2EE本身是一个标准一个为企业分布式应用的开发提供的标准平台。       J2EE也是一个框架包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。   4.STRUTS的应用(如STRUTS架构) 答Struts是采用Java Servlet/JavaServer Pages技术开发Web应用程序的开放源码的framework。        采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能      一.包含一个controller servlet能将用户的请求发送到相应的Action对象。     二.JSP自由tag库并且在controller servlet中提供关联支持帮助开发员创建交互式表单应用。     三.提供了一系列实用对象XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。   5.WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 答Web ServiceWeb Service是基于网络的、分布式的模块化组件它执行特定的任务遵守具体的技术规范       这些规范使得Web Service能与其他兼容的组件进行互操作。      JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用      的接口当你需要改变具体的实现时候也不需要修改代码。     JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。     WSDL是一种 XML 格式用于将网络服务描述为一组端点这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种     格式首先对操作和消息进行抽象描述然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽     象端点服务。 SOAP即简单对象访问协议(Simple Object Access Protocol)它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范同时也包含一组使企业能将自身提供的Web Service注册以使别的企业能够发现的访问协议的实现标准。   6.C/S 与 B/S 区别 答有如下八个方面的不同 (1)硬件环境不同:   C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.   B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围,一般只要有操作系统和浏览器就行 (2)对安全要求不同   C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.   B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 ()对程序架构不同   C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.   B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. ()软件重用不同   C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.   B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 ()系统维护不同    C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统   B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. ()处理问题不同   C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统   B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. ()用户接口不同   C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高   B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. ()信息流不同   C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低   B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。   7.什么是JNDI 答Java Naming Directory InterfaceJAVA命名目录服务。主要提供的功能是提供一个目录系统让其它各地的应用程序在其上面留下自己的索引从而满足快速查找和定位分布式应用程序的功能。   8.什么是JMS 答Java Message ServiceJAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播   9.什么是JTA 答Java Transaction APIJAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。   10.开发中都用到了那些设计模式?用在什么场合? 答每个模式都描述了一个在我们的环境中不断出现的问题然后描述了该问题的解决方案的核心。通过这种方式你可以无数次地使用那些已有的解决方案无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。   11.、j2ee常用的设计模式说明工厂模式。 答Java中的23种设计模式 Factory工厂模式      Builder建造模式       Factory Method工厂方法模式 Prototype原始模型模式Singleton单例模式    Facade门面模式 Adapter适配器模式    Bridge桥梁模式        Composite合成模式 Decorator装饰模式    Flyweight享元模式     Proxy代理模式 Command命令模式      Interpreter解释器模式 Visitor访问者模式 Iterator迭代子模式   Mediator调停者模式    Memento备忘录模式 Observer观察者模式   State状态模式         Strategy策略模式 Template Method模板方法模式 Chain Of Responsibleity责任链模式 工厂模式工厂模式是一种经常被使用到的模式根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例通常这一组类有一个公共的抽象父类并且实现了相同的方法但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类工厂类可以根据条件生成不同的子类实例。当得到子类的实例后开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。   12.UML方面 答标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图   13.RMI RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制能够让在某个 Java 虚拟机上的对象调用另一个 Java虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。调用这样一个对象时其参数为marshalled 并将其从本地虚拟机发送到远程虚拟机该远程虚拟机的参数为 unmarshalled上。该方法终止时将编组来自远程机的结果并将结果发送到调用方的虚拟机。如果方法调用导致抛出异常则该异常将指示给调用方。     JAVA 基础   1.如何获得数组的长度 数组名.length   2.访问修饰符“public/private/protected/缺省的修饰符”的使用类? public :  公共,均可访问 private:  私有的,同一个java类中可以访问.子类不能访问. protected: 同一个包中的类都可访问.子类可以访问. 缺省,friendly :当前类,同一个包,都可以访问. 作用域           当前类       同一package  子孙类       其他package public            √              √                  √             √ protected        √              √                  √             × friendly          √              √                   ×            × private           √              ×                   ×            ×   3.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类是否可以implements(实现)interface(接口)? 匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.   一、由于匿名内部类没有名字所以它没有构造函数。因为没有构造函数所以它必须完全借用父类的构造函数来实例化换言之匿名内部类完全把创建对象的任务交给了父类去完成。   二、在匿名内部类里创建新的方法没有太大意义但它可以通过覆盖父类的方法达到神奇效果如上例所示。这是多态性的体现。   三、因为匿名内部类没有名字所以无法进行向下的强制类型转换持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。   new 类或接口 类的主体   匿名类   匿名类是不能有名称的类所以没办法引用它们。必须在创建时作为new语句的一部分来声明它们。   这就要采用另一种形式的new语句如下所示     new 类或接口 类的主体   这种形式的new语句声明一个新的匿名类它对一个给定的类进行扩展或者实现一个给定的接口。它还创建那个类的一个新实例并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数后跟匿名类的主体。   如果匿名类对另一个类进行扩展它的主体可以访问类的成员、覆盖它的方法等等这和其他任何标准的类都是一样的。如果匿名类实现了一个接口它的主体必须实现接口的方法。   注意匿名类的声明是在编译时进行的实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例而不是创建几个不同匿名类的一个实例。   从技术上说匿名类可被视为非静态的内部类所以它们具有和方法内部声明的非静态内部类一样的权限和限制。   如果要执行的任务需要一个对象但却不值得创建全新的对象原因可能是所需的类过于简单或者是由于它只在一个方法内部使用匿名类就显得非常有用。匿名类尤其适合在Swing应用程序中快速创建事件处理程序。   exp: return new Contents() { private int i 11; public int value() { return i; } };   这种奇怪的语法要表达的意思是“创建从Contents衍生出来的匿名类的一个对象”。由new表达式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表达的是   class MyContents extends Contents { private int i 11; public int value() { return i; } } return new MyContents(); 若试图定义内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象必须是final属性. public class Parcel9 {   public Destination   dest(final String dest, final float price) {     return new Destination() {       private int cost;       // Instance initialization for each object:       {         cost Math.round(price);         if(cost 100)           System.out.println(Over budget!);       }       private String label dest;       public String readLabel() { return label; }     };   }   public static void main(String[] args) {     Parcel9 p new Parcel9();     Destination d p.dest(Tanzania, 101.395F);   } }   4.static nested class 和 inner class的不同? nested class在c中是嵌套类,inner class在java中是内部类.不同就是在于是否有指向外部的引用上.静态内部类意味着创建一个static内部类的对象,不需要一个外部类对象;不能从一个static内部类的一个对象访问到一个外部类的对象.   5.和的区别 是位运算符,表示按位与运算;是逻辑运算符,表示逻辑与(and)   6.Collection和Collections的区别 collection是集合类的上级接口,继承与它的接口主要是set和list 其中list必须以特定的顺序容纳元素;而一个set不能包含重复的元素. 映射(Map)一系列键-值对.可以返回自己键的一个set,一个包含自己值的list,或者包含自己(键-值)对的一个list. 均可构建自己的反复器. collections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作.   public class SimpleCollection {   public static void main(String[] args) {     Collection c new ArrayList();     for(int i 0; i 10; i)       c.add(Integer.toString(i));     Iterator it c.iterator();     while(it.hasNext())       System.out.println(it.next());   } }   7.什么时候用assert assertion(断言)在软件开发中是一种常用的调试方式很多开发语言中都支持这种机制。在实现中assertion就是在程序中的一条语句它对一个boolean表达式进行检查一个正确程序必须保证这个boolean表达式的值为true如果该值为false说明程序已经处于不正确的状态下系统将给出警告或退出。一般来说assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能在软件发布后assertion检查通常是关闭的.   8.String s new String(xyz);创建了几个String Object*** 两个一个字符对象一个字符对象引用对象   9.math.round(11.5)和math.round(-11.5) 前者等于12,后者等于-11.round方法返回与参数最接近的长整数.参数加0.5,求其floor   10. short s1 1;s1 s11;是否有错误? short s1 1;s1 1;是否有错误? 前者s11返回一个int型,需要强制类型转换. 后者正确.   11.java种有没有goto? 有,为保留字.但是尚未使用.   12.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 答方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数我们说该方法被重写 (Overriding)。子类的对象使用这个方法时将调用子类中的定义对它而言父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法它们或有不同的参数个数或有不同的参数类型则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型   13.Set里的元素是不能重复的那么用什么方法来区分重复与否呢? 是用还是equals()? 它们有何区别 答Set里的元素是不能重复的那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等 equals()和方法决定引用值是否指向同一对象equals()在类中被覆盖为的是当两个分离的对象的内容和类型相配的话返回真值   14.给我一个你最常见到的runtime exception? 答常见的运行时异常有如下这些 ArithmeticException(异常的运算条件), ArrayStoreException(向一个对象数组存放一错误类型的对象时)BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException..   15.error和exception有什么区别? 答error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况     exception 表示一种设计或实现问题。也就是说它表示如果程序运行正常从不会发生的情况   16.List, Set, Map是否继承自Collection接口 答 ListSet是Map不是   17.abstract class和interface的区别 答:声明方法的存在而不去实现它的类叫虚拟类(abstract class).它用于创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract class的实例.但是可以声明一个abstract class变量,将其指向其具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract 类的子类为它们父类中的所有抽象方法提供实现否则它们也是抽象类为。取而代之在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法. 接口interface是抽象类的变体。在接口中所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似除了该实现类不能从接口定义中继承行为。当类实现特殊接口时它定义即将程序体给予所有这种接口的方法。然后它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换instanceof 运算符可以用来决定某对象的类是否实现了接口. 接口是一个更纯的抽象类.   18.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class) 答接口可以继承接口。抽象类可以实现(implements)接口抽象类可继承实体类但前提是实体类必须有明确的构造函数   19.abstract的method是否可同时是static,是否可同时是native是否可同时是synchronized 答都不能.其中synchronized:(同步.避免在你和别人同时访问一个属性的时候属性的值发生不同步的问题.)     native:(声明本地方法的关键字可以通过声明的方法调用本地的动态链接库或者有C、C等开发的函数。)   20.构造器Constructor是否可被override(构造函数) 答构造器Constructor不能被继承因此不能重写Overriding但可以被重载Overloading 1). 构造器不能是native,final,static,synchronized 的,可以是public,private,或什么都没有。 2). 构造器函数里可以写return呢,但后面什么都不许有(包括null) 3). 构造器不能返回值.      但如果有个构造器返值了,它就不是构造器喽,只是个普通方法 4). super();this();这两个方法只能在构造方法里调用. 5). 成员变量声明时候赋值,比构造函数还早.   21.是否可以继承String类 答String类是final类故不可以继承   22.try {}里有一个return语句那么紧跟在这个try后的finally {}里的code会不会被执行什么时候被执行在return前还是后 答会执行在return前执行   23.用最有效率的方法算出2乘以8等於几 答2 3   24.两个对象值相同(x.equals(y) true)但却可有不同的hash code这句话对不对 答不对有相同的hash code 在C中每个类多有地址。 java也一样不过hash code不是地址而是一个标识对象用的。个人认为 每个对象的hash code是不一样的Object的默认hash code记得是按引用地址的。 对于String例外是按String内容输出hash code的这样可以用equals()来比较String的 内容是否相等了而不是地址 在 Java 应用程序执行期间在同一对象上多次调用 hashCode 方法时必须一致地返回相同的整数前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行该整数无需保持一致。 如果根据 equals(Object) 方法两个对象是相等的那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 以下情况不 是必需的如果根据 equals(java.lang.Object) 方法两个对象不相等那么在两个对象中的任一对象上调用hashCode 方法必定会生成不同的整数结果。但是程序员应该知道为不相等的对象生成不同整数结果可以提高哈希表的性能。 实际上由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。这一般是通过将该对象的内部地址转换成一个整数来实现的但是 JavaTM 编程语言不需要这种实现技巧。   25.当一个对象被当作参数传递到一个方法后此方法可改变这个对象的属性并可返回变化后的结果那么这里到底是值传递还是引用传递 答是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变但对象的引用是永远不会改变的.   26.swtich是否能作用在byte上是否能作用在long上是否能作用在String上 答witchexpr1中expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者byte。long,string 都不能作用于swtich   27.ArrayList和Vector的区别,HashMap和Hashtable的区别 答就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的也就是说是同步的而ArrayList是线程序不安全的不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因:Hashtable是基于陈旧的Dictionary类的HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的也就是说是同步的而HashMap是线程序不安全的不是同步的 三.值只有HashMap可以让你将空值作为一个表的条目的key或value   28.GC是什么? 为什么要有GC 答GC是垃圾收集的意思Gabage Collection,内存处理是编程人员容易出现问题的地方忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的Java语言没有提供释放已分配内存的显示操作方法。   29.float型float f3.4是否正确? 答:不正确。精度不准确,应该用强制类型转换如下所示float f(float)3.4   30.介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 答Collection FrameWork如下 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口一个Collection代表一组Object即Collection的元素Elements Map提供key到value的映射.   31.抽象类与接口 答抽象类与接口都用于抽象但是抽象类(JAVA中)可以有自己的部分实现而接口则完全是一个标识(同时有多重继承的功能) JAVA类实现序例化的方法是实现java.io.Serializable接口 Collection框架中实现比较要实现Comparable 接口和 Comparator 接口   32.STRING与STRINGBUFFER的区别。 答STRING的长度是不可变的STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作特别是内容要修改时那么使用StringBuffer如果最后需要String那么使用StringBuffer的toString()方法   33.谈谈final, finally, finalize的区别 答final—修饰符关键字如果一个类被声明为final意味着它不能再派生出新的子类不能作为父类被继承。因此一个类不能既被声明为 abstract的又被声明为final的。将变量或方法声明为final可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值而在以后的引用中只能读取不可修改。被声明为final的方法也同样只能使用不能重载 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常那么相匹配的 catch 子句就会执行然后控制就会进入 finally 块如果有的话 finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的   34.面向对象的特征有哪些方面 答主要有以下四方面 1.抽象 抽象就是忽略一个主题中与当前目标无关的那些方面以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题而只是选择其中的一部分暂时不用部分细节。抽象包括两个方面一是过程抽象二是数据抽象。 2.继承 继承是一种联结类的层次模型并且允许和鼓励类的重用它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生这个过程称为类继承。新类继承了原始类的特性新类称为原始类的派生类子类而原始类称为新类的基类父类。派生类可以从它的基类那里继承方法和实例变量并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装 封装是把过程和数据包围起来对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念即现实世界可以被描绘成一系列完全自治、封装的对象这些对象通过一个受保护的接口访问其他对象。 4. 多态性 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势很好的解决了应用程序函数同名问题。   35.String是最基本的数据类型吗 答基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的因此不可以继承这个类、不能修改这个类。为了提高效率节省空间我们应该用StringBuffer类   36.int 和 Integer 有什么区别 答Java 提供两种不同的类型引用类型和原始类型或内置类型。Int是java的原始数据类型Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble引用类型和原始类型的行为完全不同并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法它们包括大小和速度问题这种类型以哪种类型的数据结构存储当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null而原始类型实例变量的缺省值与它们的类型有关.   37.运行时异常与一般异常有何异同 答异常表示程序运行过程中可能出现的非正常状态运行时异常表示虚拟机的通常操作中可能遇到的异常是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常但是并不要求必须声明抛出未被捕获的运行时异常。   38.说出ArrayList,Vector, LinkedList的存储性能和特性 答ArrayList和Vector都是使用数组方式存储数据此数组元素数大于实际存储的数据以便增加和插入元素它们都允许直接按序号索引元素但是插入元素要涉及数组元素移动等内存操作所以索引数据快而插入数据慢Vector由于使用了synchronized方法线程安全通常性能上较ArrayList差而LinkedList使用双向链表实现存储按序号索引数据需要进行前向或后向遍历但是插入数据时只需要记录本项的前后项即可所以插入速度较快   39.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算法都大概一样所以性能不会有很大的差异。   40.heap和stack有什么区别**** 答栈是一种线形集合其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素   41.Java中的异常处理机制的简单原理和应用 答当JAVA程序违反了JAVA的语义规则时JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查程序员可以创建自己的异常并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。   42.垃圾回收的优点和原理。并考虑2种回收机制 答Java语言中一个显著的特点就是引入了垃圾回收机制使c程序员最头疼的内存管理的问题迎刃而解它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制Java中的对象不再有作用域的概念只有对象的引用才有作用域。垃圾回收可以有效的防止内存泄露有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收增量垃圾回收。   43.你所知道的集合类都有哪些主要方法 答最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector它们是可变大小的列表比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对称作键和值其中每个键映射到一个值。   44.描述一下JVM加载class文件的原理机制? 答JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。   45.排序都有哪几种方法请列举 答  排序的方法有插入排序直接插入排序、希尔排序交换排序冒泡排序、快速排序选择排序直接选择排序、堆排序归并排序分配排序箱排序、基数排序 快速排序的伪代码。 / /使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e该元素为支点 把余下的元素分割为两段left 和r i g h t使得l e f t中的元素都小于等于支点而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t m i d d l e r i g h t   46.JAVA语言如何进行异常处理关键字throws,throw,try,catch,finally分别代表什么意义在try块中可以抛出异常吗 答Java通过面向对象的方法进行异常处理把各种不同的异常进行分类并提供了良好的接口。在Java中每个异常都是一个对象它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象该对象中包含有异常信息调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的try、catch、throw、throws和finally。一般情况下是用try来执行一段程序如果出现异常系统会抛出throws一个异常这时候你可以通过它的类型来捕捉catch它或最后finally由缺省处理器来处理。 用try来指定一块预防所有异常的程序。紧跟在try程序后面应包含一个catch子句来指定你想要捕捉的异常的类型。 throw语句用来明确地抛出一个异常。 throws用来标明一个成员函数可能抛出的各种异常。 Finally为确保一段代码不管发生什么异常都被执行一段代码。 可以在一个成员函数调用的外面写一个try语句在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句异常的框架就放到堆栈上面直到所有的try语句都完成。如果下一级的try语句没有对某种异常进行处理堆栈就会展开直到遇到有处理这种异常的try语句。   47.一个.java源文件中是否可以包括多个类不是内部类有什么限制 答可以。必须只有一个类名与文件名相同。   48.java中有几种类型的流JDK为每种类型的流提供了一些抽象类以供继承请说出他们分别是哪些类 答字节流字符流。字节流继承于InputStream OutputStream字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流主要是为了提高性能和使用方便。   49.java中会存在内存泄漏吗请简单描述。 答会。自己实现堆载的数据结构时有可能会出现内存泄露   50.垃圾回收器的基本原理是什么垃圾回收器可以马上回收内存吗有什么办法主动通知虚拟机进行垃圾回收 答对于GC来说当程序员创建对象时GC就开始监控这个对象的地址、大小以及使用情况。通常GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是可达的哪些对象是不可达的。当GC确定一些对象为不可达时GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc()通知GC运行但是Java语言规范并不保证GC一定会执行。   51.静态变量和实例变量的区别 答static i 10; //常量   class A a;  a.i 10;//可变   52.什么是java序列化如何实现java序列化***** 答序列化就是一种用来处理对象流的机制所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现将需要被序列化的类实现Serializable接口该接口没有需要实现的方法implements Serializable只是为了标注该对象是可被序列化的然后使用一个输出流(如FileOutputStream)来构造一个ObjectOutputStream(对象流)对象接着使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态)要恢复的话则用输入流。   53.是否可以从一个static方法内部发出对非static方法的调用 答不可以,如果其中包含对象的method()不能保证对象初始化.   54.写clone()方法时通常都有一行代码是什么 答Clone 有缺省行为super.clone();他负责产生正确大小的空间并逐位复制。   55.在JAVA中如何跳出当前的多重嵌套循环 答用break; return 方法。   56.List、Map、Set三个接口存取元素时各有什么特点 答List 以特定次序来持有元素可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值value可多值。   57.说出一些常用的类包接口请各举5个 答常用的类BufferedReader  BufferedWriter  FileReader  FileWirter  String  Integer 常用的包java.lang  java.awt  java.io  java.util  java.sql 常用的接口Remote  List  Map  Document  NodeList   58.描述使用JDBC连接数据库的过程     Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);     String   url      jdbc:obdc:mydb;     Connection   con      DriverManager.getConnection(url);     Statement   stmt      con.createStatement();     ResultSet   rs      stmt.execte(select   *   from   mytable);     59.什么是JNDI?     java命名目录接口   60.Java 的通信编程编程题(或问答)用JAVA SOCKET编程读服务器几个字符再写入本地显示 答:Server端程序: package test; import java.net.*; import java.io.*;   public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() { try { ssnew ServerSocket(10000); while(true) { socket ss.accept(); String RemoteIP socket.getInetAddress().getHostAddress(); String RemotePort :socket.getLocalPort(); System.out.println(A client come in!IP:RemoteIPRemotePort); in new BufferedReader(new   InputStreamReader(socket.getInputStream())); String line in.readLine(); System.out.println(Cleint send is : line); out new PrintWriter(socket.getOutputStream(),true); out.println(Your Message Received!); out.close(); in.close(); socket.close(); } }catch (IOException e) { out.println(wrong); } } public static void main(String[] args) { new Server(); } }; Client端程序: package test; import java.io.*; import java.net.*;   public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { try { System.out.println(Try to Connect to 127.0.0.1:10000); socket new Socket(127.0.0.1,10000); System.out.println(The Server Connected!); System.out.println(Please enter some Character:); BufferedReader line new BufferedReader(new   InputStreamReader(System.in)); out new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine()); in new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(in.readLine()); out.close(); in.close(); socket.close(); }catch(IOException e) { out.println(Wrong); } } public static void main(String[] args) { new Client(); } };   61. 线程的基本概念、线程的本状态以及状态之间的关系 •新建 (Born) : 新建的线程处于新建状态 •就绪 (Ready) : 在创建线程后它将处于就绪状态等待 start() 方法被调用 •运行 (Running) : 线程在开始执行时进入运行状态 •睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后线程将进入就绪状态 •等待 (Waiting) : 如果调用了 wait() 方法线程将处于等待状态。用于在两个或多个线程并发运行时。 •挂起 (Suspended) : 在临时停止或中断线程的执行时线程就处于挂起状态。 •恢复 (Resume) : 在挂起的线程被恢复执行时可以说它已被恢复。 •阻塞 (Blocked) – 在线程等待一个事件时例如输入/输出操作就称其处于阻塞状态。 •死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后线程就处于死亡状态。 串行化的注意事项以及如何实现串行化答如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法   62.内部类要点? 静态内部类可以有静态成员而非静态内部类则不能有静态成员。 静态内部类的非静态成员可以访问外部类的静态变量而不可访问外部类的非静态变量。 非静态内部类的非静态成员可以访问外部类的非静态变量。     63.java中有几种方法可以实现一个线程用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用 答有两种实现方法分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用stop()是因为它不安全。它会解除由线程获取的所有锁定而且如果对象处于一种不连贯状态那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候目标线程会停下来但却仍然持有在这之前获得的锁定。此时其他任何线程都不能访问锁定的资源除非被挂起的线程恢复运行。对任何线程来说如果它们想恢复目标线程同时又试图使用任何一个锁定的资源就会造成死锁。所以不应该使用suspend()而应在自己的Thread类中置入一个标志指出线程应该活动还是挂起。若标志指出线程应该挂起便用wait()命其进入等待状态。若标志指出线程应当恢复则用一个notify()重新启动线程。   64.sleep() 和 wait() 有什么区别? 答sleep是线程类Thread的方法导致此线程暂停执行指定时间给执行机会给其他线程但是监控状态依然保持到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法对此对象调用wait方法导致本线程放弃对象锁进入等待此对象的等待锁定池只有针对此对象发出notify方法或notifyAll后本线程才进入对象锁定池准备获得对象锁进入运行状态。   65.同步和异步有何异同在什么情况下分别使用他们举例说明。 答如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到或者正在读的数据可能已经被另一个线程写过了那么这些数据就是共享数据必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法并且不希望让程序等待方法的返回时就应该使用异步编程在很多情况下采用异步途径往往更有效率。   66.启动一个线程是用run()还是start()? 答启动一个线程是调用start()方法使线程所代表的虚拟处理机处于可运行状态这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。   67.当一个线程进入一个对象的一个synchronized方法后其它线程是否可进入此对象的其它方法? 答不能一个对象的一个synchronized方法只能由一个线程访问。   68.请说出你所知道的线程同步的方法。 答wait():使一个线程处于等待状态并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态是一个静态方法调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程注意的是在调用此方法的时候并不能确切的唤醒某一个等待状态的线程而是由JVM确定唤醒哪个线程而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程注意并不是给所有唤醒线程一个对象的锁而是让它们竞争。   69.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答多线程有两种实现方法分别是继承Thread类与实现Runnable接口 同步的实现方面有两种分别是synchronized,wait与notify   70.线程的基本概念、线程的基本状态以及状态之间的关系 答线程指在程序执行过程中能够执行程序代码的一个执行单位每个程序至少都有一个线程也就是程序本身。 Java中的线程有四种状态分别是运行、就绪、挂起、结束   71.简述synchronized和java.util.concurrent.locks.Lock的异同 答主要相同点Lock能完成synchronized所实现的所有功能 主要不同点Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁而Lock一定要求程序员手工释放并且必须在finally从句中释放。   jsp笔试   1.jsp有哪些内置对象?作用分别是什么? 答JSP共有以下9种基本内置组件可与ASP的6种内部组件相对应  request 用户端请求此请求会包含来自GET/POST请求的参数    response 网页传回用户端的回应    pageContext 网页的属性是在这里管理    session 与请求有关的会话期    application servlet 正在执行的内容    out 用来传送回应的输出    config servlet的构架部件    page JSP网页本身    exception 针对错误网页未捕捉的例外   2.jsp有哪些动作?作用分别是什么? 答:JSP共有以下6种基本动作    jsp:include在页面被请求的时候引入一个文件。    jsp:useBean寻找或者实例化一个JavaBean。    jsp:setProperty设置JavaBean的属性。    jsp:getProperty输出某个JavaBean的属性。    jsp:forward把请求转到一个新的页面。    jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记     4.JSP中动态INCLUDE与静态INCLUDE的区别 答动态INCLUDE用jsp:include动作实现    jsp:include pageincluded.jsp flushtrue /它总是会检查所含文件中的变化适合用于包含动态页面并且可以带参数    静态INCLUDE用include伪码实现,但不会检查所含文件的变化适用于包含静态页面    % include fileincluded.htm %   5.两种跳转方式分别是什么?有什么区别? 答有两种分别为   jsp:include pageincluded.jsp flushtrue   jsp:forward page nextpage.jsp/ 前者页面不会转向include所指的页面只是显示该页的结果主页面还是原来的页面。执行完后还会回来相当于函数调用。并且可以带参数.后者完全转向新页面不会再回来。相当于go to 语句。   6.JSP的内置对象及方法。 答request表示HttpServletRequest对象。它包含了有关浏览器请求的信息并且提供了几个用于获取cookie, header,和session数据的有用的方法。     response表示HttpServletResponse对象并提供了几个用于设置送回 浏览器的响应的方法如cookies,头信息等     out对象是javax.jsp.JspWriter的一个实例并提供了几个方法使你能用于向浏览器回送输出结果。     pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API并且包装了通用的servlet相关功能的方法。     session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息     applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息     config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。     page表示从该页面产生的一个servlet实例   servlet笔试题目   1.说一说Servlet的生命周期? 答:servlet有良好的生存期的定义包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后容器运行其init方法请求到达时运行其service方法service方法自动派遣运行与请求对应的doXXX方法doGetdoPost等当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中它通过多线程方式运行其service方法一个实例可以服务于多个请求并且其实例一般不会销毁而CGI对每个请求都产生新的进程服务完成后就销毁所以效率上低于servlet。   2.JAVA SERVLET API中forward() 与redirect()的区别 答:前者仅是容器中控制权的转向在客户端浏览器地址栏中不会显示出转向后的地址后者则是完全的跳转浏览器将会得到跳转的地址并重新发送请求链接。这样从浏览器的地址栏中可以看到跳转后的链接地址。所以前者更加高效在前者可以满足需要时尽量使用forward()方法并且这样也有助于隐藏实际的链接。在有些情况下比如需要跳转到一个其它服务器上的资源则必须使用sendRedirect()方法。   3.Servlet的基本架构 答 public class ServletName extends HttpServlet {   public void doPost(HttpServletRequest request, HttpServletResponse response) throws       ServletException, IOException  {       }   public void doGet(HttpServletRequest request, HttpServletResponse response) throws       ServletException, IOException  {       } }   4.什么情况下调用doGet()和doPost() 答Jsp页面中的form标签里的method属性为get时调用doGet()为post时调用doPost()。   5.servlet的生命周期 答web容器加载servlet生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现根据请求的不同调用不同的do***()方法。结束服务web容器调用servlet的destroy()方法。   6.如何现实servlet的单线程模式 答% page isThreadSafefalse%   7. 页面间对象传递的方法 答requestsessionapplicationcookie等   8.四种会话跟踪技术 答会话作用域ServletsJSP 页面描述 page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类可以带有任何的 include 指令但是没有 include 动作表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面涉及多个 Web 组件由于forward 指令和 include 动作的关系 session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序包括多个页面、请求和会话的一个全局作用域     10.我们在web应用开发过程中经常遇到输出某种编码的字符如iso8859-1等如何输出一个某种编码的字符串 答   Public String translate (String str) {     String tempStr ;     try {       tempStr new String(str.getBytes(ISO-8859-1), GBK);       tempStr tempStr.trim();     }     catch (Exception e) {       System.err.println(e.getMessage());     }     return tempStr;   }   11.Servlet执行时一般实现哪几个方法 答 public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy()   12.说出数据连接池的工作机制是什么? 答J2EE服务器启动时会建立一定数量的池连接并一直维持不少于此数目的池连接。客户端程序需要连接时池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接池驱动程序就新建一定数量的连接新建连接的数量有配置参数决定。当使用的池连接调用完成后池驱动程序将此连接表记为空闲其他调用就可以使用这个连接。   13.Class.forName的作用?为什么要用? 答调用该访问返回一个以字符串指定类名的类的对象。
http://www.zqtcl.cn/news/726355/

相关文章:

  • wordpress显示一个类目seo推广
  • 营销型电子商务网站特点如何申请免费空间和域名
  • 网站建设 主要学是么vk汉化网站谁做的
  • 做英文网站费用多少学校网站开发毕业设计
  • 红动中国设计网站官网网页制作的论文
  • 云阳一平米网站建设西安设计工作室推荐
  • 网站长尾关键词优化网页设计定制代理
  • 海东电子商务网站建设运城市网站建设公司
  • 网站建设得要素电子商务网站建设与维护项目五
  • 网站备案无前置审批文件南宁市建设厅网站
  • 百度网站体检手机网页小游戏
  • 大型购物网站建设费用广告设计与制作软件有哪些
  • 郑州建设工程交易中心网站汉寿做网站的公司
  • 青岛企业做网站startuply中文版wordpress主题
  • 商标设计网站猪八戒网站建设与设计教程
  • 网站建设积分wordpress添加右侧菜单
  • 网站策划资料方案天津优化公司
  • 做网站推广哪家公司好成都最正规的装修公司
  • 菜鸟建网站如何制作推广网站
  • 无锡企业建站系统广州品牌网站建设
  • 什么网站能免费做公众号封面wordpress主题打不开
  • 扬州外贸网站建设制作广告的软件
  • 一个主机怎么做两个网站百度上的网站怎么做
  • 济南建设工程业绩公示的网站wordpress载入等待
  • seo公司名字太原百度seo排名软件
  • 安徽省城乡建设厅网站拼多多关键词排名在哪里看
  • 素材下载网站开发wordpress微信付款插件
  • 网站有什么用河北廊坊建筑模板厂家
  • 永康住房和城乡建设部网站做网站 万户
  • 可信赖的常州网站建设做直播券的网站有多少