发表于: 2017-10-27 23:42:43
1 624
四、深度思考
1.maven是什么,和Ant有什么区别?
Maven是一个项目管理和综合工具。Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。我现在一般用MAVEN来添加依赖包。Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。
2.clean,install,package,deploy分别代表什么含义?
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
3.怎么样能让Maven跳过JUnit?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
4.为什么要用Log4j来替代System.out.println?
(1)能够控制日志信息想往哪里打就往哪里打,比如:控制台、文件、邮箱、数据库等等
(2)能够控制日志信息想怎么打就怎么打,比如:我想要打印时间、程序的名称、程序的方法名、程序的行号、线程的名称等等
(3)能够控制日志信息想打什么打什么,不想打的就不打,日志信息是分级别的,有时候我只想看错误的信息或者警告的信息,有时候我想看到所有的信息我想调试程序等等
5.为什么DB的设计中要使用Long来替换掉Date类型?
date类型有好多,比如YYMMDD,还有加上时分秒的,类型比较复杂,操作起来不如long方便,特别是插入数据的时候
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
优点:节省时间,根本不用考虑怎么来标识唯一记录,写程序也简单了,数据库帮我们维护着这一批ID号。
缺点:在做分布式数据库时,要求数据同步时,这种自增ID就会出现严重的问题,因为你无法用该ID来唯一标识记录。同时在数据库做移植时,也会出现各种问题,总之,对此自增ID有依赖的情况,都有可能出现问题。
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引就相当于DB中的目录,会严重影响DB的查询速度,同时索引也会占用不少的内存。基本上在几百条以上就会有性能的差别。
在下面几种情况下,需要对该字段做索引:该字段经常在WHERE语句中出现,该字段内容重合率很低。
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引就是该字段下内容都是不一样的,无重复内容。普通索引允许内容有重复内容。
一般在身份证ID或其他独一无二的字段下需要建唯一索引。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,Mysql会自动检测,如果已经重复,则插入失败
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
创建时间该在插入数据时赋值,修改时间应该在UPDATE时赋值。
11.修真类型应该是直接存储Varchar,还是应该存储int?
修真类型数量较少,可以用int来指代具体类型,不过varchar更加直观
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
varchar长度是字符长度+1.比如“a”的长度为2,那是因为varchar需要多表示终止符的位置。
Text和Long Text区别就在于大小。
13.怎么进行分页数据的查询,如何判断是否有下一页?
Mysql中分页查询使用Limit语法,关于判断下一页:总量除以页面数,若余数为零,则为最后一页,无下一页。
14.为什么不可以用Select * from table?
1.会降低查询速度,因为*会将所有字段都查询出来。
2.会造成数据库注入。
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
不包含依赖持久层的业务逻辑。这部分依赖于持久层的业务逻辑将会放到服务层中。可以看出,贫血模型中的领域对象是不依赖于持久层的。
充血模型:充血模型中包含了所有的业务逻辑,包括依赖于持久层的业务逻辑。所以,使用充血模型的领域层是依赖于持久层,简单表示就是 UI层->服务层->领域层<->持久层
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
简单叙述:对象和对象之间发生严重的依赖关系,耦合度非常高而且依赖关系都写死在了代码里,项目不易修改和维护,必须要改代码。
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
个人理解:这是面向对象设计的思想。用户使用方法、类的时候,只需要关注输入与输出即可,不需要关注具体的实现过程。这也是封装的思想。
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
1.日志明确标志属于哪次请求
2.在对外提供的接口入口处打印一条日志
3.在调用其它系统接口的前后各打印一条日志
4.不符合业务逻辑预期打印一条日志
5.业务处理出现异常打印一条日志
6.极少出现的else情况打印一条日志
够控制日志信息想往哪里打就往哪里打,比如:控制台、文件、邮箱、数据库等等
19.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
20.可否远程连接到线上直接调试?真实的项目中,遇到问题的排g查方案是什么?
五、提交代码(最近搬家更换电脑较多,代码不全,后期补上)
1.学习使用github
(1)注册、仓库、客户端。
(2)cd 仓库文件夹
(3)git init 把这个目录变成Git可以管理的仓库
(4)git add . 将所有文件添加到仓库
(5)git commit 把文件提交到仓库,双引号内是提交注释
(6)git remote add origin xxx 关联github仓库
(7)git pull --rebase origin master
(8)git push -u origin master
评论