面试题汇总

1、Java语言的特点是什么?
简单    面向对象    跨平台    安全性和健壮性   多线程   垃圾回收
2、如何编译和执行java文件?产生帮助文档用什么命令?
编译   javac   文件名
执行   java    类名
产生帮助文档   javadoc   文件名
3、虚拟机的工作流程是什么?
编写源文件*.java    编译成*,class    类加载    字节码校验   解释器   操作系统
4、main方法怎么书写?
  public static void main(String  aaa[]){}
5、什么是标识符?标识符有几种?标识符的命名规则是什么?
凡是可以命名的地方叫标识符,标识符通常用以命名类、变量、方法。标识符分为用户标识符及系统标识符(关键字)。标识符的命名规则是:由字母、数字、下划线、$组成,不能以数字开始。
规范:1、见名知意  2 类名以大写字母开始,采用驼峰命名 3 变量名、 方法名以小写字母开始  4常量全部由大写字母组成
6、Java中基本数据类型有哪些?各占几个字节?Java中引用数据类型有哪些?基本数据类型和引用数据类型的区别是什么?
 byte(1)  short(2)  int(4)   long(8)   float(4)   double(8)   char(2)  boolean(1)
基本数据类型中存放的数据,引用数据类型存放对象地址。
引用类型有:类   数组   接口   
7、Java中char类型用什么编码?
Char类型用unicode编码。这种编码占两个字节,可以存放中文字
8、变量三要素是什么?
变量类型   变量名  变量值
9、Java的注释有几种?
//单行   /* 多行     */    /**文档注释    */(类前、方法前、属性前)
10、定义常量用什么关键字?
final double PI = 3.14159  
当一个引用类型的变量申明为常量时,表示该变量不能指向别的对象。
11、什么是对象?什么是类?对象和类的关系是什么?
对象是现实中存在的实体,具有明确的特征和行为。
类是一组具有相同属性和行为的对象的集合。
类是对象抽象,对象是类的实例。
12、变量按作用域划分有哪几种?局部变量使用时需要注意什么问题?
变量按作用域分:局部变量(存放在栈空间,方法或语句块结束,局部变量销毁)、
成员变量(属性) 存放在堆空间,随对象产生而产生,随对象销毁而销毁。 
静态变量(类变量)存放在数据段中,常驻内存,虚拟机关闭消失。
局部变量使用时需注意:1、局部变量使用前,必须初始化 2、局部变量使用时,需注意作用范围  3、修饰符只能是默认或final
13、静态变量和成员变量有什么区别?应该怎么调用?
1)(存放在堆中)成员变量是对象的组成部分,每个对象有不同的成员变量。当一个对象成员变量改变后,
          不会影响其他变量;(存放数据段中)静态变量是独立在对象之外的,很多对象共享一个静态变量,当静态
           变量发生改变时,会影响所有对象
2、静态变量加载时机在对象之前,成员变量是产生对象时产生。
3、静态变量放在数据段中,成员变量放在堆中。
 
成员变量从属于对象,对象.成员变量
静态变量  对象.静态变量   类名.静态变量  推荐 类名.静态变量,所以静态变量也称为类变量。
14、垃圾回收GC回收什么样的对象?
回收没有被变量指向的对象
15、什么是包?包的作用是什么?如何导入别的包中的类?什么样的类不需要导入?
包就是文件夹,主要用于组织相关类,作信息隐藏。import   类的全路径(包名+类名)。本包中类及java.lang.*无需导入。
16、静态方法能直接调用成员方法或属性吗?为什么?
不能,静态方法加载时机在对象之前。所以静态方法不能直接调用成员方法或属性。
17、当传递和返回对象,传递和返回的是什么?
引用
18、什么是构造方法?构造方法的作用是什么?
构造方法是方法名和类名相同,没有返回类型。通过构造方法产生对象
1、为对象分配空间
2、如果类没有加载,则加载类
3、初始化成员变量
4、返回引用
19、私有属性+get/set方法和公有属性的区别
答:私有属性+get/set方法,可以在设值之前做数据的合法验证,从而避免非法数据的赋值。但公有属性做不到
       私有属性可以通过删除get/set方法,将属性设置为只读或只写属性,公有属性做不到。
