java面试基本问题_java基础常见面试问题

1.什么是封装

封装是把对象的所有组成部分组合在一起,并将数据隐藏起来.

2.Java所有数据类型的父类是否都是Object,包括数组.

基本数据类型不是.数组的父类是Object.

3.什么时候设计抽象方法

当确定一个类有某个行为(方法),但是不确定这个行为(方法)的具体实现时,就设计为抽象方法

4.什么是动态多态

在编译时不确定效果,要在运行时根据绑定的对象不同有不同的效果,技术实现:动态绑定和方法重写

5.子查询和join查询的区别

子查询:在一个查询里面嵌套另一个查询

join

将多张表横向连接为一整张表on 匹配条件,以去除无效行

6.Java

I/O操作采用什么模型 三个重要点

流模型。建立管道,确定目标,确定输入输出

7.什么是对象序列化

将对象转化成字节的过程成为对象序列化

8.什么是JavaBean

JavaBean是一种可重用组件,设置数据的属性和行为

,此类必须是具体的和公共的,必须有公共无参构造,必须设置set/get方法,应该实现序列化接口.

10.什么是笛卡儿积

两个表中所有行的所有组合.

11.什么时候用Date,什么时候用Calender

12.String/StringBuilder/StringBuffer

String:常量不可变,每次重新赋值都会产生新的String对象.

StringBuilder:值可变.非线程安全.

StringBuffer: 值可变线程安全.

13.什么是继承

继承是从已有的类中派生出新的类,子类继承了父有类的数据属性和行为,并能扩展新的能力。

14.接口可以继承接口吗

怎么做

可以,使用extends继承.

15.&&/&区别

&

不短路,不管前面的条件是否正确,后面都执行

&&

短路,前面条件正确时,才执行后面,效率更高

16.PrepareStatement/Statement的区别

PrepareStatement可以防止SQL注入,但是效率低;

Statement有SQL注入的安全隐患,效率高

17.为什么提供包装类

解决不同的基本数据类型之间不能互相转换的问题.

18.什么属性使用Static修饰

静态属性

19.数据库中1对1,如何设计表?

两个表中,表1的外键只关联表2的主键.

20.获取当前时间的毫秒数.

System.currentTimeMillis();

21.字符串正则表达式用哪个方法.

Matches

1.HashSet 判断是否相同的方法?

1:调用.equals方法必须返回true; 2:两个对象的Hashcode必须一样)

2.符号常量设计的作用?

增强程序的可读性,减少维护程序的工作量。

3.split方法的作用?

拆分字符串,支持正则表达式

4.什么是事务?

由几个步骤组成的业务操作,要么全部成功,要么全部失败

5.如何获取数据库连接?

协议,ip地址,端口号,数据库名

6.ArrayList 与 LinkedList

的区别?

ArrayList底层以数组方式存放,优势在于查找快,从尾部添加方便;LinkedList底层以链表形式存放,且为双向链表,内存利用率高,往中间增删元素更好

7.项目中最难的是哪部分?

空指针异常

8.final

finally 与finalize的区别?

final:声明属性,方法和类,分别表示属性不可变,方法补课覆盖,类不可继承;

finally:是异常处理语句结构的一部分,表示总是执行;

finalize:是object类的一个方法,在垃圾回收执行的时候会调用被回收对象的此方法。

9.如何判断一个对象是否是一个类的实例?

instance

of

10.如何获取一个20-30的随机数?

Math.random

11.为什么String要用Equals方法比较?

String

是引用数据类型,.equals判断内容

12.构造方法的语法?

访问修饰符+方法名

13.main方法怎么写?

访问修饰符+可选修饰符+返回类型+方法名+形参列表

14.main方法里哪些可以变化?

public

static 的位置可以互换 【】后面的名称可以变

15.如何的数组,字符串,集合的长度?

数组:数组名.length得到属性;

字符串.length()得到的是属性; 集合.size();得到集合长度。

22.匿名内部类命名规则

外部类名$数字,数字表示这是这个外部类的第几个匿名内部类

23.java垃圾回收

(1)发现无用信息对象。

