questions
-
创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?
- 创建:
touch filename
,mkdir dirname
. - 删除:
rm filename
,rm -rf dirname
. - 复制:
cp filename
,cp dirname
- 移动和重命名:
mv filename direction_dirname
,mv resoure_dirname direction_dirname
- 创建:
-
什么是gradle,gradle的作用是什么,查看gradle任务、运行测试、启动应用的命令分别是什么?
- Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.
- 查看gradle任务:
gradle tasks
- 运行测试:
gradle test
- 启动应用:
gradle bootRun
-
gradle配置文件中,buildscript的设置和普通的设置有什么区别?
- buildscript{} 这个是基础配置,所有的子模块都会读取到这个配置里面的内容,当构建开始的时候,就开始读取这个 buildscript{} 里面的内容。
主要是给插件用的配置依赖源。
repositories{} 这个模块的内容告诉gradle 去什么地址下载第三方的库.
- buildscript{} 这个是基础配置,所有的子模块都会读取到这个配置里面的内容,当构建开始的时候,就开始读取这个 buildscript{} 里面的内容。
-
gradlew的作用是什么?为什么要用它?
- 在项目里使用gradle时,可以通过gradlew命令使用当前项目环境的gradle版本,不受环境变量的影响。
-
举例说明Java中接口、抽象类、类的区别?
- 类能被子类继承所有属性和公用方法。
- 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。
- 接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。
-
举例说明Java中Collections、Arrays、Map、HashMap、TreeMap、Collection、List、ArrayList、Set、HashSet、TreeSet的区别和联系?
- Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。子类有以上的
List
和Set
-
List
下的子类有ArrayList
,Set
下的子类有HashSet
,TreeSet
- Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
- Arrays类,专门用来操作array
- Collection和Map区别在于容器内每个为之所存储的元素个数不同,Collection类型者,每个位置只有一个元素,Map类型者,持有 key-value pair,像个小型数据库.
- Map 子类有
HashMap
,TreeMap
- Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。子类有以上的
-
类方法和实例方法有什么区别,什么时候用类方法、什么时候用实例方法?
- 类方法只能访问类的成员变量,不能访问实例变量;实例方法不仅可以访问类的成员变量,也可以访问实例变量。
- 类方法只能调用类方法,而实例方法可以调用类方法跟实例方法
- 类方法里面的self是class,而实例方法的self是对象的首地址
- 对于类的成员变量跟实例变量来说,主要看是否创建一个新对象来进行访问
- 如果需要访问或者修改某个实例的成员变量时,将该方法定义成实例方法。类方法正好相反,它不需要访问或者修改某个实例的成员变量。
- 类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。
-
HTTP无状态是指什么?
- 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。
-
HTTP的返回的状态码有哪几类?常见的有哪些?分别表示什么含义?
- 1xx 信息,服务器收到请求,需要请求者继续执行操作
- 2xx 成功,操作被成功接收并处理
- 3xx 重定向,需要进一步的操作以完成请求
- 4xx 客户端错误,请求包含语法错误或无法完成请求
- 5xx 服务器错误,服务器在处理请求的过程中发生了错误
-
HTTP方法主要有哪几种,区别是什么?
- GET 获取资源
- POST 创建资源
- PUT 修改资源
- DELETE 删除资源
-
为什么RESTful API的URI中不能出现动词? 写出对一个用户增删改查的操作的API,包括查询参数、RequestBody、ResponseBody和ResponseStatus?
- 因为API是访问资源,而资源通常用名词表示。
- POST /api/users RequestBody:
{username: String, password: String}
ResponseBody:{username: String}
ResponseStatus: 201 - GET /api/users/{username} ResponseBody:
{username: String}
ResponseStatus: 200 - PUT /api/users/{username} RequestBody:
{username: String, password: String}
ResponseStatus: 200 - DELETE /api/users/{username} ResponseStatus: 200
-
画图说明Spring MVC的概念是什么,各部分之间是怎么相互工作的。
-
View 是展示的部分,会向 Controller 发请求, Controller 处理后会向 Model 部分请求业务处理和数据, Model 将处理后的数据发送给 Controller, Controller 再发送给 View 部分让它展示。
-
-
举例说明Spring Controller 中URL Mapping是怎么匹配的?
- 如果请求的uri是
localhost:8080/api/users?age=23
,方法是GET,会根据controller里@RequestMapping设置的路径/api/users
找到UserController,然后匹配该Controller下的@GetMapping路径params = age
。
- 如果请求的uri是
-
Spring MVC中多个同名的param会在服务端怎么解析?比如
http://host/api/users?name=sj&name=sj2
- 可以这样解析
@RequestParam(value="name") List<String> names
- 可以这样解析
-
举例说明IoC控制反转中对什么的控制反转了?解释标记@Autowired之后,为什么没有初始化也可以直接使用?
- 两个耦合度很高的对象,通过第三方也就是IoC,将所有控制权交给了IoC,达到解耦的目的,一个对象对另一个对象的控制由主动状态转向被动状态,也就是反转了控制。
- 在我们加了
@Service, @Repository, @Component
的地方,Spring会将它们扔进Bean工厂,并创建一个实例,加了@Autowired
的地方会去Bean工厂查找对应的service, repo, component。
-
Spring中常用的依赖注入方式有哪几种?
- 接口注入
- 构造器注入
- getter,setter方式注入
-
Springboot中@Component、@Service、@Repository、@Bean、@Configuration区别和联系。
- @Service用于标注业务层组件
- @Repository用于标注数据访问组件,即DAO组件
- @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
- @Bean 是一个方法级别的注解
- @Configuration 标注一个类是配置类,spring boot在扫到这个注解时自动加载这个类相关的功
- 资料
-
怎么实现Spring Data JPA里的一对多,多对多,一对一?
-
user 和 address是一对多的关系
-
user 和 shoppingCart是一对一关系
-
item 和 shoppingCart是多对多的关系
-
-
如何控制Spring Data JPA里的一对多,一对一,多对多的lazy loading
- 设置
@OneToOne, @OneToMany, @ManyToMant
的属性fetch = FetchType.LAZY
- 设置