笔试错题记录4

####选择题
1.AOP

  • AOP是什么?Aspect Oriented Programming,意为面向切面编程。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(Object Oriented Programming)的一种延续。他是为解耦而生的。AOP的技术支撑是动态代理
  • AOP的思想:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流。
  • AOP优点
    • AOP解决了大量代码重复的问题。(把公共部分抽取出来)
    • AOP实现业务和切入类的解耦。

2.off-heap指什么
堆heap是内存中动态分配对象存在的地方。如果用new创建一个对象,那么它被分配到堆内存上。堆是相对于stack的。一个局部变量是分配到栈上。

一般情况下,Java中的非空对象都是由Java虚拟机的垃圾收集器管理,也称为堆内存。在彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描。这意味着,这样一次垃圾收集对Java应用造成的影响与堆的大小成正比。
解决这个问题就是使用off-heap memory(堆外内存)。

堆外内存意味着把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机)。这样做的结果是可以保持一个较小的堆,以减少垃圾收集对应用的影响。使用堆外内存能够减少gc导致的暂停

  • 堆外内存和内存池一样可以缩短垃圾回收的时间。但是适用的对象相反。内存池适用于生命期较短的可变对象。堆外内存适用于生命期中等或较长的对象
  • 堆外内存的特点:
    • 对于大内存有良好的伸缩性
    • 对于垃圾回收的停顿的改善可以明显感觉到。
    • 在进程间可以共享,减少虚拟机间的复制。
  • 堆外内存的缺点:
    • 数据结构变得不那么直观。如果数据结构比较复杂,就需要对他进行串行化,而串行化本身就是影响性能的。
    • 由于你可以使用更大的内存,你会担心虚拟内存对你的速度对你的影响。

3.数据库范式

  • 第一范式:在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的。即数据库表的每一列都是不可分割的原子数据项
  • 第二范式:在第一范式的基础上,非码属性必须完全依赖于候选码,不能只依赖于关键字的一部分属性,消除部分依赖
    • 不满足第二范式的问题:数据冗余。对表格进行增删会出现问题。
    • 解决不满足第二范式的方法就是把一个表格拆分为多个表格。
  • 第三范式:在第二范式的基础上,任何非主属性不依赖于其他非主属性,消除传递依赖
    • 不满足第三范式也会带来对表格的增删问题。

4.SQL语句的约束

  • 添加约束:
//例子
Alter Table 表名
Add Constraint 约束名 约束类型
//增加主键约束
Alter Table stuInfo
Add Constraint PK_stuNo primary Key(stuNo)
//添加唯一约束
Alter Table stuInfo
Add Constraint UQ_stuID unique(stuID)
//添加默认约束
Alter Table stuInfo
Add Constraint DF_stuAddress default("地址不详") for stuAddress
//添加检查约束
Alter Table stuInfo
Add Constraint CK_stuAge check(stuAge between 15 and 40)
//添加外键约束
AlterTable stuInfo
Add Constraint FK_stuNo foreign key(stuNo) reference stuInfo(stuNo)
  • 删除约束
Alter Table 表名
Drop Constraint 约束名

5.ArrayList 和 LinkedList

  • ArrayList添加元素的时候,检查当前集合是否有空间可以装下新的元素。如果空间不够就自动扩容。ArrayList会分配连续的内存片段来存储集合的元素,因为其内部是数组
  • LinkedList添加元素的时候,是修改内部存的对象的引用关系,将之前对象的引用赋给新的节点,作为新节点之前的元素,并且把最后一个元素的引用更新为新的节点,并且更新列表的数量。
  • 对于长度固定的集合,用ArrayList比较合适。对于长度不固定的集合,用LinkedList比较合适。

6.端口号

  • SSH :22
  • MySQL:3306
  • Tomcat:8080
  • FTP:21
  • SMTP:25
  • DNS:53
  • BootStrap:67
  • HTTP:80
  • Https:443

7.面向对象的四个基本特征:

  • 封装:封装的目标是为了实现软件部件的“高内聚,低耦合”。对象是封装的基本单位。
  • 继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类的内容作为自己的内容,并且加入若干新的内容,或修改原来的1方法,使之更适合特殊的需要。
  • 多态:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定。

8.开闭原则

  • 含义:对扩展开放,对修改封闭。修改一个软件时,通过扩展的方式改变一个软件,而不是修改原来的代码。
  • 包含:里氏替换原则依赖倒转原则接口隔离原则抽象类
  • 里氏替换原则:任何基类可以出现的地方,子类一定可以出现。
  • 依赖倒转原则:
    • 高层次的模块不应该依赖低层次的模块,它们都应该依赖抽象。
    • 抽象不应该依赖于具体实现,具体实现依赖于抽象。也就是说要对抽象进行编程,不要对依赖进行编程。
    • 接口隔离原则:一个类对另一个类的依赖性应该建立在最小的接口上。使用多个专门的接口比使用单一的总接口要好。

9.六大设计原则

  • 单一职责原则
  • 依赖倒转职责
  • 里氏替换原则
  • 迪米特原则
  • 接口隔离原则
  • 开闭原则

10.string.valueOf(primitive data type.x)返回的是参数x的字符串类型。

11.数据库的三级模式:

  • 外模式:又称为用户模式,对应于用户级,它是某几个用户看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。不唯一
  • 概念模式:又称为逻辑模式,对应于概念级,它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构。
  • 内模式:又称为存储模式,对应于物理级。它是数据库中全体数据的内部表示或者底层描述,是数据库最低一级的逻辑描述。它描述了数据在存储介质上的存储方式和物理结构。唯一

####编程题
1.最长双节棍字符串
2.单词数组,最大字符

你可能感兴趣的:(Java,笔试)