(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。 使用System.gc()可以不管JVM使用的是哪一种垃圾回收的算法,都可以请求Java的垃圾回收。1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用。因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但以下条件除外。2)Java堆内存不足时,GC会被调用。也可以调用object的finalize()方法

24.什么时候设计抽象类,什么时候设计接口

如果一个抽象方法是这个类与生俱来的,没有这个方法则这个类就变得不完整的时候我们就使用抽象类,反之这个抽象方法是后天添加的则用接口

25.Java数据什么类型在内存中的存放位置

(1)在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;

(2)堆内存用来存放由new创建的对象和数组以及对象的实例变量。

还有数据段和代码段

26.JDK/JRE

JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。

JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH。

27.Mysql/navicate

Mysql:数据库管理系统RDBMS.

Navicate:图形界面服务器

28.List/Set/Map

首先list与set都继承于Collection,list序列的形式存储元素。所以取出来的顺序可能和放入顺序不同。set的特点是无法存放重复的元素。map一个映射不能包含重复的键;每个键最多只能映射一个值。以键值对存放数据以上三个都是接口且不能被实例化。

29.try块后面接什么块

Try中写可能出现异常的代码,后面可以接catch或者finally

30.产生对象的方式

New、对象的反序列化、反射

31.三层架构

持久层用来固化数据,如常说的DAO层,操作数据库将数据入库,和从数据库中读取修改数据等

业务层用来实现整体的业务逻辑 如 前台获得了数据,逻辑层去解析这些数据,效验这些数据等操作

表现层很好解释 你现在看到的网页 一些界面 都属于表现层的东西可以用一些Html,jsp,Swing来实现

32、ResultSet的作用

ResultSet:完成了查询结果的存储功能,而且只能读去一次,不能够来回的滚动读取。

返回的是一个结果集,可以通过方法next()逐一获取从数据库取到的值,以表的方式进行存储。

33、8种基本数据类型

byte、short、int、long、char、double、float、boolean

34、一个类中能定义什么

属性、构造、方法、初始化块

35、Serializable接口是启用其序列化功能的接口

36、内部比较器和外部比较器区别

Comparable:内部比较器,写在类的内部

Comparator

:外部比较器,是定义在类的外部的

同时存在遵循外部比较器

37、object的8个方法

clone()创建并返回此对象的一个副本。equals(Object obj)指示其他某个对象是否与此对象“相等”。finalize()当器确定不存在对该对象的更多引用时,由对象的器调用此方法。getClass()返回此

Object 的运行时类,反射。hashCode()返回该对象的值。notify()唤醒在此对象监视器上等待的单个线程。toString()返回该对象的字符串表示。wait()在其他线程调用此对象的

notify() 方法或 notifyAll()

方法前,导致当前线程等待。

1.throws和throw的区别:

1.throws

写在方法的后边,throw写在方法内部;

2.throws

后面可以跟多个异常,throw只有一个;

3.throws

只是给出抛异常的可能,而throw是必须抛出异常,如:throw (异常对象);

public static void

