Java基础面试题与复习资料(在后面)_第1页
Java基础面试题与复习资料(在后面)_第2页
Java基础面试题与复习资料(在后面)_第3页
Java基础面试题与复习资料(在后面)_第4页
Java基础面试题与复习资料(在后面)_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

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

文档简介

JAVA基础部分■选择题

(单选)1.在Java语言中,字符串“Java程序员”在内存中所占用的字节数是:

()o

A.10

B.7

C.13

D.14

2.(单选)下列表达式中,可以得到精确结果的是()。

A.doubled1=3.0-2.6;

B.doubled4=2.5*1.5;

C.doubled2=30/300;

0.doubled3=1/2+0.5;

3.(多选)所谓“水仙花”数是一个整数等于各位数字立方的和,例如:153=

171+555+333,下面的程序用于输出2-1000内的水仙花数:

for(intn=2;n<=1000;n++){

空白处

if(s==n){

System.out.println(n);

}

}

下列选项中,空白处可以填入的代码是:()0A.ints=0,n1=n;while(n1>0)

{intt=n1%10;s+=t*t*t;n1/=10;}

B.ints=0,n1=n;while(n1>0){intt=n1/10;s+=t*t*t;n1%=10;}

C.ints=0;for(intn1=n;n1>0;n1/=10){intt=n1%10;s+=t*t*t;}

D.ints=0;for(intn1=n;n1>0;n1%=10){intt=n1/10;s+=t*t*t;}

4.下列语句序列执行后,k的值是()

intx=6,y=10,k=5;

switch(x%y)

{

case0:k=x*y;

case6:k=x/y;

case12:k=x-y;

default:k=x*y-x;

}

A.60

B.5

C.O

D.54

5.设a=8,则表达式a»>2的值是:(无符号右移动)()

A.1

B.2

C.3

D.4

6.下列程序

classTest{

publicstaticvoidmain(String[]args){

doSomething(l);

doSomething(l,2);

}

//insertcodehere

}

在程序中插入下列哪•行代码可以编译通过:AstaticvoiddoSomething(int[]args){}

BstaticvoiddoSomethingfint...args){}

CstaticcoiddoSomething(in1...args,intx){}

DstaticvoiddoSomething(inlx,int...args){}

简答题

1.现有一个长度为20的数组,数组内的数字0・9之间的随意数字,统计出数组

中每个元素出现的次数?

现有一个字符串“fdasafdasfdasa”,现统计出子串“as”出现的次数.

2.请描述冒泡排序算法的基本思想。

3.一个数组中只有0,1两种数字,进行排序,。全部在前,1全部在后

OOP部分

1.(单选)关于下列代码说法正确的是:

publicclassA{

privateintcounter=0;

publicstaticintgetInstanceCount(){

returncounter;

)

publicA(){

counter++;

}

publicstaticvoidmain(String[]args){

Aal=newA();

Aa2=newA();

Aa3=newA();

System.out.println(A.getlnstanceCount());

)

}

A.该类编译失败

B.输出:1

C.输出:3

D.输出:0

2.试图编译和运行以下代码,将获得什么结果(JAVA)

classBase{

inti=99;

publicvoidamethod(){

System.out.println("Base.amethod()");

)

Base(){

amethod();

)

)

publicclassRTypeextendsBase{

inti=-1;

publicstaticvoidmain(Stringargv[]){

Baseb=newRType();

System.out.print(b.i+"\t");

b.amethod();

RTyper=(RType)b;

System.out.print(r.i+"\t");

)

publicvoidamethod(){

System.out.print("RType.amethod()"+"\t");

)

}

ARType.amethod-1RType.amethod-1

BRType.amethod99RType.amethod-1

C99RType.amethod99

D编译时错误(Compiletimeerror)

3、下边程序运行的结果是?()

classBase{

Base(){System.out.print("Base");}

}

publicclassAlphaextendsBase{

publicstaticvoidmain(String[]args){

newAlpha();

newBase();

)

)

A.Base

B.BaseBase

C.程序编译失败.

D.程序运行但没有任何输出

4.指出下列程序运行的结果

publicclassExample(

Stringstr=newString("good");

char[]ch={'a'/b'/c');

publicstaticvoidmain(Stringargs[]){

Exampleex=newExample。;

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

}

publicvoidchange(Stringstr,charch[]){

str-"tcstok";

ch[0]='g';

}

}

A.goodandabc

B.goodandgbc

C.tAStokandabc

