计算机考研复试面试题二

java

Q1,java的特点:
一次编译到处运行,没有指针,完全对象化,面向对象(封装、继承、多态);
Q2,JDK、JRE、JVM
1,JDK是 Java 语言的软件开发工具包。JDK是整个Java开发的核心。
2,JRE是指Java的运行环境。
3,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,引入JVM后,Java语言在不同平台上运行时不需要重新编译。JVM是Java跨平台的核心。在这里插入图片描述

JVM

Q1,对JVM的理解:Java有虚拟机,因此Java不需要像C++那样主动去释放内存,而是通过虚拟机自身的垃圾回收器(Garbage Collector-GC)来进行对象的回收。Java语言由于有虚拟机的存在,实现了平台无关性,在任意平台都是通过将代码转换为字节码文件,从而在平台下的虚拟机中运行代码的。

Q2,JVM垃圾回收机制:
1,分代收集理论: 在我们常用的jdk1.8用分代的思想,无论内存多大将其一分为二。由此产生新生代和老年代的概念,新生代中每次清除都会有大批对象死去,存活的少量对象逐步晋升为老年代,新生代(标记复制算法)老年代(标记清除算法)采用不同的垃圾回收器进行回收。
2,什么是垃圾:垃圾是任何程序都不能访问的数据,即没有使用价值的数据就被成为垃圾;
3,判断是否是垃圾的方式:

  • 引用计数器法:在引用对象中添加一个计数器,每当引用一次就进行+1,断开引用就-1,当计数器未0时就标记未不再使用对象。
  • 可达性分析法:扫描堆中的对象,看是否能够沿着GC Root(当前时刻存活对象)找到该对象,若不能找到则进行回收。

4,3种垃圾回收算法:

  • 标记-清除算法:
    是最简单的清除方法,直接对垃圾进行标记,并将其清除掉。但是容易产生碎片空间,且当要清除的对象占多数时,效率低。
  • 标记复制算法(操作内存时整块操作效率最高,起始地址加偏移量直接搞定):
    将内存分为等大的两块,当清理垃圾时,将有用的数据复制到另一半去,复制完成后直接直接将数据全部清除。效率很高,不会产生碎片空间。但是占用空间大,会造成空间浪费。
  • 标记整理算法:
    在标记清除算法的基础之上,将没有的垃圾标记并清除掉。清除之后将有用的对象移动至内存前面去,使得内存更“紧凑”一些,没有碎片空间。

5,常见的垃圾回收器:
垃圾回收算法是方法论,那么垃圾收集器就是内存回收的具体实现。
根据分代收集理论,一般新生代采用标记复制的算法,老年代采用标记整理的算法。如:
新生代的serial、parNew、parellel scavenge采用标记复制算法。
老年代的serial old、parellel old采用标记整理算法。
CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用
G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用
CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片。
JDK1.9采用的G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。
注:在三种垃圾回收算法基础上的10种垃圾回收器。
在这里插入图片描述

Q3,JVM类加载机制:

  • Java 虚拟机负责把描述类的数据从 Class 文件加载到系统内存中,并对类的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称之为 Java 的类加载机制。
  • 类加载机制一共有五个步骤,分别是加载、链接、初始化、使用和卸载阶段。
  • 类加载器是用来实现类的加载动作。JVM中只存在两种不同的类加载器:启动类加载器和其他类加载器。

设计模式

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

数据库

Q1,范式的定义:
改造关系模式,通过分解关系模型来消除其中不合适的数据依赖,以决绝插入异常,删除异常,数据用余。

Q2,什么是事务及四要素:
类似查询一次的命令,要求全部执行完。

  • 原子性:一个事务被视为一个最小单元,要么全部提交,要么全部回滚。
  • 一致性:事务总是由一种状态转换为另一种状态,数据库事务只会是执行前的状态或是执行后的状态。
  • 隔离性:一个事务的执行不会被另一个事务影响,互不干扰。
  • 持久性:事务只要提交了,那么数据库中的数据也永久的发生了变化。

Q3,数据库三范式?
1NF:R的所有属性都不能再分解为更基本的数据单位。
2NF:R的所有非主属性都依赖于R的关键属性,所有列都依赖于任意一组候选关键字。
3NF:每一列都与任意候选关键字直接相关而不是间接相关,没有传递依赖。
BCNF:3NF基础上,关系R只有一个单属性,或R的子集都是单属性,则R满足BCNF。

Q4,数据库和文件系统的比较:
数据库结构化,共享性好,独立性。有界面接口。

  • 数据模型有哪几种:关系模型,层次模型,网状模型。
  • 索引建的多的好还是少的好:恰当把握,多的话占空间,少的话查询不足,速度达不到。

Q5,插入100个数据和100万个数据有何区别?
100数量级小,可以随意插入;100万数量级大,如果表里有索引,则索引更新代价很高,可以采取先删除索引再插入,插入完成后再建索引的策略。

Q6,数据库数据可以无限插入吗?
可以。大小受到主机内存的制约。数据量大时要先删索引。减少提交次数,即减少IO次数。

Q7,处理大数据量的策略?
表分区,备份,入带库。

Q8,group by having,having和where的区别?
WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
GROUP BY 子句用来分组 WHERE 子句的输出。
HAVING 子句用来从分组的结果中筛选行。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值