Java基础回顾篇以及面试要点!

Java基础很重要,他会让你在写项目的时候避免坑以及提高代码质量等等,本人忽视了这点,所以这次特也写篇博客牢固Java知识要点,好了,话不多说,开始吧!

1. Java编译和运行过程
  • 源文件由编译器编译成字节码文件(ByteCode)
  • 字节码有Java虚拟机解释运行
2. Java面向对象四个基本特性
  • 抽象:把具有相同属性和行为的对象被抽象成类
  • 封装:把对象封装成高度自治和相对封闭的个体,对象属性由自己读取和改变
  • 继承:把已经存在的类已定义的内容作为自己的,并可加入新内容或修改原来的方法
  • 多态:不同类的对象对同一消息做出不同反应
3. Java中对象的生命周期
  • 创建阶段–>应用阶段–>不可见阶段–>不可达阶段–>收集阶段–>终结阶段–>对象空间重新分配阶段
4. Java 8种数据类型
  • byte:1个字节
  • short2个字节
  • int:4个字节
  • long:8个字节
  • float:4个字节
  • duble:8个字节
  • boolean:2个字节
  • char :1位
5. ==与equals区别
  • ==:比较两个对象的地址
  • equals:比较两个对象内容
6. String,StringBuffer,StringBuilder区别
  • String:内容不可变,底层使用的是不可变的字符数组(private final char value[]
  • StringBuffer:内容可变,底层使用的是可变字符数组(char [] vale),线程安全
  • StringBuilder:内容可变,底层使用的是可变字符数组(char [] vale),线程不安全,效率相对于StringBuffer高些。
7. ArrayList与LinkedList区别
  • ArrayList:底层使用的是数组实现,查询用ArrayList,因为LinkedList需要移动指针
  • LinkedList:底层使用的是链表,更新删除用LinkedList,因为ArrayList需要移动数据
8. HashMap和HashTable的区别
  • 相同点:都是Key-value的数据
  • HashMap:key和value可以为null,线程不安全,效率高
  • hashtable:Key和value不可为null,线程安全,效率低
  • 想线程安全,效率高使用ConcurrentHashMap:把整个Map分成N个Segment(类似HashTable)
9. 借口(interface)和抽象类(abstract class)
  • 抽象类中可有抽象方法和具体方法,接口中的方法都是抽象方法(注意:JDK1.8后接口添加了一种默认方法-default和静态方法。)

静态方法:默认方法允许接口方法定义默认实现,而所有子类都将拥有该方法及实现。

静态方法:由于它是静态的,所以由接口定义的静态方法可以独立于任何对象被调用。因此,调用静态方法不需要实现接口。

1
2
3
4
5
6
7
8
public interface TestInter {
    default String getDefault(){
        return "default";
    }
    static String getStatic(){
        return "static";
    }
}
  • 类可以实现(implements)多个接口但只能继承(extends)一个抽象类
  • 接口中的成员都是public ;抽象类的成员可以是private,protected,public(注意:JDK1.9之后:接口支持私有化)
10. 字符流和字节流
  • 字符流处理的基本单位是字符(Java中的字符是16位的),输入流以Reader为基础,输出流以Writer为基础,常用读取字符数据;
  • 字节流的基本单位是字节(Java中的字节是8位的),输入流以 InputStream为基础,输出流以 OutputStream为基础,常用读取二进制文件也就是对文件的操作;
11. Java线程
  • Java多线程的实现:继承Thread类重写run函数,实现Runnable接口
  • 线程池作用:不需要每次去创建和销毁线程了,节约资源和相应时间更快
12. Sleep和wait
  • Sleep():是线程Thread类的静态方法,调用此方法会让当前线程暂停到指定时间,将执行机会给其他线程,但对象锁依然保持,结束后自动回复
  • wait():调用此方法会导致当前线程放弃对象锁
13. 线程与进程的区别
  • 进程是资源的分配和调度的一个独立单元,线程是CPU调度的基本单位
  • 同一进程中可以包含多个线程,并且线程共享整个进程资源
14. Java设计模式(举例几个)
  • 单例模式:①构造方法私有化,让除了自己类中能创建外其他地方都不能创建②在自己类中创建单实例③提供一个方法获取该实例对象
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Single{    
  private static Single single=null;    //声明静态的单例对象的变量    
  private Singleton(){}    //私有构造方法     
  
 //外部通过此方法可以获取对象      
  public synchronized static Singlet getSingle(){
    if(single == null){       
       single=new Single()            
    }      
    return single;    
  }    
}
  • 工厂模式:对象的创建交给工厂来创建,SpringIOC就是工厂模式?
  • 代理模式:Spring的AOP就是使用了动态代理。
15. MVC开发模式
  • M model模型层 应用程序中用于处理数据逻辑的部分
  • V view 视图层 应用程序中用于数据展示的部分
  • C controller 控制层应用程序中用于处理用户请求的部分\
16. Spring
  • IOC(控制反转)
    理解: 对组件的对象进行控制权转移,从程序代码本身转移到外部容器,由容器来创建对象并管理对象之间的依赖关系;
    实现: 通过反射创建实例
    • AOP(面向切面编程)
      理解: 将程序中的交叉业务逻辑(安全,日志,事物),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去,完善依赖注入;
      实现: 动态代理,JDK动态代理
17. SpringMVC 原理
  • (1):客户端的所有请求都交给前端控制器DispatcherServlet来处理,
  • (2):DispatcherServlet收到请求后,将根据请求信息(URL,请求头,参数,等)以及HanderMapping的配置找到处理该请求的Controller
  • (3):Conroller调用业务逻辑处理后,返回ModelAndView
  • (4):DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
  • (5):视图负责将结果显示到客户端
    ##总结
    由于本人太过疏忽Java基础,些项目也遇到过很多坑,对于即将毕业的我面试过几家,都因基础太差而被淘汰,深感懊悔,特此写下这些!

转载于:https://my.oschina.net/u/4037000/blog/3045352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值