面试问题总结(二)


这里写自定义目录标题

  • 面试问题总结
        • 一 SpringBoot常用标签
          • 1. 启动注解 `@SpringBootApplication`
          • 2. Controller相关注解
          • 3. 注入Bean相关
          • 4. 导入配置文件
          • 5. 事务注解
          • 六. 全局异常处理
        • 二 MVC设计模型与三层架构描述
        • 三 事务放在Dao还是Service
        • 四 MyBatis传递参数方法
          • 一 普通类型参数
          • 二 多个普通类型参数
          • 三 @Param注解命名参数
          • 四 Map对象作为参数
          • 五 JavaBean数据类型
          • 六 模糊查询
        • 五 Linux查询日志,切换用户
          • 一 查看日志
          • 二 切换用户
        • 六 如何构建开发环境
        • 七 权限,如何不同用户看到的东西不同
        • 八 如何弹出表单详情
        • 九 VUE常用标签
        • 十 JQuery实现三个表单元素的数据连在一起发送给后端
        • 十一 JQuery选择器有哪些
        • 十二 VUE实现动态追加class属性
        • 十三 VUE的V-FOR标签的key的作用
        • 十四 MyBatis标签

面试问题总结 一 SpringBoot常用标签 1. 启动注解 @SpringBootApplication
@SpringBootApplication 是一个复合注解 主要注解: @SpringBootConfiguration主要用于加载配置文件 @EnableAutoConfiguration主要用于开启自动配置功能 @ComponentScan主要用于组件扫描和自动装配

2. Controller相关注解
  1. @Controller
    控制器,标明该类是一个处理请求的控制器,主要用于处理http请求
  2. @RestController
复合注解: @ResponseBody + @Controller

  1. @GetMapping
    用在Controller的方法中,标明该接口只处理Get请求
  2. @PostMapping
    用在Controller的方法中,标明该接口只处理Post请求
  3. @RequestMapping
    用于Controller的方法中,标明该接口的请求地址,可以指定get,post,put,delete四种请求方式
  4. @RequestParam
    用于Controller的参数中,用于接收普通的参数(非对象)
  5. @RequestBody
    用于Controller的参数中,用于接收POST请求体中的JSON,转换为参数对象
  6. @PathVariable
    用于Controller的参数中,用于接收URL中RESTFUL类型的参数
比如: http://URL/getUser/12345 @RequestMapping("/getUser/{uid}") public String getUser(@PathVariable("uid")Integer id) { System.out.println("id:"+id); return "user"; }

  1. @ResponseBody
    将Controller返回值转换成JSON的格式传给前端
3. 注入Bean相关
  1. @Repository
    用于Dao层,标明这是访问数据库的持久层
  2. @Service
    用于业务逻辑层,其内部方法 包含具体的业务逻辑
  3. @Entity
    用于实体类中,标明与数据库中的表对应
    @Id、@Column注解用于标注实体类中的字段
  4. @Scope
    作用在类上和方法,标明该bean的作用域
  5. @Bean
    在配置类中使用,即类上需要加上@Configuration注解
    (如果你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使用自动化装配的方案了,但是我们可以使用@Bean)
  6. @Autowired
    作用在构造函数、方法、方法参数、类字段以及注解,主要用于Bean的注入
  7. @Component
    把普通pojo实例化到spring容器中,相当于配置文件中
4. 导入配置文件
  1. @PropertySource
    作用是引入properties文件
