测试题

questions

  1. 创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?

    • 创建: touch filename, mkdir dirname.
    • 删除: rm filename, rm -rf dirname.
    • 复制: cp filename, cp dirname
    • 移动和重命名: mv filename direction_dirname, mv resoure_dirname direction_dirname
  2. 什么是gradle,gradle的作用是什么,查看gradle任务、运行测试、启动应用的命令分别是什么?

    • Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.
    • 查看gradle任务: gradle tasks
    • 运行测试: gradle test
    • 启动应用: gradle bootRun
  3. gradle配置文件中,buildscript的设置和普通的设置有什么区别?

    • buildscript{} 这个是基础配置,所有的子模块都会读取到这个配置里面的内容,当构建开始的时候,就开始读取这个 buildscript{} 里面的内容。
      主要是给插件用的配置依赖源。
      repositories{} 这个模块的内容告诉gradle 去什么地址下载第三方的库.
  4. gradlew的作用是什么?为什么要用它?

    • 在项目里使用gradle时,可以通过gradlew命令使用当前项目环境的gradle版本,不受环境变量的影响。
  5. 举例说明Java中接口、抽象类、类的区别?

    • 类能被子类继承所有属性和公用方法。
    • 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。
    • 接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。
  6. 举例说明Java中Collections、Arrays、Map、HashMap、TreeMap、Collection、List、ArrayList、Set、HashSet、TreeSet的区别和联系?

    • Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。子类有以上的ListSet
    • List下的子类有ArrayList, Set下的子类有HashSet,TreeSet
    • Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
    • Arrays类,专门用来操作array
    • Collection和Map区别在于容器内每个为之所存储的元素个数不同,Collection类型者,每个位置只有一个元素,Map类型者,持有 key-value pair,像个小型数据库.
    • Map 子类有HashMap, TreeMap
  7. 类方法和实例方法有什么区别,什么时候用类方法、什么时候用实例方法?

    • 类方法只能访问类的成员变量,不能访问实例变量;实例方法不仅可以访问类的成员变量,也可以访问实例变量。
    • 类方法只能调用类方法,而实例方法可以调用类方法跟实例方法
    • 类方法里面的self是class,而实例方法的self是对象的首地址
    • 对于类的成员变量跟实例变量来说,主要看是否创建一个新对象来进行访问
    • 如果需要访问或者修改某个实例的成员变量时,将该方法定义成实例方法。类方法正好相反,它不需要访问或者修改某个实例的成员变量。
    • 类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。
  8. HTTP无状态是指什么?

    • 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。
  9. HTTP的返回的状态码有哪几类?常见的有哪些?分别表示什么含义?

    • 1xx 信息,服务器收到请求,需要请求者继续执行操作
    • 2xx 成功,操作被成功接收并处理
    • 3xx 重定向,需要进一步的操作以完成请求
    • 4xx 客户端错误,请求包含语法错误或无法完成请求
    • 5xx 服务器错误,服务器在处理请求的过程中发生了错误
  10. HTTP方法主要有哪几种,区别是什么?

    • GET 获取资源
    • POST 创建资源
    • PUT 修改资源
    • DELETE 删除资源
  11. 为什么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
  12. 画图说明Spring MVC的概念是什么,各部分之间是怎么相互工作的。

    • View 是展示的部分,会向 Controller 发请求, Controller 处理后会向 Model 部分请求业务处理和数据, Model 将处理后的数据发送给 Controller, Controller 再发送给 View 部分让它展示。


  13. 举例说明Spring Controller 中URL Mapping是怎么匹配的?

    • 如果请求的uri是localhost:8080/api/users?age=23,方法是GET,会根据controller里@RequestMapping设置的路径/api/users找到UserController,然后匹配该Controller下的@GetMapping路径params = age
  14. Spring MVC中多个同名的param会在服务端怎么解析?比如http://host/api/users?name=sj&name=sj2

    • 可以这样解析@RequestParam(value="name") List names
  15. 举例说明IoC控制反转中对什么的控制反转了?解释标记@Autowired之后,为什么没有初始化也可以直接使用?

    • 两个耦合度很高的对象,通过第三方也就是IoC,将所有控制权交给了IoC,达到解耦的目的,一个对象对另一个对象的控制由主动状态转向被动状态,也就是反转了控制。
    • 在我们加了@Service, @Repository, @Component的地方,Spring会将它们扔进Bean工厂,并创建一个实例,加了@Autowired的地方会去Bean工厂查找对应的service, repo, component。
  16. Spring中常用的依赖注入方式有哪几种?

    • 接口注入
    • 构造器注入
    • getter,setter方式注入
  17. Springboot中@Component、@Service、@Repository、@Bean、@Configuration区别和联系。

    • @Service用于标注业务层组件
    • @Repository用于标注数据访问组件,即DAO组件
    • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
    • @Bean 是一个方法级别的注解
    • @Configuration 标注一个类是配置类,spring boot在扫到这个注解时自动加载这个类相关的功
    • 资料
  18. 怎么实现Spring Data JPA里的一对多,多对多,一对一?

    • user 和 address是一对多的关系


    • user 和 shoppingCart是一对一关系


    • item 和 shoppingCart是多对多的关系


  19. 如何控制Spring Data JPA里的一对多,一对一,多对多的lazy loading

    • 设置@OneToOne, @OneToMany, @ManyToMant的属性fetch = FetchType.LAZY

你可能感兴趣的:(测试题)