Java理论基础&&个别常见面试题基础^^

JAVA理论基础

java语言的特点是什么?

   面向对象,跨平台性,安全性,垃圾回收

机制

1、java虚拟机机制:
jvm是一个虚拟的计算机,负责执行指令,管理数据内存,寄存器
对于不同的平台有不同的虚拟机
java虚拟机屏蔽了底层运行平台的差别,实现了‘一次编译,到处运行’。
在这里插入图片描述

2、垃圾回收(收集)机制
不再使用的 内存空间 应该被 回收
1在c/c++中由程序员来回收无用内存
2java语言消除了程序员回收的责任,它提供了一种系统级线程跟踪存储空间的分配情况,并在JVM空闲时,检查并释放可被释放的存储空间。
3在java中,垃圾回收在程序运行时自动进行,程序员无法进行干预。
*java程序还会出现内存泄漏和内存溢出问题!

JDK与JRE分别是什么?

   JDK为Java开发工具包,包括编译环境,运行环境,调试环境和基础类库,JDK包含JRE

   JRE为Java运行环境,包括虚拟机,核心类库和链接文件。

Java基本数据类型有哪些?
1 :逻辑型 boolean;
2:字节型 byte;
3:文本型 char;
4:数据型 { 整数型: short;int;long;
浮点型 :float;double;}
2.&和&&有什么区别?
&和&&的区别是,&会执行两边,不管第一个是否成立
&&只会执行一边,如果第一个条件为假,则不会走第二个条件
3继承类和实现接口分别怎么做?

   使用extends关键字继承类

   使用implements关键字实现接口

4什么是继承?
继承是从已有的类中派生出新类,新的类能吸收已有类的数据属性和方法,并能扩展新的能力。
继承是面向对象的三大特征之一。(三大特征:封装,继承,多态。)
5.继承的好处有哪些?
1. 继承提高了软件的复用性。
2. 继承简化了人们对事物的认识和描述,能清晰体现类间的层次结构关系。
3. 继承降低了程序的耦合性,增加了程序的易维护性
6什么是多态?
多态是指两个或多个属于不同类的对象,对于同一个方法调用作出不同响应的方式。
7如何实现多态?
1. 父类 对象名 = new 子类 ();
2. 调用重写方法,即可产生多态
8什么是接口?
接口是一种特殊的抽象类,接口里有很多抽象方法。接口关键字:interface.
结构: public interface 接口名{ 抽象方法 }
9为什么要使用接口?
接口可以精简程序结构,免除重复定义,提出设计规范。
JAVA只支持单继承,可以实现多个接口。
10.什么是I0流
流(Stream):源于UNIX中管道(pipe)的概念。 在UNIX中,管道是一条不间断的字节流,
用来实现程序或进程间的通信,或读写外围设备、外部文件等。

11. I:输入流指的是将数据以字符或字节形式从外部媒介读取到内存中。
O :输出流指的是将内存中的数据写入外部媒介。

12. IO流的分类:字节流和字符流。
字节流包含:InputStream和OutputStream
字符流包括:Reader和Writer

13.字节流的概念:
字节流是由字节组成的,字节流是最基本的,所有的InputStream和OutputStream的子类都是字节流,
主要用在处理二进制数据,它是按字节来处理的。

14.字符流的概念:(附代码)
字符流是由字符组成的,Java里字符由两个字节组成,所有的Reader和Writer的子类都是字符流,主要用在处理文本内容或特定字符

15.字节流和字符流的区别:
1. 一个是按字节读写,一个是按字符。
2. 需要对内容按行处理,一般会选择字符流。
3. 只是读写文件和文件内容无关(下载,复制等),一般选择字节流。

借鉴于 未尽686

16、ArrayList和Vector的区别

   ArrayList和Vector都是集合框架中的类,都实现了List接口,结构相似

   ArrayList为JDK1.2效率高,线程不安全

   Vector为JDK1.0效率低,线程安全

17、类的修饰符能不能是private、static、protected?

   可以使用。但这种类只能是内部类

   private为私有类,不能被外部访问

   protected为受保护类,只能同包类和非同包子类访问

   static为静态类,该类不需创建对象

