
面试题及答案(基础题
道,代码题
道)
相关基础知识
、面向对象的特征有哪些方面
抽象:
抽象
就是
忽略
一个
主题
中与
当前
目标
无关
的那
些方
面,
以便
更充
分地
注意
与当
前目
标
有关
的方
面。
抽象
并不
打算
了解
全部
问题
,而
只是
选择
其中
的一
部分
,暂
时不
用部
分细
节
抽象包括两个方面,一是过程抽象,二是数据抽象。
继承:
继承
是一
种联
结类
的层
次模
型,
并且
允许
和鼓
励类
的重
用,
它提
供了
一种
明确
表述
共java面试基础代码题及答案
性的
方法
。对
象的
一个
新类
可以
从现
有的
类中
派生
,这
个过
程称
为类
继承
。新
类继
承了
原
始类
的特
性,
新类
称为
原始
类的
派生
类(
子类
),
而原
始类
称为
新类
的基
类(
父类
)。
派
生类
可以
从它
的基
类那
里继
承方
法和
实例
变量
,并
且类
可以
修改
或增
加新
的方
法使
之更
适
合特殊的需要。
封装:
封装
是把
过程
和数
据包
围起
来,
对数
据的
访问
只能
通过
已定
义的
界面
。面
向对
象计
算
始于
这个
基本
概念
,即
现实
世界
可以
被描
绘成
一系
列完
全自
治、
封装
的对
象,
这些
对象
通
过一个受保护的接口访问其他对象。
多态性:
多态
性是
指允
许不
同类
的对
象对
同一
消息
作出
响应
。多
态性
包括
参数
化多
态性
和包
含
多态
性。
多态
性语
言具
有灵
活、
抽象
、行
为共
享、
代码
共享
的优
势,
很好
的解
决了
应用
程
序函数同名问题。
、
是最基本的数据类型吗
基本数据类型包括
、
、
、
、
、
、
和
。
类是
类型的,因此不可以继承这个类、不能修改这个类。为了提高效
率节省空间,我们应该用
!" 类
、
和
#有什么区别
提供两种不
同的类型:引
用类型和原始
类型(或内置
类型)。
# 是
的原始数
据类型,
# 是
为 提供的封装类。 为每个原始类型提供了封装类。
原始类型封装类
!
$
!
#
%
&
'
引用
类型
和原
始类
型的
行为
完全
不同
,并
且它
们具
有不
同的
语义
。引
用类
型和
原始
类
型具
有不
同的
特征
和用
法,
它们
包括
:大
小和
速度
问题
,这
种类
型以
哪种
类型
的数
据结
构
存储
,当
引用
类型
和原
始类
型用
作某
个类
的实
例数
据时
所指
定的
缺省
值。
对象
引用
实例
变
量的缺省值为
,而原始类型实例变量的缺省值与它们的类型有关。
、
和
!" 的区别
平台提供了两个类: 和 !",它们可以储存和操作字符串,即包含
多个
字符
的字
符数
据。
这个
类
提供
了数
值不
可改
变的
字符
串。
而这
个
!" 类

