JAVA基础面试大全

33 篇文章 7 订阅

1.短路与(&&)、短路或(||)、逻辑与(&)、逻辑或(|)的区别:

短路与、逻辑与:有假必为假,全真为真

逻辑或、短路或:有真必为真,全假为假

 逻辑或、逻辑与:逻辑中表达式必须全部计算完。

短路与、短路或:短路中表达式不需要计算完。

2.=="和equals的区别

==操作符专门用来比较两个变量的值是否相等

equals方法是用于比较两个独立对象的内容是否相同

3.Java中的访问限定符

public 公共的   同一个项目中可访问

protected 受保护的 同一个包及子类中可访问

默认缺省 默认是 同一个包中可访问

private 私有的 同一个类中可访问

4.面向对象的三大特征:封装,继承,多态

封装:通过访问限定符对类,属性,方法,构造方法的可访问范围进行限定,对外提供必要的访问接口

继承:子类继承父类的属性和方法,

子类可以重写从父类继承来的属性和方法

子类可以对父类的属性和方法进行扩展

多态:多种状态,相同类型的对象,调用相同的方法,得到的结果可能不一样

静态多态:由于重载机制导致的多态

动态多态:由于重写机制导致的多态

 5.方法的重载与重写

重载:在同一个类中定义多个同名不同参数列表的方法,和方法的返回值,访问限定符无关

重写:在子类中定义一个和父类中同名同参数列表通返回值的方法,访问限定符不能小于父类

 6.构造方法与成员方法的区别

构造方法一般是给对象的数据进行初始化,没有返回值。

成员方法一般是实现对类中成员变量的操作,提供某些功能,有返回类型,可以为void类型

7.类,抽象类,接口

 类与抽象类的区别:类可以实例化对象,而抽象类不能实例化对象

  类与接口的区别:

  1. 接口不能实例化对象,类可以实例化对象
  2. 接口没有构造方法,类中有构造方法
  3. 接口中所有方法必须是抽象方法,而类中的方法可以是抽象方法,也可以是普通方法
  4. 接口不能包含成员变量,除了static和final变量
  5. 接口不是被类继承,而是要被类实现
  6. 接口支持多继承

抽象类与接口的区别:

(1)抽象类的方法可以有方法体,就是能实现方法的具体功能,但是接口中方            法不可以

(2)抽象类中成员变量可以是个各类型的,而接口中的成员变量只能是 public  static final类型的

(3)接口中不能含有静态代码块以及静态方法(用static修饰的方法)而抽象        类是可以有静态代码块和静态方法

 (4)一个类只能继承一个抽象类,而一个类可以实现多个接口

 8.this与super的用法

 this:表示本类的对象,可以调用本类的属性和方法

      表示本类的某一个构造方法,用来在构造方法中调用构造方法

super:表示父类的对象,可以用来调用父类的属性和方法

       表示父类的一个构造方法,用来在子类的构造方法中调用父类的构造方法

9.Java中的异常

错误:一旦发生,无可挽回

异常:可预见的,如果发生,可以捕获处理

Exception的分类:

   运行时异常:可以不处理

   编译时异常:必须处理

异常的处理方式:

   try{}catch(){}

try{}catch(){}finally{}

  try{}catch(){}catch(){}catch(){}

throws Exception

  final,finally

 10.JDK的安装配置

JDK环境组成:

 JRE: java程序运行环境

 JDK:Java开发工具包

版本:

 JavaME:java微型开发(嵌入式开发、移动开发)

 JavaSE:java应用程序开发(PC端开发)  --QQ、迅雷...  --GUI开发

 JavaEE:Java企业级开发(服务器端开发WEB开发)

软件:计算机中一组指令的集合。

开发:实现计算机指令传输的一种方式

程序:完成一组指令实现的过程,并且有顺序执行。

计算机中数据

数据:计算机中信息的一种表示,同时可以实现信息的传递。成为程序的核心

要求:必须由计算机程序实现管控,否则属于无效数据

存储媒介

磁盘:数据以永久性方式进行存储,包括(硬盘、U盘、软盘、光盘..)

内存:程序用于临时性进行数据存储的容器。

计算机单位

计算机中所有的数据都是按位进行存储,因为最早的计算机决定数据以0和1的方式存在。

0\1由世界上第一台计算机所产生,该计算机称之为图灵计算机

内存结构:

 内存以4个区域为主:  堆 、栈 、常量池、静态域

 堆:主要由计算机实现控制,该区域中的内容主要以实体存在。

 栈:主要由程序员实现控制,该区域中的内容主要以定义形式存在。

常量池:用于存储程序中所存在的常量(不可改变的数量--12  啊  a)数据。

 静态域:用于存储程序中所产生的静态(static)数据

 11.java中的基本数据类型

 byte     8bit/1字节       -128 ~ 127

 short    16bit/2字节      -32768 ~ 32767

 int        32bit/4字节     -21亿 ~ 21亿

 long      64bit/8字节     -920亿亿~920亿亿

 float      32bit/4字节     保留8位有效数字.最后一位不精确  3.4E38

