JAVA面试锦囊(十)

● MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?
(1)varchar与char的区别

char是一种固定长度的类型,varchar则是一种可变长度的类型

(2)varchar(50)中50的涵义

最多存放50个字符,varchar(50)和(100)存储hello字符串所占用的空间一样,但后者在排序时会消耗更多内存。

(3)mysql为什么这么设计对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

● ArrayList扩容机制?
发生扩容的条件:

ArrayList其实底层就是一个数组的数据结构,根据传入的最小需要容量minCapacity属性来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)

实现扩容:

jdk7中采用>>位运算,右移动一位。容量相当于扩大了1.5倍;

举例说明:添加20个元素到ArrayList中

当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。

也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;但是此时扩容的是数组的大小,扩容完之后,ArrayList会调用一个copy方法对原有的数组进行复制,会删除原有的数组。当添加第16个数据时,继续扩容变为15 * 1.5 =22个,同样的道理会把原有的数组进行复制再删除,直到20个元素全部添加完。

Maven的生命周期?
maven有三套生命周期,分别为:

1、clean 周期:主要用于清理上一次构建产生的文件,可以理解为删除target目录下的文件

2、默认周期

主要阶段包含:

process-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,

compile 编译src/main/java下的java文件,产生对应的class

process-test-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,

test-compile 编译src/test/java下的java文件,产生对应的class

test 运行测试用例,

package 打包构件,即生成对应的jar, war等,

install将构件部署到本地仓库,或者说部署到maven所依赖的repository

deploy 部署构件到远程仓库

3、site周期

主要阶段包含

site 产生项目的站点文档

site-deploy 将项目的站点文档部署到服务器

发布了0 篇原创文章 · 获赞 0 · 访问量 583

猜你喜欢

转载自blog.csdn.net/qq_41490913/article/details/105026841