Java基础面试题及答案Word文档格式.docx

上传人:b****3 文档编号:17597197 上传时间:2022-12-07 格式:DOCX 页数:15 大小:25.65KB
下载 相关 举报
Java基础面试题及答案Word文档格式.docx_第1页
第1页 / 共15页
Java基础面试题及答案Word文档格式.docx_第2页
第2页 / 共15页
Java基础面试题及答案Word文档格式.docx_第3页
第3页 / 共15页
Java基础面试题及答案Word文档格式.docx_第4页
第4页 / 共15页
Java基础面试题及答案Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Java基础面试题及答案Word文档格式.docx

《Java基础面试题及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java基础面试题及答案Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

Java基础面试题及答案Word文档格式.docx

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.0

D.54

5.设a=8,那么表达式a>

>

2的值是:

〔无符号右移动〕()

A.1

B.2

C.3

D.4

6.以下程序

classTest{

publicstaticvoidmain(String[]args){

doSomething

(1);

doSomething(1,2);

//insertcodehere

}

在程序中插入以下哪一行代码可以编译通过:

AstaticvoiddoSomething(int[]args){}

BstaticvoiddoSomething(int...args){}

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

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

简答题

1.现有一个长度为20的数组,数组的数字0-9之间的任意数字,统计出数组中每个元素出现的次数?

现有一个字符串"

fdasafdasfdasa"

现统计出子串"

as"

出现的次数.

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

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

OOP局部

1.(单项选择)关于以下代码说确的是:

publicclassA{

privateintcounter=0;

publicstaticintgetInstanceCount(){

returncounter;

publicA(){

counter++;

publicstaticvoidmain(String[]args){

Aa1=newA();

Aa2=newA();

Aa3=newA();

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

A.该类编译失败

B.输出:

1

C.输出:

3

D.输出:

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+"

publicvoidamethod(){

System.out.print("

RType.amethod()"

+"

ARType.amethod-1RType.amethod-1

BRType.amethod99RType.amethod-1

C99RType.amethod99

D编译时错误(piletimeerror)

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

()

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="

testok"

;

ch[0]='

g'

A.goodandabc

B.goodandgbc

C.testokandabc

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(Runnabler,name);

th.start()

生命周期:

5种状态

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

多线程并发问题:

脏数据:

污染了数据-前提条件:

多个线程访问同一个对象

如何防止脏数据的产生:

线程同步-synchronized

可以用来修饰方法,代码块:

本质是给对象加锁

如果修饰方法:

给调用方法的对象(this)加锁

如果修饰代码块:

sychronized(要加锁的对象){}一般情况下,加锁的对象都为this

线程间的通信-线程间要交流

生产者消费者

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

wait():

一定出现在sychronized的方法中

notify()notifyAll()

线程池:

Excutors.newFixedThreadPool(intnThread)-ExcutorService

execute()

ThreadLocal:

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

IO流:

RandomAccessFile:

随机访问流(任意访问流)

特殊之处:

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

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

RandomAccessFile(Filedest,Stringmode)

read()write()-按照字节

seek(longpos)

getFilePointer()-long

数据库局部-选择题

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

A.SELECTid_number,100/quantityFROMinventory;

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

C.SELECTid_number,NULL(100/quantity,0)FROMinventory;

D.SELECTidnumber,TOCHAR(100/quantity,0)FROMinventory;

2.分析下面SQL语句,在什么情况下引起这个语句失败?

STUDEN表构造:

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

SELECT*FROMstudentWHEREid=

(SELECTidFROMstudentWHEREUPPER(first_name)='

KATE'

ANDUPPER(last_name)='

HENRY'

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

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

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

D.FIRSTNAME和LASTNAME的值在数据库中是小写的

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语句显示员工表中工资超过平均工资的员工。

2.假设订单表orders用来存储订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额?

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

2000

3.表PERSONNEL的构造如下:

IDNUMBER(9)

NAMEVARCHAR2(25)

MANAGER_IDNUMBER(9)

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

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

5.请分别写出mysql与oracle的分页查询语句〔查询第3-第7条数据〕

6.写一个查询,来查询出挣到佣金(m)的雇员ename,部门名称,和部门所处的位置loc。

〔有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.99999

选项B返回结果3.75

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

选项D返回结果0.5原理同选项C

3.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可变参数其本质是一个数组,且必须放在方法参数的最后一个位置,可以承受零个或多个参数,在方法中使用数组方式来访问,比方:

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.冒泡排序的根本思想冒泡排序是交换排序中一种简单的排序方法。

它的根本思想是对所有相邻记录的关键字值进展比效,如果是逆顺〔a[j]>

a[j+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;

j<

arr.length-1-i;

j++){//层循环控制每一趟排序多少次if(arr[j]>

arr[j+1]){inttemp=arr[j];

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

arr[j+1]=temp;

}}}

3.答案:

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

intindex=0;

ary.length;

i++){

if(ary[i]==0){

ary[i]=1;

ary[index++]=0;

System.out.print(i+"

OOP局部-选择题

1.A

3.B

7.B

数组和对象在作为数的参数传递的时候,是引用传递,如果在方法中对其做过修改,那么真的会影响原始数据

在语法定义上的区别:

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

在程序运行时的区别:

实例变量属于某个对象的属性,必须创立了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创立任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

总之,实例变量必须创立对象后才可以通过这个对象来使用,静态变量那么可以直接使用类名来引用。

只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创立了1个StringObject。

如果是从jvm角度来说的话,它是创立了两个对象,Strings是在栈里创立了一个变量,newString("

)是在堆里创立了一个对象并被s引用到。

如果是Strings="

,那就要看常量池里有没有"

,如果有直接引用,如果没有那么创立再引用这里"

本身就是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.println("

gcwasruned"

publicclassA{Override

protectedvoidfinalize()throwsThrowable{

Demofinalized"

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

super.finalize();

1.C

nvl(expr1,expr2)将null转换为非null值如果expr1位null,那么取值expr2,expr2是实际值expr1和expr2可以是任何数据类型,但两个参数的数据类型必须是一致的

3.D

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

createtable表名asselect子句where字句〔不成立的条件〕

4.C

1.SELECT*fromstaffwheresalary>

(SELECTAVG(salary)fromstaff)

SELECTdept_idfromstaffUNIONAllSELECTidfromdepartment

MAX()

MIN(expr)

COUNT(DISTINCTexpr,[expr...])

SUM(expr)

UNION求去重后的并集

UNIONAll求全并集

minus差集

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

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

50GROUPBYcidHAVINGSUM(money)>

3.SELECTs1.name,s2.nameasmgrNamefromstaffs1LEFTJOINstaffs2ONs1.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<

=6 

mysql分页语句:

0是起始记录的前一个数字,3是每页显示多少条数据 

select*from表名limit0,3

6.SELECTs.name,d.name,d.locationfromstaffs,departmentdwheres.dept_id=d.idandmisnotNULL

7.selects.name,d.locationfromstaffs,departmentdwheres.dept_id=d.idands.nameLIKE'

%a%'

8.SELECTs.name,s.salaryfromstaffs,(selectAVG(salary)av,deptiddidfromstaffgroupbydeptid)tmpwheres.salary>

tmp.avands.dept_id=tmp.did

1、request对象

2、response对象

3、session对象

4、application对象

5、out对象

6、pageContext对象

7、config对象

8、page

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1