美文网首页
回顾测试

回顾测试

作者: 芝麻香油 | 来源:发表于2017-09-27 23:45 被阅读0次
    1. 创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?

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

      • gralde 是一种依赖管理工具,基于 Groovy 语言,面向 Java 应用为主,是一种基于 Groovy 的内部领域特定语言

      • 自动化地进行软件构建、测试、发布、部署、软件打包

      • 查看 gradle 任务:gradle tasks

      • 运行测试:gradle test

      • 启动应用:gradle appRun

    3. gradle配置文件中,buildscript的设置和普通的设置有什么区别?

      • buildscript 中声明的是 gradle 脚本自身需要使用的资源。包括依赖项、第三方插件、maven 仓库
    4. gradlew的作用是什么?为什么要用它?

      • gradlew 是包装器,会自动下载所依赖的版本的 gradle ,保证编译环境统一
    5. 举例说明Java中接口、抽象类、类的区别?

      • 接口:可以包含变量和方法,其中变量会被隐式指定为 public static final,而方法会被隐式指定为 public abstract,并且接口中的所有方法都必须是抽象方法
      • 抽象类:
        • 不能用来创建对象
        • 如果一个类继承于一个抽象类,则子类萹蓄实现父类的抽象方法
        • 如果子类没有实现父类的抽象方法,则必须将子类也定义为抽象类
        • 可以有方法的实现细节
      • 类:
        • 包含变量和方法
        • 变量可以是 public static final
        • 方法必须有实现细节,若缺省实现细节,则是抽象类
        • 可以继承其他类,或被继承
    6. 举例说明Java中Collections、Arrays、Map、HashMap、TreeMap、Collection、List、ArrayList、Set、HashSet、TreeSet的区别和联系?

      • Collections
        • 是一个针对于集合类的一个帮助类
        • 提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作
      • Arrays
        • 数组类
        • 提供一系列静态方法实现对数组元素的搜索、排序
      • Map
        • 存储键值对
      • HashMap
        • 非同步,允许 key / value 为空
      • TreeMap
        • 基于红黑树实现,查看 key / value 时,会被排序
      • Collection
        • 对象集合,子接口:List、Set
        • 每个位置只有一个元素
      • List
        • 有序的 Collection
        • 相同值可以出现多次
      • ArrayList
        • 线程不安全
        • 由数组实现的 List
      • Set
        • 无序的 Collection
        • 每个值只能出现一次
      • HashSet
        • 存入 HashSet 的对象必须定义 hashCode()
      • TreeSet
        • 是一个有序集合
        • 可以按照任何顺序将元素插入集合
        • 元素按照升序排列,缺省是按照自然顺序进行排序
        • 元素要实现 Comparable 接口,或有一个自定义的比较器 Comparator
    7. 类方法和实例方法有什么区别,什么时候用类方法、什么时候用实例方法?

      • 实例方法
        • 只有当该类的对象创建以后,实例方法才分配入口地址。从而实例方法可以被类创建的对象所使用
        • 只有创建第一个对象的时候,实例方法入口地址会完成分配,后续不会再重新分配,即:该类的所有对象共享实例方法的入口地址
        • 当该类的所有对象被销毁,入口地址才会消失
      • 类方法
        • 当类被加载的时候,类方法入口地址就会被分配
        • 类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。
        • 类方法入口地址在程序退出时消失
      • 定义的方法中需要修改实例的属性,定义实例方法;如果不需要用到具体实例中的属性,定义为类方法
    8. HTTP无状态是指什么?

      • HTTP 无状态指,HTTP 协议对于事务处理没有记忆能力。即每次请求返回的结果都一样,所以 HTTP 在客户端使用 cookie 保存用户状态,服务端有 session
    9. HTTP的返回的状态码有哪几类?常见的有哪些?分别表示什么含义?

      • 成功
        • 200:Ok
        • 201:Created
        • 204:No content
      • 重定向
        • 301:永久重定向
        • 302:临时重定向
      • 客户端错误
        • 400:Bad Request
        • 401:Unauthorized
        • 403:Forbidden
        • 404:Not found
      • 服务器错误
        • 500:Internal Server Error
        • 502:Bad gateway
        • 504:Gateway timeout
    10. HTTP方法主要有哪几种,区别是什么?

      • Get:请求获取服务器指定的资源
      • Post:向服务器提交数据
      • Put:向服务器发请求,修改服务器资源
      • Delete:请求服务器删除指定的资源
    11. 为什么RESTful API的URI中不能出现动词?写出对一个用户增删改查的操作的API,包括查询参数、RequestBody、ResponseBody和ResponseStatus?

      • RESTful API 中的 URI 代表一种资源,往往与数据库表名对应。通常,数据库中的表都是记录同种记录的集合,所以 API 中的 URI 也应该使用名词
        • /api/users
        • post
        • RequestBody:User
        • ResponseBody:username
        • Status:200
        • /api/users?userId=1234
        • delete
        • Status:200
        • /api/users?userId=1223
        • put
        • RequestBody:User
        • ResponseBody:username
        • Status:200
        • 查询所有
          • /api/users
          • get
          • ResponseBody:List<User>
          • Status:200
        • 查询一个
          • /api/users?userId=1234
          • get
          • ResponseBody:List<User>
          • Status:200 / 404
    12. 画图说明Spring MVC的概念是什么,各部分之间是怎么相互工作的。


      • view 接受用户的交互请求
      • view 将请求转交给 controller
      • controller 操作 model 进行数据更新
      • 数据更新后,model 通知 view 数据变化
      • view 显示更新之后的数据
    13. 举例说明Spring Controller 中URL Mapping是怎么匹配的?

      • GET

        • /api/users

          @GetMapping("/api/users")
          public void UserController() {}
          
        • /api/users?userId=1

            @GetMapping("/api/users")
            public void UserController(@RequestParam String userId) {}
          
      • POST

        • /api/users
           @PostMapping("/api/user")
           public void UserController(@RequestBody User user) {}
          
        • /api/users/username
            @PostMapping("/api/user/{username}")
            public void UserController(@PathVariable String username) {}
          
      • PUT

        • /api/user
            @PutMapping("/api/user")
            public void UserController(@RequestBody User user) {}
          
        • /api/users/username
            @PutMapping("/api/user/{username}")
            public void UserController(@PathVariable String username) {}
          
      • DELETE

        • /api/users/userId
            @PutMapping("/api/user/{username}")
            public void UserController(@PathVariable String userId) {}
          
        • /api/users?userId=1
            @GetMapping("/api/users")
            public void UserController(@RequestParam String userId) {}
          
    14. Spring MVC中多个同名的param会在服务端怎么解析?比如http://host/api/users?name=sj&name=sj2

      • 将两个变量用 "," 连接
        • eg:该请求的实际参数 name 的值 为 “sj,sj2”
    15. 举例说明IoC控制反转中对什么的控制反转了?解释标记@Autowired之后,为什么没有初始化也可以直接使用?

      • 反转则是由容器来帮忙创建及注入依赖对象

      • 因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;

      • 依赖对象的获取被反转了。

      • 解释标记 @Autowired 之后,IoC 容器会帮助创建并注入依赖的对象

    16. Spring中常用的依赖注入方式有哪几种?

      • 构造函数
      private AccountService accountService;
      public AccoutController(AccountService accountService) {
          this.accountService = accountService;
      
      • 注解
      @Autowired
      private AccountService accountService;
      
      • setter
      @Autowired
      public void setAccountService(AccountService accountService) {
          this.accountService = accountService;
      }
      
    17. Springboot中@Component、@Service、@Repository、@Bean、@Confituration区别和联系。

      • @Component

        • 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
      • Repository

        • 用于标注数据访问组件,即 DAO 组件
      • Bean

        • 被用在方法上,显示声明要用生成的类
      • Configuration

        • 注解在类上面,声明这是个配置作用的 Bean
    18. 怎么实现Spring Data JPA里的一对多,多对多,一对一?

      • @OneToOne
      @OneToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
      private Account account;
      
      • @ManyToMany
      @ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
      @JoinTable(name = "t_shopping_cart_item", joinColumns = @JoinColumn(name = "shopping_cart_id", referencedColumnName = "id"),
              inverseJoinColumns = @JoinColumn(name = "item_id", referencedColumnName = "id"))
      private Set<Item> items;
      
      • @OneToMany
      @OneToMany(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
      @JoinColumn(name = "account_id")
      private Set<Address> addresses;
      
    19. 如何控制Spring Data JPA里的一对多,一对一,多对多的lazy loading

      • 在一对一的关系中默认是 eager loading 添加 fetch = FetchType.LAZY 即可设置为 lazy loadig
      • 在一对多、多对多 的关系中默认是 lazy loading

    相关文章

      网友评论

          本文标题:回顾测试

          本文链接:https://www.haomeiwen.com/subject/qkipextx.html