20、this和super各代表什么含义?
this表示当前对象   super表示父类对象
 
21、数组如何定义?
Int []   x = new int[4];    int []   x = {3,4,5};
22、数组、字符串、集合各自的长度如何获得?
数组长度:数组名.length
字符串长度:字符串变量.length()
集合长度:集合名.size()
23、数组有哪些特点?
1、长度不可以改变   2、数组中每一个元素都相当于一个变量,通过下标访问。下标从0开始,最大长度为数组长度减一。3、数组必须存放同一数据类型。
     数组元素都是变量。变量类型为定义数组的类型。
4、创建数组时,每个元素都会初始化。基本类型为0,引用类型为null
24、继承用什么关键字?子类继承父类,构造方法第一句应该如何书写?
extends   super() ;调用父类构造方法产生父类对象,子类方法和属性在父类基础上扩展。
25、重写和重载的区别是什么?重写有什么要求?
重载发生在同一个类中,方法名相同,参数列表不同(参数类型、个数、顺序),和返回类型无关。
重写发生在父类和子类之间,方法名相同,返回类型相同,参数列表相同,调用时,会优先调用子类重写的方法。
子类方法修饰符大于或等父类,抛出的异常要小于或等于父类。
26、Java中一个类能同时继承多个类吗?所有类的父类是什么?
不能。只能单根继承,一个类只能继承一个父类。
 所有类的父类为Object