18、IO流操作的步骤是怎么样的?

   创建流,操作流,关闭流

   创建目录对象,在目录对象上建立IO流,传输数据后IO流关闭

19、如何启动线程,它直接调用run()方法有什么区别?

调用start()方法产生子线程,
直接调用run方法不产生子线程,而是常规的对象方法调用.

20、线程同步化会带什么样的结果?

   保证被操作的数据源安全,但降低了程序的效率

21、什么是线程安全?

   线程安全即是线程同步,
   在同时访问数据时通过同步保证数据的正确性

22、String和StringBuffer的区别?

   String保存在静态区,长度不可改变,
   StringBuffer保存在堆中,长度可以改变

23、创建一个线程有几种方法?

   继承Thread类或实现runnable接口

24、项目开发的流程是怎么样的?

   需求分析,概要设计,具体设计,编码,程序测试,,部署

25 、集合和数组的区别。

   集合中可以放不同类型的对象,集合中结构多样,
   可以无序也可以有序.长度可以改变

   数组为有序且内存地址连续,只能保存同一种数据,
   长度不能改变

26
JVM是什么?它的作用是什么?它和java运行环境有什么区别?

   java虚拟机,类加载,字节码校验,解析器,交给OS执行

   JRE包括JVM,还包括核心类库,jvm,链接文件

27、Collection与Collections的区别?

   Collection是集合接口,Collections是集合的算法类

28、面向对象的特征

   继承 封装 多态

29、对对象进行比较怎么做?为什么不用“==”?

   equals方法
   ==是比较对象内存地址的值
   equals比较内容

30、什么时候用继承Thread?什么时候实现Runnable接口?

   当只有一个类继承时使用继承Thread,
   当已经继承了其他类,同时要实现多线程则使用Runnable接口

31、Map,list与set的区别?里面常用的类有哪些?

   Map是按照键值对的方式保存,主要有HashMap,HashTable,TreeMap

   List是按照顺序存放,主要有ArrayList,LinkedList,Vector

   set是不按照顺序存放,主要有HashSet,TreeSet

32、举出常用的list类。哪种情况用哪种好?

   ArrayList:按照顺序,在末尾插入或需要遍历时使用

   LinkedList:链表结构,在中间或前端插入数据使用

33、重写与重载的区别?参数一样,返回类型不一样 是重载吗?

   重写:父类和子类之间,
   访问修饰符大于等于父类,返回类型相同,方法名和参数列表相同

   重载:在同一个类中,
   访问修饰符可不相同,返回类型可不相同,方法名相同,参数列表不同

   不是

34、集合里的接口有哪些?请你创建一个List类的实例。

   Collection,List,Set,Map

   List list = new ArrayList()

35、java安全性体现在什么地方?

   垃圾回收机制   异常处理

36、谈集合遍历的方式

   使用Iterator遍历
   使用for-each结构(JDK1.5) 
   for 循环(List)

37、传输层协议TCP和UDP说法

   TCP协议是一种可靠的网络通信协议。

   TCP协议可以进行拥塞控制和流量控制。

   UDP协议是一种不可靠的网络通信协议。

38、什么是反射?

   在编译时并不知道应该加载哪个类,
   类的加载是运行时进行的。
   反射具有对类本身信息进行探知和自审的功能。

39、用接口有什么好处?

   达到系统的分离,提高系统的灵活性
   ,使用接口规定公共的行为

40、线程和进程的区别是什么?

   系统中程序的运行对应一个进程,每个进程都会消耗内存。
   一个进程包括多个线程

41、在线程中wait与sleep的区别?

   wait在同步中使用,为Object类的方法自动释放锁,且需要其他程序调用notify唤醒

   sleep任何地方使用,为Thread类的方法,不会释放锁,休眠一定时间后自动唤醒

42、什么是封装?封装的好处是什么?

   封装是将对象所具有的属性和方法作为一个整体,
   封装第一是信息的集合。第二信息的隐藏

43、什么是线程同步?

   当两个以上的线程访问同一个资源时,为了保护资源,
   避免数据混乱,  

