2023年java笔试面试题及答案_第1页
2023年java笔试面试题及答案_第2页
2023年java笔试面试题及答案_第3页
2023年java笔试面试题及答案_第4页
2023年java笔试面试题及答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一.选择题(30分)1.下列哪些情况可以终止当前线程的运营?a.抛出一个异常时。b.当该线程调用sleep()方法时。c.当创建一个新线程时。(与当前进程无关)d.当一个优先级高的线程进入就绪状态时。2.下面哪些为构造函数的特性定义 a.在类中声明构造函数时,名称应当与类名相同b.具有重载特性,可以建立多个相同的名称c.使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行内存分派d.以上都是3.关于异常解决机制的叙述哪些对的 a.catch部分捕获到异常情况时,才会执行finally部分(无论是否有毛病,都执行)b.当try区段的程序发生异常时,才会执行catch区段的程序c.不管程序是否发生错误及捕获到异常情况,都会执行finally部分d.以上都是4.下列关于接口的叙述中哪些是对的的 a.接口中的数据必须设定初值(就是接口中的常量)b.接口中的方法都是抽象方法c.接口可以声明引用d.以上都对的5.Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?A.重写是父类与子类之间多态性的一种表现。B.重写是一个类中多态性的一种表现。C.重载是一个类中多态性的一种表现。D.重载是父类与子类之间多态性的一种表现。6.在Struts应用的视图中包含哪些组件?A.JSPB.ServletC.ActionServletD.ActionE.代表业务逻辑或业务数据的JavaBeanF.EJBG.客户化标签7.struts框架中,关于FormBean,下列哪些说法是对的的:

AFormBean是一种数据bean,重要用来封装表单提交上来的数据,并把这些数据传递给Action

B在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证

ﻩC用户每次提交表单,都会产生一个新的FormBean实例ﻫ