26、构造方法能继承吗?构造方法能重载吗?
不能。 但能被子类调用。 构造方法能重载,通过重载方法完成属性的一些初始化操作。
27、final、finally、finalize的区别是什么?
Final  是修饰符,可以修饰类、方法、变量。修饰类,表示类不能被继承;修饰方法,
方法不能被重写;修饰变量,表示变量是常量
Finally 是语句块,无论是否有异常,都会执行的代码,一般用于资源回收(流关闭,数据库关闭)
Finalize 是一个方法,在Object中定义。 表示垃圾回收对象时,自动调用的方法
28、访问修饰符有哪些?各自作用范围是什么?
public  protected 默认  private
public:公开的,可以被任何对象访问
protected:可以被同一包中的类访问,还可以被类的子类访问,不管子类在哪个包中。
默认:可以被同一包中的其他类访问
private:只有该类本身可以访问,不对外公开。  
29、什么是内部类?内部类class文件是怎样命名的?
在一个类中定义一个类叫内部类,内部类相当于外部类属性。它的产生需要依赖外部类对象。
Class文件名是:外部类名$内部类名.class
30、什么是多态?多态有什么特点?
多态是指可以使用父类变量指向子类对象,可以使用接口变量指向实现类对象。但反过来不
相同的行为,不同的实现方式,体现为动态绑定。
31、面向对象的特征有哪些?
继承 封装 多态  
32、什么是抽象类?什么是抽象方法?定义抽象类的关键字是什么?
如果一个类中有一个方法,只能定义没有实现,叫抽象方法。拥有抽象方法的类叫抽象类,抽象类不能产生对象。abstract
33、接口如何定义?实现接口用什么关键字?一个类实现接口必须做什么?
Interface  x  Implements  B,C    
一个类实现接口必须重写接口中所有的方法,否则这个类只能是抽象类。
34、接口中定义的方法修饰符是什么?接口中定义的变量修饰符是什么?
接口方法修饰符:Public  abstract   变量: Public  static  final 
35、抽象类和接口的区别是什么?
抽象类和接口都不能直接实例化。抽象类只能指向子类对象,接口变量只能指向实现类对象
抽象类可以有方法定义,可以有方法的实现,接口只能有方法定义
抽象类只能单根继承,接口可以多实现
抽象类的变量是普通变量,接口中的变量为public static final
36、异常的API结构是怎样的?Error和Exception有什么区别?
Throwable 为父类  有两个子类
Error(错误,可以捕捉,但不能处理)  
Exception(异常,可以捕捉,可以处理)
37、异常的执行顺序怎样?如果在try块中有return,finally会执行吗?
先执行try语句块,如果没有异常顺序执行,有异常,终止try块其他代码,转去catch块执行。 无论是否有异常,finally都会执行,如果在try块中有return,finally会在跳出方法之前执行
38、finally是否在任何时候都会执行?
不是,虚拟机关闭时不会执行
39、throw 和throws的区别是什么?
Throw是语句,表示显示抛出异常对象  throw new Exception();
Throws是方法修饰,表示调用该方法,必须处理该地方抛出的异常
40、异常分为几种?如何区分?
异常分为:编译期异常(必须处理);运行期异常(可处理,可不处理)。
运行期异常是:RuntimeException的子类。
41、如何得到当前工作目录?
System.getProperty(“user.dir”);
42、String x = "abc" 和 String x = new String("abc")有什么区别?
String x = “abc”  x指向的是常量池中的字符串常量对象
String x = new  String(“abc”)  x 指向堆中的字符串对象,但需要使用常量池中的字符串常量为模板。 有可能产生两个对象,一个在常量池中,一个在堆中
43、String和StringBuffer的区别?
Stirng 具有长度不可变的特性,  当对String 作连接、替换、删除时,会产生新对象。
StringBuffer 长度可以变化,当对StringBuffer作操作时,不会产生新对象。
44、如何将字符串转化为基本数据类型?
Int  x = Integer.parseInt(“2”);
45、如何将日期对象进行"2011-12-10"格式化输出?
SimpleDateFormat  s = new SimpleDateFormat(“yyyy-MM-dd”);
S.format(new Date()); 
46、javaBean规范有哪些内容?
1、必须有一个公共的无参的构造方法。
2、属性私有,通过公有的get和set方法,对属性进行设置和访问。
3、实现序列化接口 java.io.Serializable
47、集合的作用是什么?集合框架的API结构是怎样的?
集合可以完成对象的存储、检索、操作、传输。
Collection为父类接口,List和Set是两个子接口,还有一个单独接口Map
实现类:List:ArrayList  Set:HashSet   Map: HashMap
48、List、Set、Map集合各自有什么特点?
List元素可以重复,线性
Set元素不可重复
Map键值对,键不能重复
49、集合元素如何添加?如何删除?如何遍历?
添加:add()  put()(Map)
删除:remove
遍历:For(int  I = 0 ; i<list.size()){ Object obj=list.get(i)}
For(Object  obj: list){}
Sumer s = List.Sumer();
While(s.hasNext()){
Object  obj = s.next();}
50、集合如何进行排序?
Collections.sort(list,new Comparator(){public  int compare(object o1,objecto2){
}}) 如果要指明排序规则要实现java.util.Compable 接口
27、awt和swing有什么区别?
Awt是原始包,组件显示风格依赖于操作系统。跨平台时,显示风格不一致。
Swing是扩展包,组件有自己的独立的风格,跨平台时,显示风格一致。


29、如何进行事件的添加?
1、确定事件源   2、确定监听器(实现监听接口)  3、注册(完成事件源和监听器的联系)
30、流按照输入输出方向分有几种?相对于什么而言?
分为读取流和写入流,相对于内存而言。
31、流按照传输内容分有几种?各自的父类是什么?
分为字节流、字符流、对象流。
字节流父类为(InputStream   OutputStream)
字符流父类为(Reader   Writer)
32、操作流时,如果文件不存在会出现什么情况?如果流不关闭会出现什么情况?
操作流时,如果文件不存在,对于读取流会抛出文件未找到异常,写入流会创建新文件。
如果流操作完毕后不关闭,会浪费资源,写入流有可能写不进数据。
33、如何判断一个文件是否存在?如何创建一个目录?如何知道一个目录中有多少文件?
File对象.exists()    File对象.mkdir()    File对象.listFiles()