提供
的字
符串
进行
修改
。当
你知
道字
符数
据要
改变
的时
候你
就可
以使
用
!"。典型
地,你可以使用
!" 来动态构造字符数据。
(、运行时异常与一般异常有何异同?
异常
表示
程序
运行
过程
中可
能出
现的
非
正常
状态
,运
行时
异常
表示
虚拟机的通
常操
作中
可
能
遇到的异
常
,是
一
种常
见运
行
错误。
编译器要
求方法
必须声明
抛出可
能
发生
的
非运
行时异常,
但是并不要
求必须声明
抛出
未被
捕获的运行时异常。
)、
说出
的生
命周期,并
说出
和
$*# 的区别。
被服务器实例化后,容器运行其
方法,请求到达时运行其
方法,
方法自动派
遣运行与
请求对应的
+++ 方法(*,,)等,当服务器决定将实例销
毁
的时候调
用其 方法。
与
的
区
别
在于
处于
服务器进
程中
,
它通
过
多
线程
方
式运行
其
方
法
,一
个
实例
可
以
服务于
多个
请求,
并
且其
实
例一
般
不
会销毁,
而
$*# 对
每个
请求都产生新
的
进程
,
服务
完成后
就销毁
,所以效率上低
于 。
-、
说出
%..%/% 的存储性能和特性
%
和
都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增
加和
插入元素,它
们
都允
许
直接
按序
号索引
元素,
但是
插入元素要
涉及
数
组元素移动
等内
存操
作,
所以
索引
数据
快而
插入数
据
慢,
由于使用了 0 方法(线程安全),
通常性能
上较 % 差,而 %/% 使用双向链表实现存储,按序号索引数据需要进行
前向或
后向
遍历,
但是
插入数据时只需要
记录本
项的前
后项即可,所以
插入速度
较快。
1、
2! 是基于哪些
技术实现的?并
说出
! 和
23! 的区别,
4!
和
! 的区别。
2!
包括
!
、23
!
、5
'
!
,基于 6'#
、75#
、
8
等技术实
现。
!
在 22
应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调
用其他
2! 组件。
23! 被用来代表应用系
统中用
到的数据。
对于
客户机,
! 是一种非
持久性对象,它实现某些
在服务器上运行的
业务逻辑。
对
于
客户机,
23! 是
一
种
持久性
对
象
,
它
代表
一
个
存
储
在持久性
存储
器中
的
实
体的
对象
视图,或是一个
由现有
企业应用程序实现的实
体。
!
还可以再细分为
4
!
与
!
,这两种的
!
都可以将系统逻辑放在9
之中执行,不同的是
4!
可以
记录呼
叫者
的状
态,因此通常来说
,一个使用者会
有一个相对应的 4!的
实
体。
!虽然也是
逻辑组件,
但是他
却不
负责记录使用
者状态
,
也就是
说
当使用者
呼
叫
!的时候,2!$并不会
找
寻
特定的
!
的实体来执行这个
9
。换言之,很可能数个使用者在执行某个
!
的
9
时,会是同一个
!
的
#
在执行。从内存方面来看,
4!
与!
比较,
4!
会消耗22
较
多的内存,然
而4!的优势却在于他可以维持使用者的状态。
、
$3和
$3 的区别。
$3 是
集合类的
上级接口,继承与他的接口主要有
和
%
$3 是
针对
集合类
的
一
个
帮助类
,他
提
供
一
系
列
静态方
法
实
现
对
各种
集合
的
搜
索
、排
序、线
程安
全化等
操作。
:、
;和
;;的区别。
;
是位运算符,表示按位与运算,;;
是逻辑运算符,表示逻辑与(
)。

