1.当局部E-R图合并成全局E-R图可能出现冲突,不属于合并冲突的是
答: 语法冲突
拓展: 各分E-R图之间的冲突主要有三类:属性冲突、命名冲突、结构冲突
2.下列有关JVM内存,说法错误的是
答: 方法区用于存储JVM加载的类信息,常量,静态变量以及编译器编译后的的代码等数据是线程隔离的(线程共享)
拓展: 大多数JVM将内存区域分为 Method Area(方法区)、Heap(堆)、Program Counter Register(程序计数器)、VM Stack(虚拟机栈)、Native Method Stack(本地方法栈)
其中 Method Area(方法区)、Heap(堆)为线程共享,Program Counter Register(程序计数器)、VM Stack(虚拟机栈)、Native Method Stack(本地方法栈)为线程隔离
在这里我们会遇到一个问题线程为什么要分为线程共享和非线程共享呢?请继续往下看
首先我们需要熟悉一个Java程序的一般性的工作过程,一个Java程序首先会被编译成字节码文件(以.class结尾),每个Java程序都运行在自己的JVM上,然后被告知程序入口,再被JVM字节码解释器加载运行
那么程序开始运行后是如何涉及到各内存区域的呢?请接着往下看
概括的来说JVM初始运行的时候都会分配好Method Area(方法区)、Heap(堆),而JVM每遇到一个线程都会为其分配一个Program Counter Register(程序计数器)、一个VM Stack(虚拟机栈)、一个Native Method Stack(本地方法栈),当线程终止时,三者所占内存(虚拟机栈,本地方法栈,程序计数器)都会被释放掉,这就是我为什么把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与线程周期相同,线程共享的两个区域与Java程序运行的生命周期相同,所以这也是垃圾回收场所只发生在线程共享上的原因(实际上对大部分虚拟机来说发生在Heap上)
3.JavaWEB中有一个类当会话绑定了属性或删除了属性,它会得到通知,这个类是
答: HttpSessionAttributeListener
4.下面哪些选项是正确的
答: > >是算数右移操作符
> > >是逻辑右移操作符
5.ArrayList和LinkedList区别有,下列说法正确的是
答: ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表的数据结构
对于随机访问的get和set,ArrayList要优于LinkedList,因为LinkedList需要迭代器
对于新增和删除操作add和remove,LinkedList要优于ArrayList,因为ArrayList要移动数据
ArrayList的空间浪费主要体现在list列表的结尾需要预留一定量的空间,而LinkedList空间花费则体现在每个节点都要消耗一定的空间
6.关于数据库索引,以下说法错误的是
答: 针对某些字段建立索引,能够有效减少相关数据库表的磁盘空间(不仅不会减少,还会增加)
针对某些字段建立索引,能够增加读写效率(只能增加读效率)
常见数据库管理系统常用hash表来存储索引(b+树)