@PropertySource(value = https://www.it610.com/article/{"classpath : xxxx/xxx.properties","classpath : xxxx.properties"})

  1. @ImportResource
    作用是导入xml配置文件,可以相对路径也可以绝对路径
@ImportSource(locations={"classpath : xxxx.xml" , "classpath : yyyy.xml"}) @ImportSource(locations= {"file : d:/hellxz/application.xml" , "file : d:/hellxz/dubbo.xml"})

  1. @Import
    作用是导入额外的配置信息
5. 事务注解 @Transactional
在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式
  • 编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务管理: 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用
六. 全局异常处理
  1. @ControllerAdvice
    异常集中处理,更好的使业务逻辑与异常处理剥离开,可以指定某一个类为异常处理类,并包含各种类型的异常处理,作用在类上
// 定义这个类就是用来处理异常的 @ControllerAdvice public class GlobalExceptionHandler { }

  1. @ExceptionHandler
    统一处理某一类异常,从而能够减少代码重复率和复杂度,并生成对应的映射关系,作用在方法上
@ControllerAdvice public class GlobalExceptionHandler { // 标明这个方法用来处理哪一种异常 @ExceptionHandler(Exception.class) @ResponseBody String handleException(){ return "Exception Deal!"; } }

二 MVC设计模型与三层架构描述
服务器端三层架构: 表现层 SpringMVC 业务层 Spring 持久层 Mybatis

MVC设计模式: M -> Model 模型,也就是javaBean,操作的数据或信息 V -> View视图,jsp,html等,用于提供给用户交互 C -> Controller控制器,Servlet,根据View的指令选取Model层的数据,传给View

三 事务放在Dao还是Service 事务要一般都放在Service层,Controller如果有需要也可以加,但是不会放在Dao层,因为一个业务可能要处理多次数据库,如果放在Dao层,则第一次操作数据库成功第二次失败的时候就无法完全回滚.
四 MyBatis传递参数方法 一 普通类型参数
直接在Mapping文件中使用#{name} public User queryUserById(Integer id); select id,last_name lastName,sex from t_user where id = #{id}

二 多个普通类型参数
public List queryUserByNameAndSex(String name, Integer sex); select id,last_name lastName,sex from t_user where last_name = #{param1} and sex = #{param2}

三 @Param注解命名参数
public List queryUserByNameAndSex(@Param("name") String name, @Param("sex") Integer sex); select id,last_name lastName,sex from t_user where last_name = #{name} and sex = #{sex}

四 Map对象作为参数
public List queryUserByMap(Map param); select id,last_name lastName,sex from t_user where last_name = #{name} and sex = #{sex}

五 JavaBean数据类型
public List queryUserByUser(User user); select id,last_name lastName,sex from t_user where last_name = #{lastName} and sex = #{sex}

六 模糊查询
public List queryUsersByNameLike(String lastName); select id,last_name lastName,sex from t_user where last_name like concat('%',#{lastName},'%')

五 Linux查询日志,切换用户 一 查看日志
  1. tail -f XXX.log (最常用)
    实时查看日志 tail -n 10 XXX.log 查看后几行
  2. cat -n XXX.log |grep "关键字"(常用)
    根据关键字查看日志
  3. hard -n 10 XXX.log
    查看日志开头10行
  4. vim之后 /关键字 查看
  5. more/less如果显示太多不方便
cat -n test.log |grep "debug" |more分页打印,(空格键翻页)

二 切换用户
su 用户名 或 sudo su 用户名

六 如何构建开发环境 给你一个GIT地址,如何搭建开发环境,需要向老员工要什么数据?
  1. 公司的maven私服地址
  2. Mysql的路径和用户信息
  3. Gitlab项目地址
  4. Redis的地址等其他
七 权限,如何不同用户看到的东西不同 八 如何弹出表单详情 九 VUE常用标签
v-text可以与{{}}代替(不识别html标签) v-html页面添加html元素 v-bind数据绑定,可以使用 : 代替 v-on事件绑定,可以使用@代替 v-model表单元素和数据的双向绑定 v-if v-else判断 v-show根据boolean值判断显示不显示 v-for循环遍历(一定要设置key)

十 JQuery实现三个表单元素的数据连在一起发送给后端 有三个输入框name分别为a1,a2,a3如何将数据逗号隔开传到后台?
使用属性选择器匹配name属性以a开头的输入框
var data; $("input[name^=a]').each(function(){ data=https://www.it610.com/article/data+$(this).val() })

十一 JQuery选择器有哪些
id选择器 类选择器 元素选择器 属性选择器 后代选择器 子选择器 同辈选择器 等其他

参考博客
https://www.php.cn/js-tutorial-378052.html
十二 VUE实现动态追加class属性
.p1 { color: red; font-size: 30px; } .p { color: blue }

十三 VUE的V-FOR标签的key的作用 十四 MyBatis标签
  1. select
  2. insert
  3. delete
  4. update
  5. if
  6. foreach
  7. resultMap
  8. Collection
  9. id
  10. sql
  11. trim
  12. accociation

    推荐阅读