、
<5= 和
< 的区别。
<5= 是
< 的
轻量
级实
现(
非
线程
安全
的
实现
)
,
他
们
都完
成了
5= 接
口
,
主
要
区
别
在于
<5= 允
许
空
(
)
键值
(
/).由于非线程安全,效率上可能高于
<
。
<5=
允许将
作为一个
的 /
或者
,而 <
不允许。
<5=
把 <
的
方法 去 掉 了 , 改成
和
>
。 因 为
方法容易让人引起误解。
<
继承自 '3
类,而 <5=
是
引进的 5=
4
的一个实现。
最
大
的
不
同
是
,
< 的方法是 0 的,而 <5= 不是,在多个线程访问
<
时,不需要自己为它的方法实现同步,而 <5=
就必须为之提供外同步(如
果
是 %:%?$30%@A%@BBC如果是 <5=:5=
9=?$3
0
5=@A<5=@BBC
)。
<
和 <5=
采用的 D
算法都大概一样,所以性能不会有很大的差异。
、
. . 0 的区别。
用于
声明
属性,方法和类,分别表示
属性不可变,方法不可
覆盖,类不可继承。
是异常处理语句结构的一部分,表示总是执行。
0
是 E
类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可
以
覆盖此方法提供
垃圾收集时的其他
资源回收,例
如关
闭文件等。
、
=@B和
A@B有什么区别
= 是
线程类(
8)的
方法,
导致此
线程暂
停执行指定
时间,
给执行
机会给其他
线
程,但
是监控状
态依然
保持
,到
时后会
自动恢复
。调
用 = 不会释放
对象锁
。
A
是 E
类的方法,对此对象调用 A
方法导致本线程放弃对象锁,进入等待此对象
的
等待锁定
池,只有
针对
此对象
发出
34 方
法(或
34)
后本
线程
才进
入对象
锁定
池
准备获得
对象锁
进入
运行状
态。
、
E 和
E 的区别。
E 的方法是
否可以改变
返回值的类型
方
法
的
重
写 E 和
重
载 E 是
多
态
性
的
不
同
表
现
。
重
写 E
是父类与子
类之间多态性
的一种表现,
重
载 E 是一个类中多
态性的一种表
现。
如
果在
子类中定义某方法与其父类有相同的名称和参数,我们说
该方法被重写
@EB。
子
类
的
对
象
使
用
这
个
方
法
时
,
将调用
子
类
中
的
定
义
,
对
它
而
言
,
父
类
中
的
定
义
如同
被
“屏
蔽”
了。如
果在
一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数
类型,
则称为方法的重
载@EB。
E 的方法是可以改变
返回值的类型。
(、
和
F=3 有什么区别
表示
恢复不是不可
能
但很
困难的
情况下的
一种
严重问题
。
比如说内存
溢出。不可
能指
望程序能
处理这
样的
情况。
F=3表示一
种
设计
或实现
问题。
也就
是
说,
它表示
如果程
序运行
正常,
从不
会发
生的
情况。
)、同
步和异
步有何异同,
在什么
情况下分别使用他们?
举例
说明。
如果
数据将在
线
程间共享。例如正
在写
的数据以后
可能被另
一个线
程读
到
,或者正
在读
的
数据可能已
经被
另一个
线程
写过了,那么这些数据就是共享数据,
必须进行同
步存
取。
当应
用程
序
在对象
上调用
了一
个需
要
花费很
长时
间来
执行
的方
法,
并且
不
希望让程
序
等待
方法的
返回时,就应该使用异
步编程,
在很多
情况下采用异
步途径往往更有效率。
-、
和 4 有什么区别
声
明方法的存在
而不去
实现它的类被叫做
抽象类(),它用于要创建一个体现

