zoukankan      html  css  js  c++  java
  • 专业知识2

    1.创建新线程:t.start()

    2.equals只比较内容

    3.java类加载器

    1)引导类加载器(BootStrap class loader)

    加载java核心类库,使用原生代码实现

    2)扩展类加载器(Extensions class loader)

    加载Java的扩展库,java虚拟机的实现会提供一个扩展库目录,扩展类加载器在此目录里查找并加载java类

    3)系统类加载器(System class loader)

    根据java应用的类路径(CLASSPATH)来加载java类

     4.java内存区域

    1)程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器(无OutOfMemoryError异常)

    2)java虚拟机栈,描述的是java方法执行的内存模型,每个方法在执行时都会创建一个栈帧(stack frame)用于存储局部信息表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直到执行结束,就对应着一个栈帧从虚拟机中入栈到出栈的过程

    3)java堆是java虚拟机所管理的内存中最大的一块,线程共享,所有的对象实例以及数组都在这里分配内存

    4)方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据

     5.垃圾收集

    A.使用垃圾收集的程序不需要明确释放对象

    B.现代垃圾收集能够处理循环引用问题

    采用可达性分析处理循环引用问题

    C.垃圾收集能提高程序员效率

    gc最大的作用就是程序员不需要自己释放内存,比如你new出来一个对象,你使用完成之后不需要手动去释放,gc完成了这个工作

    D.还会存在内存泄漏问题

    解析:1)垃圾收集机制主要针对新生代和老年代的内存进行回收

    2)内存泄漏(Memory Leak)指一个不再被使用的对象或者变量还在内存中占有存储空间

    3)内存泄漏主要有两种情况:

    1.在堆中申请的空间没有释放

    2.对象已不再被使用,但是仍然在内存中保留着(注:这里的不再被使用是指对程序来说没用,如数据库连接使用后没有关,但是还存在着引用)

    GC机制的引入只能解决第一种情况,对于第二种情况无法保证不再使用的对象会被释放,java语言中的内存泄露主要指第2种情况

    4)内存泄漏的原因

    1.静态集合类,如HashMap和Vector,这些容器是静态的,生命周期和程序的生命周期一致,那么在容器中对象的生命周期也和其一样,对象在程序结束之前将不能释放,从而会造成内存泄漏。

    2.各种连接,如数据库连接、网络连接、IO连接,不再使用时如果连接不释放容易造成内存泄漏

    3.监听器,释放对象时往往没有删除相应的监听器,可能会导致内存泄漏

    5)内存溢出(OOM)是指程序在申请内存时没有足够的内存供使用,进而导致程序崩溃,内存泄漏(Memory Leak)最终会导致内存溢出。

    6.创建Socket连接

    1)客户端:Socket s = new Socket("127.0.0.1",8080);

    2) 服务器端:ServerSocket ss = new ServerSocket(8080);

    3)监听服务器连接:s = ss.accept();

    7.volatile和synchronized

    1)volatile本质是告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;

    synchronized则是锁定当前变量,只有当前线程可以访问该变量,其它线程被阻塞

    2)volatile仅能用在变量级别

    synchronized则可以用在变量、方法、代码块和类级别的

    3)volatile仅能实现变量的修改可见性,不能保证原子性

    synchronized则可以保证变量的修改可见性和原子性

    4)volatile不会造成线程的阻塞

    synchronized可能会造成线程的阻塞

    5)volatile标记的变量不会被编译器优化

    synchronized标记的变量可以被编译器优化

    8.%和*属于同一优先级

    9.java数据库连接库JDBC用到哪种设计模式? 

    桥接模式

    定义:将抽象部分与它的实现部分分离,使它们可以独立地变化

    意图:将抽象与实现解耦合

    桥接基本角色:抽象接口、扩展接口定义、实现接口、实现接口给出具体实现内容

    JDBC在连接数据库的时候,在各个数据库之间进行切换,不需要改动较多代码,实现解耦合,JDBC提供统一接口,各个数据库提供各种实现,数据库驱动程序实现桥接

    10.下列哪个选项是java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试(C)

    A.java.exe

    B.javadoc.exe   文档

    C.jdb.exe  java debug

    D.javaprof.exe  剖析

    11.下面哪些java中的流对象是字节流?

    A.FileInputStream 

    B.BufferedInputStream

    C.PushbackInputStream

    D.ByteArrayInputStream

    解析:

    stream结尾都是字节流

    reader和writer结尾都是字符流

    两者的区别在于读写的时候一个是按字节读写,一个是按字符

    12.ArrayList是非线程安全的

    13.jre判断程序是否执行结束的标准是(A)

    A.所有的前台线程执行完毕

    B.所有的后台线程执行完毕

    C.所有的线程执行完毕

    D.和以上无关

    解析:

    前台线程:所有显示创建的线程默认为前台线程,前台线程全部执行完成之后,程序终止!

    后台线程:又称守护线程,一般是为前台线程服务的线程。

    14.9个jsp内置对象

    1)pageContext 页容器

    2)request 服务器端获取客户端信息

    3)response 服务器端回应客户端信息

    4)session 登录验证

    5)application 

    6)config 获得初始化参数

    7)exception 错误页的处理操作

    8)page 如同this,代表整个jsp页面自身

    9)out 输出

  • 相关阅读:
    使用ueditor实现多图片上传案例——Servlet层(UploadServlet)
    使用ueditor实现多图片上传案例——截取字符串层Util(SubString_text)
    [转载]oracle删除数据后的恢复
    [转载]oracle删除数据后的恢复
    为什么在定义hashcode时要使用31这个数呢?
    为什么在定义hashcode时要使用31这个数呢?
    [转载]hashCode和equals
    [转载]hashCode和equals
    Oracle HINT的用法
    Oracle HINT的用法
  • 原文地址:https://www.cnblogs.com/lick468/p/11623509.html
Copyright © 2011-2022 走看看