D.testokandgbc

OOP部分•简答题

1.抽象类和接口的区分

2.静态变量和实例变量的区分?

3.Strings=newString(”xyz");创建了几个StringObject?

4.字符串连接时为什么举荐运用StringBuffer而不是干脆用String+String

的方式,请简述缘由?

5.final,finally,finalize的区分。

6.线程

继承Thread类假如某个类继承了Thread类,那么此时这个类就是一个线程类,假如要创建

此类的线程对象AextendsThreadAa=newA();a.start()

实现Runnable接口假如某个类实现了Runnable接口,此时这个类不是线程类,这个类中只

有将线程要执行的任务写好了

假如此时用用线程来执行这个任务

AimplementsRunnable

Aa=newA();

〃创建一个线程对象指向该任务

Threadth=newThread(Runnablerename);

th.start()

生命周期:5种状态

新建,就绪,运行,堵塞,死亡

多线程并发问题:

脏数据:污染了数据-前提条件:多个线程访问同一个对象

如何避开脏数据的产生:线程同步-synchronized

可以用来修饰方法,代码块:本质是给对象加锁

假如修饰方法:给调用方法的对象(this)加锁

假如修饰代码块:sychronized(要力口锁的对象怨一般状况下,加锁的对象都为this

线程间的通信-线程间要沟通

生产者消费者

Object类下的几个方法来实现了线程间的通信

wait():i'j定出现在sychronized的方法中

notify()notifyAII()

线程池:

Excutors.newFixedThreadPoDl(intnThread)-ExcutorService

execute()

ThreadLocal:将数据绑定到当前线程上,那么在整个线程过程中都可以运用该数据

。流:RandomAccessFile:随机访问流(随意访问流)

特别之处:

1.这个流既可以读文件,也可以写文件

2.可以定位到文件的随意位置,而且可以获得当前的偏移量

RandomAccessFile(Filedest,Stringmode)

read()write。-依据字节

seek(longpos)

getFilePointer()-long

数据库部分•选择题

1.当在执行过程中,假如QUANTITY的值是空的话,哪个语句将显示一个0?

A.SELECTid_number,1OO/quantityFROMinventory;

B.SELECTidnumber,NVL(100/quantity,0)FROMinventory;

C.SELECTid_number,NULLi10O/quantity,0)FROMinventory;

0.SELECT\6number,TOCHAR(10O/quantity,0)FROMinventory;

2.分析下面SQL语句,在什么状况下引起这个语句失败?STUDEN表结构:

IDNUMBER(9)FIRSTNAMEVARCHAR2(25)LASTNAMEVARCHAR2(25)

SELECT*FROMstudentWHEREid=

(SELECTidFROMstudentWHEREUPPER(first_name)='KATE'AND

UPPER(last_name)="HENRY');

A.在数据表中没有学生的名字是KateHenry

B.数据表中学生的名字叫Kate的多于•个

C.数据表中的学生的名字叫KateHenry的多于一个

D.FIRSTAMME例L4S7NAME的值在数据库中是小写的

3.分析下面的SQL语句,这个语句为什么会出现一个错误?

CREATETABLEsale_items(id_numberNUMBER(9),descriptionVARCHAR(25))

ASSELECTid_number,descriptionFROMinventoryWHEREquantity>500;

A.一个子句丢失

B.一个关键字丢失

C.where子句不能应用在创建表上

D.数据类型在新表中不须要被定义

4.在SQL语言中,关于主键描述正确的是。(多选)

A只能包含一列

B可以包含两列

C可以包含一列或者多列

D以上都不正确

数据库简答题

1.写SQL语句显示员JL表中工资超过平均_L资的员_L。

2.假如订单表orders用来存储订单信息,cid代表客户编号,money代表单

次订购额,现要查询每个客户的订购次数和每个客户的订购总金额?

统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额>2000

3.表PERSONNEL的结构如下:

IDNUMBER。)

NAMEVARCHAR2(25)

MANAGER」。NUMBER(9)

在这里,部门的管理者也看作是雇员,写出SQL语句查询每个雇员的姓名以及管理者的姓

名

4.ORACLE数据库有哪几种约束类型?

5.请分别写出mysql与oracle的分页查询语句(查询第3•第7条数据)

6.写一个查询,来查询出挣到佣金(comm)的雇员姓名ename,部门名称,和部

门所处的位置loco(有employ表和dept表)

7.写一个查询,查出在名字里面有一个“A”的全部雇员姓名ename和其所在的

部门loc的名称。

8.显示全部薪金高于各自部门平均薪金的人?

9.查询平均成果大于60分的同学的学号和平均成果;

Servlet部分

1.JSP九大内置对象,Servlet域对象以及各自的作用范围

2.说出Servlet的生命周期?

5.请简述mvc架构。同时说明在自己熟识的架构中mvc分别对应什么?

框架部分

1.请描述一下springMVC工作原理。

2.Spring的核心是什么?

JAVA基本部分■选择题

1.D

2.B

解析:此题考查java的浮点运算的精度问题,浮点数是以二进制得形式存储得,如0.5=

2得-1次方

选项A返回结果0.3999999999999999

选项B返回结果3.75

选项C返回结果0.0因为30和300都是整数,只要把任何一个定义成浮点型数据,数据

会更精确

选项D返【可结果0.5原理同选项C

3.AC

解析:固定算法,只是用whIe循环或for循环

4.D

解析:switch分支结构假如在case的语句体中添加break;语句,那么只要找到对应的

case的常量,就执行对应case常量后的语句,假如没有break语句就接着执行后面全部

case后的语句假如最终有default也会执行。

5.B

解析:Java中的位运算符:Vnt类型占4个字节,一个字节占8位,所以一个int数字占

用32位。>>表示右移,假如该数为正,则高位补0,若为负数,则高位补1;>>>表示

无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高

位同样补0。

6.BD

解析:依据题意,方法名称不变,参数的个数可变,解决方案是用可变参数类型…类型名

称比如:int…args可变参数其本质是一个数组,且必需放在方法参数的最终一个位置,

可以接受零个或多个参数,在方法中运用数组方式来访问,比如:args[0]args[1]

简答:

1.

int[]ary={1,2,1,4,5,6};

int[]counts=newint[10];

for(inti:ary){

counts[i]++;

}

for(intj:counts){

System.out.print(j+"");

}

2.答案:

1.冒泡排序的基本思想冒泡排序是交换排序中一种简洁的排序方法。它的基本思想是对

全部相邻记录的关健字值进行比效,假如是逆顺,则将其交换,最终达到有

序化。其处理过程为:(1)将整个待排序的记录序列划分成有序区和无序区,初始状态

有序区为空,无序区包括全部待排序的记录。(2)对无序区从前向后依次将相邻记录的

关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上“飘浮”(左移),关

键字值大的记录似乎石块,向下“堕落”(右移)。每经过一趟冒泡排序,都使无序区中关

键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟门泡排

序,就可以将这n个记录重新按关键字依次排列。2.原始的口泡排序算法对由n个记录

组成的记录序列,最多经过(n-1)超冒泡排序,就可以使记录序列成为有序序列,第一

趟定位第n个记录,此时有序区只有一个记录;其次趟定位第n-1个记录,此时有序区有

两个记录;以此类推,算法框架为:for(i=n:i>1:i-){定位第i个记录;}

若定位第i个记录,须要从前向后对无序区中的相邻记录进行关键字的比较,它可以用如

下所示的语句实现。

下面给出完整的冒泡排序算法:for(inti=0;i<arr.length-1;i++){〃外层循环限制排序趟数

for(intj=0;jvaiT.length・1・i;j++W/内层循环限制每一趟排序多少次

if(arr[j]>arr[j+1]){inttemp=arr[j];

arr[j]=arr[j+1];

arr0+1]=temp;}}}

