睿联Web后端面经
Posted 蒙面侠1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了睿联Web后端面经相关的知识,希望对你有一定的参考价值。
睿联Web后端面经
一、子网掩码和Mac地址有什么作用?
子网掩码是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
MAC介质访问控制地址,或称为物理地址,也叫硬件地址,MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
二、主键索引和唯一索引的区别?哪个快?
唯一索引
- 唯一索引不允许两行具有相同的索引值。
- 如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,如果在 employee 表中的职员姓氏(lname) 列上创建了唯一索引,则所有职员不能同姓。
主键索引
- 主键索引是唯一索引的特殊类型。
- 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。
- 在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。
区别:
- 对于主键大多数都会自动建立唯一索引;
- 主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
- 主健可作外健,唯一索引不可;
- 主健不可为空,唯一索引可;
- 主健也可是多个字段的组合;
- 主键与唯一索引不同的是:
a.有not null属性;
b.每个表只能有一个。
三、简单工厂模式和抽象工厂模式的区别?
- 简单工厂模式的思路是,首先我们把一些共性的东西(算法)拿出来,进行抽象,比如加减乘除。然后我们在定义一个类作为工厂类,工厂类的作用就是根据传过来的字符串或者其他Key值给返回一个相对应的算法的实体。
- 抽象工厂模式提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。
- 简单工厂实现简单,扩展也很容易,但是不满足OCP,不满足OCP的代价就是难维护,在维护的时候容易引发新的BUG。
- 抽象工厂则是继续把产品进行再次抽象,最后得到一个可以支持产品切换的结构,但问题是太重了,过于复杂,不过还好,很多支持反射的语言,我们可以直接通过反射技术来优化这个“过重”的缺点。
四、索引失效的条件?
- 如果条件中有 or,即使其中有部分条件是索引字段,也不会使用索引
- 复合索引,查询条件不使用索引前面的字段,后续字段也将无法使用索引
- 以 % 开头的 like 查询
- 索引列的数据类型存在隐形转换
- where 子句里对索引列有数学运算
- where 子句里对索引列使用函数
- mysql 引擎估算使用全表扫描要比使用索引快,则不使用索引
五、抽象类和接口的区别?空的抽象类可以实例化吗?
相同点:
① 抽象类和接口都不能被实例化
② 抽象类和接口都可以定义抽象方法,子类/实现类必须覆写这些抽象方法
不同点:
① 抽象类有构造方法,接口没有构造方法
② 抽象类可以包含普通方法,接口中只能是public abstract修饰抽象方法(Java8之后可以)
③ 抽象类只能单继承,接口可以多继承
④ 抽象类可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量
六、控制反转和依赖注入的关系?
IoC(Inversion of Control)控制反转:可以理解为,由Spring容器去管理所有bean对象的生命周期和它们之间的关系。在项目中我们可以在bean.xml配置文件中或者是注解中配置需要管理的类,Spring容器就会去识别这些bean对象是什么,bean之间的关系是什么,然后在项目启动到某个时候,Spring容器将主动把对象A要的东西传递给A,同时也将A传递给需要A的其他对象。而这些bean对象的创建与消亡都是由Spring容器控制,也就是对象的生命周期不在是引用它的对象控制。
DI(Dependency Injection)依赖注入:依赖注入可以说是IoC的一个重点。在项目运行时,IoC容器会动态将bean对象传递给所需要它的其他对象,其中是通过依赖注入来实现的。
七、引用传递和值传递的区别
- 值传递是指基本数据类型在方法中的传递
- 引用传递是指引用数据类型在方法中的传递
- 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
- 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身
以上是关于睿联Web后端面经的主要内容,如果未能解决你的问题,请参考以下文章