57、静态块在什么时候执行?
在类加载时执行,而且只执行一次。
58、什么是关系型数据库?
关系型数据库是以表作为实体,以主键和外键作为表间联系的数据结构。
59、什么是一对一、一对多、多对多?
一对一:一条主表记录对应一条从表记录,同时一条从表记录对应一条主表记录
一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录
多对多:一条主表记录对应多条从表记录,同时一条从表记录也对应多条主表记录。多对多一般由中间表描述这样的关系。。。
60、数据库完整性有哪些?
实体完整性:保证一行数据是有效的。由主键和唯一约束实现的
域完整性:保证一列数据是有效的,由非空、默认值、检查约束实现
引用完整性:保证从表引用的主键是有效的。由外键约束实现
自定义完整性:保证自定义规则。
61、什么是主键,主键有什么特点?
主键是一条记录在整个表中的唯一标示,可以用于主键区分不同的记录
特点:非空和不重复。
62、什么是外键,它和外键约束有什么区别
外键是从表的某个列和主表的主键的依附关系
外键约束。是指强行要求从表的某个咧的值,只能出现主表中主键的值
注意,没有外键约束,不表示没有外键
63、如何添加外键约束。
alter table  从表名 add  constraint  fk_1 foreign key (外键列名) references 主表名(主键名)
64、如果删除主表记录?
由于主表记录有可能有从表记录进行引用,所以如果直接删除主表记录,由于有外键约束存在,可能无法删除
删除主表记录有两种方法:
1、先删除主表记录对应的从表记录,然后,再删除主表
2、将主表记录对应的从表记录的外键设置为null,然后,再删除主表记录
65、增、删、改、查的基本SQL语句
增:insert  into  表名(字段列表) values(值列表)
删:delete from 表名 where  条件
改:update 表名 set 列名=新值 where 条件
查:select * from 表名
66、DELETE和TRUNCATE的区别
区别:delete  删除时,会记录日志,删除的记录可以恢复
         truncate 删除时,不会记录日志,删除的 记录不会恢复,而且只能删除全部数据。优点是速度快。