ﻩD动态FormBean不能进行验证操作8哪些方法可以进行servlet的调试?()A、使用打印语句;在桌面计算机上运营服务器B、使用ApacheLog4JC、使用IDE集成的调试器D、直接查看HTML源码????E、返回错误页面给客户9、下面关于servlet的功用说法对的的有哪些?()ﻩA、读取客户程序发送来的显式数据B、读取客户程序发送来的隐式数据C、生成相应的结果D、发送显式的数据给客户程序E、发送隐式的数据给客户程序10、下面关于session的用法哪些是错误的?(ﻩA、HttpSessionsession=newHttpSession();request.getSession();ﻩB、Stringhaha=(String)session.getParameter(Attribute)(“haha”);ﻩC、session.removeAttribute(“haha”);ﻩD、session.setAttribute(“haha”,值);11、关于<jsp:includepage="RelativeURL"/>说法对的的有哪些?()A、URL的输出在请求时被插入到JSP页面中B、不能具有影响整个页面的JSP内容C、被包含文献改变后不需更改使用它的页面D、被包含文献更改后,需要手动地更新使用它的页面(不需要手动更新)12、关于bean的说法对的的有哪些?()ﻩA、具有一个零参数(空)的构造函数(不是必须的)B、不应当有公开的实例变量(字段)C、所有的属性都必须通过getXxx和setXxx方法来访问D、布尔型的属性使用isXxx,而非getXxx13、下面关于MVC说法错误的有哪些?()ﻩA、必须使用复杂的框架 B、使用内建的RequestDispatcher可以很好地实现MVC C、当其中一个组件发生变化的时候,MVC影响整个系统的设计ﻩD、我们可以用MVC来解决单个请求14、下面的标签中哪些是JSTL标签?() A、<c:out…/> B、<c:set…/> C、<c:if…/>ﻩD、<c:errors…/>15、struts框架,错误的是,下面那些说法对的?

AStruts中无法完毕上传功能

BStruts框架基于MVC模式

CStruts框架容易引起流程复杂、结构不清楚等问题(清楚)

DStruts可以有效地减少项目的类文献数目二、填空题(5分)1、调用函数MOD(123,10)返回值为___。2、selectround(123.67,1)fromdual;这语句输出值为______。3、创建一个临时替代变量使用的字符是_____。4、若v_comm=2800,X:=NVL(V_comm,0),则X的值为____。5、调用函数INSTR(‘Hereyouare’,’er’)返回值为___。三、判断题(10分)1、WHERE子句限制行记录,也可以指定限制分组结果的条件。()2、具有UNIQUE约束的列不能包含多个空值。()3、DATE型数据中包含着时间值。()4、具有外键约束的列可以包含空值。()5、假如在类型为char(4)的列中输入“hello”,则只能存储hell。()6、具有Groupby子句的查询,其结果是排好序的。()7、定义游标时,其中的select语句不能使用orderby子句。(子查询不能用)()8、过程可以有返回值。()9、触发器一定会被激发。()10、insteadof触发器只是基于视图的。()四、写出相应的SQL语句(括号内为列名)(10分)1、查询从事各工作(JOB)的员工人数。2、查询与员工SMITH在同一部门(DEPTNO)的员工的姓名(ENAME),工资(SAL)和部门。3、查询所有员工的姓名(ENAME),工资(SAL)和工资等级(GRADE)。4、查询获得工资(SAL)最高的3个员工信息。5、查询所有员工的姓名(ENAME)及其主管姓名(ENAME)。五、简答题(15分)1.在PL/SQL程序中,进行用户自定义异常解决的3个环节是什么?面向对象的特性有哪些方面?并简要介绍List、Map、Set三个接口,存取元素时,各有什么特点?List以特定顺序来持有元素,可有反复元素。Set无法拥有反复元素,内部排序。Map保存key-value值,value可多值。4.struts1.0和struts2.0的区别?如何控制两种框架中的单例模式?描述一下如何在struts1.0实现国际化,以两国语言(中文,英文)为例:struts中怎么配置form-bean、action7.Hibernate自带的分页机制是什么?假如不使用Hibernate自带的分页,则采用什么方式分页?ﻫ8.hibernate中一对多配置文献返回的是什么?9.什么样的数据适合存放到第二级缓存中?10你一般用spring做什么?ﻫ11项目中如何体现Spring中的切面编程,具体说明。12触发触发器的数据操作有哪些?13解释视图的含义以及使用视图的好处。14简述ORACLE中5种约束及其作用。15ORACLE中过程和函数的异同点。六、编程题(30分)1、创建一个PL/SQL块,根据用户输入的编号,在emp表中查询出该编号的员工姓名、部门号及其主管编号,要有异常解决。2、创建一个PL/SQL块,根据用户输入的工作,从emp表中逐条输出从事这一工作的每位员工的编号、姓名和受雇如期,每条信息格式如下:(用游标实现)编号姓名受雇日期7751JOHN95-12-313、编写一个函数,用于判断EMP表中某一工作(JOB)是否存在,若EMP表存在此工作名称,则返回TRUE,否则返回FALSE。4、编写一触发器,在EMP表执行插入或修改前被激发,此触发器将对员工的工资(SAL)超过5000进行报错,不能插入或修改,不超过5000的才将员工编号、工作及当时的日期(SYSDATE)插入UP_EMP表(注:此表已建好,表结构为UP_EMP(EMPNONUMBER(4),SALNUMBER(7,2),UDETEDATE))5下面程序的输出结果是多少?importjava.util.Date;publicclassTestextendsDate{ﻩpublicstaticvoidmain(String[]args){ﻩﻩnewTest().test(); }ﻩ publicvoidtest(){ﻩ System.out.println(super.getClass().getName());ﻩ}}6下面的程序代码输出的结果是多少?publicclasssmallT{ﻩpublicstaticvoidmain(Stringargs[])ﻩ{ smallTt=newsmallT();ﻩ intb=t.get();ﻩ System.out.println(b);ﻩ} ﻩpublicintget()ﻩ{ﻩ tryﻩﻩ{ ﻩ return1;ﻩ }ﻩﻩfinally ﻩ{ﻩ ﻩreturn2; } }}7子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。8去掉一个Vector集合中反复的元素9有一个字符串,其中包含中文字符、英文字符和数字字符,请记录和打印出各个字符的个数10.xxx公司的sql面试TableEMPLOYEESStructure:EMPLOYEE_IDNUMBERPrimaryKey,FIRST_NAMEVARCHAR2(25),LAST_NAMEVARCHAR2(25),Salarynumber(8,2),HiredDateDATE,Departmentidnumber(2)TableDepartmentsStructure:Departmentidnumber(2)PrimaryKey,DepartmentNameVARCHAR2(25).(1)基于上述EMPLOYEES表写出查询:写出雇用日期在今年的,或者工资在[1000,2023]之间的,或者员工姓名(last_name)以’Obama’打头的所有员工,列出这些员工的所有个人信息。(2)基于上述EMPLOYEES表写出查询:查出部门平均工资大于1800元的部门的所有员工,列出这些员工的所有个人信息。()基于上述EMPLOYEES表写出查询:查出个人工资高于其所在部门平均工资的员工,列出这些员工的所有个人信息及该员工工资高出部门平均工资比例。答案:1答案:ABD2答案:D3答案:BC4答案:AB5答案AC6答案:A,G7答案:A8ABCDE9ABCDE10ABD11ABC12BD13AC14ABC15ABC16答案:C二填空3123.7&28002三判断××√√√√×√×√四写出相应的SQL语句1Selectjob,count(*)fromempgroupbyjob;2Selectename,sal,deptnofromempwheredeptno=(selectdeptnofromempwhereename=’SMITH’);3Selectename,sal,gradefromemp,salgradewheresalbetweenlosalandhisal;4Select*from(select*fromemporderbysaldesc)whererownum<=3;5Selecte1.enameempname,e2.enamemgrnamefromempe1,empe2wheree1.mgr=e2.empno;五简答1可以通过声明和发布来截获自定义异常。一、在声明部分为声明自定义异常名。二、在执行部分使用RAISE语句显式地发布异常。三、在相应的异常解决例程中引用已声明的异常。2(1).抽象:抽象就是忽略一个主题中与当前目的无关的那些方面,以便更充足地注意与当前目的有关的方面。抽象并不打算了解所有问题,而只是选择其中的一部分,暂时不用部分细节。抽象涉及两个方面,一是过程抽象,二是数据抽象。(2).继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增长新的方法使之更适合特殊的需要。(3).封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。(4).多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性涉及参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。List以特定顺序来持有元素,可有反复元素。Set无法拥有反复元素,内部排序。Map保存key-value值,value可多值。3List以特定顺序来持有元素,可有反复元素。Set无法拥有反复元素,内部排序。Map保存key-value值,value可多值4a、Action类:

struts1.2规定Action类继承一个基类。struts2.0Action规定继承ActionSupport基类ﻫb、线程模式

struts1.2Action是单例模式的并且必须是线程安全的,由于仅有一个Action的实例来解决所有的请求。

单例策略限制了Struts1.2Action能做的事情,并且开发时特别小心。Action资源必须是线程安全的或同步的。

struts2.0Action为每一个请求产生一个实例,因此没有线程安全问题。ﻫc、Servlet依赖ﻫstruts1.2Action依赖于ServletAPI,由于当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。ﻫstruts2.0Action不依赖于容器,允许Action脱离容器单独测试。假如需要,Struts2Action仍然可以访问初始的Request和Response。

但是,其他的元素减少或者消除了直接访问HttpServletRequest和HttpServletResponse的必要性。ﻫd、可测性ﻫ测试struts1.2Action的一个重要问题是execute方法暴露了ServletAPI(这使得测试要依赖于容器)。一个第三方扩展:strutsTestCaseﻫ提供了一套struts1.2的模拟对象来进行测试。ﻫStruts2.0Action可以通过初始化、设立属性、调用方法来测试,“依赖注入”也使得测试更容易。51.在工程中加入Struts支持ﻫ2.编辑ApplicationResource.properties文献,在其中加入要使用国际化的信息,例如:lable.welcome.china=Welcome!!!ﻫ3.创建英文资源文献ApplicationResource_en.properitesﻫ4.创建临时中文资源文献ApplicationResource_temp.properites例如:lable.welcom.china=中国欢迎您!

5.对临时中文资源文献进行编码转换。可以使用myeclipse的插件,也可以在dos下执行:ﻫnative2ascii-encodinggb2312ApplicationResource_temp.propertiesApplicationResource_zh_CN.properties

6.在jsp中加入struts的bean标记库<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>

显示信息:

可以在struts-config.xml文献中定义多个资源包,而每个资源包可使用key属性指定包的名称6form-bean配置:(在配置文献struts-config.xml中):

name:指定form的名字;type指定form的类型:包名+类名;ﻫaction配置:(在配置文献struts-config.xml中)

path=”?”ﻫattribute="?"ﻫinput="?"ﻫname="?"

parameter="?"

scope="?"ﻫtype="?"71、hibernate自带的分页机制:获得Session对象后,从Session中获得Query对象。用Query.setFirstResult():设立要显示的第一行数据,ﻫQuery.setMaxResults():设立要显示的最后一行数据。ﻫ2、不使用hibernate自带的分页,可采用sql语句分页,

如:5:为每页显示的记录,2为当前页:select*top5fromtablewheretabIdnotin(selecttabIdtop(2-1)*5fromtable);8hibernate中一对多配置文献会相应的映射为两张表,并且它们之间的关系是一对多的。ﻫ例如:一个student和classes表的关系。一个学生只能是一个班的,一个班可以有多个学生。91很少被修改的数据2不是很重要的数据,允许出现偶尔并发的数据3不会被并发访问10控制反转IOCAOP11面向切面编程:重要是横切一个关注点,将一个关注点模块化成一个切面。在切面上声明一个告知(Advice)和切入点(Pointcut);告知:是指在切面的某个特定的连接点(代表一个方法的执行。通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使告知(Advice)的主体部分获得连接点信息。)上执行的动作。告知中定义了要插入的方法。切入点:切入点的内容是一个表达式,以描述需要在哪些对象的哪些方法上插入告知中定义的方法。ﻫ项目中用到的Spring中的切面编程最多的地方:声明式事务管理。

a、定义一个事务管理器

b、配置事务特性(相称于声明告知。一般在业务层的类的一些方法上定义事务)ﻫc、配置哪些类的哪些方法需要配置事务(相称于切入点。一般是业务类的方法上)12Insert条件谓词inserting;Update条件谓词updating;Delete条件谓词deleting。13视图是一种Oracle对象,是来自一张或多张表或视图中数据的子集的逻辑表达。特点:限制对数据库的访问;容易实现数据的复杂的查询;维护数据的独立性;对于相同的数据可以产生不同的视图。14Primarykey保证非空且唯一;Foreignkey保证引用完整性;Unique保证列或者列的组合中的每个值都是唯一的;Check限制每条记录都要满足的条件;Notnull保证该列不能保存空值。15两者都带有0个或多个参数,参数可以具有模式。两者都是PL/SQL语句块的不同形式,都有声明段、可执行段以及异常段。两者都可以存储在数据库中或在语句块中声明两者不同的是,过程调用自身是一个PL/SQL语句,而函数总是向调用块返回一个值。16使用%rowtype属性声明记录变量的优点是什么?可以不必知道数据库中列的数量和类型。在运营期间,数据库中列的数量和类型也许发生变化。在SELECT语句中使用该属性可以有效地检索表中的行。六编程1SETserveroutputON;Declarev_empnoemp.empno%type:=’&员工编号’;v_enameemp.ename%type;v_deptnoemp.deptno%type;v_mgremp.mgr%type;BeginSELECTename,deptno,mgrINTOv_ename,v_deptno,v_mgrfromempWHEREempno=v_empno;DBMS_OUTPUT.PUT_LINE(‘员工’||v_ename||’在部门’||’v_deptno’||’主管’||v_mgr);EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE(‘没有此员工’);END;2DeclareCursoremp_cur(v_jobemp.job%TYPE)isSelectempno,ename,hiredatefromempwherejob=v_job;v_empnoemp.empno%TYPE;v_enameemp.ename%TYPE;v_hiredateemp.hiredate%TYPE;BEGINOPENemp_cur(upper(‘&job’));LOOPFetchemp_curINTOv_empno,v_ename,v_hiredate;Exitwhenemp_cur%NOTFOUND;DBMS_OUTPUT.PUT_LINE(‘编号姓名工资’);DBMS_OUTPUT.PUT_LINE(v_empno||v_ename||v_hiredate);ENDLOOP;CLOSEemp_cur;END;DeclareCursoremp_cur(v_jobemp.job%TYPE)isSelectempno,ename,hiredatefromempwherejob=v_job;v_empnoemp.empno%TYPE;v_enameemp.ename%TYPE;v_hiredateemp.hiredate%TYPE;BEGINFORiINemp_cur(upper(‘&job’))LOOPv_empno:=i.empno;v_ename:=i.ename;v_hiredate:=i.hiredate;DBMS_OUTPUT.PUT_LINE(‘编号姓名工资’);DBMS_OUTPUT.PUT_LINE(v_empno||v_ename||v_hiredate);ENDLOOP;END;3CREATEORREPLACEFUNCTIONf_emp(f_jobemp.job%TYPE)RETURNBOOLEANIsv_jobemp.job%TYPE;BEGINSELECTDISTINCTjobINTOv_jobFROMempWHEREjob=f_job;RETURNTRUE;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURNFALSE;ENDf_emp;BeginIff_emp(upper(‘&job’))THENDBMS_OUTPUT.PUT_LINE(‘日’);ELSEDBMS_OUTPUT.PUT_LINE(‘插’);ENDIF;END;4CREATEORREPLACETRIGGERt_emp_salBEFOREINSERTORUPDATEONempBeginIF:new.sal>5000THENRAISE_APPLICATIONG_ERROR(‘ERROR!!’);ELSEINSERTintup_empVALUES(empno,sal,sysdate);ENDIF;END;5很奇怪,结果是Test这属于脑筋急转弯的题目,在一个qq群有个网友正好问过这个问题,我觉得挺有趣,就研究了一下,没想到今天还被你面到了,哈哈。在test方法中,直接调用getClass().getName()方法,返回的是Test类名由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应当是Test。假如想得到父类的名称,应当用如下代码:getClass().getSuperClass().getName();6返回的结果是2。我可以通过下面一个例子程序来帮助我解释这个答案,从下面例子的运营结果中可以发现,try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数立即返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是立即返回,它要执行finally语句后才真正开始返回。7最终的程序代码如下:publicclassThreadTest{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstubﻩﻩnewThreadTest().init(); } publicvoidinit()ﻩ{ﻩﻩfinalBusinessbusiness=newBusiness(); newThread(ﻩﻩﻩﻩnewRunnable()ﻩ ﻩ { ﻩ ﻩﻩpublicvoidrun(){ ﻩ ﻩfor(inti=0;i<50;i++) ﻩﻩﻩﻩ {ﻩ ﻩﻩ ﻩbusiness.SubThread(i);ﻩ ﻩﻩ} ﻩ ﻩ ﻩ} ﻩﻩﻩﻩ ﻩ}ﻩ ﻩﻩ).start(); ﻩﻩﻩfor(inti=0;i<50;i++)ﻩﻩ{ business.MainThread(i);ﻩ }ﻩﻩ } ﻩprivateclassBusiness { ﻩbooleanbShouldSub=true;//这里相称于定义了控制该谁执行的一个信号灯 ﻩpublicsynchronizedvoidMainThread(inti)ﻩﻩ{ if(bShouldSub)ﻩﻩﻩ try{ ﻩ ﻩ this.wait(); ﻩ }catch(InterruptedExceptione){ﻩﻩ ﻩ //TODOAuto-generatedcatchblock ﻩ e.printStackTrace(); ﻩ} ﻩ ﻩﻩﻩfor(intj=0;j<5;j++) { ﻩ System.out.println(Thread.currentThread().getName()+":i="+i+",j="+j);ﻩ ﻩ} ﻩ bSh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论