基础面试题及答案在后面_第1页
基础面试题及答案在后面_第2页
基础面试题及答案在后面_第3页
基础面试题及答案在后面_第4页
基础面试题及答案在后面_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、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 <= 1000; n+) 空白处

2、if (s = n) System.out.println(n); 下列选项中,空白处可以填入的代码是:()。 A.int s = 0, n1 = n; while (n1 > 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; n1>0; n1 /= 10) int t = n1%10; s += t * t * t; D.i

3、nt s = 0; for(int n1 = n; n1>0; 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 st

4、atic 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之间的任意数字,统计出数组中每个元素出现

5、的次数?现有一个字符串"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

6、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

7、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.ameth

8、od -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

9、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

10、='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类,那么此时这个类就是一个线程类

11、,如果要创建此类的线程对象 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种状态新建,就绪,运行,阻塞,死亡多线程并发问题:脏数据:污染了数据 -前提条件:多个线程访问同一个对象如何避免脏数据的产生:线

12、程同步 - synchronized可以用来修饰方法,代码块:本质是给对象加锁如果修饰方法:给调用方法的对象(this)加锁如果修饰代码块: sychronized(要加锁的对象) 一般情况下,加锁的对象都为this线程间的通信 - 线程间要交流生产者消费者Object类下的几个方法来实现了线程间的通信wait() :一定出现在sychronized的方法中notify() notifyAll()线程池:Excutors.newFixedThreadPool(int nThread) - ExcutorServiceexecute()ThreadLocal:将数据绑定到当前线程上,那么在整个线

13、程过程中都可以使用该数据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_n

14、umber,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

15、 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,d

16、escription FROM inventory WHERE quantity>500;A.一个子句丢失B.一个关键字丢失C.where子句不能应用在创建表上D.数据类型在新表中不需要被定义4.在SQL语言中,关于主键描述正确的是()(多选)A 只能包含一列B 可以包含两列C 可以包含一列或者多列D 以上都不正确数据库简答题1.写SQL语句显示员工表中工资超过平均工资的员工。2.假如订单表orders用来存储订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额?统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额>2

17、0003. 表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显示所有

18、薪金高于各自部门平均薪金的人?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

19、和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,若为负数,则

20、高位补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) Syst

21、em.out.print(j+" "); 2.答案:1冒泡排序的基本思想 冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(aj>aj+1),则将其交换,最终达到有序化。其处理过程为: (1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。 (2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上"飘浮"(左移),关键字值大的记录好像石块,向下“堕落”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进

22、入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列。 2原始的冒泡排序算法 对由n个记录组成的记录序列,最多经过(n-1)趟冒泡排序,就可以使记录序列成为 有序序列,第一趟定位第n个记录,此时有序区只有一个记录;第二趟定位第n-1个记录,此时有序区有两个记录;以此类推,算法框架为: for(i=n;i>1;i-) 定位第i个记录; 若定位第i个记录,需要从前向后对无序区中的相邻记录进行关键字的比较,它可以用如下所示的语句实现。下面给出完整的冒泡排序算法: for(int i=0;i<arr.length-1;i+)/外层循环控制

23、排序趟数 for(int j=0;j<arr.length-1-i;j+)/内层循环控制每一趟排序多少次 if(arrj>arrj+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<ary.length;i+) if(aryi=0) aryi = 1; aryindex+ = 0; for(int i:ary) System.out.print(i+" "); OOP部分-选

24、择题1.A2.B3.B7.B解析: 数组和对象在作为数的参数传递的时候,是引用传递,如果在方法中对其做过修改,则真的会影响原始数据OOP部分-简答题1.2.答案:在语法定义上的区别:静态变量前要加static 关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象, 静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使

25、用类名来引用。3.答案:只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创建了1个String Object。如果是从jvm角度来说的话,它是创建了两个对象,String s是在栈里创建了一个变量,new String("xyz")是在堆里创建了一个对象并被s引用到。 如果是String s = "xyz",那就要看常量池里有没有"xyz",如果有直接引用,如果没有则创建再引用 这里"xyz"本身就是pool中的一个对象,而在运行时执行new String()时,将pool中的对象复制一份放到heap中,并

26、且把heap中的这个对象的引用交给s持有。ok,这条语句就创建了2个String对象。 难度等级:中4.答案:每次String+String都会生成一个新的String,而使用StringBuffer则不会出现此种情况,可以减少String对象的实例化次数。5.(1)final为关键字;可以修饰类,方法,变量(2)finalize()为方法;由JVM进行调用,用于对对象进行垃圾回收(3)finally:用于标识代码块,与try进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;通常用于释放资源 A demoGC = new A();demoG

27、C = null;System.gc();System.out.println("gc was runed ");public class A Overrideprotected void finalize() throws Throwable System.out.println("Demo finalized"); System.out.println(Thread.currentThread().getName(); super.finalize();数据库部分-选择题1.C2.B解析: nvl(expr1,expr2)将null转换为非

28、null值 如果expr1位null,则取值expr2,expr2是实际值 expr1和expr2可以是任何数据类型,但两个参数的数据类型必须是一致的3.D通过现有的表生成一个新的物理表create table 表名 as select 子句 where 字句(不成立的条件)4.C数据库简答题1.SELECT * from staff where salary>(SELECT AVG(salary) from staff)SELECT dept_id from staff UNION All SELECT id from department MAX()MIN(expr)COUNT(DI

29、STINCT expr,expr.)SUM(expr)UNION 求去重后的并集UNION All 求全并集minus 差集 2. 统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额>2000select cid,COUNT(*),SUM(money) from orders where money>50 GROUP BY cid HAVING SUM(money)>20003. SELECT , as mgrName from staff s1 LEFT JOIN staff s2 ON s1.mgr_id=s2.id4.答案:五种

30、: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.rn<=6 mysql分页语句:0是起始记录的前一个数字,3是每页显示多少条数据

31、60;select *from 表名 limit 0,36. SELECT ,,d.location from staff s,department d where s.dept_id=d.id and comm is not NULL7. select ,d.location from staff s,department d where s.dept_id=d.id and LIKE '%a%'8. SELECT ,s.salary from staff s,(select AVG(salary) av,dept

32、id did from staff group by deptid) tmp where s.salary>tmp.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

33、 生命周期:实例化->初始化->服务->销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。 service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。 destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因

温馨提示

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

评论

0/150

提交评论