67、排除重复记录用什么关键字?如何限制查询数据的返回限定行数?
排除重复记录:distinct
限制查询数据的返回限定行数:limi 0,3
68、如何查询null值
不能直接用= 要用is null 或 is not null
69、SQL语句的聚合函数有哪些?
count(统计行数)  sum(统计某个列总和)
avg(统计某个咧平均数)
max(得到某个列的最大值)  min(得到某个列的最小值)
70、在分组语句中,查询的列可以有哪些?
只能是分组列和聚合函数
71、where和having的区别
where执行在分组之前,所以不能跟聚合函数
having 执行在分组之后,是对分组的结果进行筛选,只能跟聚合函数。
72、描述SQL查询语句执行顺序
先执行from 
在执行where
执行分组 group by
执行 select 查询列
执行 having 筛选分组结果
执行order by
73、内连接和外连接区别
内连接只能查询主表和从表有对应记录的数据。
外链接可以查询一个表中的所有数据,无论这些数据是否有对应记录
74、什么是JDBC
jdbc是java连接数据库的一套规范,该规范定义了一系列的接口,有数据库厂家实现。用户根据接口调用实现类,可以屏蔽不同数据库的差异
这样,无论链接什么样的数据库都是一套api
75、JDBC开发流程
1、 加载驱动,建立连接
2、执行SQL语句
3、增、删、改需要更新数据库,查询需要得到结果集,并通过遍历结果集,得到查询数据
4、关闭连接
76、什么是SQL注入
SQL注入是指,如果以拼接字符串的方式进行SQL语句值的注入时,如果值中有非法字符或数据库关键字时,那么会造成SQL语句
执行错误或结果不正确
77、 Statement和PreparedStatement的区别
Statement是PreparedStatement的父类。Statement是以拼接字符串的方式进行SQL语句值的注入。所以当值不同时,jdbc会重新
编译SQL语句。不但效率低,而且容易引起SQL注入。
PreparedStatement提供了占位符的方式设置Sql语句的值,当值不同时,jdbc不会重新编译,而且无论是什么值,都当做字符串处理
不会引起SQL注入。
78、什么是三层架构
三层架构指的是:表现层、业务层、持久层
持久层 :主要目的是完成内存数据和磁盘数据的转换。采用DAO模式。建立实体类,和数据库表的列做映射。也就是那个表对应哪个类
而持久层的目的,就是完成对象数据和关系的转换。
业务层:采用事务脚本模式。将一次请求的所有内容封装成一个方法。保证这个方法中所有的数据库更新操作同时成功,同时失败
避免部分成功部分失败,这样引起数据混乱的情况。
表现层:采用MVC模式。 M:模型,就是实体类。作为数据传输的桥梁。 V:视图,GUI窗体。作为数据的展示平台和数据的来源
C:控制,就是事件。用于调用业务组件的业务方法,控制执行流程
79、 项目开发的流程:
可行性分析-----需求分析----设计----编码----测试----维护。
80、 什么是反射?
在编译并不知道加载哪个类,类的加载是在运行期间进行的。通过反射可以对类进行加载、探知、自省。
81、 如何得到Class对象?如何利用Class对象产生该类的对象?
1、类名.class 2、对象.class  3、class.forname("类的全路径")
class对象.newinstance();调用该类无参构造方法产生对象
82、 线程和进程的区别?
进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存
进程开启越多,内存消耗越严重
线程是进程内部的顺序控制流。多个线程共享一个进程内存空间。线程开启越多,内存消耗不会严重。
83、 创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?
方式:1、继承类Thread类,重写run()
2、实现Runnable接口,实现run()方法
启动线程:调用start()方法
Start()方法是启动线程的方法;会在主线程基础上开启一个子线程,两个线程同时执行。线程启动后会调用run()
而直接调用run(),不会在主线程之外创建新的子线程,是普通方法调用。
84、 线程有几种状态?
新线程:通过new的方式产生一个线程对象
就绪:start()启动。运行run()方法
运行:执行run()方法
睡眠:用线程sleep()方法
等待:用Object的wait()方法
死亡:线程run()方法执行完毕
阻塞:等待IO事件输入,如JOptionPane输入框
挂起:调用yield()方法,线程显示出让CPU控制权
85、 什么是线程优先级?分为几级?
线程优先级:当两个或两个以上的线程同时处于就绪状态。优先级高的线程得到CPU的执行权
优先级共分为10级,数字越大,优先级越高。
86、 什么是线程同步?同步会造成什么结果?
当两个或两个以上的线程同时访问同一个对象时,为了避免数据混乱,同一时间只能允许一个线程进行访问。
另外线程进行等待。
结果:1、数据安全。2、效率低下。
87、 什么是XML?XML声明是怎样的?XML注释是怎样的?
可扩展的的标记语言,以标记和子标记方式来描述对象数据
XML声明一般是XML文档的第一行    <? Xml version="1.0" encoding="UTF-8"?>
注释:<!-- 注释 -->
88、 一个格式良好的XML有哪些规定?
1、必须有声明。
2、有且只有一个根元素。
3、大小写区分。
4、标记成对出现。
5、元素正确嵌套。
6、空标记必须关闭。
7、属性必须加引号。
89、格式良好的XML和有效的XML有什么区别?
如果一个XML文档满足XML的语法规则,那么就是格式良好的XML。
有效的XML除了满足XML规范外,还要满足相应的DTD和Schema定义的元素规则。
有效的XML一定是格式良好的,但格式良好的XML不一定是有效的。
90、DOM和SAX有什么区别?
DOM和SAX是解析XML的两种方式。
DOM解析特点是:基于树状结构的API;整个XML文档必须在内存中解析和存储;客户端应用程序就可以随机访问这些对象;
大型文档则会造成内存紧张
SAX的特点是:SAX提供一种用于解析XML文档的事件驱动模式;
      不必将整个文件加载到内存中,占用的内存小;
      只能读取不能写入;
      文档只能遍历一次,也不能随机访问元素
91、 TCP/IP协议分为几层?
4层:应用层;传输层;网络互联层;网络接口层。
92、 什么是端口?常见端口有哪些?
端口是一个应用程序输入输出的通道,每个应用程序都会有固定的端口。如果两个应用程序端口一样,会造成端口冲突。
常见的端口:tel:23  smtp:25  ftp:21  http:80
93、TCP和UDP的区别是什么?
TCP  较可靠的双向流协议,提供了三次握手机制。如果数据在传输过程中有损耗、有遗失,会要求发送方重新发送。从而保证数据的
    完整性。
UDP  比较不可靠。如果数据在传输中有损耗,不会要求重发,优点是速度快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值