某
些
基
本
行
为
的
类
,
并
为
该
类
声明
方
法
,
但不
能
在该
类
中
实
现
该
类
的
情况。
不
能
创建
类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的
一
个实
例
。
不
能
有抽
象
构
造
函
数
或
抽象
静态
方法
。
类的子类为它们父类中的所有
抽象
方法
提供
实现
,
否则它们
也是
抽象
类为
。
取而代
之,
在子
类中
实现
该方
法。
知道
其行
为的其它类可以
在类中实现这些方法。
接
口(
4)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实
现这
样的
接口
而
获得。接
口中
的所
有方
法
都是抽
象的
,
没有一
个有
程序
体。接
口只
可以
定
义
3 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类
实现
特殊
接口
时,
它定
义(
即
将程
序
体给予)所
有这
种接
口的
方法
。
然后,它
可以
在
实现
了该
接口
的类
的
任何
对象
上调用接
口的
方法
。
由于有
抽象
类,
它允
许使
用接
口名
作为
引
用
变
量
的
类
型
。
通
常
的
动
态
联
编将生
效
。
引
用
可
以
转换到接
口
类
型
或
从
接
口
类
型
转换 ,
4
运算符可以用来决定某对象的类是否实现了接口。
1、
= 和
/ 有什么区别。
栈是
一种
线形集合,
其
添加和
删除元素的操
作应
在同
一
段完成
。
栈按照后进
先出的
方
式
进行处理
。
堆是
栈的一个
组成
元素
、
4A和 的区别
4A 是
服务器请求资源,
服务器直接访
问目标
地
址的
G7%,把那
个
G7% 的响
应内
容
读取
过来,然
后
把这些内容再
发给
浏览
器
,浏览
器根
本不知道服务
器发
送
的内容
是从哪儿
来的,所以它的地
址栏中
还是原来的地
址。
就是服务端根据逻辑.
发送一个状态码.
告诉浏览器重新去请求那个地址,一般来说
浏览器会
用刚才请求
的所有参数重新请求
,所以 .H 参数都
可以获取
。
:、
2! 与
!26 的区别?
!是可复用的组件,对 ! 并没有严格的规范,理论上讲,任何一个
类
都可
以
是
一
个
!。
但通
常
情况下,
由于
! 是被
容器所
创建(
如 89)的,
所
以
! 应
具
有
一
个
无
参
的
构
造
器,
另外,
通
常
! 还要实现 0 接口
用于实现
! 的
持久性。
! 实
际上相当于
微软 $E5 模型中的本地进程内
$E5 组件,
它
是
不
能
被
跨进
程
访
问
的
。
2=!相当于 '$E5,即分布式组件。它是基于
的远程方法调用(75#
)技术的,所以 2!
可以被远程访问(跨进程、跨计算机)。但
2!
必须被布署在诸如 I
=
、I%
这样的容器中,2!
客户从不直接访问真正的
2!
组件,而是通过其容器访问。2!
容器是 2
!
组件的代理,2
!
组件由容器所创建和管理。
客户
通过容器
来访问真正
的 2! 组件
。
、
36$和#$ 的不同。
36$ 是
被
声明
为
静态
(
3)的内部类,它可以不依赖于外部类实例被
实例化。而通常的内部类需要
在外部类实例化
后才能实例化。
、
, 中动态
#6$%G'2 与
静态
#6$%G'2 的区别?
动
态
#6$%G'2 用
=J 动
作
实
现
K=J=?L=L?LLDM它
总
是会检查
所含文件
中的变化,适合用于包含动态页
面,并且可以带
参数。
静
态 #6$%G'2 用 伪
码实现.定不会
检
查
所含文
件
的变化,适用于包含静
态页
面KNO
?L9LNM
、什么时候用
。
3@断言
B在软件开发中是一种
常用的
调试方
式,很多
开发语言中
都支持这种
机制。
在
实现中,3 就是在
程序中的一条
语句
,它对一个 表达
式
进行检
查
,一个
正
确程序必
须
保证
这个 表达
式
的值为 ;
如
果
该值为 4,说
明程序已经
处
于

不
正确的
状态
下,
系
统将给出
警告或
退出。
一般
来
说,
3 用
于保
证程
序最
基本
、关
键
的正
确性。3 检
查
通常在
开
发
和测
试时开
启
。为了提高性能,在
软
件
发
布
后
,
3
检查通常是关闭的。
、
*$ 是什么
为什么要有
*$
*$ 是
垃圾收集的
意
思(
*$3)
.内存
处理是
编程
人员容易出现
问题
的地
方
,
忘
记或者错误的内存回收会导致程序或系统的不稳
定甚至崩溃
, 提供的 *$ 功
能可以自
动
监测对
象是
否超过
作用
域从
而
达到自
动
回收内
存的
目的
,
语言
没有提
供
释放已
分
配
内存的
显示操作方法。
(、
?C?PC有什么
错?CP?C有什么
错
?C?PC(
P 运算结
果是
型,需要
强制转换类型)
?CP?C(可以
正确
编译)
)、
5@(B等於多
少5@Q(B等於多少
5
@(B??
5
@Q(B??Q
方法返回与参数最接近的长整数,参数加 D
后求其
-、
?A@LF0LBC创建了
几个
E
两个
1、
设计
个
线程
,
其
中
两
个
线程
每
次
对
增
加
,
另外两
个
线程对
每
次
减少 。
写
出程序。
以
下程序使用内部类实现
线程,对
增
减的时候
没有
考虑顺序问题。
复制
代码
=/9
FC
DRR
R
(ROF
)RD
-=8
'9S
1=
C
:=3
9@
TUBS
8
'9V?A8
'9@BC
#?VA#@BC
'?VA'@BC
4
@?:CKCPPBS
(8?A8
@BC
)
@BC
-?A8@BC
1
@BC
W
:W
=
0
@BS
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/19595.html