3.答案:

int[]ary={1,0,1,1,0,0,1,1,1,0,0,1,0,1);

intindex=。;

for(inti=0;i<ary.length;i++){

if(ary[i]==0){

ary[i]=1;

ary[index++]=0;

)

}

for(inti:ary){

System.out.print(i+"");

}

OOP部分•选择题

1.A

2.B

3.B

7.B

解析:数组和对象在作为数的参数传递的时候,是引用传递,假如在方法中对其做过修改,

则真的会影响原始数据

OOP部分-简答题

1.

2.答案:

在语法定义上的区分:

静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区分:

实例变量属丁•某个对象的属性,必需创建/实例对象,其中的实例变量才会被安排空间,

才能运用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,

只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被安排空间,静态变

量就可以被运用了。总之,实例变量必需创建对象后才可以通过这个对象来运用,静态变

量则可以干脆运用类名来引用。

3.答案:

只要是new,都是重新安排堆空间,假如不区分栈和堆,这里创建了1个StringObject。

假如是从jvm角度来说的话,它是创建了两个对象,Strings是在栈里创建了一个变量,

newString("xyz")是在堆里创建了一个对象并被s引用到。假如是Strings="xyz",那就

要看常量池里有没有"xyz",假如有干脆引用,假如没有则创建再引用这里"xyz"本身就是

