zoukankan      html  css  js  c++  java
  • java笔试总结

    1. Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。
    面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。
    面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。

    总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;

              以Reader(输入)/Writer(输出)为后缀的是字符流。

    2. volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对

    volatile的写操作,无法保证线程安全。

    jdk动态代理和cglib动态代理。jdk动态代理是有java内部的反射机制实现的,前提是代理类和目标类必须实现统一的接口;cglib动态代理是借助asm来实现的。

    Spring AOP与IOC的实现原理

    ioc是spring最核心的内容,控制反转,也叫依赖注入,让一个对象的创建不需要new就能产生,实际上是通过反射机制,在对象调用的时候动态的创建和调用某个对象和方法;注入的方法有set注入,构造器注入和基于注解的注入。

    aop也是spring的一大特色,aop通过动态代理实现了切面编程,可以用于对某个类的监督和管理,从而达到了一个模块扩充的功能。

    spring的的目的就是让对象与对象之间的关系变成xml配置,从而实现了对象之间的解耦,spring就是一个容器,只有在容器中的对象才能提供这些功能和服务。

    反射的原理,反射创建类实例的三种方式是什么

    java反射机制实在运行当中,对任意一个类来说,能够知道它的所有属性和方法,都能调用它的任意一个属性和方法。

    三种方式:getClass()方式,调用类的静态属性class,Class.forName()。

     对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

    下列java代码中的变量a、b、c分别在内存的___堆、栈、栈___存储区存放。

    class A{
         private   String a = "aa";
         public boolean methodB(){
          String b = "sb";
          final String c ="adsf";
       }
    }

    参考:https://blog.csdn.net/g1812453421/article/details/80466992

  • 相关阅读:
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    PHP serialize() 函数
    PHP print_r() 函数
  • 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/9706429.html
Copyright © 2011-2022 走看看