《群硕java面试题(包括答案)(17页).doc》由会员分享,可在线阅读,更多相关《群硕java面试题(包括答案)(17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-群硕java面试题(包括答案)-第 17 页1反射机制:什么是反射机制,反射机制应用(struts中反射机制的应用)在运行状态中,对于任意一个类, 都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以及动态调用对象的方法的功能叫做java反射机制2equals和=的区别 类里面有什么方法要重载的一般简单数据类型用“=”比较,复杂的数据类型可以用“=”也可以用equals“=”比较时会比较变量是否为统一对象并且内存地址相同才会返回true,用equals进行比较是要看方法是在哪个类实现的String a=new String(hello);String
2、b=new String(hello);String c=b;System.out.println(a=b);falseSystem.out.println(a.equals(b);trueSystem.out.println(c=b);trueSystem.out.println(a.equalsIgnoreCase(b);trueObject d=new Object();Object f=new Object();System.out.println(d=f);falseSystem.out.println(d.equals(f);falseDouble h=new Double(2);
3、Double i=new Double(2);System.out.println(h=i);falseSystem.out.println(h.equals(i);true String str=”abc”;String str1=str;System.out.println(str=str1);trueSystem.out.println(str.equals(str1);true 3forward和redirect的区别Forward是服务器内部重定向,服务器接到接到请求后访问url获取响应然后发给浏览器,浏览器不知服务器发送到内容是从哪里来的,所以地址栏不会变化Redirect是服务器
4、接收客户端请求后,发个状态码给浏览器,浏览器再次请求url,此时地址栏会变化转发会可以保存存在request中的数据,而重定向会丢失这些东西4servlet的周期,service方法为多线程的,多个线程共享一个servlet实例,该实例创建的时间。Servlet要注意的问题(不可以有成员变量)Servlet 容器负责加载并实例servlet,客户端发送请求时Servlet容器会查找内存中是否存在Servlet实例,如果不存在,就创建一个Servlet实例,如果存在就直接从内存中取出该实例响应请求。Servlet容器加载好Servlet后,然后调用Init()对Servlet进行初始化,然后调用
5、service()处理请求,最后容器调用Servlet的destroy()销毁实例。5在struts中request请求流程客户端发送请求,请求的一般是以*.do个格式发送,被ActionServlet拦截到,读取struts配置文件,将请求封装到指定的formBean中,根据配置访问指定actionBean调用方法,跳转到指定页面6容器托管 事务管理7数据库 分页 sql语句,比如显示第二十条到第十四条记录(mysql oracle server 实现)SQL Server:SELECT TOP 页大小 *FROM table1WHERE id NOT IN(SELECT TOP 页大小*(
6、页数-1) id FROM table1 ORDER BY id)ORDER BY idMY SQL:SELECT * FROM Table1 limit 起始行,页大小ORACLE:SELECT * FROM (SELECT ROWNUM r,t1.* FROM Table1 t1) t2 WHERE t2.r=起始行 AND t2=结束行8Java里的克隆是什么,什么是浅拷贝什么是深拷贝。HashSet之间的拷贝是浅拷贝还是深拷贝,为什么2.浅拷贝只是单纯的拷贝对象,所有的对其他对象的引用仍然指向原来的对象;深拷贝相反, 所有的对其他对象的引用指向新复制的对象9是么是序列化,为什么要实现序
7、列化,如何实现。序列化IdserialVersionUID,什么时候创建简单的说就为了保存在内存中各种对象的状态,并且可以把保存的对象然后再读出来一种机制当你想把一个对象保存到数据库或者硬盘中时当你想在网络中传输一个对象时当你想通过RMI传输对象时实现Serializable就可以实现序列化了10文档注释java文档注释标记 (简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可
8、以进行反序列化,否则就会出现序列化版本不一致的异常。当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。如果我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体能够兼容先前版本,未作更改的类,就需要显式地定义一个名为serialVersionUID,类型为long的变量,不修改这个变量值的序列化实体都可以
9、相互进行串行化和反串行化。)java文档注释TrackBack: d1 注释文档的格式注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、构造函数、方法、定义之前。注释文档由两部分组成描述、块标记。例如:/* The doGet method of the servlet. * This method is called when a form has its tag value method equals to ge* * param request* the request send by the client to the server* param response
10、* the response send by the server to the client* throws ServletException* if an error occurred* throws IOException* if an error occurred*/public void doGet (HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request, response);前两行为描述,描述完毕后,由符号起头为块标记注
11、视。2 注释的种类2.1 文件头注释文件头注释以 /*开始,以*/结束,需要注明该文件创建时间,文件名,命名空间信息。例如:/* Created on 2005-7-2* /2.2 类、接口注释类、接口的注释采用 /* */,描述部分用来书写该类的作用或者相关信息,块标记部分必须注明作者和版本。例如:/*Title: XXXX DRIVER 3.0*Description: XXXX DRIVER 3.0*Copyright: Copyright (c) 2003*Company:XXXX有限公司* author Java Development Group* version 3.0*/例如:
12、/* A class representing a window on the screen.* For example:* Window win = new Window(parent);* win.show();* author Sami Shaio* version %I%, %G%* see java.awt.BaseWindow* see java.awt.Button*/class Window extends BaseWindow .2.3 构造函数注释构造函数注释采用 /* */,描述部分注明构造函数的作用,不一定有块标记部分。例如:/* 默认构造函数*/有例如:/* 带参数构
13、造函数,初始化模式名,名称和数据源类型* * param schema* Ref 模式名* param name* Ref 名称* param type* byVal 数据源类型*/ 2.4 域注释域注释可以出现在注释文档里面,也可以不出现在注释文档里面。用/* */的域注释将会被认为是注释文档热出现在最终生成的HTML报告里面,而使用/* */的注释会被忽略。例如:/* 由于triger和表用一个DMSource,所以要区分和表的迁移成功标记 */boolean isTrigerSuccess = false;又例如:/* 由于triger和表用一个DMSource,所以要区分和表的迁移成功
14、标记 */boolean isTrigerSuccess = false;再例如:/* The X-coordinate of the component.* see #getLocation()*/int x = 1263732;2.5 方法注释方法注释采用 /* */,描述部分注明方法的功能,块标记部分注明方法的参数,返回值,异常等信息。例如:/* 设置是否有外码约束* * param conn* Connection 与数据库的连接*/2.6 定义注释规则同域注释。3 注释块标记3.1 标记的顺序块标记将采用如下顺序:* param (classes, interfaces, metho
15、ds and constructors only)* return (methods only)* exception (throws is a synonym added in Javadoc 1.2)* author (classes and interfaces only, required)* version (classes and interfaces only, required. See footnote 1)* see * since * serial (or serialField or serialData)* deprecated (see How and When T
16、o Deprecate APIs)* 一个块标记可以根据需要重复出现多次,多次出现的标记按照如下顺序:author 按照时间先后顺序(chronological)param 按照参数定义顺序(declaration)throws 按照异常名字的字母顺序(alphabetically)see 按照如下顺序:see #fieldsee #Constructor(Type, Type.)see #Constructor(Type id, Type id.)see #method(Type, Type,.)see #method(Type id, Type, id.)see Classsee Clas
17、s#fieldsee Class#Constructor(Type, Type.)see Class#Constructor(Type id, Type id)see Class#method(Type, Type,.)see Class#method(Type id, Type id,.)see package.Class#fieldsee package.Class#Constructor(Type, Type.)see package.Class#Constructor(Type id, Type id)see package.Class#method(Type, Type,.)see
18、package.Class#method(Type id, Type, id)see package3.2 标记介绍3.2.1 param标记param后面空格后跟着参数的变量名字(不是类型),空格后跟着对该参数的描述。在描述中第一个名字为该变量的数据类型,表示数据类型的名次前面可以有一个冠词如:a,an,the。如果是int类型的参数则不需要注明数据类型。例如:* param ch the char 用用来* param _image the image 用来* param _num 一个数字对于参数的描述如果只是一短语,最好不要首字母大写,结尾也不要句号。对于参数的描述是一个句子,最好不要
19、首字母大写,如果出现了句号这说明你的描述不止一句话。如果非要首字母大写的话,必须用句号来结束句子。(英文的句号)公司内部添加ByRef和ByVal两个标记,例如:* param _image the image ByRef 用来说明该参数是引用传递(指针),ByVal可以省略,表示是值传递。3.2.2 return标记返回为空(void)的构造函数或者函数,return可以省略。如果返回值就是输入参数,必须用与输入参数的param相同的描述信息。必要的时候注明特殊条件写的返回值。3.2.3 throws 标记throws以前使用的是exception。throws的内容必须在函数的throws
20、部分定义。3.2.4 author标记类注释标记。函数注释里面可以不出现author。3.2.5 version类注释标记。函数注释里面可以不出现version3.2.6 since类注释标记。标明该类可以运行的JDK版本例如:3.2.7 deprecated由于某种原因而被宣布将要被废弃的方法。/* deprecated As of JDK 1.1, replaced by * setBounds* see #setBounds(int,int,int,int)*/3.2.8 link标记语法:link package.class#member labelLabel为链接文字。package
21、.class#member将被自动转换成指向package.class的member文件的URL。4 HTML代码的使用在注释描述部分可以使用HTML代码。表示段落表示自动标号5 注释示例/* Graphics is the abstract base class for all graphics contexts* which allow an application to draw onto components realized on* various devices or onto off-screen images.* A Graphics object encapsulates t
22、he state information needed* for the various rendering operations that Java supports. This* state information includes:* * * * * * * * * (see setXORMode)* * * Coordinates are infinitely thin and lie between the pixels of the* output device.* Operations which draw the outline of a figure operate by t
23、raversing* along the infinitely thin path with a pixel-sized pen that hangs* down and to the right of the anchor point on the path.* Operations which fill a figure operate by filling the interior* of the infinitely thin path.* Operations which render horizontal text render the ascending* portion of
24、the characters entirely above the baseline coordinate.* * Some important points to consider are that drawing a figure that* covers a given rectangle will occupy one extra row of pixels on* the right and bottom edges compared to filling a figure that is* bounded by that same rectangle.* Also, drawing
25、 a horizontal line along the same y coordinate as* the baseline of a line of text will draw the line entirely below* the text except for any descenders.* Both of these properties are due to the pen hanging down and to* the right from the path that it traverses.* * All coordinates which appear as arg
26、uments to the methods of this* Graphics object are considered relative to the translation origin* of this Graphics object prior to the invocation of the method.* All rendering operations modify only pixels which lie within the* area bounded by both the current clip of the graphics context* and the e
27、xtents of the Component used to create the Graphics object.* * author Sami Shaio* author Arthur van Hoff* version %I%, %G%*/public abstract class Graphics /* * Draws as much of the specified image as is currently available* with its northwest corner at the specified coordinate (x, y).* This method w
28、ill return immediately in all cases, even if the* entire image has not yet been scaled, dithered and converted* for the current output device.* * If the current output representation is not yet complete then* the method will return false and the indicated * link ImageObserver object will be notified
29、 as the* conversion process progresses.* param img the image to be drawn* param x the x-coordinate of the northwest corner* of the destination rectangle in pixels* param y the y-coordinate of the northwest corner* of the destination rectangle in pixels* param observer the image observer to be notifi
30、ed as more* of the image is converted. May be * null* return true if the image is completely * loaded and was painted successfully; * false otherwise.* see Image* see ImageObserver*/public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);/* Dispose of the system resources
31、used by this graphics context.* The Graphics context cannot be used after being disposed of.* While the finalization process of the garbage collector will* also dispose of the same system resources, due to the number* of Graphics objects that can be created in short time frames* it is preferable to
32、manually free the associated resources* using this method rather than to rely on a finalization* process which may not happen for a long period of time.* * Graphics objects which are provided as arguments to the paint* and update methods of Components are automatically disposed* by the system when t
33、hose methods return. Programmers should,* for efficiency, call the dispose method when finished using* a Graphics object only if it was created directly from a* Component or another Graphics object.* see #create(int, int, int, int)* see #finalize()* see Component#getGraphics()* see Component#paint(Graphics)* see Component#update(Graphics)*/public abstract void dispose();/* Disposes of this graphics context once it is no longer * referenced.* see #dispose()*/public void finalize() dispose();