Java基础面试题及答案(在后面).doc

上传人:最*** 文档编号:1561986 上传时间:2019-10-28 格式:DOC 页数:17 大小:35.32KB
返回 下载 相关 举报
Java基础面试题及答案(在后面).doc_第1页
第1页 / 共17页
Java基础面试题及答案(在后面).doc_第2页
第2页 / 共17页
Java基础面试题及答案(在后面).doc_第3页
第3页 / 共17页
点击查看更多>>
资源描述
JAVA基础部分-选择题(单选)1.在Java语言中,字符串“Java程序员”在内存中所占用的字节数是:()。A.10B.7C.13D.142. (单选)下列表达式中,可以得到精确结果的是()。A.double d1 = 3.0 - 2.6;B.double d4 = 2.5 * 1.5;C.double d2 = 30/300;D.double d3 = 1/2 + 0.5;3.(多选)所谓“水仙花”数是一个整数等于各位数字立方的和,例如:153 = 111+555+333,下面的程序用于输出21000内的水仙花数:for (int n = 2; n 0) int t = n1 % 10; s += t * t * t; n1 /= 10; B.int s = 0, n1 = n; while (n1 0) int t = n1 / 10;s+= t * t * t; n1 %= 10; C.int s = 0; for(int n1 = n; n10; n1 /= 10) int t = n1%10; s += t * t * t; D.int s = 0; for(int n1 = n; n10; n1 %= 10) int t = n1 / 10; s += t * t * t; 4.下列语句序列执行后,k 的值是 ( ) int x=6, y=10, k=5; switch( x % y ) case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; A.60B.5C.0D.545.设 a = 8,则表达式 a 2 的值是: (无符号右移动)( )A.1B.2C.3D.46.下列程序class Test public static void main(String args) doSomething(1); doSomething(1,2); /insert code here在程序中插入下列哪一行代码可以编译通过: A static void doSomething(int args)B static void doSomething(int. args)C static coid doSomething(int.args,int x)D static void doSomething(int x,int.args)简答题1.现有一个长度为20的数组,数组内的数字0-9之间的任意数字,统计出数组中每个元素出现的次数?现有一个字符串fdasafdasfdasa,现统计出子串as出现的次数.2.请描述冒泡排序算法的基本思想。3.一个数组中只有0,1两种数字,进行排序,0全部在前,1全部在后OOP部分1.(单选)关于下列代码说法正确的是:public class A private int counter = 0; public static int getInstanceCount() return counter; public A() counter+; public static void main(String args) A a1 = new A(); A a2 = new A(); A a3 = new A(); System.out.println(A.getInstanceCount(); A.该类编译失败B.输出:1C.输出:3D.输出:02.试图编译和运行以下代码,将获得什么结果(JAVA)class Base int i = 99; public void amethod() System.out.println(Base.amethod(); Base() amethod(); public class RType extends Base int i = -1; public static void main(String argv) Base b = new RType(); System.out.print(b.i+t); b.amethod(); RType r = (RType)b; System.out.print(r.i+t); public void amethod() System.out.print(RType.amethod()+t); A RType.amethod -1 RType.amethod -1B RType.amethod 99 RType.amethod -1C 99 RType.amethod 99D 编译时错误(Compile time error)3、下边程序运行的结果是? ( )class Base Base() System.out.print(Base); public class Alpha extends Base public static void main( String args ) new Alpha(); new Base(); A.BaseB.BaseBaseC.程序编译失败.D.程序运行但没有任何输出4.指出下列程序运行的结果 public class Example String str=new String(good); charch=a,b,c; public static void main(String args) Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+ and ); System.out.print(ex.ch); public void change(String str,char ch) str=test ok; ch0=g; A.good and abcB.good and gbcC.test ok and abcD.test ok and gbcOOP部分-简答题1.抽象类和接口的区别2.静态变量和实例变量的区别?3.String s = new String(xyz);创建了几个String Object ?4字符串连接时为什么推荐使用StringBuffer而不是直接用String+String的方式,请简述原因?5.final, finally, finalize的区别。6.线程继承Thread类 如果某个类继承了Thread类,那么此时这个类就是一个线程类,如果要创建此类的线程对象 A extends Thread A a = new A(); a.start()实现Runnable接口 如果某个类实现了Runnable接口,此时这个类不是线程类,这个类中只有将线程要执行的任务写好了如果此时用用线程来执行这个任务A implements RunnableA a = new A();/创建一个线程对象指向该任务Thread th = new Thread(Runnable r,name);th.start()生命周期:5种状态新建,就绪,运行,阻塞,死亡多线程并发问题:脏数据:污染了数据 -前提条件:多个线程访问同一个对象如何避免脏数据的产生:线程同步 - synchronized可以用来修饰方法,代码块:本质是给对象加锁如果修饰方法:给调用方法的对象(this)加锁如果修饰代码块: sychronized(要加锁的对象) 一般情况下,加锁的对象都为this线程间的通信 - 线程间要交流生产者消费者Object类下的几个方法来实现了线程间的通信wait() :一定出现在sychronized的方法中notify() notifyAll()线程池:Excutors.newFixedThreadPool(int nThread) - ExcutorServiceexecute()ThreadLocal:将数据绑定到当前线程上,那么在整个线程过程中都可以使用该数据IO流: RandomAccessFile:随机访问流(任意访问流)特殊之处:1.这个流既可以读文件,也可以写文件2.可以定位到文件的任意位置,而且可以获取当前的偏移量RandomAccessFile(File dest,String mode)read() write() - 按照字节seek(long pos)getFilePointer() - long数据库部分-选择题1.当在执行过程中,如果QUANTITY的值是空的话,哪个语句将显示一个0?A.SELECT id_number,100/quantity FROM inventory;B.SELECT id_number,NVL(100/quantity,0) FROM inventory;C.SELECT id_number,NULL(100/quantity,0) FROM inventory;D.SELECT idnumber,TOCHAR(100/quantity,0) FROM inventory;2.分析下面SQL语句,在什么情况下引起这个语句失败?STUDEN表结构:ID NUMBER(9) FIRSTNAME VARCHAR2(25) LASTNAME VARCHAR2(25)SELECT * FROM student WHERE id=(SELECT id FROM student WHERE UPPER(first_name)=KATE AND UPPER(last_name)=HENRY);A.在数据表中没有学生的名字是Kate HenryB.数据表中学生的名字叫Kate的多于一个C.数据表中的学生的名字叫Kate Henry的多于一个D.FIRSTNAME和LASTNAME的值在数据库中是小写的3.分析下面的SQL语句,这个语句为什么会出现一个错误?CREATE TABLE sale_items(id_number NUMBER(9),description VARCHAR(25) AS SELECT id_number,description FROM inventory WHERE quantity500;A.一个子句丢失B.一个关键字丢失C.where子句不能应用在创建表上D.数据类型在新表中不需要被定义4.在SQL语言中,关于主键描述正确的是()(多选)A 只能包含一列B 可以包含两列C 可以包含一列或者多列D 以上都不正确数据库简答题1.写SQL语句显示员工表中工资超过平均工资的员工。2.假如订单表orders用来存储订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额?统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额20003. 表PERSONNEL 的结构如下:ID NUMBER(9)NAME VARCHAR2(25)MANAGER_ID NUMBER(9)在这里, 部门的管理者也看作是雇员,写出SQL语句查询每个雇员的姓名以及管理者的姓名4.ORACLE数据库有哪几种约束类型?5.请分别写出mysql与oracle的分页查询语句(查询第3-第7条数据)6.写一个查询,来查询出挣到佣金(comm)的雇员姓名ename,部门名称,和部门所处的位置loc。(有employ表和dept表)7.写一个查询,查出在名字里面有一个A的所有雇员姓名ename和其所在的部门loc的名称。8显示所有薪金高于各自部门平均薪金的人?9.查询平均成绩大于60分的同学的学号和平均成绩;Servlet部分1.JSP九大内置对象,Servlet域对象以及各自的作用范围2.说出Servlet的生命周期?5.请简述mvc架构。同时说明在自己熟悉的架构中mvc分别对应什么?框架部分1.请描述一下spring MVC工作原理。2.Spring的核心是什么?JAVA基本部分-选择题1.D2.B解析:此题考查java的浮点运算的精度问题,浮点数是以二进制得形式存储得,如0.5 = 2得-1次方选项A 返回结果0.3999999999999999选项B 返回结果3.75选项C 返回结果0.0 因为30和300都是整数,只要把任何一个定义成浮点型数据,数据会更精确选项D 返回结果0.5 原理同选项C3.AC解析:固定算法,只是用while循环或for循环4.D解析:switch分支结构如果在case的语句体中添加break;语句,那么只要找到对应的case 的常量,就执行对应case常量后的语句,如果没有break语句就继续执行后面所有case 后的语句 如果最后有default也会执行。5.B解析:Java中的位运算符: int类型占4个字节,一个字节占8位,所以一个int数字占用32位。 表示右移,如果该数为正,则高位补0,若为负数,则高位补1; 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。6.BD解析:根据题意,方法名称不变,参数的个数可变,解决方案是用可变参数 类型.类型名称 比如:int. args 可变参数其本质是一个数组,且必须放在方法参数的最后一个位置,可以接受零个或多个参数,在方法中使用数组方式来访问,比如:args0 args1.简答:1.int ary = 1,2,1,4,5,6; int counts = new int10; for(int i:ary) countsi+; for(int j:counts) System.out.print(j+ ); 2.答案:1冒泡排序的基本思想 冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(ajaj+1),则将其交换,最终达到有序化。其处理过程为: (1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。 (2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上飘浮(左移),关键字值大的记录好像石块,向下“堕落”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列。 2原始的冒泡排序算法 对由n个记录组成的记录序列,最多经过(n-1)趟冒泡排序,就可以使记录序列成为 有序序列,第一趟定位第n个记录,此时有序区只有一个记录;第二趟定位第n-1个记录,此时有序区有两个记录;以此类推,算法框架为: for(i=n;i1;i-) 定位第i个记录; 若定位第i个记录,需要从前向后对无序区中的相邻记录进行关键字的比较,它可以用如下所示的语句实现。下面给出完整的冒泡排序算法: for(int i=0;iarr.length-1;i+)/外层循环控制排序趟数 for(int j=0;jarrj+1) int temp=arrj; arrj=arrj+1; arrj+1=temp; 3.答案:int ary = 1,0,1,1,0,0,1,1,1,0,0,1,0,1; int index = 0; for(int i=0;i(SELECT AVG(salary) from staff)SELECT dept_id from staff UNION All SELECT id from department MAX()MIN(expr)COUNT(DISTINCT expr,expr.)SUM(expr)UNION 求去重后的并集UNION All 求全并集minus 差集 2. 统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额2000select cid,COUNT(*),SUM(money) from orders where money50 GROUP BY cid HAVING SUM(money)20003. SELECT s1.name,s2.name as mgrName from staff s1 LEFT JOIN staff s2 ON s1.mgr_id=s2.id4.答案:五种:1.主键约束 PRIMARY KEY2.外键约束 FOREIGN KEY3.唯一约束 UNIQUE4.检查约束 CHECK5.非空约束 NOT NULL5.答案:mysql分页查询: select * from staff LIMIT 0,2oracle的分页语句:3是起始记录号,6是终止记录号select * from ( select e.*, rownum rn from emp e ) emp_alias where emp_alias.rn=3 and emp_alias.rntmp.av and s.dept_id=tmp.didServlet部分1.1、request对象2、response对象3、session对象4、application对象5、out 对象6、pageContext 对象7、config 对象8、page 对象9、exception 对象四大域对象:HttpServletRequest:一次请求HttpSession:一次会话ServletContext:整个服务器生命周期PageContext:当前页面2.答案:Servlet 生命周期:实例化-初始化-服务-销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。 service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。 destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。5.答案:1、模型(Model) : 模型是应用程序的主体部分。模型表示业务数据2、视图(View) : 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。3、控制器(controller) : 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。 MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性视图层:jsp、html超文本标记语言控制层: servlet,controller,action模型层:mybatis,entity,service框架部分1.答案:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。2.核心是IOC和AOPIOC:控制反转的意思,在spring中,将对象的创建权交由spring来完成(如果问为什么,答为了更好的解耦),DI是IOC的实现过程,是依赖注入的意思AOP:面向切面编程,底层采用的是动态代理机制(2种:JDK代理(给有接口的类生成代理),CGlib代理(给无接口的类生成代理),是指将一些重复性的代码提取出来成切面, 给相应的方法定义切点,在指定切点插入切面中的代码。目的就是为了将重复性的代码和核心业务代码分离。主要的应用:spring的声明式事务,日志记录等等
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!