专业知识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 输出

posted @ 2019-10-04 22:19  lick  阅读(260)  评论(0编辑  收藏  举报