-
创建、删除、复制、移动、重命名文件和文件夹的命令分别是什么?
- 文件:
- 创建:touch / vim
- 删除:rm
- 复制:cp
- 移动:mv
- 重命名:mv
- 文件夹:
- 创建:mkdir
- 删除:rm -rf
- 复制:cp
- 移动:mv
- 重命名:mv
- 文件:
-
什么是gradle,gradle的作用是什么,查看gradle任务、运行测试、启动应用的命令分别是什么?
-
gralde 是一种依赖管理工具,基于 Groovy 语言,面向 Java 应用为主,是一种基于 Groovy 的内部领域特定语言
-
自动化地进行软件构建、测试、发布、部署、软件打包
-
查看 gradle 任务:gradle tasks
-
运行测试:gradle test
-
启动应用:gradle appRun
-
-
gradle配置文件中,buildscript的设置和普通的设置有什么区别?
- buildscript 中声明的是 gradle 脚本自身需要使用的资源。包括依赖项、第三方插件、maven 仓库
-
gradlew的作用是什么?为什么要用它?
- gradlew 是包装器,会自动下载所依赖的版本的 gradle ,保证编译环境统一
-
举例说明Java中接口、抽象类、类的区别?
- 接口:可以包含变量和方法,其中变量会被隐式指定为
public static final
,而方法会被隐式指定为public abstract
,并且接口中的所有方法都必须是抽象方法 - 抽象类:
- 不能用来创建对象
- 如果一个类继承于一个抽象类,则子类萹蓄实现父类的抽象方法
- 如果子类没有实现父类的抽象方法,则必须将子类也定义为抽象类
- 可以有方法的实现细节
- 类:
- 包含变量和方法
- 变量可以是
public static final
- 方法必须有实现细节,若缺省实现细节,则是抽象类
- 可以继承其他类,或被继承
- 接口:可以包含变量和方法,其中变量会被隐式指定为
-
举例说明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
- Collections
-
类方法和实例方法有什么区别,什么时候用类方法、什么时候用实例方法?
- 实例方法
- 只有当该类的对象创建以后,实例方法才分配入口地址。从而实例方法可以被类创建的对象所使用
- 只有创建第一个对象的时候,实例方法入口地址会完成分配,后续不会再重新分配,即:该类的所有对象共享实例方法的入口地址
- 当该类的所有对象被销毁,入口地址才会消失
- 类方法
- 当类被加载的时候,类方法入口地址就会被分配
- 类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。
- 类方法入口地址在程序退出时消失
- 定义的方法中需要修改实例的属性,定义实例方法;如果不需要用到具体实例中的属性,定义为类方法
- 实例方法
-
HTTP无状态是指什么?
- HTTP 无状态指,HTTP 协议对于事务处理没有记忆能力。即每次请求返回的结果都一样,所以 HTTP 在客户端使用 cookie 保存用户状态,服务端有 session
-
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
- 成功
-
HTTP方法主要有哪几种,区别是什么?
- Get:请求获取服务器指定的资源
- Post:向服务器提交数据
- Put:向服务器发请求,修改服务器资源
- Delete:请求服务器删除指定的资源
-
为什么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
- 查询所有
-
画图说明Spring MVC的概念是什么,各部分之间是怎么相互工作的。
- view 接受用户的交互请求
- view 将请求转交给 controller
- controller 操作 model 进行数据更新
- 数据更新后,model 通知 view 数据变化
- view 显示更新之后的数据
-
举例说明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) {}
- /api/users
-
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) {}
- /api/user
-
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) {}
- /api/users/userId
-
-
Spring MVC中多个同名的param会在服务端怎么解析?比如http://host/api/users?name=sj&name=sj2
- 将两个变量用 "," 连接
- eg:该请求的实际参数 name 的值 为 “sj,sj2”
- 将两个变量用 "," 连接
-
举例说明IoC控制反转中对什么的控制反转了?解释标记@Autowired之后,为什么没有初始化也可以直接使用?
-
反转则是由容器来帮忙创建及注入依赖对象
-
因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;
-
依赖对象的获取被反转了。
-
解释标记 @Autowired 之后,IoC 容器会帮助创建并注入依赖的对象
-
-
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; }
-
Springboot中@Component、@Service、@Repository、@Bean、@Confituration区别和联系。
-
@Component
- 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
-
Repository
- 用于标注数据访问组件,即 DAO 组件
-
Bean
- 被用在方法上,显示声明要用生成的类
-
Configuration
- 注解在类上面,声明这是个配置作用的 Bean
-
-
怎么实现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;
-
如何控制Spring Data JPA里的一对多,一对一,多对多的lazy loading
- 在一对一的关系中默认是 eager loading 添加
fetch = FetchType.LAZY
即可设置为 lazy loadig - 在一对多、多对多 的关系中默认是 lazy loading
- 在一对一的关系中默认是 eager loading 添加
网友评论