发表于: 2020-05-05 20:43:24
1 1439
14.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。
优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access
充血模型: 层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等,这样层次结构就变成Client->(Business Facade)->Business Logic->Domain Object->Data Access。
贫血模型只负责存储数据,剥离了业务代码,整个代码结构更加清晰,并且抽象出各种结构,方便开发人员协同工作。
15.为什么不可以用Select * from table?
(a)当数据表的结构发生变化的时候可能查询失败
(b)性能低
(c)引入了不必要的数据,传输效率低
16.clean,install,package,deploy分别代表什么含义?
Maven 有三个互相独立的生命周期
(a)CleanLifeCycle(清理生命周期):在开始构建工作前的清理工作
pre-clean:执行清理之前的工作
clean:一处上一次构建生成的文件
post-clean:执行需要在清理结束后立刻完成的工作
(b)DefaultLifeCycle(部署生命周期):构建的核心部分,编译,测试,打包,部署等
compile:编译项目的源代码
test:使用合适的测试框架运行测试代码
package:将编译好的代码打包成可分发的格式
install:安装包至本地仓库,方便本地的其他项目引用
deploy:分发包至远程仓库,供其他开发人员使用
(c)SiteLifeCycle(生成生命周期):生成项目的报告,站点,发布站点
pre-post:执行一些需要在生成站点文档之前的准备工作
site:生成项目的站点文档
post-site:执行需要在生成站点翁当之后的工作,为部署做准备
site-deploy:将生成的站点文档部署到特定的服务器
17.怎么样能让Maven跳过JUnit?
跳过测试代码的编译
mvn package -Dmaven.test.skip=ture
编译,但是跳过单元测试
mvn package -DskipTest
18.为什么要用Log4j来替代System.out.println?
(a)println 只能输出到控制台,不能保存
(b)println 需要手动指定输出的信息,完成后需要手动注释
(c)log4j 可以分级输出日志,并且可以输出调试信息
19.为什么DB的设计中要使用Long来替换掉Date类型?
(a)mysql 中的 date 分很多种,使用long 统一处理比较方便
(b)使用 long 保存的开销比字符串小
20.自增ID有什么坏处?什么样的场景下不使用自增ID?
(a)当需要合并新旧数据库的时候需要处理 id 冲突
(b)如果新旧数据库的自增 id 类型不同,那么需要修改 id,测试如果有同索引的关联表的话也需要一同修改
21.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。通过缩小一张表中需要查询的记录/行的数目来加快搜索的速度。
当某个字段经常需要被查询的时候应该用索引。
22.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引:索引列的值不能重复,允许有空值
23.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
需要
24.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
分别在新增数据与更新数据的时候赋值。不应该开放给外部
25.修真类型应该是直接存储Varchar,还是应该存储int?
修真类型并不多,使用 int 性能更好,同时需要维护的映射表也不会经常变动。
26.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
MySQL varchar 的长度对于英文与中文都一样,并不是指字节长度。实际使用是应该够用而尽量短。
区别:
Text 超出768字的部分会与原始行分开存储,最大 65535字节
Varchar 最长 21785个字
Longtext 最大4,294,967,295字节
27.怎么进行分页数据的查询,如何判断是否有下一页?
分页:将数据表中的数据分段展示给用户。
MySQL 分页数据查询语法:
select id,name from table limit 参数1,参数2;
返回值是一个 List,当 size < 参数2 - 参数1 的时候就没有下一页了。
28.maven是什么,和Ant有什么区别?
Maven 是 java 项目的自动化构建工具,并且需要遵守它的约定,代码,包,生成文件的位置都已经确定好,只需要遵守这些规则写出代码就可以 帮助我们编译,测试,打包,发布。
Ant 则没有这么详细的规定,所有的操作都需要手动去创建,配置文件也需要自己去创建
评论