《2023年群硕java面试题包括答案.docx》由会员分享,可在线阅读,更多相关《2023年群硕java面试题包括答案.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、I.反射机制:什么是反射机制,反射机制应用(struts中反射机制的应用)在运营状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都 可以调用它的任意一个方法,这种动态获取信息以及动态调用对象的方法的功能叫做java反 射机制2. equals和=的区别类里面有什么方法要重载的一般简朴数据类型用“=”比较,复杂的数据类型可以用“=也可以用equals“二二”比较时会比较变量是否为统一对象并且内存地址相同才会返回true,用equals进行比 较是要看方法是在哪个类实现的String a=new String (hello*);String b=new String (,he
2、llo,);String c=b;System.out.printIn(a=b);falseSystem.out.printIn(a.equals(b);trueSystem.out.printIn(c=b);trueSystem.out.printIn(a.equalsIgnoreCase(b);trueObject d=new Object();Object f=new Object();System.out.printin(d=f);falseSystem.out.printIn(d.equals (f);falseDouble h=new Double(2);Double i=new
3、Double(2);System.out.printIn(h=i) ; falseSystem.out.printIn(h.equals(i) ) ; trueString str=z,abc,z;see Class#method(Type, Type,.)see Class#method(Type id, Type id,.)see package. Classsee package. Classttfieldsee package. ClassttConstructor(Type, Type.)see package. Class#Constructor (Type id, Type id
4、)see package. Class#method(Type, Type,.)see package. Classffmethod (Type id, Type, id)see package3. 2标记介绍2. 1 param 标记param后面空格后跟着参数的变量名字(不是类型),空格后跟着对该参数的 描述。在描述中第一个名字为该变量的数据类型,表达数据类型的名次前面可以有一个 冠词如:a, an, the。假如是int类型的参数则不需要注明数据类型。例如: param ch the char 用用来* param _image the image 用来param num 一个数字* 对
5、于参数的描述假如只是一短语,最佳不要首字母大写,结尾也不要句号。对于参数的描述是一个句子,最佳不要首字母大写,假如出现了句号这说明你的 描述不止一句话。假如非要首字母大写的话,必须用句号来结束句子。(英文的 句号) 公司内部添加ByRef和ByVai两个标记,例如:* param image the image ByRef 用来说明该参数是引用传递(指针),ByVai可以省略,表达是值传递。3. 2. 2 return 标记返回为空(void)的构造函数或者函数,retun可以省略。假如返回值就是输入参数,必须用与输入参数相同的描述信息。必要的时候注明特殊条件写的返回值。3. 2. 3 thr
6、ows 标记throws以前使用的是exceplion。throws的内容必须在函数的throws部分定义。3. 2. 4 author 标记类注释标记。函数注释里面可以不出现author。3. 2. 5 version类注释标记。函数注释里面可以不出现version3. 2. 6 0since类注释标记。标明该类可以运营的JDK版本例如:since JDK1. 23. 2. 7 deprecated由于某种因素而被宣布将要被废弃的方法。/*deprecated As of JDK 1. 1, replaced by* setBoundssee #setBounds(int, int, int
7、, int)*/. 2.8 link 标记语法:link package. class#member labelLabel为链接文字。package, classftmember将被自动转换成指向package, class的member文献的 URLOHTML代码的使用在注释描述部分可以使用HTML代码。表达段落表达自动标号5注释示例/* Graphics is the abstract base class for all graphics contextswhich allow an application to draw onto components realized on* var
8、ious devices or onto off-screen images.* A Graphics object encapsulates the 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 theoutput device.* Operati
9、ons which draw the outline of a figure operate by traversingalong 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 interiorof the infinitely thin path.* Operations which render ho
10、rizontal text render the ascendingportion of 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 onthe right and bottom edges compared to filling a figure that is* bounde
11、d by that same rectangle.* Also, drawing a horizontal line along the same y coordinate asthe 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 tothe right from the path that it traverses.*Al
12、l coordinates which appear as arguments to the methods of this* Graphics object are considered relative to the translation originof this Graphics object prior to the invocation of the method.* All rendering operations modify only pixels which lie within thearea bounded by both the current clip of th
13、e graphics context* and the extents of the Component used to create the Graphics object. *author Sami Shaio* author Arthur van Hoffversion %I%, %G%* since 1. 0*/public abstract class Graphics /* * Draws as much of the specified image as is currently available* with its northwest corner at the specif
14、ied coordinate (x, y).* This method will return immediately in all cases, even if theentire image has not yet been scaled, dithered and converted* for the current output device.* If the current output representation is not yet complete thenthe method will return false and the indicated* link ImageOb
15、server object will be notified as theconversion process progresses.*param img the image to be drawn* param x the x-coordinate of the northwest cornerof the destination rectangle in pixels* param y the y-coordinate of the northwest cornerof the destination rectangle in pixels* pareim observer the ima
16、ge observer to be notified as moreof the image is converted. May be* nullreturn true if the image is completely* loaded and was painted successfully;false otherwise.* see linage * see ImageObserver* since 1. 0 */public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);/*Dis
17、pose of the system resources used by this graphics context.* The Graphics context cannot be used after being disposed of.* While the finalization process of the garbage collector willalso dispose of the same system resources, due to the number* of Graphics objects that can be created in short time f
18、ramesit is preferable to manually free the associated resources* using this method rather than to rely on a finalizationprocess 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 disposedby
19、 the system when those methods return. Programmers should,* for efficiency, call the dispose method when finished usinga Graphics object only if it was created directly from a* Component or another Graphics object.*see create(int, int, int, int)* see ComponentftgetGraphics ()see Component#paint(Grap
20、hics)* see ComponentSupdate(Graphics)since 1. 0*/public abstract void dispose();/*Disposes of this graphics context once it is no longer* referenced.*see dispose()* since 1. 0*/public void finalizeO dispose();String strl=str;System.out.printIn(str=strl);trueSystem.out.printIn(str.equals(strl);true3
21、. forward 和 redirect 的区别Forward是服务器内部重定向,服务器接到接到请求后访问url获取响应然后发给浏览 器,浏览器不知服务器发送到内容是从哪里来的,所以地址栏不会变化Redirect是服务器接受客户端请求后,发个状态码给浏览器,浏览器再次请求url,此时 地址栏会变化转发会可以保存存在request中的数据,而重定向会丢失这些东西4 . servlet的周期,service方法为多线程的,多个线程共享一个servlet实例,该实例创建的 时间。Servlet要注意的问题(不可以有成员变量)Servlet容器负责加载并实例servlet,客户端发送请求时Servle
22、t容器会查找内存中是 否存在Servlet实例,假如不存在,就创建一个Servlet实例,假如存在就直接从内存 中取出该实例响应请求。Servlet容器加载好Servlet后,然后调用lnit()对Scrxlct进行 初始化,然后调用service。解决请求,最后容器调用Servlet的destroy。销毁实例。5 .在 struts + request 请求流程客户端发送请求,请求的一般是以*.do个格式发送,被ActionServlet拦截到,读取struts 配置文献,将请求封装到指定的formBean中,根据配置访问指定act ion Bean调用方法, 跳转到指定页面.容器托管事务管
23、理6 .数据库分页sql语句,比如显示第二十条到第十四条记录(mysql oracle server实现)SQL Server:SELECT TOP 页大小 *FROM tablelWHERE id NOT INSELECT TOP 页大小*(页数-1) id FROM tablet ORDER BY id)ORDER BY idMY SQL:SELECT * FROM Table 1 limit 起始行,页大小ORACLE:SELECT * FROM (SELECT ROWNUMFROM Table 1 tl)t2 WHERE12.r二起始行 AND t2二结束行. Java里的克隆是什么,
24、什么是浅拷贝什么是深拷贝。HashSet之间的拷贝是浅将贝还是 深拷贝,为什么L获取对象的一份拷贝2.浅拷贝只是单纯的拷贝对象,所有的对其他对象的引用仍然指向本来的对象;深拷 贝相反,所有的对其他对象的引用指向新复制的对象9 .是么是序列化,为什么要实现序列化,如何实现。序列化IdserialVersionUID,什么时候创 建简朴的说就为了保存在内存中各种对象的状态,并且可以把保存的对象然后再读出 来一种机制当你想把一个对象保存到数据库或者硬盘中时当你想在网络中传输一个对象时当你想通过RMI传输对象时实现Serializable就可以实现序列化了.文档注释java文档注释标记(简朴来说,Ja
25、va的序列化机制是通过在运营时判断类的serialVersionUID来验证 版木一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本 地相应实体(类)的serialVersionUID进行比较,假如相同就认为是一致的,可以进行 反序列化,否则就会出现序列化版本不一致的异常。当实现接口的实体(类)没有显式地定义,个名为serialVersionUID, 类型为/oog的变量时,Java序列化机制会根据编译的class自动生成一个 serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才 会生成相同的serialVer
26、sionUID。假如我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体可以兼 容先前版本,未作更改的类,就需要显式地定义一个名为serialVersionUID, 类型为/og的变量,不修改这个变量值的序列化实体都可以互相进行串行化和 反串行化。)java文档注释TrackBack: http:hi. baidu. com/wl858621/blog/itein/b85b731205a0b252f819b88f. html1注释文档的格式注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、 构造函数、方法、定义之前。注释文档由两部分组成一一描述、块标记。例如:/*
27、The doGet method of the servlet.* This method is called when a form has its tag value method equals to geparam request* the request send by the client to the serverparam response* the response send by the server to the clientthrows ServletException* if an error occurredthrows TOException* if an erro
28、r occurred*/public void doGet (HttpServletRequest request, HttpServletResponse response)throws ServletException, lOException doPost(request, response);)前两行为描述,描述完毕后,由符号起头为块标记注视。2注释的种类文献头注释文献头注释以/*开始,以*/结束,需要注明该文献创建时间,文献名,命名空 间信息。例如:/* Created on 2023-7-2* /2.2类、接口注释类、接口的注释采用/*/,描述部分用来书写该类的作用或者相关信息,
29、块标记部分必须注明作者和版本。例如:/*Title: XXXX DRIVER 3.0description: XXXX DRIVER 3.0*Copyright: Copyright (c) 2023Company:XXXX 有限公司*author Java Development Group* version 3. 0*/例如:/*A class representing a window on the screen.* For example:*Window win = new Window(parent);* win. show();*author Sami Shaio* version
30、 %1%, %G%see java. awt. BaseWindow* see java. awt. Button*/class Window extends BaseWindow )2. 3构造函数注释构造函数注释采用/*/,描述部分注明构造函数的作用,不一定有块标记 部分。例如:/*默认构造函数* /有例如:/*带参数构造函数,初始化模式名,名称和数据源类型*param schema* Ref模式名param name* Ref名称param type* byVai数据源类型*/2. 4域注释域注释可以出现在注释文档里面,也可以不出现在注释文档里面。用/*/ 的域注释将会被认为是注释文档热
31、出现在最终生成的HTML报告里面,而使用 /*/的注释会被忽略。例如:/*由于triger和表用一个DMSource,所以要区分和表的迁移成功标记*/boolean isTrigerSuccess = false;乂例如:/*由于triger和表用一个DMSource,所以要区分和表的迁移成功标记*/boolean isTrigerSuccess = false;再例如:* The X-coordinate of the component.* see #getLocation()*/int x = 1263732;2. 5方法注释方法注释采用/*/,描述部分注明方法的功能,块标记部分注明方法
32、的参 数,返回值,异常等信息。例如:/*设立是否有外码约束*param conn* Connection与数据库的连接/2. 6定义注释规则同域注释。3注释块标记3.1标记的顺序块标记将采用如下顺序:* param (classes, interfaces, methods and constructors only)return (methods only)* exception (throws is a synonym added in Javadoc 1. 2)author (classes and interfaces only, required)* version (classes
33、 and interfaces only, required. See footnote 1)see* sinceserial (or serialField or serialData)* deprecated (see How and When To Deprecate APIs).一个块标记可以根据需要反复出现多次,多次出现的标记按照如下顺序:author按照时间先后顺序(chronological)param按照参数定义顺序(declaration)throws按照异常名字的字母顺序(alphabetically)see按照如下顺序:see #fieldsee ttConstructor(Type, Type.)see #Constructor(Type id, Type id.)see method(Type, Type,.)see ftmethod(Type id, Type, id.)see Classsec Class#fieldsee ClassttConstructor(Type, Type.) see Class#Constructor(Type id, Type id)
限制150内