main(String[] args){

String s =

"abc";

if(s.equals(abc){

throw new NumberFormatException();

}

}

出现异常:

Exception in

thread "main" java.lang.NumberFormatException

at

ExceptionTest.main(ExceptionTest.java:67

public static void

function() throws NumberFormatException{

String s =

"abc";

System.out.println(Double.parseDouble(s));

}

public static void

main(String[] args){

try{

function();

}catch(NumberFormatException e){

System.out.println("转换有误!");

}

}

2.异常处理方法:

try

catch;

throw;

3.错误和异常的问题:

错误的父类是Error

异常的父类是Exception

error表示系统的错误和程序不用处理的异常,是java运行环境和内部系统的问题错误;

exception表示需要捕捉或者程序进行处理的异常,是程序必须处理的。

4.包装类的作用:

1.基本数据类型之间的是不能自动转换的,强制转换又会出问题,利用包装类相互转换;

2.当需要Object对象的时候,基本数据类型是不能传递的。

5.如何把字符串1转化成整数1:

int a =

Integer.parse(str);

6.项目中遇到哪些困难:

传参。

7.监听器匿名内部类的优势在哪:

内部类在定义后就可以用;

用一次就消失,内存占用小;

代码更容易被理解。

8.获取数据库连接的步骤:

1.加载驱动;

Class.forName(con.mysql.jdbc.Driver);

2.书写连接URL定义了连接数据库时的协议、子协议、数据源标识。书写形式:协议:子协议:数据源标识;

3.用Connection 连接上URL,数据库用户名和密码;

4.执行SQL语句;

5.关闭对象。

9.项目最难的地方:

三层架构不熟练,太绕了。

10.下拉菜单中显示的是宿舍地址,但得到的却是宿舍对象,该功能是如何实现的?

答:放入下拉菜单中的是一个宿舍对象的list集合,所以通常情况下,在下拉菜单中要显示每一个对象,系统会默认调用toString方法,如果在该阶段不进行操作,则会显示每个对象的引用在下拉菜单中,为了让用户能看懂每个对象的意义,为了便于使用,所以重写了该类的toString方法,使其在调用时返回地址属性,从而达到了放入下拉菜单中的是对象的集合,而显示的却是每个对象的地址属性。

11.三层架构是否满足和体现了开闭原则:

答:三层架构满足和体现了开闭原则;表面层调用的是业务层的接口的方法,业务层调用的是持久层的接口的方法,而具体的实现则是在对应的实现类中进行操作的,所以满足了开闭原则的尽量少的修改已有代码,使用扩展代码来实现对应的功能。

12.什么是对象的反序列化:

对象的反序列话是指的将一个二进制数据通过I/O流转换为对象;该对象与属性都要实现serializable接口。

2.接口的属性与方法的要求?

通过接口可以实现不同层次、不同体系对象的共同属性;

接口中的属性的默认是public static

final 、方法是public

abstract;

Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。Java接口不能有构造函数,接口的方法可以用Public也可以不用,不能用protect或private

3.如何让两个类都被一个类具备?

答:把这个对象作为那2个类的方法的参数。

4.

java里面有几种注释?

三种,分别是:单行注释,多行注释,文档注释

5.java之父是谁?

高撕林

6.java的logo与吉祥物是什么?

logo

是一杯冒烟的咖啡,吉祥物是咖啡豆

7.8种基本数据类型的长度是多少?

数据类型

byte

short

int

long

float

double

char

boolean

字节

1

2

4

8

4

8

2

不确定

8.java的命名规范

硬规则:

①、由数字、字母、下划线、美元符号组成

②、数字不能开头

③、区分大小写

④、不能是关键字

潜规则:见名知义

类名首字母大写,每个单词首字母大写

变量名、方法名、形参名小写,多个单词,后面单词首字母大写

常量名所有字母大写,多个单词用下划线隔开

9.交换两个变量的值的三种方法

、中间变量

int x = 10;

int y = 20;

int temp = x;

x = y;

y = temp;

、数值相加减交换

int x = 10;

int y = 20;

x = x + y;

y = x - y;

x = x - y;

、位移运算交换

int x = 10;

int y = 20;

x = x ^ y;

y = x ^ y;

x = x ^ y;

10.数组下标为什么从0开始

跟偏移量有关

11.

java语言特点?

答:简单,面向对象,可移值,多线程,动态,,结构中立,分布式,高性能,健壮,安全。

12.

java安全性体现在哪儿?

答:(1)java规避了指针,无法对内存地址直接进行操作,new对象时只能拿到引用(内存地址对应的哈希值),而不能直接拿到内存地址;

java垃圾回收是由虚拟机调用,程序猿无法控制,避免垃圾累积,增强了安全性;C++采用析构函数回收垃圾,程序猿可以进行控制

13.打jar包时,底层调用的什么命令?

答:jar.exe

14.能不能书写一个单例?

public class

Singleton{

private static Singleton s;

private Singleton(){

}

public static Singleton getInstance(){

if(s == null){

synchronized(Singleton.class){

if(s == null){

s = new Singleton();

}

}

}

return s;

}

}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值