pool中的一个对象,而在运行时执行newString。时,将pool中的对象复制一份放到

heap中,并且把heap中的这个对象的引用交给s持有。ok,这条语句就创建了2个

String对象。难度等级:中

4.

答案:

每次String+String都会生成一个新的String,而运用StringBuffer则不会出现此种状况,

可以削减String对象的实例化次数。

5.

(1)final为关键字:可以修饰类,方法,变量

(2)finalize。为方法;由JVM进行调用,用于对对象进行垃圾回收

(3)finally:用于标识代码块,与try{}进行协作,不论try中的代码执行完或没有执行完

(这里指有异样),该代码块之中的程序必定会进行:通常用于释放资源AdemoGC=

newA();

demoGC=null;

System.gc();

System.out.printlnf'gcwasruned");

publicclassA{@Override

protectedvoidfinalize()throwsThrowable{

System.out.println("Demofinalized");

System.out.println(Thread.currentThread().getName());superfinalize();

)

)

数据库部分-选择题

1.C

2.B

解析:nvl(expr1,expr2)将null转换为非null值假如expri位null.则取值expr2.expr2

是实际值expri和expr2可以是任何数据类型,但两个参数的数据类型必需是一样的

3.D

通过现有的表生成一个新的物理表

createtable表名asselect子句where字句(不成立的条件)

4.C

数据库简答题

1.SELECT*fromstaffwheresalary>(SELECTAVG(salary)fromstaff)

SELECTdept_idfromstaffUNIONAllSELECTidfromdepartnrent

MAX()

MIN(expr)

COUNT(DISTINCTexpr,[expr...])

SUM(expr)

UNION求去重后的并集

UNIONAll求全并集

minus差集

2.统计单笔消费超过50元的用户总共的消费次数以及消费总金额,总金额>2000

selectcid,COUNT(*),SUM(money)fromorderswheremoney>50GROUPBYcidHAVING

SUM(money)>2000

3.SELECT,asmgrNamefromstaffs1LEFTJOINstaffs2ON

s1.mgr_id=s2.id

4.答案:

五种:

1.主键约束PRIMARYKEY

2.外键约束FOREIGNKEY

3.唯一约束UNIQUE

4.检杳约束CHECK

5.非空约束NOTNULL

5.答案:

mysql分页查询:select*fromstaffLIMIT0,2

oracle的分页语句:3是起始记录号,6是终止记录号select*from(selecte.*,

rownumrnfromempe)emp_aliaswhereemp_alias.rn>=3andemp_alias.rn<=6mysql分

页语句:0是起始记录的前•个数字,3是每页显示多少条数据select*from表名limit

0,3

6.SELECT,,d.locationfromstaffs,departmentdwheres.dept_id=d.id

andcommisnotNULL

7.select,d.locationfromstaffs,departmentdwheres.dept_id=d.idand

LIKE'%a%'

8.SELECT,s.salaryfromstaffs,(selectAVG(salary)av,dept/ddidfromstaff

groupbydeptib)tmpwheres.salary>tmp.avands.dept_id=tmp.did

Servlet部分

1.

1、request对象

2、response对象

3、session对象

4、application对象

5.out对象

6、pageContext对象

7、config对象

8、page对象

9、exception对象

四大域对象:

ServletRequest:一次恳求

Session:一次会话

ServletContext:整个服务器生命周期

PageContext:当前页面

2.答案:

Servlet生命周期:实例化…〉初始化…〉服务…〉销毁。

init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时

执行的,负责初始化Servlet对象。可以配置服务器,以在启匆服务器或客户机首次访问

Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行initO。

service():它是Servlet的核心,负责响应客户的恳求。每二一个客户恳求一个

Servlet对象,该对象的Service。方法就要调用,而且传递给这个方法一个“恳求”

(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。在Servlet

中已存在Service。方法。默认的服务功能是调用与恳求的方法相应的d。功能。destroy

O:仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退诞生

命周期时,负责释放占用的资源。一个Servlet在运行service。方法时可能会产生其他的

线程,因此须要确认在调用destroy。方法时,这些线程已经终止或

温馨提示

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

评论

0/150

提交评论