Double   64bit/8字节     保留16位有效数字,最后一位不精确 1.7E308

 char      16bit/2字节      0~65535  '\u0000'~'\uFFFF'

boolean  1bit

包装类作用:为基本数据类型所提供的对象类型。

boolean类型占用多大的内存空间?

  1bit

当第一次声明一个boolean类型的变量的时候,要开辟多大的内存空间?

1字节

 12.Java中常见的数据结构

  长度可变数组      ArrayList  Vector

  哈希散列集         HashSet  HashMap

  树集                TreeSet TreeMap

  哈希表            HashTable

  堆栈               Stack

  链表               LinkedList  BlockingLinkedList

  队列               PriorityQueue   BlockingQueue

13.数组的排序

   1.所有元素的存放地址是连续的

   2.长度是固定不变的

   3.可以通过下标操作每一个元素

使用场景:查询操作比较频繁的时候一般使用数组  

数组的排序:

         冒泡  选择    插入   希尔  堆排序 桶排序 二分排序   快排 等

1.冒泡:相邻的两个元素依次比较,小的往前冒[往下标小的方向]

        比较一次就交换一次

2.选择:先默认一个下标的值最小,然后依次和该元素比较,记录比较小的元素的下标位置, 每一轮都找出一个当前的最小值的下标位置,再进行交换

3.插入:将数组分成左右两部分,左边是一个有序的,右边是等待排序的。 第一次左边只有一个元素,依次将右边的元素插入到左边的合适的位置

 14.^ 异或 按照二进制位进行运算

相同位值相同则为0 ,不相同则为1。

   6^10

    0000 0110

  ^0000 1010

  -------------

  0000 1100          

 12^6

 0000 1100        

 0000 0110

  ----------

 0000 1010    

  12^10

0000 1100

0000 1010

---------

0000 0110

15.Java中的数组类 Arrays

 sort(int[])                            快速排序

parallelSort(int[])                 归并排序

binarySearch(int[],int)         使用二分搜索来检索数据,前提要是一个经过了排序的数组

copyOf()                              复制数组

16.集合框架中的Collections

Collection 表示一组对象

List                       有序的 可重复的

ArrayList               长度可变数组  异步操作

Vector                  长度可变数组  同步操作

Stack                    堆栈  [LIFO]

LinkedList             链表

Set                        不包含重复元素

HashSet                基于Hash表的实现[实际上是HashMap]  无序

TreeSet               基于红黑树的实现[实际上时TreeMap]    元素按照自然顺                                                          序或者指定的比较器排序

Queue                  通常但并非一定按照先进先出的方式排列元素

PriorityQueue      优先级队列 元素按照自然顺序或者指定的比较器排序

LinkedBlockingQueue 先进先出[FIFO]的队列

LinkedList              是一个特殊的类,它既可以作为一个链表,还可以作为堆栈,队列和双                                   端队列使用

Map  键值对:

HashMap             基于哈希表的实现

TreeMap               基于红黑树[自平衡二叉排序树]的实现

HashTable                  哈希表的实现

数据结构可以看做是一个存储数据的容器,不同的数据结构区别在于数据的存储方式以及数据之间的关系不一样

每一种数据结构都要提供增删改查的基本操作。

17.链式结构

链式结构是由很多个结点对象组成,结点对象中存放了数据和对下一个结点对象的引用。

头结点:没有其它结点引用该结点

尾结点:没有引用其它结点

 18.哈希结构(HashMap)

HashMap是如何存储数据的:

 HashMap本质上是一个存放链表的数组[1.7及以下]

 HashMap本质上是一个存放树形结构的数组[1.8及以上]

 HashMap的特点:Key不可以重复,每个key对应一个值,值可以重复的, 遍历的时候不保证键值对的顺序

HashSet:其本质上就是一个HashMap

 19.TreeSet

TreeSet:基于TreeMap的实现

TreeMap:基于红黑树[自平衡二叉查找树],按照中序遍历的方式是有个有序的

 key不能重复,key按照自然顺序升序排序,

如果key是一个对象,按照指定的比较器来排序, 

对象默认是不能比较大小的,如果要比较对象的大小,该类就必须要实现Comparable接口

20.String和StringBuffer的区别

String表示在创建一个字符串后,所有对字符串操作的行为都是使用副本的方式

而StringBuffer所创建的字符串存储在缓冲区中,所有的操作直接对原始字符串进行操作 

 21.List、Set、Map区别

List集合属于一种有序、可重复的集合,在该集合中存在ArrayList、LinkedList、Vector等实现类,

Set集合属于一种无序、不可重复的集合、包含HashSet等实现类,

Map集合属于一种key和value类型的集合,其中keyvalue以Entry对象形式存放在Map集中。Key不可重复,value可以重复,keyvalue 都是无序状态。

22.list与Set区别

1.List,Set都是继承自Collection接口

2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)

3.Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值