总结回顾Java基础知识:

总结回顾Java基础知识:

Javase基础知识:

一.抽象类和接口的区别

相同点:

1.抽象类和接口都不能直接被实例化,需要子类继承(实现)方式重写方法实例化

2.都可以拥有抽象方法

不同点:

1.关键字

2.属性:抽象类可以有静态变量,常量和成员变量以及各种权限符,接口只能有常量默认只能public static final修饰

3.抽向类可以有普通方法,接口只能是抽象方法(默认被public abstract修饰)

4.抽象类可以有构造方法,接口不能有

5.一个类可以继承一个父类,一个接口可以继承多个父接口

二.Java基本数据类型和引用数据类型

三.java优点缺点,为啥选java

1.简单性

没有指针,代码清晰明了,语言规范完整

2.面向对象

一切接对象,不同于面向过程,将问题拆解成对象,通过对象交互关联完成任务,简单优雅,缩短项目开发时间,在此之上,有继承,多态,封装等特性。

3.跨平台

jvm特性一次编译到处运行,.java--->编译器编译---》.class文件--->虚拟机解释到各个平台

4.安全性

异常处理,未经授权读写文件,sql注入问题,访问进程越界MMU(虚拟地址到物理地址的映射)

5.支持多线程

内置线程操作函数

6.健壮性:(意料之外)

强类型机制,异常处理,安全检查机制,

四.fianl关键字

final可以修饰类,变量,方法。

类:

最终类该类不能被继承

方法:

最终方法,该方法不能被重写

变量:

最终变量:基本类型值不可变,引用类型地址不可变,值可变

可以修饰成员变量也可以修饰局部变量,形参。final修饰成员变量一定要显示制定初始值(或者通过构造方法)

五.static关键字(描述修饰什么,重要规则)
static除了不能访问构造器,像内部类,代码快,方法,内部类,成员变量都可以修饰。static修饰的成员成为类成员,类成员属于整个类,不属于单个对象。规则:类成员不能访问实力成员,作用域,类成员作用于大于实例,随着整个类加载,很容易导致类成员加载完成,实例还未初始化引发大量错误。所以及时没有创建对象也可以访问staic修饰的变量(类加载完成)静态方法不能访问this,this是随对象创建而创建。总结:静态可以访问静态,静态不能访问非静态需要先创建对象,非可访问静态。static修饰类叫静态内部类,只能存在于内部类,通过外部类名.调用,只能访问外部静态成员。修饰方法叫静态方法。

六.String类,new和字符串直接赋值: 

String被final修饰不能被继承,创建字符串有两种方式,String str="1abc"是将字符串直接量,还可以使用new关键字,区别是当字符串直接量创建字符串会在jvm中用常量池管理,new时候先将字符放在常量池中,然后调用String构造器创建新对象,将对象保存在堆中

七.String,StringBuffer,StringBuilder区别

1.String,StringBuffer是线程安全的,StringBuilder是线程不安全的,单线程推荐用性能高。

2.String是一个不可变类,StringBuffe对象代表一个字符序列可白的字符串,append(),insert(),reverse(),setCharAt()...来改变序列,也可以通过toString转化成String,

3.StringBuilder和Buffer都继承自AbstractSb

八.==和equals区别:

1.都是java判断俩个变量是否相同

2.==    基本数据类型,数值是否相同

          引用数据类型表示同一个引用(内存地址)

3.equls是Object是方法,用来判断是不是同一个对象,但是通常业务场景需要重写equlas方法来比较引用的内容是否相同

九.为啥重写equals()就是重写hashcode();

1.hashcode用途(获取哈希嘛),equals用途(判断俩个对象是否相同)

2.约定:码相同不一定就是一个对象,同一个对象hashcode一定相同

2.实际业务需求,比较不同对象的内容是否相同,重写equals要满足约定就要重写Hashcode

十.java异常机制

异常处理,try catch finally  谈谈finally

抛出异常 throw throws 谈谈区别

异常跟踪栈

多线程篇:

1.请你理解多线程:

得分点:进程和线程之间的关系,为啥使用多线程

1.线程是系统调度的基本单位,进程是资源分配的基本单位

2.进程包含线程,一个进程可以由多个线程构成,每个线程独立的计数器,堆栈,局部变量

3.线程可以说是轻量的进程(创建更快,销毁更快,调度更快)

4.同一个进程多个线程之间使用同一份内存/文件资源(PCB),进程和进程之间是独立的PCB  

得分点2: 使用多线程的优点:

 更多的CPU核心,加快了计算机处理器的效率,并行

加快响应时间

2.线程创建的方式

可以答答runnable和Callable接口使用的区别(返回值)Funturetask

3.线程的状态:

 加分回答:就绪和运行状态可以合并为可运行状态(Rnnable)

4.wait()和sleep()区别

类型不同:wait是Object类里面实例方法,sleep是Thread里面的静态方法,调用进入waiting

对锁的依赖:

唤醒条件

5.怎么保证线程安全

原子类 JUC里面的automic提供了很多基于cas实现的原子类,例如里面automicinterger类里面就有getAndIncrement(count++),incremnmnetandget(count--)

volatile 保证内存可见性问题(编译器优化导致)多次读取一次修改,由于频繁的读取,就从内存中只读取一次,这其中另一个线程可能就修改了值

加分:JUC下面的Countdounlatch:允许一个线程等待其他线程完成操作,用一个计数器设置选手数量,调用countdownlatch()撞线一次--,完成任务调用await()等待其他

信号量:访问特定资源的线程数量(p acquare,v release操作)

6.谈谈线程同步方式

sychronize:作用域普通方法,静态方法,代码快,注意所力度,基于jvm实现,解释锁特性策略

lock,trylock unlock 及时释放锁资源,true,false参数公平或者非公平,采用Cas+valatile,基于AQS实现。读写锁

7.谈谈线程通信方式:

线程通信指的是多个线程通过共享内存实现消息传递,协调同步,方法执行

等待通知机制wait notify

信号量

CyclicBarrier栅栏机制

锁机制Loak和Conation实现同步和互斥,await(),和siagnalAll()类似于wait,notify,但是可以指定某个线程的唤醒

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值