44、说一下iterator。

   迭代器,Iterator作为指针的工作原理,
   在集合中的元素之间进行跳动达到遍历集合的作用

45、谈谈HashMap与Hashtable的区别。

   HashMap为JDK1.2,允许空键和空值,线程不安全,效率高

   Hashtable为JDK1.0,不允许空键和空值,线程安全,效率低

46、接口与抽象类的区别?

   接口关键字interface,只能由静态常量,抽象方法,
   无构造方法,可以多重实现

   抽象类关键字abstract,可以有实现方法和抽象方法,
   静态常量和属性,有构造方法,不能产生对象,只能单根继承

47、socket和serverSocket的区别。

   socket为客户端请求的数据对象
   ServerSocket为服务器端接收数据对象

封装性:
在这里插入图片描述

在这里插入图片描述
javaBean
在这里插入图片描述
继承:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
equals与==:
在这里插入图片描述
在这里插入图片描述
包装类:
在这里插入图片描述
包装类之间的转化:
在这里插入图片描述
代码块:
在这里插入图片描述
抽象类:
在这里插入图片描述
接口的概述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接口与抽象类的异同点
相同点:
1两者都不能实例化
2接口的实现类与抽象类的子类,只有实现了接口与抽象类中的方法才能实例化
不同点:
1
接口中定义的成员变量默认是public static final,只能够有静态的不能被修改的数据成员,而且,必须赋初值,所有的方法都是public abstract的,而且只能被这两个关键字修饰;而抽象类可以有自己的数据成员变量,也可以有非抽象的成员方法
2
.接口需要实现(implements),但是抽象类需要继承(extends)。一个类可以实现多个接口但一个类只能继承一个抽象类,因此使用接口可以间接的达到多重继承的目的
3.接口强调特定功能的实现,其设计理念是“has a”关系,抽象类强调所属关系,is a 关系。

异常:
在这里插入图片描述
在这里插入图片描述
异常处理:
在这里插入图片描述
JAVA基础图解:在这里插入图片描述
程序,进程,线程:
在这里插入图片描述
使用多线程的优点:
在这里插入图片描述
Runnable与Thread:
在这里插入图片描述
线程的分类:
在这里插入图片描述
在这里插入图片描述
线程的生命周期:
在这里插入图片描述
解决线程同步问题:
在这里插入图片描述
synchronized与Lock的异同点
在这里插入图片描述
相同:二者都可以解决线程安全问题
不同:synchronized机制在执行完相应的同步代码后,自动释放锁(同步监视器)
Lock机制则需要手动的启动同步Lock(),同时结束也需要手动unLock().
在这里插入图片描述
sleep()与wait()的区别:
相同点:一旦执行这两个方法,就会进入线程阻塞状态
不同的:1声明的位置不同,sleep在Thread类中,而wait在object类中
2 调用的要求不同,sleep()在任何时候都可以被调用。而wait方法只能在同步代码块与同步方法中调用
3在同步代码块(方法)中,sleep不会释放锁(同步监视器)。wait()会释放同步监视器()

JDK5.0之后新增的创建线程方式:
在这里插入图片描述
Callable/Runnable:
call()可以有返回值,可以抛出异常, 支持泛型
在这里插入图片描述
线程池相关API:
在这里插入图片描述
String 特性:
在这里插入图片描述
注解的概述:
在这里插入图片描述
在这里插入图片描述
JDK提供的四种元注解:
在这里插入图片描述
在这里插入图片描述
数组与集合的比较:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ArrayList,Linkedlist,Vector的异同点:
在这里插入图片描述

同:都实现了List接口,存储数据特点相同,可重复的、有序的
异:如上图片。在这里插入图片描述

流的分类:
在这里插入图片描述
IO流体系:
在这里插入图片描述

网络编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

反射:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

JAVA8的新特性:

在这里插入图片描述
在这里插入图片描述
StreamAPI
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1编写模块的数据库表
2编写模块的JAVABean
3编写模块的DAO和测试DAO
4编写模块的Service和测试
5编写模块的Web层和页面联调测试

猜你喜欢

转载自blog.csdn.net/satoshiCC/article/details/105180330